chore: merge develop into feat/sidebar-notification-unread-count

This commit is contained in:
Kaushal Shriwas 2026-04-18 20:01:35 +05:30
commit 4976b4554d
58 changed files with 24490 additions and 23755 deletions

2
.github/stale.yml vendored
View file

@ -5,7 +5,7 @@ daysUntilStale: 60
# Number of days of inactivity before a stale Issue or Pull Request is closed.
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
daysUntilClose: 5
daysUntilClose: 3
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
exemptLabels:

View file

@ -3,8 +3,11 @@
frappe.ui.form.on("DocType", {
onload: function (frm) {
if (frm.is_new() && !frm.doc?.fields) {
frappe.listview_settings["DocType"].new_doctype_dialog();
if (frm.is_new()) {
frm.set_value("allow_auto_repeat", 0);
if (!frm.doc?.fields) {
frappe.listview_settings["DocType"].new_doctype_dialog();
}
}
frm.call("check_pending_migration");
},

View file

@ -87,18 +87,21 @@ class PreparedReport(Document):
)
def get_prepared_data(self, with_file_name=False):
if attachments := get_attachments(self.doctype, self.name):
attachment = None
for f in attachments or []:
if f.file_url.endswith(".gz"):
attachment = f
break
attachments = get_attachments(self.doctype, self.name)
if not attachments:
frappe.throw(_("No attachment found for the prepared report"), title=_("Attachment Not Found"))
attached_file = frappe.get_doc("File", attachment.name)
attachment = None
for f in attachments or []:
if f.file_url.endswith(".gz"):
attachment = f
break
if with_file_name:
return (gzip.decompress(attached_file.get_content()), attachment.file_name)
return gzip.decompress(attached_file.get_content())
attached_file = frappe.get_doc("File", attachment.name)
if with_file_name:
return (gzip.decompress(attached_file.get_content()), attachment.file_name)
return gzip.decompress(attached_file.get_content())
def generate_report(prepared_report):

View file

@ -66,6 +66,19 @@ frappe.ui.form.on("Report", {
},
};
});
frm.set_query("letter_head", () => {
const filters = {
letter_head_for: "Report",
disabled: 0,
};
if (frm.doc.is_standard === "Yes") {
filters.standard = "Yes";
}
return { filters };
});
},
ref_doctype: function (frm) {

View file

@ -97,7 +97,6 @@
"label": "Disabled"
},
{
"depends_on": "eval: doc.is_standard == \"No\"",
"fieldname": "letter_head",
"fieldtype": "Link",
"label": "Default Letter Head",
@ -214,7 +213,7 @@
"idx": 1,
"index_web_pages_for_search": 1,
"links": [],
"modified": "2026-03-31 14:42:49.829920",
"modified": "2026-04-10 00:03:15.212213",
"modified_by": "Administrator",
"module": "Core",
"name": "Report",

View file

@ -76,16 +76,15 @@ class Report(Document):
if frappe.session.user != "Administrator":
frappe.throw(_("Only Administrator can save a standard report. Please rename and save."))
# Letter Head is visible only for non-standard reports.
# It should not remain set when it's invisible.
self.letter_head = None
if self.report_type == "Report Builder":
self.update_report_json()
if self.default_print_format and self.has_value_changed("default_print_format"):
self.validate_default_print_format()
if self.letter_head and self.has_value_changed("letter_head"):
self.validate_letter_head()
def before_insert(self):
self.set_doctype_roles()
@ -93,7 +92,6 @@ class Report(Document):
self.export_doc()
def before_export(self, doc):
doc.letter_head = None
doc.prepared_report = 0
def on_trash(self):
@ -429,6 +427,22 @@ class Report(Document):
):
frappe.throw(_("Selected Print Format is invalid for this Report."))
def validate_letter_head(self):
letter_head = frappe.db.get_value(
"Letter Head",
self.letter_head,
["letter_head_for", "standard", "disabled"],
as_dict=True,
)
if (
not letter_head
or letter_head.letter_head_for != "Report"
or (self.is_standard == "Yes" and letter_head.standard != "Yes")
or letter_head.disabled
):
frappe.throw(_("Selected Letter Head is invalid for this Report."))
@frappe.whitelist()
def toggle_disable(self, disable: bool):
if not self.has_permission("write"):

View file

@ -18,7 +18,7 @@
"label": "Security.txt"
},
{
"description": "Date after which this security.txt should be considered stale.",
"description": "Date after which this security.txt should be considered stale. Expires timestamp is converted to UTC.",
"fieldname": "public_expires",
"fieldtype": "Datetime",
"label": "Expires"
@ -56,7 +56,7 @@
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
"modified": "2026-04-14 12:50:57.138749",
"modified": "2026-04-17 13:07:45.259146",
"modified_by": "Administrator",
"module": "Core",
"name": "Security Settings",
@ -77,5 +77,6 @@
"rows_threshold_for_grid_search": 20,
"sort_field": "creation",
"sort_order": "DESC",
"states": []
"states": [],
"track_changes": 1
}

View file

@ -2,12 +2,19 @@
# For license information, please see license.txt
from datetime import UTC, datetime
from zoneinfo import ZoneInfo
import frappe
import frappe.utils
from frappe import _
from frappe.model.document import Document
from frappe.utils import validate_email_address, validate_phone_number, validate_url
from frappe.utils import (
get_system_timezone,
now_datetime,
validate_email_address,
validate_phone_number,
validate_url,
)
class SecuritySettings(Document):
@ -69,8 +76,7 @@ class SecuritySettings(Document):
expires = self.public_expires or frappe.utils.add_years(frappe.utils.now_datetime(), 1)
if isinstance(expires, str):
expires = datetime.fromisoformat(expires)
expires = expires.replace(microsecond=0)
expires = expires.astimezone(UTC)
expires = expires.replace(microsecond=0, tzinfo=ZoneInfo(get_system_timezone())).astimezone(UTC)
value = expires.strftime("%Y-%m-%dT%H:%M:%SZ")
return f"Expires: {value}"
@ -112,5 +118,5 @@ class SecuritySettings(Document):
expires = self.public_expires
if isinstance(expires, str):
expires = datetime.fromisoformat(expires)
if expires <= datetime.now():
if expires <= now_datetime():
frappe.throw(_("Expiration date must be in the future"))

View file

@ -4,10 +4,10 @@
from datetime import UTC, datetime, timedelta
import frappe
from frappe.tests import UnitTestCase
from frappe.tests import IntegrationTestCase
class TestSecuritySettings(UnitTestCase):
class TestSecuritySettings(IntegrationTestCase):
def test_public_policy_section_default(self):
doc = frappe.get_doc(
{
@ -239,10 +239,11 @@ class TestSecuritySettings(UnitTestCase):
# Should not raise
doc.validate_expires()
@IntegrationTestCase.change_settings("System Settings", {"time_zone": "Etc/UTC"})
def test_public_expires_section_future_date(self):
from datetime import timezone
future_date = datetime(2027, 12, 31, 23, 59, 59, tzinfo=UTC)
future_date = datetime(2027, 12, 31, 23, 59, 59)
doc = frappe.get_doc(
{
"doctype": "Security Settings",
@ -252,11 +253,12 @@ class TestSecuritySettings(UnitTestCase):
section = doc.public_expires_section
self.assertIn("2027-12-31T23:59:59Z", section)
@IntegrationTestCase.change_settings("System Settings", {"time_zone": "Asia/Kolkata"})
def test_public_expires_section_string(self):
doc = frappe.get_doc(
{
"doctype": "Security Settings",
"public_expires": "2027-12-31T23:59:59+00:00",
"public_expires": "2028-01-01T05:29:59",
}
)
section = doc.public_expires_section

View file

@ -4,6 +4,7 @@
import frappe
from frappe.model.document import Document
from frappe.query_builder.utils import DocType
from frappe.utils import has_common
class CustomHTMLBlock(Document):
@ -23,7 +24,12 @@ class CustomHTMLBlock(Document):
style: DF.Code | None
# end: auto-generated types
pass
def validate(self):
self.validate_private()
def validate_private(self):
if not has_common(frappe.get_roles(), ["Administrator", "System Manager", "Workspace Manager"]):
self.private = 1
@frappe.whitelist()

View file

@ -36,6 +36,7 @@ class Note(Document):
if not self.content:
self.content = "<span></span>"
self.content = frappe.utils.sanitize_html(self.content, always_sanitize=True)
def before_print(self, settings=None):
self.print_heading = self.name

View file

@ -29,9 +29,7 @@ class SystemConsole(Document):
try:
frappe.local.debug_log = []
if self.type == "Python":
safe_exec(
self.console, script_filename="System Console", restrict_commit_rollback=not self.commit
)
safe_exec(self.console, script_filename="System Console")
self.output = "\n".join(frappe.debug_log)
elif self.type == "SQL":
frappe.db.begin(read_only=True)

View file

@ -522,25 +522,28 @@ class DesktopPage {
if (frappe.boot.desk_settings.search_bar) {
let awesome_bar = new frappe.search.AwesomeBar();
awesome_bar.setup(".desktop-search-wrapper #desktop-navbar-modal-search");
frappe.ui.keys.add_shortcut({
shortcut: "ctrl+g",
action: function (e) {
$(".desktop-search-wrapper #desktop-navbar-modal-search").click();
e.preventDefault();
return false;
},
description: __("Open Awesomebar"),
ignore_inputs: true,
});
frappe.ui.keys.add_shortcut({
shortcut: "ctrl+k",
action: function (e) {
$(".desktop-search-wrapper #desktop-navbar-modal-search").click();
e.preventDefault();
return false;
},
description: __("Toggle Awesomebar"),
ignore_inputs: true,
});
}
frappe.ui.keys.add_shortcut({
shortcut: "ctrl+g",
action: function (e) {
$(".desktop-search-wrapper #desktop-navbar-modal-search").click();
e.preventDefault();
return false;
},
description: __("Open Awesomebar"),
});
frappe.ui.keys.add_shortcut({
shortcut: "ctrl+k",
action: function (e) {
$(".desktop-search-wrapper #desktop-navbar-modal-search").click();
e.preventDefault();
return false;
},
description: __("Open Awesomebar"),
});
}
handle_route_change() {
const me = this;

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: developers@frappe.io\n"
"POT-Creation-Date: 2026-04-12 09:45+0000\n"
"PO-Revision-Date: 2026-04-15 16:26\n"
"PO-Revision-Date: 2026-04-16 16:37\n"
"Last-Translator: developers@frappe.io\n"
"Language-Team: Arabic\n"
"MIME-Version: 1.0\n"
@ -4314,7 +4314,7 @@ msgstr "لا يمكنك التعديل على وثيقة ملغية"
#: frappe/website/doctype/web_form/web_form.js:367
msgid "Cannot edit filters for standard Web Forms"
msgstr ""
msgstr "لا يمكن تعديل عوامل التصفية لنماذج الويب الأساسية"
#: frappe/desk/doctype/dashboard_chart/dashboard_chart.js:378
msgid "Cannot edit filters for standard charts"
@ -5523,7 +5523,7 @@ msgstr "مؤكد"
#: frappe/public/js/frappe/widgets/onboarding_widget.js:525
msgid "Congratulations on completing the module setup. If you want to learn more you can refer to the documentation <a target=\"_blank\" href=\"{0}\">here</a>."
msgstr ""
msgstr "تهانينا على إكمال إعداد الوحدة. إذا كنت ترغب في معرفة المزيد، يمكنك الرجوع إلى الوثائق <a target=\"_blank\" href=\"{0}\">هنا</a>."
#: frappe/integrations/doctype/connected_app/connected_app.js:20
msgid "Connect to {}"
@ -5599,7 +5599,7 @@ msgstr "اتصال"
#: frappe/integrations/doctype/google_calendar/google_calendar.py:813
msgid "Contact / email not found. Did not add attendee for -<br>{0}"
msgstr ""
msgstr "لم يتم العثور على جهة الاتصال / البريد الإلكتروني. لم تتم إضافة حضور لـ -<br>{0}"
#. Label of the sb_01 (Section Break) field in DocType 'Contact'
#: frappe/contacts/doctype/contact/contact.json
@ -9150,15 +9150,15 @@ msgstr "تم تعليق قائمة انتظار البريد الإلكترون
#: frappe/public/js/frappe/views/communication.js:955
msgid "Email sending undone"
msgstr ""
msgstr "تم التراجع عن إرسال البريد الإلكتروني"
#: frappe/email/doctype/email_queue/email_queue.py:199
msgid "Email size {0:.2f} MB exceeds the maximum allowed size of {1:.2f} MB"
msgstr ""
msgstr "حجم البريد الإلكتروني {0:.2f} ميغابايت يتجاوز الحد الأقصى المسموح به {1:.2f} ميغابايت"
#: frappe/core/doctype/communication/email.py:349
msgid "Email undo window is over. Cannot undo email."
msgstr ""
msgstr "انتهت فترة التراجع عن البريد الإلكتروني. لا يمكن التراجع عن البريد الإلكتروني."
#. Label of the section_break_udjs (Section Break) field in DocType 'System
#. Health Report'
@ -9565,7 +9565,7 @@ msgstr "أدخل المعلمات URL ثابت هنا (مثلا المرسل = E
#: frappe/public/js/form_builder/components/FieldProperties.vue:66
msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)."
msgstr ""
msgstr "أدخل اسم الحقل لحقل العملة أو قيمة مخزنة مؤقتاً (مثال Company:company:default_currency)."
#. Description of the 'Message Parameter' (Data) field in DocType 'SMS
#. Settings'
@ -9650,7 +9650,7 @@ msgstr "رسالة خطأ"
#: frappe/public/js/frappe/form/print_utils.js:182
msgid "Error connecting to QZ Tray Application...<br><br> You need to have QZ Tray application installed and running, to use the Raw Print feature.<br><br><a target=\"_blank\" href=\"https://qz.io/download/\">Click here to Download and install QZ Tray</a>.<br> <a target=\"_blank\" href=\"https://erpnext.com/docs/user/manual/en/setting-up/print/raw-printing\">Click here to learn more about Raw Printing</a>."
msgstr ""
msgstr "خطأ في الاتصال بتطبيق QZ Tray...<br><br> يجب أن يكون تطبيق QZ Tray مثبتاً وقيد التشغيل لاستخدام ميزة الطباعة الخام.<br><br><a target=\"_blank\" href=\"https://qz.io/download/\">انقر هنا لتنزيل وتثبيت QZ Tray</a>.<br> <a target=\"_blank\" href=\"https://erpnext.com/docs/user/manual/en/setting-up/print/raw-printing\">انقر هنا لمعرفة المزيد عن الطباعة الخام</a>."
#: frappe/email/doctype/email_domain/email_domain.py:32
msgid "Error connecting via IMAP/POP3: {e}"
@ -10036,7 +10036,7 @@ msgstr "الصادرات غير مسموح به. تحتاج {0} صلاحية ا
#: frappe/custom/doctype/customize_form/customize_form.js:285
msgid "Export only customizations assigned to the selected module.<br><span class='text-muted'><strong>Note:</strong> You must set the <em>Module (for export)</em> field on Custom Field and Property Setter records before applying this filter.</span><p class='alert alert-warning'> <strong>Warning:</strong> Customizations from other modules will be excluded.</p>"
msgstr ""
msgstr "تصدير التخصيصات المعينة للوحدة المحددة فقط.<br><span class='text-muted'><strong>ملاحظة:</strong> يجب تعيين حقل <em>الوحدة (للتصدير)</em> في سجلات حقل مخصص والملكية واضعة قبل تطبيق هذا المرشح.</span><p class='alert alert-warning'> <strong>تحذير:</strong> سيتم استبعاد التخصيصات من الوحدات الأخرى.</p>"
#. Description of the 'Export without main header' (Check) field in DocType
#. 'Data Export'
@ -10106,7 +10106,7 @@ msgstr "معلمات إضافية"
#. 'Email Account'
#: frappe/email/doctype/email_account/email_account.json
msgid "FAILURE"
msgstr ""
msgstr "فشل"
#. Option for the 'Social Login Provider' (Select) field in DocType 'Social
#. Login Key'
@ -10193,7 +10193,7 @@ msgstr "فشل فك تشفير المفتاح {0}"
#: frappe/core/doctype/communication/email.py:344
msgid "Failed to delete communication"
msgstr ""
msgstr "فشل في حذف الاتصال"
#: frappe/desk/reportview.py:642
msgid "Failed to delete {0} documents: {1}"
@ -10250,7 +10250,7 @@ msgstr "فشل طلب تسجيل الدخول إلى Frappe Cloud"
#: frappe/email/doctype/email_account/email_account.py:236
msgid "Failed to retrieve the list of IMAP folders from the server. Please ensure the mailbox is accessible and the account has permission to list folders."
msgstr ""
msgstr "فشل في استرداد قائمة مجلدات IMAP من الخادم. يرجى التأكد من أن صندوق البريد يمكن الوصول إليه وأن الحساب لديه إذن لعرض المجلدات."
#: frappe/email/doctype/email_queue/email_queue.py:347
msgid "Failed to send email with subject:"
@ -10376,7 +10376,7 @@ msgstr "حقل \"قيمة\" إلزامي. يرجى تحديد قيمة ليتم
#: frappe/desk/search.py:271
msgid "Field <code>{0}</code> not found in {1}"
msgstr ""
msgstr "الحقل <code>{0}</code> غير موجود في {1}"
#. Label of the description (Text) field in DocType 'Custom Field'
#: frappe/custom/doctype/custom_field/custom_field.json
@ -10636,7 +10636,7 @@ msgstr "ملف URL"
#: frappe/core/doctype/file/file.py:123
msgid "File URL is required when copying an existing attachment."
msgstr ""
msgstr "رابط الملف مطلوب عند نسخ مرفق موجود."
#: frappe/desk/page/backups/backups.py:107
msgid "File backup is ready"
@ -10813,7 +10813,7 @@ msgstr "مرشحات حفظ"
#. Description of the 'Script' (Code) field in DocType 'Report'
#: frappe/core/doctype/report/report.json
msgid "Filters will be accessible via <code>filters</code>. <br><br>Send output as <code>result = [result]</code>, or for old style <code>data = [columns], [result]</code>"
msgstr ""
msgstr "ستكون الفلاتر متاحة عبر <code>filters</code>. <br><br>أرسل الناتج كـ <code>result = [result]</code>، أو بالطريقة القديمة <code>data = [columns], [result]</code>"
#: frappe/public/js/frappe/ui/filters/filter_list.js:133
msgid "Filters {0}"
@ -10846,7 +10846,7 @@ msgstr "انتهى في"
#: frappe/public/js/frappe/form/grid_pagination.js:123
msgid "First"
msgstr ""
msgstr "الأول"
#. Label of the first_day_of_the_week (Select) field in DocType 'Language'
#. Label of the first_day_of_the_week (Select) field in DocType 'System
@ -10974,7 +10974,7 @@ msgstr "المستند التالي {0}"
#: frappe/public/js/frappe/form/linked_with.js:56
msgid "Following documents are linked with {0}"
msgstr ""
msgstr "المستندات التالية مرتبطة بـ {0}"
#: frappe/website/doctype/web_form/web_form.py:111
msgid "Following fields are missing:"
@ -11096,7 +11096,7 @@ msgstr "قيم قالب التذييل"
#: frappe/printing/page/print/print.js:138
msgid "Footer might not be visible as {0} option is disabled</div>"
msgstr ""
msgstr "قد لا يكون تذييل الصفحة مرئيًا لأن خيار {0} معطل</div>"
#. Description of the 'Footer HTML' (HTML Editor) field in DocType 'Letter
#. Head'
@ -11148,16 +11148,17 @@ msgstr "للقيمة"
#. Description of the 'Subject' (Data) field in DocType 'Notification'
#: frappe/email/doctype/notification/notification.json
msgid "For a dynamic subject, use Jinja tags like this: <code>{{ doc.name }} Delivered</code>"
msgstr ""
msgstr "لموضوع ديناميكي، استخدم وسوم Jinja على النحو التالي: <code>{{ doc.name }} Delivered</code>"
#: frappe/public/js/frappe/views/reports/report_view.js:435
msgid "For comparison, use >5, <10 or =324.\n"
"For ranges, use 5:10 (for values between 5 & 10)."
msgstr ""
msgstr "للمقارنة، استخدم >5 أو <10 أو =324.\n"
"للنطاقات، استخدم 5:10 (للقيم بين 5 و 10)."
#: frappe/public/js/frappe/views/reports/query_report.js:2293
msgid "For comparison, use >5, <10 or =324. For ranges, use 5:10 (for values between 5 & 10)."
msgstr ""
msgstr "للمقارنة، استخدم >5 أو <10 أو =324. للنطاقات، استخدم 5:10 (للقيم بين 5 و 10)."
#: frappe/public/js/frappe/utils/dashboard_utils.js:165
#: frappe/website/doctype/web_form/web_form.js:354
@ -11176,7 +11177,7 @@ msgstr "على سبيل المثال: {} فتح"
#. Description of the 'Client script' (Code) field in DocType 'Web Form'
#: frappe/website/doctype/web_form/web_form.json
msgid "For help see <a href=\"https://frappeframework.com/docs/user/en/guides/portal-development/web-forms\" target=\"_blank\">Client Script API and Examples</a>"
msgstr ""
msgstr "للمساعدة راجع <a href=\"https://frappeframework.com/docs/user/en/guides/portal-development/web-forms\" target=\"_blank\">واجهة برمجة العميل النصي وأمثلة</a>"
#: frappe/integrations/doctype/google_settings/google_settings.js:7
msgid "For more information, {0}."
@ -11336,7 +11337,7 @@ msgstr "جزء الوحدات"
#. Label of a Desktop Icon
#: frappe/desktop_icon/framework.json
msgid "Framework"
msgstr ""
msgstr "إطار العمل"
#. Option for the 'Social Login Provider' (Select) field in DocType 'Social
#. Login Key'
@ -11673,7 +11674,7 @@ msgstr "الحصول على الرمزية الخاص بك المعترف بها
#: frappe/public/js/frappe/ui/sidebar/sidebar.html:47
#: frappe/public/js/frappe/ui/user_onboarding/OnboardingPanel.vue:235
msgid "Getting Started"
msgstr ""
msgstr "البدء"
#. Label of the git_branch (Data) field in DocType 'Installed Application'
#: frappe/core/doctype/installed_application/installed_application.json
@ -12027,7 +12028,7 @@ msgstr "قم بتجميع أنواع المستندات المخصصة الخا
#: frappe/public/js/frappe/ui/group_by/group_by.js:431
msgid "Grouped by <span style='font-weight:600;'>{0}</b>"
msgstr ""
msgstr "مجمّع حسب <span style='font-weight:600;'>{0}</b>"
#. Option for the 'Method' (Select) field in DocType 'Recorder'
#: frappe/core/doctype/recorder/recorder.json
@ -12141,7 +12142,7 @@ msgstr "لديها مرفق"
#: frappe/public/js/frappe/views/inbox/inbox_view.js:102
msgid "Has Attachments"
msgstr ""
msgstr "يحتوي على مرفقات"
#. Name of a DocType
#: frappe/core/doctype/has_domain/has_domain.json
@ -12251,7 +12252,7 @@ msgstr "الترويسة"
#. Label of a Workspace Sidebar Item
#: frappe/workspace_sidebar/system.json
msgid "Health Report"
msgstr ""
msgstr "تقرير الحالة"
#. Option for the 'Type' (Select) field in DocType 'Dashboard Chart'
#: frappe/desk/doctype/dashboard_chart/dashboard_chart.json
@ -12365,7 +12366,7 @@ msgstr "الحقول الخفية"
#: frappe/public/js/frappe/views/reports/query_report.js:1777
msgid "Hidden columns include: <br> {0}"
msgstr ""
msgstr "الأعمدة المخفية تشمل: <br> {0}"
#. Option for the 'Page Number' (Select) field in DocType 'Print Format'
#: frappe/printing/doctype/print_format/print_format.json
@ -12481,7 +12482,7 @@ msgstr "إخفاء عطلة نهاية الأسبوع"
#. Permission'
#: frappe/core/doctype/user_permission/user_permission.json
msgid "Hide descendant records of <b>For Value</b>."
msgstr ""
msgstr "إخفاء السجلات الفرعية لـ <b>للقيمة</b>."
#: frappe/public/js/frappe/form/layout.js:296
msgid "Hide details"
@ -12671,16 +12672,16 @@ msgstr "مجلد IMAP"
#: frappe/email/doctype/email_account/email_account.py:275
msgid "IMAP Folder Not Found"
msgstr ""
msgstr "مجلد IMAP غير موجود"
#: frappe/email/doctype/email_account/email_account.py:239
#: frappe/email/doctype/email_account/email_account.py:247
msgid "IMAP Folder Validation Failed"
msgstr ""
msgstr "فشل التحقق من مجلد IMAP"
#: frappe/email/doctype/email_account/email_account.py:255
msgid "IMAP Folder name cannot be empty."
msgstr ""
msgstr "لا يمكن أن يكون اسم مجلد IMAP فارغًا."
#. Label of the ip_address (Data) field in DocType 'Activity Log'
#. Label of the ip_address (Data) field in DocType 'Comment'
@ -12840,7 +12841,7 @@ msgstr "في حالة التمكين ، يتم تعقب طرق عرض المست
#. (Check) field in DocType 'System Settings'
#: frappe/core/doctype/system_settings/system_settings.json
msgid "If enabled, only System Managers can upload public files. Other users can't see the checkbox <i>Is Private</i> in the upload dialog."
msgstr ""
msgstr "إذا تم التفعيل، يمكن فقط لمديري النظام تحميل الملفات العامة. لن يتمكن المستخدمون الآخرون من رؤية مربع الاختيار <i>غير الخاصة</i> في مربع حوار التحميل."
#. Description of the 'Track Seen' (Check) field in DocType 'DocType'
#: frappe/core/doctype/doctype/doctype.json
@ -12878,7 +12879,7 @@ msgstr "إذا تُركت فارغة، فستكون مساحة العمل الا
#: frappe/public/js/frappe/form/print_utils.js:36
msgid "If no Print Format is selected, the default template for this report will be used."
msgstr ""
msgstr "إذا لم يتم اختيار تنسيق طباعة، سيتم استخدام القالب الافتراضي لهذا التقرير."
#. Description of the 'Port' (Data) field in DocType 'Email Domain'
#: frappe/email/doctype/email_domain/email_domain.json
@ -13072,7 +13073,7 @@ msgstr "صورة الميدان"
#. Label of the footer_image_height (Float) field in DocType 'Letter Head'
#: frappe/printing/doctype/letter_head/letter_head.json
msgid "Image Height (px)"
msgstr ""
msgstr "ارتفاع الصورة (بكسل)"
#. Label of the image_link (Attach) field in DocType 'About Us Team Member'
#: frappe/website/doctype/about_us_team_member/about_us_team_member.json
@ -13087,7 +13088,7 @@ msgstr "عرض الصورة"
#. Label of the footer_image_width (Float) field in DocType 'Letter Head'
#: frappe/printing/doctype/letter_head/letter_head.json
msgid "Image Width (px)"
msgstr ""
msgstr "عرض الصورة (بكسل)"
#: frappe/core/doctype/doctype/doctype.py:1569
msgid "Image field must be a valid fieldname"
@ -13450,7 +13451,7 @@ msgstr "رمز التحقق غير صحيح"
#: frappe/public/js/frappe/views/gantt/gantt_view.js:88
msgid "Incorrect configuration"
msgstr ""
msgstr "إعدادات غير صحيحة"
#: frappe/model/document.py:1743
msgid "Incorrect value in row {0}:"
@ -13963,7 +13964,7 @@ msgstr "حالة المستند غير صالحة"
#: frappe/www/list.py:231
msgid "Invalid expression in Web Form Dynamic Filter for {0}: {1}"
msgstr ""
msgstr "تعبير غير صالح في فلتر نموذج الويب الديناميكي لـ {0}: {1}"
#: frappe/model/workflow.py:112
msgid "Invalid expression in Workflow Update Value: {0}"
@ -14036,7 +14037,7 @@ msgstr "سلسلة تسمية غير صالحة {}: النقطة (.) مفقود
#: frappe/model/naming.py:74
msgid "Invalid naming series {}: dot (.) missing before the numeric placeholders. Kindly use a format like <b>ABCD.#####</b>."
msgstr ""
msgstr "سلسلة تسمية غير صالحة {}: النقطة (.) مفقودة قبل العناصر النائبة الرقمية. يرجى استخدام تنسيق مثل <b>ABCD.#####</b>."
#: frappe/database/query.py:2374
msgid "Invalid nested expression: dictionary must represent a function or operator"
@ -14222,7 +14223,7 @@ msgstr "افتراضي"
#. 'Navbar Settings'
#: frappe/core/doctype/navbar_settings/navbar_settings.json
msgid "Is Dismissible"
msgstr ""
msgstr "قابل للإغلاق"
#. Label of the is_dynamic_url (Check) field in DocType 'Webhook'
#: frappe/integrations/doctype/webhook/webhook.json
@ -14420,7 +14421,7 @@ msgstr "أنه أمر محفوف بالمخاطر لحذف هذا الملف: {0
#: frappe/core/doctype/communication/email.py:359
msgid "It is too late to undo this email. It is already being sent."
msgstr ""
msgstr "فات الأوان لتراجع هذا البريد الإلكتروني. تم بالفعل إرساله."
#. Label of the item_label (Data) field in DocType 'Navbar Item'
#: frappe/core/doctype/navbar_item/navbar_item.json
@ -15327,11 +15328,11 @@ msgstr "أحب بواسطة"
#: frappe/public/js/frappe/list/list_view.js:785
msgid "Liked by me"
msgstr ""
msgstr "أعجبني"
#: frappe/public/js/frappe/ui/like.js:117
msgid "Liked by {0} people"
msgstr ""
msgstr "أعجب {0} أشخاص"
#. Label of the likes (Int) field in DocType 'Help Article'
#: frappe/website/doctype/help_article/help_article.json
@ -15519,7 +15520,7 @@ msgstr "مرتبط"
#: frappe/public/js/frappe/views/inbox/inbox_view.js:109
msgid "Linked with {0}"
msgstr ""
msgstr "مرتبط بـ {0}"
#: frappe/public/js/frappe/ui/toolbar/about.js:40
msgid "LinkedIn"
@ -15685,7 +15686,7 @@ msgstr "تحميل ..."
#: frappe/core/page/permission_manager/permission_manager.js:615
msgid "Loading…"
msgstr ""
msgstr "جارٍ التحميل…"
#. Label of the location (Data) field in DocType 'User'
#. Label of the location (Data) field in DocType 'Event'
@ -15838,7 +15839,7 @@ msgstr "سجل الدخول لبدء مناقشة جديدة"
#: frappe/www/portal.py:19
msgid "Login to view"
msgstr ""
msgstr "سجّل الدخول للعرض"
#: frappe/www/login.html:63
msgid "Login to {0}"
@ -16049,7 +16050,7 @@ msgstr "إدارة تطبيقات الطرف الثالث"
#: frappe/public/js/billing.bundle.js:77
msgid "Manage Billing"
msgstr ""
msgstr "إدارة الفواتير"
#. Label of the reqd (Check) field in DocType 'DocField'
#. Label of the mandatory (Check) field in DocType 'Report Filter'
@ -16129,7 +16130,7 @@ msgstr "قم بربط الأعمدة من {0} بالحقول في {1}"
#. Description of the 'Dynamic Route' (Check) field in DocType 'Web Page'
#: frappe/website/doctype/web_page/web_page.json
msgid "Map route parameters into form variables. Example <code>/project/&lt;name&gt;</code>"
msgstr ""
msgstr "تعيين معلمات المسار إلى متغيرات الاستمارة. مثال <code>/project/&lt;name&gt;</code>"
#: frappe/core/doctype/data_import/importer.py:932
msgid "Mapping column {0} to field {1}"
@ -17057,11 +17058,11 @@ msgstr "N / A"
#. 'Email Account'
#: frappe/email/doctype/email_account/email_account.json
msgid "NEVER"
msgstr ""
msgstr "أبداً"
#: frappe/workflow/doctype/workflow/workflow.js:19
msgid "NOTE: If you add states or transitions in the table, it will be reflected in the Workflow Builder but you will have to position them manually. Also Workflow Builder is currently in <b>BETA</b>."
msgstr ""
msgstr "ملاحظة: إذا قمت بإضافة حالات أو تحولات في الجدول، فسيتم عكسها في منشئ سير العمل ولكن سيتعين عليك تحديد موضعها يدويًا. كما أن منشئ سير العمل حاليًا في مرحلة <b>تجريبي</b>."
#. Description of the 'LDAP Group Field' (Data) field in DocType 'LDAP
#. Settings'
@ -17132,7 +17133,9 @@ msgstr "التسمية"
msgid "Naming Options:\n"
"<ol><li><b>field:[fieldname]</b> - By Field</li><li><b>naming_series:</b> - By Naming Series (field called naming_series must be present)</li><li><b>Prompt</b> - Prompt user for a name</li><li><b>[series]</b> - Series by prefix (separated by a dot); for example PRE.#####</li>\n"
"<li><b>format:EXAMPLE-{MM}morewords{fieldname1}-{fieldname2}-{#####}</b> - Replace all braced words (fieldnames, date words (DD, MM, YY), series) with their value. Outside braces, any characters can be used.</li></ol>"
msgstr ""
msgstr "خيارات التسمية:\n"
"<ol><li><b>field:[اسم الحقل]</b> - حسب الحقل</li><li><b>naming_series:</b> - حسب Naming Series (يجب وجود حقل باسم naming_series)</li><li><b>Prompt</b> - مطالبة المستخدم بإدخال اسم</li><li><b>[سلسلة]</b> - سلسلة حسب البادئة (مفصولة بنقطة)؛ على سبيل المثال PRE.#####</li>\n"
"<li><b>format:EXAMPLE-{MM}morewords{fieldname1}-{fieldname2}-{#####}</b> - استبدال جميع الكلمات بين الأقواس (أسماء الحقول، كلمات التاريخ (DD، MM، YY)، السلاسل) بقيمها. خارج الأقواس، يمكن استخدام أي أحرف.</li></ol>"
#. Label of the naming_rule (Select) field in DocType 'DocType'
#. Label of the naming_rule (Select) field in DocType 'Customize Form'
@ -17358,7 +17361,7 @@ msgstr "اسم التقرير الجديد"
#: frappe/core/doctype/role/role.js:55
msgid "New Role Name"
msgstr ""
msgstr "اسم الدور الجديد"
#: frappe/public/js/frappe/widgets/widget_dialog.js:60
msgid "New Shortcut"
@ -17388,7 +17391,9 @@ msgstr "مساحة عمل جديدة"
msgid "New line separated list of allowed public client URLs (eg <code>https://frappe.io</code>), or <code>*</code> to accept all.\n"
"<br>\n"
"Public clients are restricted by default."
msgstr ""
msgstr "قائمة بعناوين URL المسموح بها للعملاء العامين مفصولة بأسطر جديدة (مثال <code>https://frappe.io</code>)، أو <code>*</code> لقبول الكل.\n"
"<br>\n"
"العملاء العامون مقيدون افتراضيًا."
#. Description of the 'Scopes Supported' (Small Text) field in DocType 'OAuth
#. Settings'
@ -17407,11 +17412,11 @@ msgstr "لا يمكن أن تكون كلمة المرور الجديدة هي ن
#: frappe/core/doctype/user/user.py:962
msgid "New password cannot be the same as your current password. Please choose a different password."
msgstr ""
msgstr "كلمة المرور الجديدة لا يمكن أن تكون نفس كلمة المرور الحالية. يرجى اختيار كلمة مرور مختلفة."
#: frappe/core/doctype/role/role.js:78
msgid "New role created successfully."
msgstr ""
msgstr "تم إنشاء الدور الجديد بنجاح."
#: frappe/utils/change_log.py:389
msgid "New updates are available"
@ -17679,7 +17684,7 @@ msgstr "لا يوجد حدث تقويم Google للمزامنة."
#: frappe/email/doctype/email_account/email_account.py:244
msgid "No IMAP folders were found on the server. Please verify the email account settings and ensure the mailbox contains folders."
msgstr ""
msgstr "لم يتم العثور على مجلدات IMAP على الخادم. يرجى التحقق من إعدادات حساب البريد الإلكتروني والتأكد من أن صندوق البريد يحتوي على مجلدات."
#: frappe/public/js/frappe/ui/capture.js:263
msgid "No Images"
@ -17778,7 +17783,7 @@ msgstr "لا توجد فعاليات قادمة"
#: frappe/core/page/permission_manager/permission_manager.js:630
msgid "No activity recorded yet."
msgstr ""
msgstr "لم يتم تسجيل أي نشاط حتى الآن."
#: frappe/public/js/frappe/form/templates/address_list.html:43
msgid "No address added yet."
@ -17883,7 +17888,7 @@ msgstr "لا توجد سجلات أخرى"
#: frappe/public/js/frappe/views/reports/report_view.js:327
msgid "No matching entries in the current results"
msgstr ""
msgstr "لا توجد إدخالات مطابقة في النتائج الحالية"
#: frappe/templates/includes/search_template.html:49
msgid "No matching records. Search something new"
@ -17971,7 +17976,7 @@ msgstr "لم يتم العثور على نموذج في المسار: {0}"
#: frappe/core/page/permission_manager/permission_manager.js:369
msgid "No user has the role <strong>{0}</strong>"
msgstr ""
msgstr "لا يوجد مستعمل لديه الدور <strong>{0}</strong>"
#: frappe/public/js/frappe/form/controls/multiselect_list.js:277
#: frappe/public/js/frappe/utils/utils.js:1024
@ -18511,7 +18516,7 @@ msgstr "خطأ في OAuth"
#. Label of a Workspace Sidebar Item
#: frappe/workspace_sidebar/integrations.json
msgid "OAuth Provider"
msgstr ""
msgstr "مزود OAuth"
#. Name of a DocType
#. Label of a Link in the Integrations Workspace
@ -18562,7 +18567,7 @@ msgstr "نموذج رسالة نصية قصيرة لرمز التحقق لمرة
#: frappe/core/doctype/system_settings/system_settings.py:168
msgid "OTP SMS Template must contain <code>{0}</code> placeholder to insert the OTP."
msgstr ""
msgstr "يجب أن يحتوي نموذج رسالة OTP النصية على العنصر النائب <code>{0}</code> لإدراج رمز OTP."
#: frappe/twofactor.py:459
msgid "OTP Secret Reset - {0}"
@ -18576,7 +18581,7 @@ msgstr "تمت إعادة تعيين سر مكتب المدعي العام. سو
#. Settings'
#: frappe/core/doctype/system_settings/system_settings.json
msgid "OTP placeholder should be defined as <code>{{ otp }}</code> "
msgstr ""
msgstr "يجب تعريف عنصر OTP النائب كـ <code>{{ otp }}</code> "
#: frappe/templates/includes/login/login.js:351
msgid "OTP setup using OTP App was not completed. Please contact Administrator."
@ -18780,7 +18785,7 @@ msgstr "السماح بالتحرير فقط لـ"
#: frappe/core/doctype/module_def/module_def.py:95
msgid "Only Custom Modules can be renamed."
msgstr ""
msgstr "يمكن إعادة تسمية الوحدات المخصصة فقط."
#: frappe/core/doctype/doctype/doctype.py:1683
msgid "Only Options allowed for Data field are:"
@ -18905,7 +18910,7 @@ msgstr "افتح المساعدة"
#: frappe/public/js/frappe/form/controls/data.js:84
#: frappe/public/js/frappe/form/controls/link.js:17
msgid "Open Link"
msgstr ""
msgstr "فتح الرابط"
#. Label of the open_reference_document (Button) field in DocType 'Notification
#. Log'
@ -18923,7 +18928,7 @@ msgstr "تطبيقات مفتوحة المصدر للويب"
#: frappe/public/js/frappe/form/controls/base_control.js:165
msgid "Open Translation"
msgstr ""
msgstr "فتح الترجمة"
#. Label of the open_in_new_tab (Check) field in DocType 'Top Bar Item'
#: frappe/website/doctype/top_bar_item/top_bar_item.json
@ -18947,7 +18952,7 @@ msgstr "وحدة تحكم مفتوحة"
#. Item'
#: frappe/desk/doctype/workspace_sidebar_item/workspace_sidebar_item.json
msgid "Open in New Tab"
msgstr ""
msgstr "فتح في علامة تبويب جديدة"
#: frappe/public/js/print_format_builder/Preview.vue:17
msgid "Open in a new tab"
@ -20069,7 +20074,7 @@ msgstr "الرجاء إضافة تعليق صالح."
#: frappe/public/js/frappe/views/reports/query_report.js:1560
msgid "Please adjust filters to include some data"
msgstr ""
msgstr "يرجى تعديل الفلاتر لتضمين بعض البيانات"
#: frappe/core/doctype/user/user.py:1152
msgid "Please ask your administrator to verify your sign-up"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: developers@frappe.io\n"
"POT-Creation-Date: 2026-04-12 09:45+0000\n"
"PO-Revision-Date: 2026-04-15 16:26\n"
"PO-Revision-Date: 2026-04-16 16:37\n"
"Last-Translator: developers@frappe.io\n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
@ -10780,7 +10780,7 @@ msgstr "Datei-URL"
#: frappe/core/doctype/file/file.py:123
msgid "File URL is required when copying an existing attachment."
msgstr ""
msgstr "Die Datei-URL ist beim Kopieren eines vorhandenen Anhangs erforderlich."
#: frappe/desk/page/backups/backups.py:107
msgid "File backup is ready"
@ -13023,7 +13023,7 @@ msgstr "Wenn Sie keine Angaben machen, wird als Standardarbeitsbereich der zulet
#: frappe/public/js/frappe/form/print_utils.js:36
msgid "If no Print Format is selected, the default template for this report will be used."
msgstr ""
msgstr "Wenn kein Druckformat ausgewählt ist, wird die Standardvorlage für diesen Bericht verwendet."
#. Description of the 'Port' (Data) field in DocType 'Email Domain'
#: frappe/email/doctype/email_domain/email_domain.json

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: developers@frappe.io\n"
"POT-Creation-Date: 2026-04-12 09:45+0000\n"
"PO-Revision-Date: 2026-04-15 16:26\n"
"PO-Revision-Date: 2026-04-16 16:37\n"
"Last-Translator: developers@frappe.io\n"
"Language-Team: Spanish\n"
"MIME-Version: 1.0\n"
@ -4449,7 +4449,7 @@ msgstr "No se puede editar un documento cancelado"
#: frappe/website/doctype/web_form/web_form.js:367
msgid "Cannot edit filters for standard Web Forms"
msgstr ""
msgstr "No se pueden editar filtros para formularios web estándar"
#: frappe/desk/doctype/dashboard_chart/dashboard_chart.js:378
msgid "Cannot edit filters for standard charts"
@ -9285,15 +9285,15 @@ msgstr "La cola de correos electrónicos está detenida. Reanúdela para enviar
#: frappe/public/js/frappe/views/communication.js:955
msgid "Email sending undone"
msgstr ""
msgstr "Envío de correo electrónico deshecho"
#: frappe/email/doctype/email_queue/email_queue.py:199
msgid "Email size {0:.2f} MB exceeds the maximum allowed size of {1:.2f} MB"
msgstr ""
msgstr "El tamaño del correo electrónico {0:.2f} MB excede el tamaño máximo permitido de {1:.2f} MB"
#: frappe/core/doctype/communication/email.py:349
msgid "Email undo window is over. Cannot undo email."
msgstr ""
msgstr "El período para deshacer el correo electrónico ha expirado. No se puede deshacer el correo electrónico."
#. Label of the section_break_udjs (Section Break) field in DocType 'System
#. Health Report'
@ -9700,7 +9700,7 @@ msgstr "Introduzca los parámetros de URL aquí (Ej. sender=ERPNext, username=ER
#: frappe/public/js/form_builder/components/FieldProperties.vue:66
msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)."
msgstr ""
msgstr "Introduzca el nombre del campo de divisa o un valor en caché (p. ej. Company:company:default_currency)."
#. Description of the 'Message Parameter' (Data) field in DocType 'SMS
#. Settings'
@ -9712,7 +9712,7 @@ msgstr "Introduzca el parámetro url para el mensaje"
#. Settings'
#: frappe/core/doctype/sms_settings/sms_settings.json
msgid "Enter url parameter for receiver nos"
msgstr ""
msgstr "Introduzca el parámetro de URL para los números de destinatario"
#: frappe/public/js/frappe/ui/messages.js:342
msgid "Enter your password"
@ -10065,7 +10065,7 @@ msgstr "Tiempo de expiración"
#. Label of the expire_notification_on (Datetime) field in DocType 'Note'
#: frappe/desk/doctype/note/note.json
msgid "Expire Notification On"
msgstr ""
msgstr "Expiración de notificación el"
#. Option for the 'Delivery Status' (Select) field in DocType 'Communication'
#. Option for the 'Status' (Select) field in DocType 'User Invitation'
@ -10089,7 +10089,7 @@ msgstr "Expira el"
#. Label of the lifespan_qrcode_image (Int) field in DocType 'System Settings'
#: frappe/core/doctype/system_settings/system_settings.json
msgid "Expiry time of QR Code Image Page"
msgstr ""
msgstr "Tiempo de expiración de la Página de Imagen del Código QR"
#. Label of the export (Check) field in DocType 'Custom DocPerm'
#. Label of the export (Check) field in DocType 'DocPerm'
@ -10241,7 +10241,7 @@ msgstr "Parámetros extra"
#. 'Email Account'
#: frappe/email/doctype/email_account/email_account.json
msgid "FAILURE"
msgstr ""
msgstr "FALLO"
#. Option for the 'Social Login Provider' (Select) field in DocType 'Social
#. Login Key'
@ -10328,7 +10328,7 @@ msgstr "Fallo al descifrar la clave {0}"
#: frappe/core/doctype/communication/email.py:344
msgid "Failed to delete communication"
msgstr ""
msgstr "No se pudo eliminar la comunicación"
#: frappe/desk/reportview.py:642
msgid "Failed to delete {0} documents: {1}"
@ -10385,7 +10385,7 @@ msgstr "No se pudo solicitar el inicio de sesión en Frappe Cloud"
#: frappe/email/doctype/email_account/email_account.py:236
msgid "Failed to retrieve the list of IMAP folders from the server. Please ensure the mailbox is accessible and the account has permission to list folders."
msgstr ""
msgstr "No se pudo recuperar la lista de carpetas IMAP del servidor. Asegúrese de que el buzón de correo sea accesible y que la cuenta tenga permiso para listar carpetas."
#: frappe/email/doctype/email_queue/email_queue.py:347
msgid "Failed to send email with subject:"
@ -10771,7 +10771,7 @@ msgstr "URL del archivo"
#: frappe/core/doctype/file/file.py:123
msgid "File URL is required when copying an existing attachment."
msgstr ""
msgstr "La URL del archivo es obligatoria al copiar un adjunto existente."
#: frappe/desk/page/backups/backups.py:107
msgid "File backup is ready"
@ -10981,7 +10981,7 @@ msgstr "Terminado el"
#: frappe/public/js/frappe/form/grid_pagination.js:123
msgid "First"
msgstr ""
msgstr "Primera"
#. Label of the first_day_of_the_week (Select) field in DocType 'Language'
#. Label of the first_day_of_the_week (Select) field in DocType 'System
@ -11109,7 +11109,7 @@ msgstr "Documentos seguidos {0}"
#: frappe/public/js/frappe/form/linked_with.js:56
msgid "Following documents are linked with {0}"
msgstr ""
msgstr "Los siguientes documentos están vinculados con {0}"
#: frappe/website/doctype/web_form/web_form.py:111
msgid "Following fields are missing:"
@ -11288,7 +11288,8 @@ msgstr "Para añadir un asunto dinámico, utilice etiquetas Jinja como: <code>{{
#: frappe/public/js/frappe/views/reports/report_view.js:435
msgid "For comparison, use >5, <10 or =324.\n"
"For ranges, use 5:10 (for values between 5 & 10)."
msgstr ""
msgstr "Para comparar, use >5, <10 o =324.\n"
"Para rangos, use 5:10 (para valores entre 5 y 10)."
#: frappe/public/js/frappe/views/reports/query_report.js:2293
msgid "For comparison, use >5, <10 or =324. For ranges, use 5:10 (for values between 5 & 10)."
@ -11451,7 +11452,7 @@ msgstr "Adelante"
#. Route Redirect'
#: frappe/website/doctype/website_route_redirect/website_route_redirect.json
msgid "Forward Query Parameters"
msgstr ""
msgstr "Reenviar parámetros de consulta"
#. Label of the forward_to_email (Data) field in DocType 'Contact Us Settings'
#: frappe/website/doctype/contact_us_settings/contact_us_settings.json
@ -11581,7 +11582,7 @@ msgstr "Desde la fecha"
#. Label of the from_date_field (Select) field in DocType 'Auto Email Report'
#: frappe/email/doctype/auto_email_report/auto_email_report.json
msgid "From Date Field"
msgstr ""
msgstr "Desde campo de fecha"
#: frappe/public/js/frappe/views/reports/query_report.js:1992
msgid "From Document Type"
@ -11808,7 +11809,7 @@ msgstr "Obtenga su avatar reconocido globalmente desde Gravatar.com"
#: frappe/public/js/frappe/ui/sidebar/sidebar.html:47
#: frappe/public/js/frappe/ui/user_onboarding/OnboardingPanel.vue:235
msgid "Getting Started"
msgstr ""
msgstr "Primeros pasos"
#. Label of the git_branch (Data) field in DocType 'Installed Application'
#: frappe/core/doctype/installed_application/installed_application.json
@ -12073,7 +12074,7 @@ msgstr "La URL de Google Sheets debe terminar con \"gid={number}\". Copie y pegu
#. Label of the grant_type (Select) field in DocType 'OAuth Client'
#: frappe/integrations/doctype/oauth_client/oauth_client.json
msgid "Grant Type"
msgstr ""
msgstr "Tipo de concesión"
#: frappe/public/js/frappe/form/dashboard.js:34
#: frappe/public/js/frappe/form/templates/form_dashboard.html:10
@ -12111,7 +12112,7 @@ msgstr "Estado vacío de cuadrícula"
#: frappe/core/doctype/doctype/doctype.json
#: frappe/custom/doctype/customize_form/customize_form.json
msgid "Grid Page Length"
msgstr ""
msgstr "Longitud de página de la cuadrícula"
#: frappe/public/js/frappe/ui/keyboard.js:127
msgid "Grid Shortcuts"
@ -12276,7 +12277,7 @@ msgstr "Tiene Adjunto"
#: frappe/public/js/frappe/views/inbox/inbox_view.js:102
msgid "Has Attachments"
msgstr ""
msgstr "Tiene adjuntos"
#. Name of a DocType
#: frappe/core/doctype/has_domain/has_domain.json
@ -12806,16 +12807,16 @@ msgstr "Carpeta IMAP"
#: frappe/email/doctype/email_account/email_account.py:275
msgid "IMAP Folder Not Found"
msgstr ""
msgstr "Carpeta IMAP no encontrada"
#: frappe/email/doctype/email_account/email_account.py:239
#: frappe/email/doctype/email_account/email_account.py:247
msgid "IMAP Folder Validation Failed"
msgstr ""
msgstr "Validación de carpeta IMAP fallida"
#: frappe/email/doctype/email_account/email_account.py:255
msgid "IMAP Folder name cannot be empty."
msgstr ""
msgstr "El nombre de la carpeta IMAP no puede estar vacío."
#. Label of the ip_address (Data) field in DocType 'Activity Log'
#. Label of the ip_address (Data) field in DocType 'Comment'
@ -12920,7 +12921,7 @@ msgstr "Si un rol no tiene acceso al nivel 0, los niveles superiores carecen de
#. 'Workflow'
#: frappe/workflow/doctype/workflow/workflow.json
msgid "If checked, a confirmation will be required before performing workflow actions."
msgstr ""
msgstr "Si se marca, se requerirá una confirmación antes de realizar las acciones del flujo de trabajo."
#. Description of the 'Is Active' (Check) field in DocType 'Workflow'
#: frappe/workflow/doctype/workflow/workflow.json
@ -13013,7 +13014,7 @@ msgstr "Si se deja vacío, el Área de Trabajo predeterminado será la última
#: frappe/public/js/frappe/form/print_utils.js:36
msgid "If no Print Format is selected, the default template for this report will be used."
msgstr ""
msgstr "Si no se selecciona un Formato de impresión, se utilizará la plantilla predeterminada para este reporte."
#. Description of the 'Port' (Data) field in DocType 'Email Domain'
#: frappe/email/doctype/email_domain/email_domain.json
@ -13207,7 +13208,7 @@ msgstr "Campo de Imagen"
#. Label of the footer_image_height (Float) field in DocType 'Letter Head'
#: frappe/printing/doctype/letter_head/letter_head.json
msgid "Image Height (px)"
msgstr ""
msgstr "Alto de Imagen (px)"
#. Label of the image_link (Attach) field in DocType 'About Us Team Member'
#: frappe/website/doctype/about_us_team_member/about_us_team_member.json
@ -13222,7 +13223,7 @@ msgstr "Vista de Imagen"
#. Label of the footer_image_width (Float) field in DocType 'Letter Head'
#: frappe/printing/doctype/letter_head/letter_head.json
msgid "Image Width (px)"
msgstr ""
msgstr "Ancho de Imagen (px)"
#: frappe/core/doctype/doctype/doctype.py:1569
msgid "Image field must be a valid fieldname"
@ -13451,7 +13452,7 @@ msgstr "En respuesta a"
#: frappe/custom/doctype/custom_field/custom_field.json
#: frappe/custom/doctype/customize_form_field/customize_form_field.json
msgid "In Standard Filter"
msgstr ""
msgstr "En Filtro Estándar"
#. Description of the 'Font Size' (Float) field in DocType 'Print Settings'
#: frappe/printing/doctype/print_settings/print_settings.json
@ -14098,11 +14099,11 @@ msgstr "Estado del documento no válido"
#: frappe/www/list.py:231
msgid "Invalid expression in Web Form Dynamic Filter for {0}: {1}"
msgstr ""
msgstr "Expresión inválida en el filtro dinámico del formulario web para {0}: {1}"
#: frappe/model/workflow.py:112
msgid "Invalid expression in Workflow Update Value: {0}"
msgstr ""
msgstr "Expresión inválida en el valor de actualización del flujo de trabajo: {0}"
#: frappe/public/js/frappe/utils/dashboard_utils.js:218
msgid "Invalid expression set in filter {0} ({1})"
@ -14159,7 +14160,7 @@ msgstr "JSON no válido agregado en las opciones personalizadas: {0}"
#: frappe/core/api/user_invitation.py:132
msgid "Invalid key"
msgstr ""
msgstr "Clave no válida"
#: frappe/model/naming.py:511
msgid "Invalid name type (integer) for varchar name column"
@ -14171,11 +14172,11 @@ msgstr "Serie de nombres {} no válida: falta el punto (.)"
#: frappe/model/naming.py:74
msgid "Invalid naming series {}: dot (.) missing before the numeric placeholders. Kindly use a format like <b>ABCD.#####</b>."
msgstr ""
msgstr "Serie de nomenclatura no válida {}: falta el punto (.) antes de los marcadores numéricos. Utilice un formato como <b>ABCD.#####</b>."
#: frappe/database/query.py:2374
msgid "Invalid nested expression: dictionary must represent a function or operator"
msgstr ""
msgstr "Expresión anidada inválida: el diccionario debe representar una función o un operador"
#: frappe/core/doctype/data_import/importer.py:458
msgid "Invalid or corrupted content for import"
@ -14203,7 +14204,7 @@ msgstr "Formato de filtro simple no válido: {0}"
#: frappe/database/query.py:728
msgid "Invalid start for filter condition: {0}. Expected a list or tuple."
msgstr ""
msgstr "Inicio inválido para la condición de filtro: {0}. Se esperaba una lista o tupla."
#: frappe/core/doctype/data_import/importer.py:435
msgid "Invalid template file for import"
@ -14237,7 +14238,7 @@ msgstr "Condición {0} no válida"
#: frappe/database/query.py:2263
msgid "Invalid {0} dictionary format"
msgstr ""
msgstr "Formato de diccionario {0} inválido"
#. Option for the 'Style' (Select) field in DocType 'Workflow State'
#: frappe/workflow/doctype/workflow_state/workflow_state.json
@ -14357,7 +14358,7 @@ msgstr "Es por defecto"
#. 'Navbar Settings'
#: frappe/core/doctype/navbar_settings/navbar_settings.json
msgid "Is Dismissible"
msgstr ""
msgstr "Es descartable"
#. Label of the is_dynamic_url (Check) field in DocType 'Webhook'
#: frappe/integrations/doctype/webhook/webhook.json
@ -14385,7 +14386,7 @@ msgstr "Está oculto"
#. Label of the is_home_folder (Check) field in DocType 'File'
#: frappe/core/doctype/file/file.json
msgid "Is Home Folder"
msgstr ""
msgstr "Es la carpeta de inicio"
#. Label of the reqd (Check) field in DocType 'Custom Field'
#: frappe/custom/doctype/custom_field/custom_field.json
@ -14555,7 +14556,7 @@ msgstr "Es arriesgado eliminar este archivo: {0}. Por favor, póngase en contact
#: frappe/core/doctype/communication/email.py:359
msgid "It is too late to undo this email. It is already being sent."
msgstr ""
msgstr "Es demasiado tarde para deshacer este correo electrónico. Ya se está enviando."
#. Label of the item_label (Data) field in DocType 'Navbar Item'
#: frappe/core/doctype/navbar_item/navbar_item.json
@ -14839,7 +14840,7 @@ msgstr "Grupo LDAP"
#. Label of the ldap_group_field (Data) field in DocType 'LDAP Settings'
#: frappe/integrations/doctype/ldap_settings/ldap_settings.json
msgid "LDAP Group Field"
msgstr ""
msgstr "Campo de grupo LDAP"
#. Name of a DocType
#: frappe/integrations/doctype/ldap_group_mapping/ldap_group_mapping.json
@ -14857,7 +14858,7 @@ msgstr "Asignaciones de grupo LDAP"
#. Settings'
#: frappe/integrations/doctype/ldap_settings/ldap_settings.json
msgid "LDAP Group Member attribute"
msgstr ""
msgstr "Atributo de miembro de grupo LDAP"
#. Label of the ldap_last_name_field (Data) field in DocType 'LDAP Settings'
#: frappe/integrations/doctype/ldap_settings/ldap_settings.json
@ -15189,7 +15190,7 @@ msgstr "Última sincronización en"
#. Label of the last_updated (Datetime) field in DocType 'User Session Display'
#: frappe/core/doctype/user_session_display/user_session_display.json
msgid "Last Updated"
msgstr ""
msgstr "Última actualización"
#: frappe/model/meta.py:57 frappe/public/js/frappe/model/meta.js:213
#: frappe/public/js/frappe/model/model.js:130
@ -15462,7 +15463,7 @@ msgstr "Gustado por"
#: frappe/public/js/frappe/list/list_view.js:785
msgid "Liked by me"
msgstr ""
msgstr "Me gusta"
#: frappe/public/js/frappe/ui/like.js:117
msgid "Liked by {0} people"
@ -15480,7 +15481,7 @@ msgstr "Límite"
#: frappe/database/query.py:296
msgid "Limit must be a non-negative integer"
msgstr ""
msgstr "El límite debe ser un número entero no negativo"
#. Option for the 'Type' (Select) field in DocType 'Dashboard Chart'
#: frappe/desk/doctype/dashboard_chart/dashboard_chart.json
@ -15543,12 +15544,12 @@ msgstr "Detalles del enlace"
#: frappe/core/doctype/communication_link/communication_link.json
#: frappe/core/doctype/doctype_link/doctype_link.json
msgid "Link DocType"
msgstr ""
msgstr "Enlace DocType"
#. Label of the link_doctype (Link) field in DocType 'Dynamic Link'
#: frappe/core/doctype/dynamic_link/dynamic_link.json
msgid "Link Document Type"
msgstr ""
msgstr "Tipo de Documento del Enlace"
#: frappe/website/doctype/personal_data_deletion_request/personal_data_deletion_request.py:407
#: frappe/workflow/doctype/workflow_action/workflow_action.py:214
@ -15564,7 +15565,7 @@ msgstr "Límite de resultados del campo de enlace"
#. Label of the link_fieldname (Data) field in DocType 'DocType Link'
#: frappe/core/doctype/doctype_link/doctype_link.json
msgid "Link Fieldname"
msgstr ""
msgstr "Nombre del Campo de Enlace"
#. Label of the link_filters (JSON) field in DocType 'DocField'
#. Label of the link_filters (JSON) field in DocType 'Custom Field'
@ -15692,7 +15693,7 @@ msgstr "Enlaces"
#: frappe/public/js/frappe/ui/toolbar/search_utils.js:86
#: frappe/public/js/frappe/utils/utils.js:984
msgid "List"
msgstr ""
msgstr "Lista"
#. Label of the list__search_settings_section (Section Break) field in DocType
#. 'DocField'
@ -15801,7 +15802,7 @@ msgstr "Cargando filtros..."
#: frappe/core/doctype/data_import/data_import.js:283
msgid "Loading import file..."
msgstr ""
msgstr "Cargando archivo de importación..."
#: frappe/public/js/frappe/ui/toolbar/about.js:75
msgid "Loading versions..."
@ -15973,7 +15974,7 @@ msgstr "Inicie sesión para iniciar una nueva discusión"
#: frappe/www/portal.py:19
msgid "Login to view"
msgstr ""
msgstr "Inicie sesión para ver"
#: frappe/www/login.html:63
msgid "Login to {0}"
@ -16133,7 +16134,7 @@ msgstr "Usuario de Mantenimiento"
#. Label of the major (Int) field in DocType 'Package Release'
#: frappe/core/doctype/package_release/package_release.json
msgid "Major"
msgstr ""
msgstr "Mayor"
#. Label of the show_name_in_global_search (Check) field in DocType 'DocType'
#. Label of the show_name_in_global_search (Check) field in DocType 'Customize
@ -16141,7 +16142,7 @@ msgstr ""
#: frappe/core/doctype/doctype/doctype.json
#: frappe/custom/doctype/customize_form/customize_form.json
msgid "Make \"name\" searchable in Global Search"
msgstr ""
msgstr "Hacer \"name\" buscable en la búsqueda global"
#. Label of the make_attachment_public (Check) field in DocType 'DocField'
#: frappe/core/doctype/docfield/docfield.json
@ -16246,7 +16247,7 @@ msgstr "Obligatorio:"
#. Option for the 'Select List View' (Select) field in DocType 'Form Tour'
#: frappe/desk/doctype/form_tour/form_tour.json
msgid "Map"
msgstr ""
msgstr "Mapa"
#: frappe/public/js/frappe/data_import/import_preview.js:194
#: frappe/public/js/frappe/data_import/import_preview.js:306
@ -16563,7 +16564,7 @@ msgstr "Ejemplos de Mensaje"
#: frappe/core/doctype/communication/communication.json
#: frappe/email/doctype/email_queue/email_queue.json
msgid "Message ID"
msgstr ""
msgstr "ID del mensaje"
#. Label of the message_parameter (Data) field in DocType 'SMS Settings'
#: frappe/core/doctype/sms_settings/sms_settings.json
@ -16624,7 +16625,7 @@ msgstr "Meta imagen"
#: frappe/website/doctype/web_page/web_page.json
#: frappe/website/doctype/website_route_meta/website_route_meta.json
msgid "Meta Tags"
msgstr ""
msgstr "Metaetiquetas"
#: frappe/website/doctype/web_page/web_page.js:117
msgid "Meta Title"
@ -17192,7 +17193,7 @@ msgstr "N/D"
#. 'Email Account'
#: frappe/email/doctype/email_account/email_account.json
msgid "NEVER"
msgstr ""
msgstr "NUNCA"
#: frappe/workflow/doctype/workflow/workflow.js:19
msgid "NOTE: If you add states or transitions in the table, it will be reflected in the Workflow Builder but you will have to position them manually. Also Workflow Builder is currently in <b>BETA</b>."
@ -17495,7 +17496,7 @@ msgstr "Nuevo nombre de Informe"
#: frappe/core/doctype/role/role.js:55
msgid "New Role Name"
msgstr ""
msgstr "Nombre del Nuevo Rol"
#: frappe/public/js/frappe/widgets/widget_dialog.js:60
msgid "New Shortcut"
@ -17525,18 +17526,20 @@ msgstr "Nueva Área de Trabajo"
msgid "New line separated list of allowed public client URLs (eg <code>https://frappe.io</code>), or <code>*</code> to accept all.\n"
"<br>\n"
"Public clients are restricted by default."
msgstr ""
msgstr "Lista separada por líneas de URLs de clientes públicos permitidos (ej. <code>https://frappe.io</code>), o <code>*</code> para aceptar todos.\n"
"<br>\n"
"Los clientes públicos están restringidos por defecto."
#. Description of the 'Scopes Supported' (Small Text) field in DocType 'OAuth
#. Settings'
#: frappe/integrations/doctype/oauth_settings/oauth_settings.json
msgid "New line separated list of scope values."
msgstr ""
msgstr "Lista de valores de alcance separados por nueva línea."
#. Description of the 'Contacts' (Small Text) field in DocType 'OAuth Client'
#: frappe/integrations/doctype/oauth_client/oauth_client.json
msgid "New lines separated list of strings representing ways to contact people responsible for this client, typically email addresses."
msgstr ""
msgstr "Lista de cadenas separadas por nueva línea que representan formas de contactar a las personas responsables de este cliente, generalmente direcciones de correo electrónico."
#: frappe/www/update-password.html:92
msgid "New password cannot be same as old password"
@ -17544,11 +17547,11 @@ msgstr "La nueva contraseña no puede ser igual a la contraseña anterior"
#: frappe/core/doctype/user/user.py:962
msgid "New password cannot be the same as your current password. Please choose a different password."
msgstr ""
msgstr "La nueva contraseña no puede ser igual a su contraseña actual. Por favor, elija una contraseña diferente."
#: frappe/core/doctype/role/role.js:78
msgid "New role created successfully."
msgstr ""
msgstr "Nuevo rol creado exitosamente."
#: frappe/utils/change_log.py:389
msgid "New updates are available"
@ -17653,7 +17656,7 @@ msgstr "Siguiente plantilla de email de acción"
#: frappe/core/doctype/success_action/success_action.js:44
msgid "Next Actions"
msgstr ""
msgstr "Siguientes acciones"
#. Label of the next_actions_html (HTML) field in DocType 'Success Action'
#: frappe/core/doctype/success_action/success_action.json
@ -17796,7 +17799,7 @@ msgstr "No hay cuentas de correo electrónico asignadas"
#: frappe/email/doctype/email_group/email_group.py:50
msgid "No Email field found in {0}"
msgstr ""
msgstr "No se encontró campo de correo electrónico en {0}"
#: frappe/public/js/frappe/views/inbox/inbox_view.js:183
msgid "No Emails"
@ -17816,7 +17819,7 @@ msgstr "No hay eventos de Google Calendar para sincronizar."
#: frappe/email/doctype/email_account/email_account.py:244
msgid "No IMAP folders were found on the server. Please verify the email account settings and ensure the mailbox contains folders."
msgstr ""
msgstr "No se encontraron carpetas IMAP en el servidor. Verifique la configuración de la cuenta de correo electrónico y asegúrese de que el buzón contenga carpetas."
#: frappe/public/js/frappe/ui/capture.js:263
msgid "No Images"
@ -17915,7 +17918,7 @@ msgstr "No hay próximos eventos"
#: frappe/core/page/permission_manager/permission_manager.js:630
msgid "No activity recorded yet."
msgstr ""
msgstr "Aún no se ha registrado actividad."
#: frappe/public/js/frappe/form/templates/address_list.html:43
msgid "No address added yet."
@ -18020,7 +18023,7 @@ msgstr "No existen registros nuevos"
#: frappe/public/js/frappe/views/reports/report_view.js:327
msgid "No matching entries in the current results"
msgstr ""
msgstr "No hay entradas coincidentes en los resultados actuales"
#: frappe/templates/includes/search_template.html:49
msgid "No matching records. Search something new"
@ -18480,7 +18483,7 @@ msgstr "Notificaciones Desactivadas"
#. Account'
#: frappe/email/doctype/email_account/email_account.json
msgid "Notifications and bulk mails will be sent from this outgoing server."
msgstr ""
msgstr "Las notificaciones y los correos masivos se enviarán desde este servidor saliente."
#. Label of the notify_on_every_login (Check) field in DocType 'Note'
#: frappe/desk/doctype/note/note.json
@ -18634,7 +18637,7 @@ msgstr "Cliente OAuth"
#. Label of the sb_00 (Section Break) field in DocType 'Google Settings'
#: frappe/integrations/doctype/google_settings/google_settings.json
msgid "OAuth Client ID"
msgstr ""
msgstr "ID de cliente OAuth"
#. Name of a DocType
#: frappe/integrations/doctype/oauth_client_role/oauth_client_role.json
@ -18757,7 +18760,7 @@ msgstr "Desplazamiento Y"
#: frappe/database/query.py:301
msgid "Offset must be a non-negative integer"
msgstr ""
msgstr "El desplazamiento debe ser un número entero no negativo"
#: frappe/www/update-password.html:38
msgid "Old Password"
@ -18917,7 +18920,7 @@ msgstr "Solo Permitir Editar Por"
#: frappe/core/doctype/module_def/module_def.py:95
msgid "Only Custom Modules can be renamed."
msgstr ""
msgstr "Solo los módulos personalizados pueden ser renombrados."
#: frappe/core/doctype/doctype/doctype.py:1683
msgid "Only Options allowed for Data field are:"
@ -18930,7 +18933,7 @@ msgstr "Sólo enviar registros actualizados en las últimas X horas"
#: frappe/core/doctype/file/file.py:201
msgid "Only System Managers can make this file public."
msgstr ""
msgstr "Solo los administradores del sistema pueden hacer público este archivo."
#: frappe/desk/doctype/workspace/workspace.js:32
msgid "Only Workspace Manager can edit public workspaces"
@ -18940,7 +18943,7 @@ msgstr "Solo el Administrador del Área de Trabajo puede editar Áreas de Trabaj
#. in DocType 'System Settings'
#: frappe/core/doctype/system_settings/system_settings.json
msgid "Only allow System Managers to upload public files"
msgstr ""
msgstr "Permitir solo a los administradores del sistema cargar archivos públicos"
#: frappe/modules/utils.py:80
msgid "Only allowed to export customizations in developer mode"
@ -18979,7 +18982,7 @@ msgstr "Solo los DocTypes estándar pueden personalizarse desde el formulario Pe
#: frappe/model/delete_doc.py:283
msgid "Only the Administrator can delete a standard DocType."
msgstr ""
msgstr "Solo el Administrador puede eliminar un DocType estándar."
#: frappe/desk/form/assign_to.py:204
msgid "Only the assignee can complete this to-do."
@ -19005,12 +19008,12 @@ msgstr "¡Ups! Algo salió mal."
#: frappe/desk/doctype/event/event.json frappe/desk/doctype/todo/todo.json
#: frappe/workflow/doctype/workflow_action/workflow_action.json
msgid "Open"
msgstr ""
msgstr "Abrir"
#: frappe/desk/doctype/todo/todo_list.js:14
msgctxt "Access"
msgid "Open"
msgstr ""
msgstr "Abrir"
#: frappe/desk/page/desktop/desktop.js:533
#: frappe/desk/page/desktop/desktop.js:542
@ -19033,7 +19036,7 @@ msgstr "Abrir documento"
#. 'Notification Settings'
#: frappe/desk/doctype/notification_settings/notification_settings.json
msgid "Open Documents"
msgstr ""
msgstr "Documentos abiertos"
#: frappe/public/js/frappe/ui/keyboard.js:243
msgid "Open Help"
@ -19042,7 +19045,7 @@ msgstr "Abrir Ayuda"
#: frappe/public/js/frappe/form/controls/data.js:84
#: frappe/public/js/frappe/form/controls/link.js:17
msgid "Open Link"
msgstr ""
msgstr "Abrir enlace"
#. Label of the open_reference_document (Button) field in DocType 'Notification
#. Log'
@ -19084,7 +19087,7 @@ msgstr "Abrir consola"
#. Item'
#: frappe/desk/doctype/workspace_sidebar_item/workspace_sidebar_item.json
msgid "Open in New Tab"
msgstr ""
msgstr "Abrir en nueva pestaña"
#: frappe/public/js/print_format_builder/Preview.vue:17
msgid "Open in a new tab"
@ -19125,7 +19128,7 @@ msgstr "Abrir {0}"
#. Label of the openid_configuration (Data) field in DocType 'Connected App'
#: frappe/integrations/doctype/connected_app/connected_app.json
msgid "OpenID Configuration"
msgstr ""
msgstr "Configuración de OpenID"
#: frappe/integrations/doctype/connected_app/connected_app.js:15
msgid "OpenID Configuration fetched successfully!"
@ -19259,13 +19262,13 @@ msgstr "Ordenar por debe ser una cadena"
#. Label of the company_history (Table) field in DocType 'About Us Settings'
#: frappe/website/doctype/about_us_settings/about_us_settings.json
msgid "Org History"
msgstr ""
msgstr "Historia de la Organización"
#. Label of the company_history_heading (Data) field in DocType 'About Us
#. Settings'
#: frappe/website/doctype/about_us_settings/about_us_settings.json
msgid "Org History Heading"
msgstr ""
msgstr "Título de Historia de la Organización"
#: frappe/public/js/frappe/form/print_utils.js:23
msgid "Orientation"
@ -19507,7 +19510,7 @@ msgstr "Creador de páginas"
#. Label of the page_blocks (Table) field in DocType 'Web Page'
#: frappe/website/doctype/web_page/web_page.json
msgid "Page Building Blocks"
msgstr ""
msgstr "Bloques de construcción de página"
#. Label of the page_html (Section Break) field in DocType 'Page'
#: frappe/core/doctype/page/page.json
@ -19666,7 +19669,7 @@ msgstr "Parent es el nombre del documento al que se agregarán los datos."
#: frappe/public/js/frappe/ui/group_by/group_by.js:253
msgid "Parent-to-child or child-to-different-child grouping is not allowed."
msgstr ""
msgstr "No se permite el agrupamiento de principal a secundario o de secundario a otro secundario diferente."
#: frappe/permissions.py:854
msgid "Parentfield not specified in {0}: {1}"
@ -19772,7 +19775,7 @@ msgstr "Contraseña no encontrada para {0} {1} {2}"
#: frappe/core/doctype/user/user.py:1336
msgid "Password requirements not met"
msgstr ""
msgstr "No se cumplen los requisitos de la contraseña"
#: frappe/core/doctype/user/user.py:1169
msgid "Password reset instructions have been sent to {}'s email"
@ -19852,7 +19855,7 @@ msgstr "Ruta al archivo de clave privada"
#: frappe/modules/utils.py:252
msgid "Path {0} is not within module {1}"
msgstr ""
msgstr "La ruta {0} no está dentro del módulo {1}"
#: frappe/website/path_resolver.py:230
msgid "Path {0} it not a valid path"
@ -20012,7 +20015,7 @@ msgstr "Tipo de Permiso"
#: frappe/core/doctype/permission_type/permission_type.py:40
msgid "Permission Type '{0}' is reserved. Please choose another name."
msgstr ""
msgstr "El tipo de permiso '{0}' está reservado. Por favor, elija otro nombre."
#. Label of the section_break_4 (Section Break) field in DocType 'Custom
#. DocPerm'
@ -20206,7 +20209,7 @@ msgstr "Agregue un comentario válido."
#: frappe/public/js/frappe/views/reports/query_report.js:1560
msgid "Please adjust filters to include some data"
msgstr ""
msgstr "Ajuste los filtros para incluir algunos datos"
#: frappe/core/doctype/user/user.py:1152
msgid "Please ask your administrator to verify your sign-up"
@ -20559,7 +20562,7 @@ msgstr "Especifique al menos 10 minutos debido a la cadencia de activación del
#: frappe/email/doctype/notification/notification.py:171
msgid "Please specify the field from which to attach files"
msgstr ""
msgstr "Por favor, especifique el campo desde el cual adjuntar archivos"
#: frappe/email/doctype/notification/notification.py:161
msgid "Please specify the minutes offset"
@ -20601,7 +20604,7 @@ msgstr "Por favor, visite https://frappecloud.com/docs/sites/migrate-an-existing
#. Label of the policy_uri (Data) field in DocType 'OAuth Client'
#: frappe/integrations/doctype/oauth_client/oauth_client.json
msgid "Policy URI"
msgstr ""
msgstr "URI de política"
#. Option for the 'SocketIO Transport Mode' (Select) field in DocType 'System
#. Health Report'

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: developers@frappe.io\n"
"POT-Creation-Date: 2026-04-12 09:45+0000\n"
"PO-Revision-Date: 2026-04-15 16:26\n"
"PO-Revision-Date: 2026-04-16 16:37\n"
"Last-Translator: developers@frappe.io\n"
"Language-Team: Hungarian\n"
"MIME-Version: 1.0\n"
@ -4455,7 +4455,7 @@ msgstr "Visszavont dokumentumot nem lehet szerkeszteni"
#: frappe/website/doctype/web_form/web_form.js:367
msgid "Cannot edit filters for standard Web Forms"
msgstr ""
msgstr "Az általános webes űrlapok szűrői nem szerkeszthetők"
#: frappe/desk/doctype/dashboard_chart/dashboard_chart.js:378
msgid "Cannot edit filters for standard charts"
@ -9291,7 +9291,7 @@ msgstr "E-mail várólista jelenleg felfüggesztésre került. Az e-mailek autom
#: frappe/public/js/frappe/views/communication.js:955
msgid "Email sending undone"
msgstr ""
msgstr "E-mail küldés visszavonva"
#: frappe/email/doctype/email_queue/email_queue.py:199
msgid "Email size {0:.2f} MB exceeds the maximum allowed size of {1:.2f} MB"
@ -9299,7 +9299,7 @@ msgstr "Az E-mail mérete {0:.2f} MB meghaladja a maximálisan megengedett {1:.2
#: frappe/core/doctype/communication/email.py:349
msgid "Email undo window is over. Cannot undo email."
msgstr ""
msgstr "Az e-mail visszavonási ablak lejárt. Az e-mail nem vonható vissza."
#. Label of the section_break_udjs (Section Break) field in DocType 'System
#. Health Report'
@ -9706,7 +9706,7 @@ msgstr "Írja be a statikus url paramétereket itt (Pl. sender=ERPNext, username
#: frappe/public/js/form_builder/components/FieldProperties.vue:66
msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)."
msgstr ""
msgstr "Adja meg a pénznem mező mezőnevét vagy egy gyorsítótárazott értéket (pl. Company:company:default_currency)."
#. Description of the 'Message Parameter' (Data) field in DocType 'SMS
#. Settings'
@ -10334,7 +10334,7 @@ msgstr "Nem sikerült visszafejteni a kulcsot {0}"
#: frappe/core/doctype/communication/email.py:344
msgid "Failed to delete communication"
msgstr ""
msgstr "A kommunikáció törlése sikertelen"
#: frappe/desk/reportview.py:642
msgid "Failed to delete {0} documents: {1}"
@ -10777,7 +10777,7 @@ msgstr "Fájl URL"
#: frappe/core/doctype/file/file.py:123
msgid "File URL is required when copying an existing attachment."
msgstr ""
msgstr "A fájl URL megadása kötelező egy meglévő csatolmány másolásakor."
#: frappe/desk/page/backups/backups.py:107
msgid "File backup is ready"
@ -10987,7 +10987,7 @@ msgstr "Befejezve ekkor"
#: frappe/public/js/frappe/form/grid_pagination.js:123
msgid "First"
msgstr ""
msgstr "Első"
#. Label of the first_day_of_the_week (Select) field in DocType 'Language'
#. Label of the first_day_of_the_week (Select) field in DocType 'System
@ -12282,7 +12282,7 @@ msgstr "Melléklettel Rendelkezik"
#: frappe/public/js/frappe/views/inbox/inbox_view.js:102
msgid "Has Attachments"
msgstr ""
msgstr "Csatolmányokkal rendelkezik"
#. Name of a DocType
#: frappe/core/doctype/has_domain/has_domain.json
@ -12817,11 +12817,11 @@ msgstr "IMAP mappa nem található"
#: frappe/email/doctype/email_account/email_account.py:239
#: frappe/email/doctype/email_account/email_account.py:247
msgid "IMAP Folder Validation Failed"
msgstr ""
msgstr "IMAP Mappa érvényesítése sikertelen"
#: frappe/email/doctype/email_account/email_account.py:255
msgid "IMAP Folder name cannot be empty."
msgstr ""
msgstr "Az IMAP Mappa neve nem lehet üres."
#. Label of the ip_address (Data) field in DocType 'Activity Log'
#. Label of the ip_address (Data) field in DocType 'Comment'
@ -13019,7 +13019,7 @@ msgstr "Ha üresen hagyja, az alapértelmezett munkaterület az utoljára meglá
#: frappe/public/js/frappe/form/print_utils.js:36
msgid "If no Print Format is selected, the default template for this report will be used."
msgstr ""
msgstr "Ha nincs Nyomtatási formátum kiválasztva, a jelentés alapértelmezett sablonja lesz használva."
#. Description of the 'Port' (Data) field in DocType 'Email Domain'
#: frappe/email/doctype/email_domain/email_domain.json
@ -14104,7 +14104,7 @@ msgstr "Érvénytelen dokumentumállapot"
#: frappe/www/list.py:231
msgid "Invalid expression in Web Form Dynamic Filter for {0}: {1}"
msgstr ""
msgstr "Érvénytelen kifejezés a webes űrlap dinamikus szűrőjében a következőhöz: {0}: {1}"
#: frappe/model/workflow.py:112
msgid "Invalid expression in Workflow Update Value: {0}"
@ -14363,7 +14363,7 @@ msgstr "Alapértelmezett"
#. 'Navbar Settings'
#: frappe/core/doctype/navbar_settings/navbar_settings.json
msgid "Is Dismissible"
msgstr ""
msgstr "Elrejthető"
#. Label of the is_dynamic_url (Check) field in DocType 'Webhook'
#: frappe/integrations/doctype/webhook/webhook.json
@ -14561,7 +14561,7 @@ msgstr "Kockázatos törölni ezt a fájlt: {0}. Kérjük, forduljon a Rendszerg
#: frappe/core/doctype/communication/email.py:359
msgid "It is too late to undo this email. It is already being sent."
msgstr ""
msgstr "Túl késő visszavonni ezt az e-mailt. Már küldés alatt van."
#. Label of the item_label (Data) field in DocType 'Navbar Item'
#: frappe/core/doctype/navbar_item/navbar_item.json
@ -15468,7 +15468,7 @@ msgstr "Kedvelte"
#: frappe/public/js/frappe/list/list_view.js:785
msgid "Liked by me"
msgstr ""
msgstr "Általam kedvelt"
#: frappe/public/js/frappe/ui/like.js:117
msgid "Liked by {0} people"
@ -15660,7 +15660,7 @@ msgstr "Kapcsolódó"
#: frappe/public/js/frappe/views/inbox/inbox_view.js:109
msgid "Linked with {0}"
msgstr ""
msgstr "Kapcsolva: {0}"
#: frappe/public/js/frappe/ui/toolbar/about.js:40
msgid "LinkedIn"
@ -15826,7 +15826,7 @@ msgstr "Betöltés..."
#: frappe/core/page/permission_manager/permission_manager.js:615
msgid "Loading…"
msgstr ""
msgstr "Betöltés…"
#. Label of the location (Data) field in DocType 'User'
#. Label of the location (Data) field in DocType 'Event'
@ -17501,7 +17501,7 @@ msgstr "Új Jelentés Neve"
#: frappe/core/doctype/role/role.js:55
msgid "New Role Name"
msgstr ""
msgstr "Új Szerepkör Neve"
#: frappe/public/js/frappe/widgets/widget_dialog.js:60
msgid "New Shortcut"
@ -17552,11 +17552,11 @@ msgstr "Az új jelszó nem lehet ugyanaz, mint a régi jelszó"
#: frappe/core/doctype/user/user.py:962
msgid "New password cannot be the same as your current password. Please choose a different password."
msgstr ""
msgstr "Az új jelszó nem lehet ugyanaz, mint a jelenlegi jelszava. Kérjük, válasszon másik jelszót."
#: frappe/core/doctype/role/role.js:78
msgid "New role created successfully."
msgstr ""
msgstr "Új szerepkör sikeresen létrehozva."
#: frappe/utils/change_log.py:389
msgid "New updates are available"
@ -17824,7 +17824,7 @@ msgstr "Nincs szinkronizálható Google Naptár-esemény."
#: frappe/email/doctype/email_account/email_account.py:244
msgid "No IMAP folders were found on the server. Please verify the email account settings and ensure the mailbox contains folders."
msgstr ""
msgstr "Nem találhatók IMAP mappák a szerveren. Kérjük, ellenőrizze az e-mail fiók beállításait, és győződjön meg arról, hogy a postafiók tartalmaz mappákat."
#: frappe/public/js/frappe/ui/capture.js:263
msgid "No Images"
@ -17923,7 +17923,7 @@ msgstr "Nincsenek Közelgő Események"
#: frappe/core/page/permission_manager/permission_manager.js:630
msgid "No activity recorded yet."
msgstr ""
msgstr "Még nincs rögzített tevékenység."
#: frappe/public/js/frappe/form/templates/address_list.html:43
msgid "No address added yet."
@ -19050,7 +19050,7 @@ msgstr "Súgó Megnyitása"
#: frappe/public/js/frappe/form/controls/data.js:84
#: frappe/public/js/frappe/form/controls/link.js:17
msgid "Open Link"
msgstr ""
msgstr "Hivatkozás megnyitása"
#. Label of the open_reference_document (Button) field in DocType 'Notification
#. Log'
@ -19068,7 +19068,7 @@ msgstr "Forrás Alkalmazások megnyitása a Webhez"
#: frappe/public/js/frappe/form/controls/base_control.js:165
msgid "Open Translation"
msgstr ""
msgstr "Fordítás megnyitása"
#. Label of the open_in_new_tab (Check) field in DocType 'Top Bar Item'
#: frappe/website/doctype/top_bar_item/top_bar_item.json
@ -19092,7 +19092,7 @@ msgstr "Konzol megnyitása"
#. Item'
#: frappe/desk/doctype/workspace_sidebar_item/workspace_sidebar_item.json
msgid "Open in New Tab"
msgstr ""
msgstr "Megnyitás új fülön"
#: frappe/public/js/print_format_builder/Preview.vue:17
msgid "Open in a new tab"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: developers@frappe.io\n"
"POT-Creation-Date: 2026-04-12 09:45+0000\n"
"PO-Revision-Date: 2026-04-15 16:27\n"
"PO-Revision-Date: 2026-04-16 16:38\n"
"Last-Translator: developers@frappe.io\n"
"Language-Team: Norwegian Bokmal\n"
"MIME-Version: 1.0\n"
@ -1840,7 +1840,7 @@ msgstr "Juster verdi"
#: frappe/custom/doctype/custom_field/custom_field.json
#: frappe/custom/doctype/customize_form_field/customize_form_field.json
msgid "Alignment"
msgstr ""
msgstr "Justering"
#. Name of a role
#. Option for the 'Frequency' (Select) field in DocType 'Scheduled Job Type'
@ -3370,7 +3370,7 @@ msgstr "Automatisk kobling kan bare aktiveres hvis Innkommende er aktivert."
#: frappe/email/doctype/email_queue/email_queue.js:49
msgid "Automatic sending of emails is disabled via site config."
msgstr ""
msgstr "Automatisk sending av e-post er deaktivert via nettstedskonfigurasjon."
#. Description of a DocType
#: frappe/automation/doctype/assignment_rule/assignment_rule.json
@ -4457,7 +4457,7 @@ msgstr "Kan ikke redigere avbrutt dokument"
#: frappe/website/doctype/web_form/web_form.js:367
msgid "Cannot edit filters for standard Web Forms"
msgstr ""
msgstr "Kan ikke redigere filtre for standard webskjemaer"
#: frappe/desk/doctype/dashboard_chart/dashboard_chart.js:378
msgid "Cannot edit filters for standard charts"
@ -7592,7 +7592,7 @@ msgstr "Desk-bruker"
#: frappe/public/js/frappe/ui/sidebar/sidebar_header.js:12
#: frappe/www/me.html:86
msgid "Desktop"
msgstr ""
msgstr "Skrivebord"
#. Name of a DocType
#: frappe/desk/doctype/desktop_icon/desktop_icon.json
@ -7603,12 +7603,12 @@ msgstr "Skrivebordsikon"
#. Name of a DocType
#: frappe/desk/doctype/desktop_layout/desktop_layout.json
msgid "Desktop Layout"
msgstr ""
msgstr "Skrivebordslayout"
#. Name of a DocType
#: frappe/desk/doctype/desktop_settings/desktop_settings.json
msgid "Desktop Settings"
msgstr ""
msgstr "Skrivebordsinnstillinger"
#. Label of the details_tab (Tab Break) field in DocType 'Module Def'
#. Label of the details (Code) field in DocType 'Scheduled Job Log'
@ -8924,7 +8924,7 @@ msgstr "Rediger snarvei"
#: frappe/public/js/frappe/ui/sidebar/sidebar_header.js:40
msgid "Edit Sidebar"
msgstr ""
msgstr "Rediger sidepanel"
#. Label of the edit_values (Button) field in DocType 'Web Page Block'
#. Label of the edit_navbar_template_values (Button) field in DocType 'Website
@ -9293,15 +9293,15 @@ msgstr "E-postkøen er for øyeblikket suspendert. Gjenoppta for å sende andre
#: frappe/public/js/frappe/views/communication.js:955
msgid "Email sending undone"
msgstr ""
msgstr "E-postsending angret"
#: frappe/email/doctype/email_queue/email_queue.py:199
msgid "Email size {0:.2f} MB exceeds the maximum allowed size of {1:.2f} MB"
msgstr ""
msgstr "E-poststørrelsen {0:.2f} MB overskrider den maksimalt tillatte størrelsen på {1:.2f} MB"
#: frappe/core/doctype/communication/email.py:349
msgid "Email undo window is over. Cannot undo email."
msgstr ""
msgstr "Tidsvinduet for å angre e-post har utløpt. Kan ikke angre e-post."
#. Label of the section_break_udjs (Section Break) field in DocType 'System
#. Health Report'
@ -9354,7 +9354,7 @@ msgstr "Aktiver"
#. Label of the enable_action_confirmation (Check) field in DocType 'Workflow'
#: frappe/workflow/doctype/workflow/workflow.json
msgid "Enable Action Confirmation"
msgstr ""
msgstr "Aktiver handlingsbekreftelse"
#. Label of the enable_address_autocompletion (Check) field in DocType
#. 'Geolocation Settings'
@ -9708,7 +9708,7 @@ msgstr "Skriv inn statiske URL-parametere her (f.eks. sender=ERPNext, brukernavn
#: frappe/public/js/form_builder/components/FieldProperties.vue:66
msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)."
msgstr ""
msgstr "Skriv inn feltnavnet for valutafeltet eller en bufret verdi (f.eks. Company:company:default_currency)."
#. Description of the 'Message Parameter' (Data) field in DocType 'SMS
#. Settings'
@ -9875,7 +9875,7 @@ msgstr "Feil"
#. Document State'
#: frappe/workflow/doctype/workflow_document_state/workflow_document_state.json
msgid "Evaluate as Expression"
msgstr ""
msgstr "Evaluer som Uttrykk"
#. Option for the 'Type' (Select) field in DocType 'Communication'
#. Name of a DocType
@ -10179,7 +10179,7 @@ msgstr "Eksport er ikke tillatt. Du trenger rollen {0} for å eksportere."
#: frappe/custom/doctype/customize_form/customize_form.js:285
msgid "Export only customizations assigned to the selected module.<br><span class='text-muted'><strong>Note:</strong> You must set the <em>Module (for export)</em> field on Custom Field and Property Setter records before applying this filter.</span><p class='alert alert-warning'> <strong>Warning:</strong> Customizations from other modules will be excluded.</p>"
msgstr ""
msgstr "Eksporter kun tilpasninger tilordnet den valgte modulen.<br><span class='text-muted'><strong>Merk:</strong> Du må angi feltet <em>Modul (for eksport)</em> på Egendefinert felt- og Egenskapsinnstilling-poster før du bruker dette filteret.</span><p class='alert alert-warning'> <strong>Advarsel:</strong> Tilpasninger fra andre moduler vil bli ekskludert.</p>"
#. Description of the 'Export without main header' (Check) field in DocType
#. 'Data Export'
@ -10231,7 +10231,7 @@ msgstr "Uttrykk, valgfritt"
#. Option for the 'Link Type' (Select) field in DocType 'Desktop Icon'
#: frappe/desk/doctype/desktop_icon/desktop_icon.json
msgid "External"
msgstr ""
msgstr "Ekstern"
#. Label of the external_link (Data) field in DocType 'Workspace'
#: frappe/desk/doctype/workspace/workspace.json
@ -10249,7 +10249,7 @@ msgstr "Ekstra parametere"
#. 'Email Account'
#: frappe/email/doctype/email_account/email_account.json
msgid "FAILURE"
msgstr ""
msgstr "FEIL"
#. Option for the 'Social Login Provider' (Select) field in DocType 'Social
#. Login Key'
@ -10293,7 +10293,7 @@ msgstr "Mislykkede jobber"
#. Label of a number card in the Users Workspace
#: frappe/core/workspace/users/users.json
msgid "Failed Login Attempts"
msgstr ""
msgstr "Mislykkede innloggingsforsøk"
#. Label of the failed_logins (Int) field in DocType 'System Health Report'
#: frappe/desk/doctype/system_health_report/system_health_report.json
@ -10336,7 +10336,7 @@ msgstr "Mislyktes med å dekryptere nøkkelen {0}"
#: frappe/core/doctype/communication/email.py:344
msgid "Failed to delete communication"
msgstr ""
msgstr "Kunne ikke slette kommunikasjon"
#: frappe/desk/reportview.py:642
msgid "Failed to delete {0} documents: {1}"
@ -10393,7 +10393,7 @@ msgstr "Kunne ikke be om pålogging til Frappe Cloud"
#: frappe/email/doctype/email_account/email_account.py:236
msgid "Failed to retrieve the list of IMAP folders from the server. Please ensure the mailbox is accessible and the account has permission to list folders."
msgstr ""
msgstr "Kunne ikke hente listen over IMAP-mapper fra serveren. Kontroller at postboksen er tilgjengelig og at kontoen har tillatelse til å liste mapper."
#: frappe/email/doctype/email_queue/email_queue.py:347
msgid "Failed to send email with subject:"
@ -10479,7 +10479,7 @@ msgstr "Henter standard globale søkedokumenter."
#: frappe/website/doctype/web_form/web_form.js:169
msgid "Fetching fields from {0}..."
msgstr ""
msgstr "Henter felt fra {0}..."
#. Label of the field (Select) field in DocType 'Assignment Rule'
#. Label of the field (Select) field in DocType 'Document Naming Rule
@ -10519,7 +10519,7 @@ msgstr "Feltet \"verdi\" er påkrevet. Spesifiser verdien som skal oppdateres"
#: frappe/desk/search.py:271
msgid "Field <code>{0}</code> not found in {1}"
msgstr ""
msgstr "Feltet <code>{0}</code> ble ikke funnet i {1}"
#. Label of the description (Text) field in DocType 'Custom Field'
#: frappe/custom/doctype/custom_field/custom_field.json
@ -10584,7 +10584,7 @@ msgstr "Feltet {0} refererer til en ikke-eksisterende dokumenttype (DocType) {1}
#: frappe/core/doctype/doctype/doctype.py:1717
msgid "Field {0} must be a virtual field to support virtual doctype."
msgstr ""
msgstr "Felt {0} må være et virtuelt felt for å støtte virtuell DocType."
#: frappe/public/js/frappe/form/form.js:1818
msgid "Field {0} not found."
@ -10779,7 +10779,7 @@ msgstr "Filens URL"
#: frappe/core/doctype/file/file.py:123
msgid "File URL is required when copying an existing attachment."
msgstr ""
msgstr "Fil-URL er påkrevd ved kopiering av et eksisterende vedlegg."
#: frappe/desk/page/backups/backups.py:107
msgid "File backup is ready"
@ -10808,7 +10808,7 @@ msgstr "Filtypen {0} er ikke tillatt"
#: frappe/public/js/frappe/file_uploader/FileUploader.vue:651
msgid "File upload failed."
msgstr ""
msgstr "Filopplasting mislyktes."
#: frappe/core/doctype/file/file.py:421 frappe/core/doctype/file/file.py:492
msgid "File {0} does not exist"
@ -10835,7 +10835,7 @@ msgstr "Filter"
#. Label of the filter_area (HTML) field in DocType 'Workspace Sidebar Item'
#: frappe/desk/doctype/workspace_sidebar_item/workspace_sidebar_item.json
msgid "Filter Area"
msgstr ""
msgstr "Filterområde"
#. Label of the filter_data (Section Break) field in DocType 'Auto Email
#. Report'
@ -10870,7 +10870,7 @@ msgstr "Filterbetingelse mangler etter operatoren: {0}"
#: frappe/database/query.py:832
msgid "Filter fields have invalid backtick notation: {0}"
msgstr ""
msgstr "Filterfelt har ugyldig backtick-notasjon: {0}"
#: frappe/printing/page/print_format_builder/print_format_builder_sidebar.html:3
msgid "Filter..."
@ -10893,7 +10893,7 @@ msgstr "Filtrert etter «{0}»"
#: frappe/public/js/frappe/form/controls/link.js:743
msgid "Filtered by: {0}."
msgstr ""
msgstr "Filtrert etter: {0}."
#. Label of the filters (Code) field in DocType 'Access Log'
#. Label of the filters_sb (Section Break) field in DocType 'Prepared Report'
@ -10989,7 +10989,7 @@ msgstr "Fullført den"
#: frappe/public/js/frappe/form/grid_pagination.js:123
msgid "First"
msgstr ""
msgstr "Første"
#. Label of the first_day_of_the_week (Select) field in DocType 'Language'
#. Label of the first_day_of_the_week (Select) field in DocType 'System
@ -11117,7 +11117,7 @@ msgstr "Følgende dokument {0}"
#: frappe/public/js/frappe/form/linked_with.js:56
msgid "Following documents are linked with {0}"
msgstr ""
msgstr "Følgende dokumenter er knyttet til {0}"
#: frappe/website/doctype/web_form/web_form.py:111
msgid "Following fields are missing:"
@ -11291,12 +11291,13 @@ msgstr "For verdi"
#. Description of the 'Subject' (Data) field in DocType 'Notification'
#: frappe/email/doctype/notification/notification.json
msgid "For a dynamic subject, use Jinja tags like this: <code>{{ doc.name }} Delivered</code>"
msgstr ""
msgstr "For et dynamisk emne, bruk Jinja-tagger som dette: <code>{{ doc.name }} Delivered</code>"
#: frappe/public/js/frappe/views/reports/report_view.js:435
msgid "For comparison, use >5, <10 or =324.\n"
"For ranges, use 5:10 (for values between 5 & 10)."
msgstr ""
msgstr "For sammenligning, bruk >5, <10 eller =324.\n"
"For intervaller, bruk 5:10 (for verdier mellom 5 og 10)."
#: frappe/public/js/frappe/views/reports/query_report.js:2293
msgid "For comparison, use >5, <10 or =324. For ranges, use 5:10 (for values between 5 & 10)."
@ -11479,7 +11480,7 @@ msgstr "Brøkenheter"
#. Label of a Desktop Icon
#: frappe/desktop_icon/framework.json
msgid "Framework"
msgstr ""
msgstr "Rammeverk"
#. Option for the 'Social Login Provider' (Select) field in DocType 'Social
#. Login Key'
@ -11578,7 +11579,7 @@ msgstr "Fra"
#. Label of the from_attach_field (Select) field in DocType 'Notification'
#: frappe/email/doctype/notification/notification.json
msgid "From Attach Field"
msgstr ""
msgstr "Fra vedleggsfelt"
#. Label of the from_date (Date) field in DocType 'Dashboard Chart'
#: frappe/desk/doctype/dashboard_chart/dashboard_chart.json
@ -11598,7 +11599,7 @@ msgstr "Fra dokumenttype (DocType)"
#. Option for the 'Attach Files' (Select) field in DocType 'Notification'
#: frappe/email/doctype/notification/notification.json
msgid "From Field"
msgstr ""
msgstr "Fra felt"
#. Label of the sender_full_name (Data) field in DocType 'Communication'
#: frappe/core/doctype/communication/communication.json
@ -11816,7 +11817,7 @@ msgstr "Få din globalt anerkjente avatar fra Gravatar.com"
#: frappe/public/js/frappe/ui/sidebar/sidebar.html:47
#: frappe/public/js/frappe/ui/user_onboarding/OnboardingPanel.vue:235
msgid "Getting Started"
msgstr ""
msgstr "Kom i gang"
#. Label of the git_branch (Data) field in DocType 'Installed Application'
#: frappe/core/doctype/installed_application/installed_application.json
@ -12238,7 +12239,7 @@ msgstr "HTML redigerer"
#: frappe/public/js/frappe/views/communication.js:145
msgid "HTML Message"
msgstr ""
msgstr "HTML-melding"
#. Label of the page (HTML Editor) field in DocType 'Access Log'
#: frappe/core/doctype/access_log/access_log.json
@ -12284,7 +12285,7 @@ msgstr "Har vedlegg"
#: frappe/public/js/frappe/views/inbox/inbox_view.js:102
msgid "Has Attachments"
msgstr ""
msgstr "Har vedlegg"
#. Name of a DocType
#: frappe/core/doctype/has_domain/has_domain.json
@ -12339,7 +12340,7 @@ msgstr "Topptekst-HTML satt fra vedlegg {0}"
#. Label of the header_icon (Icon) field in DocType 'Workspace Sidebar'
#: frappe/desk/doctype/workspace_sidebar/workspace_sidebar.json
msgid "Header Icon"
msgstr ""
msgstr "Topptekstikon"
#. Label of the header_script (Code) field in DocType 'Letter Head'
#: frappe/printing/doctype/letter_head/letter_head.json
@ -12394,7 +12395,7 @@ msgstr "Overskrift"
#. Label of a Workspace Sidebar Item
#: frappe/workspace_sidebar/system.json
msgid "Health Report"
msgstr ""
msgstr "Statusrapport"
#. Option for the 'Type' (Select) field in DocType 'Dashboard Chart'
#: frappe/desk/doctype/dashboard_chart/dashboard_chart.json
@ -12453,7 +12454,7 @@ msgstr "Hjelp HTML"
#. Description of the 'Content' (Text Editor) field in DocType 'Note'
#: frappe/desk/doctype/note/note.json
msgid "Help: To link to another record in the system, use \"/desk/note/[Note Name]\" as the Link URL. (don't use \"http://\")"
msgstr ""
msgstr "Hjelp: For å lenke til en annen post i systemet, bruk \"/desk/note/[Note Name]\" som lenke-URL. (ikke bruk \"http://\")"
#. Label of the helpful (Int) field in DocType 'Help Article'
#: frappe/website/doctype/help_article/help_article.json
@ -12508,7 +12509,7 @@ msgstr "Skjulte felt"
#: frappe/public/js/frappe/views/reports/query_report.js:1777
msgid "Hidden columns include: <br> {0}"
msgstr ""
msgstr "Skjulte kolonner inkluderer: <br> {0}"
#. Option for the 'Page Number' (Select) field in DocType 'Print Format'
#: frappe/printing/doctype/print_format/print_format.json
@ -12814,16 +12815,16 @@ msgstr "IMAP-mappe"
#: frappe/email/doctype/email_account/email_account.py:275
msgid "IMAP Folder Not Found"
msgstr ""
msgstr "IMAP-mappe ikke funnet"
#: frappe/email/doctype/email_account/email_account.py:239
#: frappe/email/doctype/email_account/email_account.py:247
msgid "IMAP Folder Validation Failed"
msgstr ""
msgstr "Validering av IMAP-mappe mislykket"
#: frappe/email/doctype/email_account/email_account.py:255
msgid "IMAP Folder name cannot be empty."
msgstr ""
msgstr "IMAP-mappenavn kan ikke være tomt."
#. Label of the ip_address (Data) field in DocType 'Activity Log'
#. Label of the ip_address (Data) field in DocType 'Comment'
@ -12867,21 +12868,21 @@ msgstr "Ikon"
#. Label of the icon_image (Attach) field in DocType 'Desktop Icon'
#: frappe/desk/doctype/desktop_icon/desktop_icon.json
msgid "Icon Image"
msgstr ""
msgstr "Ikonbilde"
#. Label of the icon_style (Select) field in DocType 'Desktop Settings'
#: frappe/desk/doctype/desktop_settings/desktop_settings.json
msgid "Icon Style"
msgstr ""
msgstr "Ikonstil"
#. Label of the icon_type (Select) field in DocType 'Desktop Icon'
#: frappe/desk/doctype/desktop_icon/desktop_icon.json
msgid "Icon Type"
msgstr ""
msgstr "Ikontype"
#: frappe/desk/page/desktop/desktop.js:1071
msgid "Icon is not correctly configured please check the workspace sidebar to it"
msgstr ""
msgstr "Ikonet er ikke riktig konfigurert, vennligst sjekk arbeidsområdets sidefelt for å rette det"
#. Description of the 'Icon' (Select) field in DocType 'Workflow State'
#: frappe/workflow/doctype/workflow_state/workflow_state.json
@ -12928,7 +12929,7 @@ msgstr "Hvis en rolle ikke har tilgang på nivå 0, er høyere nivåer meningsl
#. 'Workflow'
#: frappe/workflow/doctype/workflow/workflow.json
msgid "If checked, a confirmation will be required before performing workflow actions."
msgstr ""
msgstr "Hvis merket, vil det kreves en bekreftelse før arbeidsflythandlinger utføres."
#. Description of the 'Is Active' (Check) field in DocType 'Workflow'
#: frappe/workflow/doctype/workflow/workflow.json
@ -12983,7 +12984,7 @@ msgstr "Hvis aktivert, spores dokumentvisninger. Dette kan skje flere ganger."
#. (Check) field in DocType 'System Settings'
#: frappe/core/doctype/system_settings/system_settings.json
msgid "If enabled, only System Managers can upload public files. Other users can't see the checkbox <i>Is Private</i> in the upload dialog."
msgstr ""
msgstr "Hvis aktivert, kan kun Systemadministratorer laste opp offentlige filer. Andre brukere kan ikke se avkrysningsboksen <i>Er privat</i> i opplastingsdialogen."
#. Description of the 'Track Seen' (Check) field in DocType 'DocType'
#: frappe/core/doctype/doctype/doctype.json
@ -13021,7 +13022,7 @@ msgstr "Hvis den står tom, vil standard arbeidsområde være det sist besøkte
#: frappe/public/js/frappe/form/print_utils.js:36
msgid "If no Print Format is selected, the default template for this report will be used."
msgstr ""
msgstr "Hvis ingen Utskriftsformat er valgt, vil standardmalen for denne rapporten bli brukt."
#. Description of the 'Port' (Data) field in DocType 'Email Domain'
#: frappe/email/doctype/email_domain/email_domain.json
@ -13215,7 +13216,7 @@ msgstr "Bildefelt"
#. Label of the footer_image_height (Float) field in DocType 'Letter Head'
#: frappe/printing/doctype/letter_head/letter_head.json
msgid "Image Height (px)"
msgstr ""
msgstr "Bildehøyde (px)"
#. Label of the image_link (Attach) field in DocType 'About Us Team Member'
#: frappe/website/doctype/about_us_team_member/about_us_team_member.json
@ -13230,7 +13231,7 @@ msgstr "Bildevisning"
#. Label of the footer_image_width (Float) field in DocType 'Letter Head'
#: frappe/printing/doctype/letter_head/letter_head.json
msgid "Image Width (px)"
msgstr ""
msgstr "Bildebredde (px)"
#: frappe/core/doctype/doctype/doctype.py:1569
msgid "Image field must be a valid fieldname"
@ -13593,7 +13594,7 @@ msgstr "Feil bekreftelseskode"
#: frappe/public/js/frappe/views/gantt/gantt_view.js:88
msgid "Incorrect configuration"
msgstr ""
msgstr "Feil konfigurasjon"
#: frappe/model/document.py:1743
msgid "Incorrect value in row {0}:"
@ -13606,7 +13607,7 @@ msgstr "Ugyldig verdi:"
#. Label of the indent (Check) field in DocType 'Workspace Sidebar Item'
#: frappe/desk/doctype/workspace_sidebar_item/workspace_sidebar_item.json
msgid "Indent"
msgstr ""
msgstr "Innrykk"
#. Label of the search_index (Check) field in DocType 'DocField'
#. Label of the index (Int) field in DocType 'Recorder Query'
@ -13927,7 +13928,7 @@ msgstr "Ugyldig påloggingsinformasjon."
#: frappe/email/smtp.py:143
msgid "Invalid Credentials for Email Account: {0}"
msgstr ""
msgstr "Ugyldig påloggingsinformasjon for e-postkonto: {0}"
#: frappe/utils/data.py:146 frappe/utils/data.py:309
msgid "Invalid Date"
@ -14082,7 +14083,7 @@ msgstr "Ugyldig argumentformat: {0}. Bare anførselstegn eller enkle feltnavn er
#: frappe/database/query.py:2382
msgid "Invalid argument type: {0}. Only strings, numbers, dicts, and None are allowed."
msgstr ""
msgstr "Ugyldig argumenttype: {0}. Kun strenger, tall, dicts og None er tillatt."
#: frappe/database/query.py:867
msgid "Invalid characters in fieldname: {0}. Only letters, numbers, and underscores are allowed."
@ -14106,11 +14107,11 @@ msgstr "Ugyldig dokumentstatus"
#: frappe/www/list.py:231
msgid "Invalid expression in Web Form Dynamic Filter for {0}: {1}"
msgstr ""
msgstr "Ugyldig uttrykk i dynamisk filter for webskjema for {0}: {1}"
#: frappe/model/workflow.py:112
msgid "Invalid expression in Workflow Update Value: {0}"
msgstr ""
msgstr "Ugyldig uttrykk i oppdateringsverdi for arbeidsflyt: {0}"
#: frappe/public/js/frappe/utils/dashboard_utils.js:218
msgid "Invalid expression set in filter {0} ({1})"
@ -14183,7 +14184,7 @@ msgstr "Ugyldig nummerserie {}: punktum (.) mangler før de numeriske plassholde
#: frappe/database/query.py:2374
msgid "Invalid nested expression: dictionary must represent a function or operator"
msgstr ""
msgstr "Ugyldig nestet uttrykk: ordbok må representere en funksjon eller operator"
#: frappe/core/doctype/data_import/importer.py:458
msgid "Invalid or corrupted content for import"
@ -14245,7 +14246,7 @@ msgstr "Ugyldig {0} tilstand"
#: frappe/database/query.py:2263
msgid "Invalid {0} dictionary format"
msgstr ""
msgstr "Ugyldig {0}-ordbokformat"
#. Option for the 'Style' (Select) field in DocType 'Workflow State'
#: frappe/workflow/doctype/workflow_state/workflow_state.json
@ -14337,7 +14338,7 @@ msgstr "Er fullført"
#. Label of the is_current (Check) field in DocType 'User Session Display'
#: frappe/core/doctype/user_session_display/user_session_display.json
msgid "Is Current"
msgstr ""
msgstr "Er gjeldende"
#. Label of the is_custom (Check) field in DocType 'Role'
#. Label of the is_custom (Check) field in DocType 'User Document Type'
@ -14365,7 +14366,7 @@ msgstr "Er standard"
#. 'Navbar Settings'
#: frappe/core/doctype/navbar_settings/navbar_settings.json
msgid "Is Dismissible"
msgstr ""
msgstr "Kan avvises"
#. Label of the is_dynamic_url (Check) field in DocType 'Webhook'
#: frappe/integrations/doctype/webhook/webhook.json
@ -14563,7 +14564,7 @@ msgstr "Det er risikabelt å slette denne filen: {0}. Ta kontakt med systemansva
#: frappe/core/doctype/communication/email.py:359
msgid "It is too late to undo this email. It is already being sent."
msgstr ""
msgstr "Det er for sent å angre denne e-posten. Den er allerede under sending."
#. Label of the item_label (Data) field in DocType 'Navbar Item'
#: frappe/core/doctype/navbar_item/navbar_item.json
@ -14693,7 +14694,7 @@ msgstr "Jobben kjører ikke."
#: frappe/core/doctype/prepared_report/prepared_report.py:211
msgid "Job stopped successfully"
msgstr ""
msgstr "Jobb stoppet"
#: frappe/desk/doctype/event/event.js:55
msgid "Join video conference with {0}"
@ -14749,7 +14750,7 @@ msgstr "Visning av Kanban-tavle"
#. Label of the keep_closed (Check) field in DocType 'Workspace Sidebar Item'
#: frappe/desk/doctype/workspace_sidebar_item/workspace_sidebar_item.json
msgid "Keep Closed"
msgstr ""
msgstr "Hold lukket"
#. Description of a DocType
#: frappe/core/doctype/activity_log/activity_log.json
@ -15100,11 +15101,11 @@ msgstr "Sist aktiv"
#: frappe/public/js/frappe/form/sidebar/form_sidebar.js:161
msgid "Last Edited by You"
msgstr ""
msgstr "Sist redigert av deg"
#: frappe/public/js/frappe/form/sidebar/form_sidebar.js:162
msgid "Last Edited by {0}"
msgstr ""
msgstr "Sist redigert av {0}"
#. Label of the last_execution (Datetime) field in DocType 'Scheduled Job Type'
#: frappe/core/doctype/scheduled_job_type/scheduled_job_type.json
@ -15197,7 +15198,7 @@ msgstr "Sist synkronisert på "
#. Label of the last_updated (Datetime) field in DocType 'User Session Display'
#: frappe/core/doctype/user_session_display/user_session_display.json
msgid "Last Updated"
msgstr ""
msgstr "Sist oppdatert"
#: frappe/model/meta.py:57 frappe/public/js/frappe/model/meta.js:213
#: frappe/public/js/frappe/model/model.js:130
@ -15470,11 +15471,11 @@ msgstr "Likt av"
#: frappe/public/js/frappe/list/list_view.js:785
msgid "Liked by me"
msgstr ""
msgstr "Likt av meg"
#: frappe/public/js/frappe/ui/like.js:117
msgid "Liked by {0} people"
msgstr ""
msgstr "Likt av {0} personer"
#. Label of the likes (Int) field in DocType 'Help Article'
#: frappe/website/doctype/help_article/help_article.json
@ -15662,7 +15663,7 @@ msgstr "Lenket"
#: frappe/public/js/frappe/views/inbox/inbox_view.js:109
msgid "Linked with {0}"
msgstr ""
msgstr "Lenket med {0}"
#: frappe/public/js/frappe/ui/toolbar/about.js:40
msgid "LinkedIn"
@ -15828,7 +15829,7 @@ msgstr "Laster inn..."
#: frappe/core/page/permission_manager/permission_manager.js:615
msgid "Loading…"
msgstr ""
msgstr "Laster…"
#. Label of the location (Data) field in DocType 'User'
#. Label of the location (Data) field in DocType 'Event'
@ -15906,7 +15907,7 @@ msgstr "Logg inn"
#. Label of a chart in the Users Workspace
#: frappe/core/workspace/users/users.json
msgid "Login Activity"
msgstr ""
msgstr "Innloggingsaktivitet"
#. Label of the login_after (Int) field in DocType 'User'
#: frappe/core/doctype/user/user.json
@ -15981,7 +15982,7 @@ msgstr "Logg inn for å starte en ny diskusjon"
#: frappe/www/portal.py:19
msgid "Login to view"
msgstr ""
msgstr "Logg inn for å vise"
#: frappe/www/login.html:63
msgid "Login to {0}"
@ -16031,7 +16032,7 @@ msgstr "Logo URI"
#. Label of the logo_url (Data) field in DocType 'Desktop Icon'
#: frappe/desk/doctype/desktop_icon/desktop_icon.json
msgid "Logo URL"
msgstr ""
msgstr "Logo-URL"
#. Option for the 'Operation' (Select) field in DocType 'Activity Log'
#: frappe/core/doctype/activity_log/activity_log.json frappe/www/me.html:91
@ -16192,7 +16193,7 @@ msgstr "Administrer tredjepartsapper"
#: frappe/public/js/billing.bundle.js:77
msgid "Manage Billing"
msgstr ""
msgstr "Administrer fakturering"
#. Label of the reqd (Check) field in DocType 'DocField'
#. Label of the mandatory (Check) field in DocType 'Report Filter'
@ -17200,7 +17201,7 @@ msgstr ""
#. 'Email Account'
#: frappe/email/doctype/email_account/email_account.json
msgid "NEVER"
msgstr ""
msgstr "ALDRI"
#: frappe/workflow/doctype/workflow/workflow.js:19
msgid "NOTE: If you add states or transitions in the table, it will be reflected in the Workflow Builder but you will have to position them manually. Also Workflow Builder is currently in <b>BETA</b>."
@ -17503,7 +17504,7 @@ msgstr "Nytt rapportnavn"
#: frappe/core/doctype/role/role.js:55
msgid "New Role Name"
msgstr ""
msgstr "Nytt Rollenavn"
#: frappe/public/js/frappe/widgets/widget_dialog.js:60
msgid "New Shortcut"
@ -17554,11 +17555,11 @@ msgstr "Nytt passord kan ikke være det samme som det gamle passordet"
#: frappe/core/doctype/user/user.py:962
msgid "New password cannot be the same as your current password. Please choose a different password."
msgstr ""
msgstr "Nytt passord kan ikke være det samme som ditt gjeldende passord. Vennligst velg et annet passord."
#: frappe/core/doctype/role/role.js:78
msgid "New role created successfully."
msgstr ""
msgstr "Ny rolle opprettet."
#: frappe/utils/change_log.py:389
msgid "New updates are available"
@ -17663,7 +17664,7 @@ msgstr "Neste handling i e-postmal"
#: frappe/core/doctype/success_action/success_action.js:44
msgid "Next Actions"
msgstr ""
msgstr "Neste handlinger"
#. Label of the next_actions_html (HTML) field in DocType 'Success Action'
#: frappe/core/doctype/success_action/success_action.json
@ -17826,7 +17827,7 @@ msgstr "Ingen Google Kalender-hendelse å synkronisere."
#: frappe/email/doctype/email_account/email_account.py:244
msgid "No IMAP folders were found on the server. Please verify the email account settings and ensure the mailbox contains folders."
msgstr ""
msgstr "Ingen IMAP-mapper ble funnet på serveren. Vennligst bekreft innstillingene for e-postkontoen og sørg for at postboksen inneholder mapper."
#: frappe/public/js/frappe/ui/capture.js:263
msgid "No Images"
@ -17925,7 +17926,7 @@ msgstr "Ingen kommende hendelser"
#: frappe/core/page/permission_manager/permission_manager.js:630
msgid "No activity recorded yet."
msgstr ""
msgstr "Ingen aktivitet registrert ennå."
#: frappe/public/js/frappe/form/templates/address_list.html:43
msgid "No address added yet."
@ -18030,7 +18031,7 @@ msgstr "Ingen flere oppføringer"
#: frappe/public/js/frappe/views/reports/report_view.js:327
msgid "No matching entries in the current results"
msgstr ""
msgstr "Ingen samsvarende oppføringer i gjeldende resultater"
#: frappe/templates/includes/search_template.html:49
msgid "No matching records. Search something new"
@ -18106,7 +18107,7 @@ msgstr "Ingen rader"
#: frappe/public/js/frappe/list/list_view.js:2434
msgid "No rows selected"
msgstr ""
msgstr "Ingen rader valgt"
#: frappe/email/doctype/notification/notification.py:136
msgid "No subject"
@ -18118,7 +18119,7 @@ msgstr "Ingen mal funnet på stien: {0}"
#: frappe/core/page/permission_manager/permission_manager.js:369
msgid "No user has the role <strong>{0}</strong>"
msgstr ""
msgstr "Ingen bruker har rollen <strong>{0}</strong>"
#: frappe/public/js/frappe/form/controls/multiselect_list.js:277
#: frappe/public/js/frappe/utils/utils.js:1024
@ -18658,7 +18659,7 @@ msgstr "OAuth-feil"
#. Label of a Workspace Sidebar Item
#: frappe/workspace_sidebar/integrations.json
msgid "OAuth Provider"
msgstr ""
msgstr "OAuth-leverandør"
#. Name of a DocType
#. Label of a Link in the Integrations Workspace
@ -18705,11 +18706,11 @@ msgstr "OTP-utsteders navn"
#. Settings'
#: frappe/core/doctype/system_settings/system_settings.json
msgid "OTP SMS Template"
msgstr ""
msgstr "OTP SMS-mal"
#: frappe/core/doctype/system_settings/system_settings.py:168
msgid "OTP SMS Template must contain <code>{0}</code> placeholder to insert the OTP."
msgstr ""
msgstr "OTP SMS-malen må inneholde plassholderen <code>{0}</code> for å sette inn OTP."
#: frappe/twofactor.py:459
msgid "OTP Secret Reset - {0}"
@ -18723,7 +18724,7 @@ msgstr "Engangspassordet er tilbakestilt. Ny registrering kreves ved neste pålo
#. Settings'
#: frappe/core/doctype/system_settings/system_settings.json
msgid "OTP placeholder should be defined as <code>{{ otp }}</code> "
msgstr ""
msgstr "OTP-plassholder skal defineres som <code>{{ otp }}</code> "
#: frappe/templates/includes/login/login.js:351
msgid "OTP setup using OTP App was not completed. Please contact Administrator."
@ -18927,7 +18928,7 @@ msgstr "Tillat redigering kun for"
#: frappe/core/doctype/module_def/module_def.py:95
msgid "Only Custom Modules can be renamed."
msgstr ""
msgstr "Bare egendefinerte moduler kan gis nytt navn."
#: frappe/core/doctype/doctype/doctype.py:1683
msgid "Only Options allowed for Data field are:"
@ -18940,7 +18941,7 @@ msgstr "Send bare poster som er oppdatert i løpet av de siste X timene"
#: frappe/core/doctype/file/file.py:201
msgid "Only System Managers can make this file public."
msgstr ""
msgstr "Kun systemadministratorer kan gjøre denne filen offentlig."
#: frappe/desk/doctype/workspace/workspace.js:32
msgid "Only Workspace Manager can edit public workspaces"
@ -18950,7 +18951,7 @@ msgstr "Bare Administrator for arbeidsområder kan redigere offentlige arbeidsom
#. in DocType 'System Settings'
#: frappe/core/doctype/system_settings/system_settings.json
msgid "Only allow System Managers to upload public files"
msgstr ""
msgstr "Tillat kun systemadministratorer å laste opp offentlige filer"
#: frappe/modules/utils.py:80
msgid "Only allowed to export customizations in developer mode"
@ -19052,7 +19053,7 @@ msgstr "Åpne hjelp"
#: frappe/public/js/frappe/form/controls/data.js:84
#: frappe/public/js/frappe/form/controls/link.js:17
msgid "Open Link"
msgstr ""
msgstr "Åpne lenke"
#. Label of the open_reference_document (Button) field in DocType 'Notification
#. Log'
@ -19070,7 +19071,7 @@ msgstr "Åpen kildekode-applikasjoner for nettet"
#: frappe/public/js/frappe/form/controls/base_control.js:165
msgid "Open Translation"
msgstr ""
msgstr "Åpne oversettelse"
#. Label of the open_in_new_tab (Check) field in DocType 'Top Bar Item'
#: frappe/website/doctype/top_bar_item/top_bar_item.json
@ -19094,7 +19095,7 @@ msgstr "Åpne konsollen"
#. Item'
#: frappe/desk/doctype/workspace_sidebar_item/workspace_sidebar_item.json
msgid "Open in New Tab"
msgstr ""
msgstr "Åpne i ny fane"
#: frappe/public/js/print_format_builder/Preview.vue:17
msgid "Open in a new tab"
@ -19102,7 +19103,7 @@ msgstr "Åpne i ny fane"
#: frappe/public/js/frappe/ui/toolbar/awesome_bar.js:229
msgid "Open in new tab"
msgstr ""
msgstr "Åpne i ny fane"
#: frappe/public/js/frappe/list/list_view.js:1479
msgctxt "Description of a list view shortcut"
@ -19162,7 +19163,7 @@ msgstr "Operatøren må være en av {0}"
#: frappe/database/query.py:2330
msgid "Operator {0} requires exactly 2 arguments (left and right operands)"
msgstr ""
msgstr "Operator {0} krever nøyaktig 2 argumenter (venstre og høyre operand)"
#: frappe/core/doctype/file/file.js:36
#: frappe/core/report/database_storage_usage_by_tables/database_storage_usage_by_tables.js:8
@ -19646,7 +19647,7 @@ msgstr "Overordnet felt må være et gyldig feltnavn"
#. Label of the parent_icon (Link) field in DocType 'Desktop Icon'
#: frappe/desk/doctype/desktop_icon/desktop_icon.json
msgid "Parent Icon"
msgstr ""
msgstr "Overordnet ikon"
#. Label of the parent_label (Select) field in DocType 'Top Bar Item'
#: frappe/website/doctype/top_bar_item/top_bar_item.json
@ -19782,7 +19783,7 @@ msgstr "Finner ikke passord for {0} {1} {2}"
#: frappe/core/doctype/user/user.py:1336
msgid "Password requirements not met"
msgstr ""
msgstr "Passordkravene er ikke oppfylt"
#: frappe/core/doctype/user/user.py:1169
msgid "Password reset instructions have been sent to {}'s email"
@ -19862,7 +19863,7 @@ msgstr "Sti til privat nøkkelfil"
#: frappe/modules/utils.py:252
msgid "Path {0} is not within module {1}"
msgstr ""
msgstr "Sti {0} er ikke innenfor modul {1}"
#: frappe/website/path_resolver.py:230
msgid "Path {0} it not a valid path"
@ -20022,7 +20023,7 @@ msgstr "Tillatelsestype"
#: frappe/core/doctype/permission_type/permission_type.py:40
msgid "Permission Type '{0}' is reserved. Please choose another name."
msgstr ""
msgstr "Tillatelsestype '{0}' er reservert. Vennligst velg et annet navn."
#. Label of the section_break_4 (Section Break) field in DocType 'Custom
#. DocPerm'
@ -20216,7 +20217,7 @@ msgstr "Legg til en gyldig kommentar."
#: frappe/public/js/frappe/views/reports/query_report.js:1560
msgid "Please adjust filters to include some data"
msgstr ""
msgstr "Vennligst juster filtre for å inkludere noen data"
#: frappe/core/doctype/user/user.py:1152
msgid "Please ask your administrator to verify your sign-up"
@ -20569,7 +20570,7 @@ msgstr "Spesifiser minst 10 minutter på grunn av utløserkadensen til planlegge
#: frappe/email/doctype/notification/notification.py:171
msgid "Please specify the field from which to attach files"
msgstr ""
msgstr "Vennligst oppgi feltet som filer skal vedlegges fra"
#: frappe/email/doctype/notification/notification.py:161
msgid "Please specify the minutes offset"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: developers@frappe.io\n"
"POT-Creation-Date: 2026-04-12 09:45+0000\n"
"PO-Revision-Date: 2026-04-15 16:26\n"
"PO-Revision-Date: 2026-04-16 16:37\n"
"Last-Translator: developers@frappe.io\n"
"Language-Team: Russian\n"
"MIME-Version: 1.0\n"
@ -10782,7 +10782,7 @@ msgstr "URL Файла"
#: frappe/core/doctype/file/file.py:123
msgid "File URL is required when copying an existing attachment."
msgstr ""
msgstr "URL файла обязателен при копировании существующего вложения."
#: frappe/desk/page/backups/backups.py:107
msgid "File backup is ready"
@ -13025,7 +13025,7 @@ msgstr "Если оставить пустым, то рабочей област
#: frappe/public/js/frappe/form/print_utils.js:36
msgid "If no Print Format is selected, the default template for this report will be used."
msgstr ""
msgstr "Если Формат печати не выбран, будет использован шаблон по умолчанию для этого отчёта."
#. Description of the 'Port' (Data) field in DocType 'Email Domain'
#: frappe/email/doctype/email_domain/email_domain.json

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: developers@frappe.io\n"
"POT-Creation-Date: 2026-04-12 09:45+0000\n"
"PO-Revision-Date: 2026-04-15 16:26\n"
"PO-Revision-Date: 2026-04-16 16:38\n"
"Last-Translator: developers@frappe.io\n"
"Language-Team: Thai\n"
"MIME-Version: 1.0\n"
@ -4447,7 +4447,7 @@ msgstr "ไม่สามารถแก้ไขเอกสารที่ถ
#: frappe/website/doctype/web_form/web_form.js:367
msgid "Cannot edit filters for standard Web Forms"
msgstr ""
msgstr "ไม่สามารถแก้ไขฟิลเตอร์สำหรับเว็บฟอร์มมาตรฐานได้"
#: frappe/desk/doctype/dashboard_chart/dashboard_chart.js:378
msgid "Cannot edit filters for standard charts"
@ -9283,15 +9283,15 @@ msgstr "คิวอีเมลถูกระงับชั่วคราว
#: frappe/public/js/frappe/views/communication.js:955
msgid "Email sending undone"
msgstr ""
msgstr "เลิกทำการส่งอีเมลแล้ว"
#: frappe/email/doctype/email_queue/email_queue.py:199
msgid "Email size {0:.2f} MB exceeds the maximum allowed size of {1:.2f} MB"
msgstr ""
msgstr "ขนาดอีเมล {0:.2f} MB เกินขนาดสูงสุดที่อนุญาต {1:.2f} MB"
#: frappe/core/doctype/communication/email.py:349
msgid "Email undo window is over. Cannot undo email."
msgstr ""
msgstr "หมดเวลาเลิกทำอีเมลแล้ว ไม่สามารถเลิกทำอีเมลได้"
#. Label of the section_break_udjs (Section Break) field in DocType 'System
#. Health Report'
@ -9698,7 +9698,7 @@ msgstr "ป้อนพารามิเตอร์ URL แบบคงที
#: frappe/public/js/form_builder/components/FieldProperties.vue:66
msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)."
msgstr ""
msgstr "ป้อนชื่อฟิลด์ของฟิลด์สกุลเงินหรือค่าที่แคชไว้ (เช่น Company:company:default_currency)"
#. Description of the 'Message Parameter' (Data) field in DocType 'SMS
#. Settings'
@ -10239,7 +10239,7 @@ msgstr "พารามิเตอร์เพิ่มเติม"
#. 'Email Account'
#: frappe/email/doctype/email_account/email_account.json
msgid "FAILURE"
msgstr ""
msgstr "ล้มเหลว"
#. Option for the 'Social Login Provider' (Select) field in DocType 'Social
#. Login Key'
@ -10326,7 +10326,7 @@ msgstr "ไม่สามารถถอดรหัสกุญแจได้
#: frappe/core/doctype/communication/email.py:344
msgid "Failed to delete communication"
msgstr ""
msgstr "ไม่สามารถลบการสื่อสารได้"
#: frappe/desk/reportview.py:642
msgid "Failed to delete {0} documents: {1}"
@ -10383,7 +10383,7 @@ msgstr "ล้มเหลวในการร้องขอเข้าสู
#: frappe/email/doctype/email_account/email_account.py:236
msgid "Failed to retrieve the list of IMAP folders from the server. Please ensure the mailbox is accessible and the account has permission to list folders."
msgstr ""
msgstr "ไม่สามารถดึงรายการโฟลเดอร์ IMAP จากเซิร์ฟเวอร์ได้ กรุณาตรวจสอบว่ากล่องจดหมายสามารถเข้าถึงได้และบัญชีมีการอนุญาตในการแสดงรายการโฟลเดอร์"
#: frappe/email/doctype/email_queue/email_queue.py:347
msgid "Failed to send email with subject:"
@ -10769,7 +10769,7 @@ msgstr "ไฟล์ URL"
#: frappe/core/doctype/file/file.py:123
msgid "File URL is required when copying an existing attachment."
msgstr ""
msgstr "ต้องระบุ URL ของไฟล์เมื่อคัดลอกเอกสารแนบที่มีอยู่"
#: frappe/desk/page/backups/backups.py:107
msgid "File backup is ready"
@ -10946,7 +10946,7 @@ msgstr "บันทึกตัวกรอง"
#. Description of the 'Script' (Code) field in DocType 'Report'
#: frappe/core/doctype/report/report.json
msgid "Filters will be accessible via <code>filters</code>. <br><br>Send output as <code>result = [result]</code>, or for old style <code>data = [columns], [result]</code>"
msgstr ""
msgstr "ตัวกรองจะสามารถเข้าถึงได้ผ่าน <code>filters</code> <br><br>ส่งผลลัพธ์เป็น <code>result = [result]</code> หรือในรูปแบบเก่า <code>data = [columns], [result]</code>"
#: frappe/public/js/frappe/ui/filters/filter_list.js:133
msgid "Filters {0}"
@ -10979,7 +10979,7 @@ msgstr "เสร็จสิ้น ณ"
#: frappe/public/js/frappe/form/grid_pagination.js:123
msgid "First"
msgstr ""
msgstr "แรก"
#. Label of the first_day_of_the_week (Select) field in DocType 'Language'
#. Label of the first_day_of_the_week (Select) field in DocType 'System
@ -11107,7 +11107,7 @@ msgstr "เอกสารต่อไปนี้ {0}"
#: frappe/public/js/frappe/form/linked_with.js:56
msgid "Following documents are linked with {0}"
msgstr ""
msgstr "เอกสารต่อไปนี้เชื่อมโยงกับ {0}"
#: frappe/website/doctype/web_form/web_form.py:111
msgid "Following fields are missing:"
@ -11286,7 +11286,8 @@ msgstr "สำหรับหัวข้อที่มีการเปลี
#: frappe/public/js/frappe/views/reports/report_view.js:435
msgid "For comparison, use >5, <10 or =324.\n"
"For ranges, use 5:10 (for values between 5 & 10)."
msgstr ""
msgstr "สำหรับการเปรียบเทียบ ใช้ >5, <10 หรือ =324\n"
"สำหรับช่วง ใช้ 5:10 (สำหรับค่าระหว่าง 5 ถึง 10)"
#: frappe/public/js/frappe/views/reports/query_report.js:2293
msgid "For comparison, use >5, <10 or =324. For ranges, use 5:10 (for values between 5 & 10)."
@ -11469,7 +11470,7 @@ msgstr "หน่วยเศษส่วน"
#. Label of a Desktop Icon
#: frappe/desktop_icon/framework.json
msgid "Framework"
msgstr ""
msgstr "เฟรมเวิร์ก"
#. Option for the 'Social Login Provider' (Select) field in DocType 'Social
#. Login Key'
@ -11806,7 +11807,7 @@ msgstr "รับอวาตาร์ที่ได้รับการยอ
#: frappe/public/js/frappe/ui/sidebar/sidebar.html:47
#: frappe/public/js/frappe/ui/user_onboarding/OnboardingPanel.vue:235
msgid "Getting Started"
msgstr ""
msgstr "เริ่มต้นใช้งาน"
#. Label of the git_branch (Data) field in DocType 'Installed Application'
#: frappe/core/doctype/installed_application/installed_application.json
@ -12274,7 +12275,7 @@ msgstr "มีไฟล์แนบ"
#: frappe/public/js/frappe/views/inbox/inbox_view.js:102
msgid "Has Attachments"
msgstr ""
msgstr "มีไฟล์แนบ"
#. Name of a DocType
#: frappe/core/doctype/has_domain/has_domain.json
@ -12384,7 +12385,7 @@ msgstr "หัวข้อ"
#. Label of a Workspace Sidebar Item
#: frappe/workspace_sidebar/system.json
msgid "Health Report"
msgstr ""
msgstr "รายงานสถานะ"
#. Option for the 'Type' (Select) field in DocType 'Dashboard Chart'
#: frappe/desk/doctype/dashboard_chart/dashboard_chart.json
@ -12804,16 +12805,16 @@ msgstr "โฟลเดอร์ IMAP"
#: frappe/email/doctype/email_account/email_account.py:275
msgid "IMAP Folder Not Found"
msgstr ""
msgstr "ไม่พบโฟลเดอร์ IMAP"
#: frappe/email/doctype/email_account/email_account.py:239
#: frappe/email/doctype/email_account/email_account.py:247
msgid "IMAP Folder Validation Failed"
msgstr ""
msgstr "การตรวจสอบโฟลเดอร์ IMAP ล้มเหลว"
#: frappe/email/doctype/email_account/email_account.py:255
msgid "IMAP Folder name cannot be empty."
msgstr ""
msgstr "ชื่อโฟลเดอร์ IMAP ไม่สามารถเว้นว่างได้"
#. Label of the ip_address (Data) field in DocType 'Activity Log'
#. Label of the ip_address (Data) field in DocType 'Comment'
@ -13011,7 +13012,7 @@ msgstr "หากเว้นว่างไว้ พื้นที่ทำ
#: frappe/public/js/frappe/form/print_utils.js:36
msgid "If no Print Format is selected, the default template for this report will be used."
msgstr ""
msgstr "หากไม่ได้เลือกรูปแบบการพิมพ์ จะใช้แม่แบบเริ่มต้นสำหรับรายงานนี้"
#. Description of the 'Port' (Data) field in DocType 'Email Domain'
#: frappe/email/doctype/email_domain/email_domain.json
@ -13205,7 +13206,7 @@ msgstr "ฟิลด์ภาพ"
#. Label of the footer_image_height (Float) field in DocType 'Letter Head'
#: frappe/printing/doctype/letter_head/letter_head.json
msgid "Image Height (px)"
msgstr ""
msgstr "ความสูงของรูปภาพ (px)"
#. Label of the image_link (Attach) field in DocType 'About Us Team Member'
#: frappe/website/doctype/about_us_team_member/about_us_team_member.json
@ -13220,7 +13221,7 @@ msgstr "มุมมองภาพ"
#. Label of the footer_image_width (Float) field in DocType 'Letter Head'
#: frappe/printing/doctype/letter_head/letter_head.json
msgid "Image Width (px)"
msgstr ""
msgstr "ความกว้างของรูปภาพ (px)"
#: frappe/core/doctype/doctype/doctype.py:1569
msgid "Image field must be a valid fieldname"
@ -13583,7 +13584,7 @@ msgstr "รหัสยืนยันไม่ถูกต้อง"
#: frappe/public/js/frappe/views/gantt/gantt_view.js:88
msgid "Incorrect configuration"
msgstr ""
msgstr "การกำหนดค่าไม่ถูกต้อง"
#: frappe/model/document.py:1743
msgid "Incorrect value in row {0}:"
@ -14096,7 +14097,7 @@ msgstr "สถานะเอกสารไม่ถูกต้อง"
#: frappe/www/list.py:231
msgid "Invalid expression in Web Form Dynamic Filter for {0}: {1}"
msgstr ""
msgstr "นิพจน์ไม่ถูกต้องในตัวกรองแบบไดนามิกของ Web Form สำหรับ {0}: {1}"
#: frappe/model/workflow.py:112
msgid "Invalid expression in Workflow Update Value: {0}"
@ -14355,7 +14356,7 @@ msgstr "ค่าเริ่มต้น"
#. 'Navbar Settings'
#: frappe/core/doctype/navbar_settings/navbar_settings.json
msgid "Is Dismissible"
msgstr ""
msgstr "สามารถปิดได้"
#. Label of the is_dynamic_url (Check) field in DocType 'Webhook'
#: frappe/integrations/doctype/webhook/webhook.json
@ -14553,7 +14554,7 @@ msgstr "การลบไฟล์นี้: {0} มีความเสี่
#: frappe/core/doctype/communication/email.py:359
msgid "It is too late to undo this email. It is already being sent."
msgstr ""
msgstr "สายเกินไปที่จะเลิกทำอีเมลนี้ กำลังส่งอยู่แล้ว"
#. Label of the item_label (Data) field in DocType 'Navbar Item'
#: frappe/core/doctype/navbar_item/navbar_item.json
@ -15460,11 +15461,11 @@ msgstr "ถูกใจโดย"
#: frappe/public/js/frappe/list/list_view.js:785
msgid "Liked by me"
msgstr ""
msgstr "ที่ฉันถูกใจ"
#: frappe/public/js/frappe/ui/like.js:117
msgid "Liked by {0} people"
msgstr ""
msgstr "ถูกใจโดย {0} คน"
#. Label of the likes (Int) field in DocType 'Help Article'
#: frappe/website/doctype/help_article/help_article.json
@ -15652,7 +15653,7 @@ msgstr "ลิงก์แล้ว"
#: frappe/public/js/frappe/views/inbox/inbox_view.js:109
msgid "Linked with {0}"
msgstr ""
msgstr "เชื่อมโยงกับ {0}"
#: frappe/public/js/frappe/ui/toolbar/about.js:40
msgid "LinkedIn"
@ -15818,7 +15819,7 @@ msgstr "กำลังโหลด..."
#: frappe/core/page/permission_manager/permission_manager.js:615
msgid "Loading…"
msgstr ""
msgstr "กำลังโหลด…"
#. Label of the location (Data) field in DocType 'User'
#. Label of the location (Data) field in DocType 'Event'
@ -17190,7 +17191,7 @@ msgstr "ไม่มี"
#. 'Email Account'
#: frappe/email/doctype/email_account/email_account.json
msgid "NEVER"
msgstr ""
msgstr "ไม่เลย"
#: frappe/workflow/doctype/workflow/workflow.js:19
msgid "NOTE: If you add states or transitions in the table, it will be reflected in the Workflow Builder but you will have to position them manually. Also Workflow Builder is currently in <b>BETA</b>."
@ -17493,7 +17494,7 @@ msgstr "ชื่อรายงานใหม่"
#: frappe/core/doctype/role/role.js:55
msgid "New Role Name"
msgstr ""
msgstr "ชื่อบทบาทใหม่"
#: frappe/public/js/frappe/widgets/widget_dialog.js:60
msgid "New Shortcut"
@ -17544,11 +17545,11 @@ msgstr "รหัสผ่านใหม่ต้องไม่เหมือ
#: frappe/core/doctype/user/user.py:962
msgid "New password cannot be the same as your current password. Please choose a different password."
msgstr ""
msgstr "รหัสผ่านใหม่ไม่สามารถเหมือนกับรหัสผ่านปัจจุบันของคุณได้ กรุณาเลือกรหัสผ่านอื่น"
#: frappe/core/doctype/role/role.js:78
msgid "New role created successfully."
msgstr ""
msgstr "สร้างบทบาทใหม่สำเร็จแล้ว"
#: frappe/utils/change_log.py:389
msgid "New updates are available"
@ -17816,7 +17817,7 @@ msgstr "ไม่มีกิจกรรมใน Google Calendar ที่จ
#: frappe/email/doctype/email_account/email_account.py:244
msgid "No IMAP folders were found on the server. Please verify the email account settings and ensure the mailbox contains folders."
msgstr ""
msgstr "ไม่พบโฟลเดอร์ IMAP บนเซิร์ฟเวอร์ กรุณาตรวจสอบการตั้งค่าบัญชีอีเมลและตรวจสอบให้แน่ใจว่ากล่องจดหมายมีโฟลเดอร์"
#: frappe/public/js/frappe/ui/capture.js:263
msgid "No Images"
@ -17915,7 +17916,7 @@ msgstr "ไม่มีกิจกรรมที่กำลังจะมา
#: frappe/core/page/permission_manager/permission_manager.js:630
msgid "No activity recorded yet."
msgstr ""
msgstr "ยังไม่มีกิจกรรมที่บันทึกไว้"
#: frappe/public/js/frappe/form/templates/address_list.html:43
msgid "No address added yet."
@ -18020,7 +18021,7 @@ msgstr "ไม่มีบันทึกเพิ่มเติม"
#: frappe/public/js/frappe/views/reports/report_view.js:327
msgid "No matching entries in the current results"
msgstr ""
msgstr "ไม่พบรายการที่ตรงกันในผลลัพธ์ปัจจุบัน"
#: frappe/templates/includes/search_template.html:49
msgid "No matching records. Search something new"
@ -18648,7 +18649,7 @@ msgstr "ข้อผิดพลาด OAuth"
#. Label of a Workspace Sidebar Item
#: frappe/workspace_sidebar/integrations.json
msgid "OAuth Provider"
msgstr ""
msgstr "ผู้ให้บริการ OAuth"
#. Name of a DocType
#. Label of a Link in the Integrations Workspace
@ -18917,7 +18918,7 @@ msgstr "อนุญาตให้แก้ไขเฉพาะสำหรั
#: frappe/core/doctype/module_def/module_def.py:95
msgid "Only Custom Modules can be renamed."
msgstr ""
msgstr "สามารถเปลี่ยนชื่อได้เฉพาะโมดูลที่กำหนดเองเท่านั้น"
#: frappe/core/doctype/doctype/doctype.py:1683
msgid "Only Options allowed for Data field are:"
@ -19042,7 +19043,7 @@ msgstr "เปิดความช่วยเหลือ"
#: frappe/public/js/frappe/form/controls/data.js:84
#: frappe/public/js/frappe/form/controls/link.js:17
msgid "Open Link"
msgstr ""
msgstr "เปิดลิงก์"
#. Label of the open_reference_document (Button) field in DocType 'Notification
#. Log'
@ -19060,7 +19061,7 @@ msgstr "แอปพลิเคชันโอเพนซอร์สสำห
#: frappe/public/js/frappe/form/controls/base_control.js:165
msgid "Open Translation"
msgstr ""
msgstr "เปิดการแปล"
#. Label of the open_in_new_tab (Check) field in DocType 'Top Bar Item'
#: frappe/website/doctype/top_bar_item/top_bar_item.json
@ -19084,7 +19085,7 @@ msgstr "เปิดคอนโซล"
#. Item'
#: frappe/desk/doctype/workspace_sidebar_item/workspace_sidebar_item.json
msgid "Open in New Tab"
msgstr ""
msgstr "เปิดในแท็บใหม่"
#: frappe/public/js/print_format_builder/Preview.vue:17
msgid "Open in a new tab"
@ -20206,7 +20207,7 @@ msgstr "โปรดเพิ่มความคิดเห็นที่ถ
#: frappe/public/js/frappe/views/reports/query_report.js:1560
msgid "Please adjust filters to include some data"
msgstr ""
msgstr "กรุณาปรับตัวกรองเพื่อรวมข้อมูลบางส่วน"
#: frappe/core/doctype/user/user.py:1152
msgid "Please ask your administrator to verify your sign-up"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: frappe\n"
"Report-Msgid-Bugs-To: developers@frappe.io\n"
"POT-Creation-Date: 2026-04-12 09:45+0000\n"
"PO-Revision-Date: 2026-04-15 16:26\n"
"PO-Revision-Date: 2026-04-16 16:38\n"
"Last-Translator: developers@frappe.io\n"
"Language-Team: Chinese Simplified\n"
"MIME-Version: 1.0\n"
@ -1842,7 +1842,7 @@ msgstr "对齐方式"
#: frappe/custom/doctype/custom_field/custom_field.json
#: frappe/custom/doctype/customize_form_field/customize_form_field.json
msgid "Alignment"
msgstr ""
msgstr "对齐方式"
#. Name of a role
#. Option for the 'Frequency' (Select) field in DocType 'Scheduled Job Type'
@ -3372,7 +3372,7 @@ msgstr "仅当勾选“收邮件”时,才能激活自动链接。"
#: frappe/email/doctype/email_queue/email_queue.js:49
msgid "Automatic sending of emails is disabled via site config."
msgstr ""
msgstr "通过站点配置已禁用自动发送电子邮件。"
#. Description of a DocType
#: frappe/automation/doctype/assignment_rule/assignment_rule.json
@ -4460,7 +4460,7 @@ msgstr "无法编辑已取消单据"
#: frappe/website/doctype/web_form/web_form.js:367
msgid "Cannot edit filters for standard Web Forms"
msgstr ""
msgstr "无法编辑标准 Web 表单的过滤条件"
#: frappe/desk/doctype/dashboard_chart/dashboard_chart.js:378
msgid "Cannot edit filters for standard charts"
@ -7595,7 +7595,7 @@ msgstr "桌面用户"
#: frappe/public/js/frappe/ui/sidebar/sidebar_header.js:12
#: frappe/www/me.html:86
msgid "Desktop"
msgstr ""
msgstr "桌面"
#. Name of a DocType
#: frappe/desk/doctype/desktop_icon/desktop_icon.json
@ -7606,12 +7606,12 @@ msgstr "桌面图标"
#. Name of a DocType
#: frappe/desk/doctype/desktop_layout/desktop_layout.json
msgid "Desktop Layout"
msgstr ""
msgstr "桌面布局"
#. Name of a DocType
#: frappe/desk/doctype/desktop_settings/desktop_settings.json
msgid "Desktop Settings"
msgstr ""
msgstr "桌面设置"
#. Label of the details_tab (Tab Break) field in DocType 'Module Def'
#. Label of the details (Code) field in DocType 'Scheduled Job Log'
@ -8927,7 +8927,7 @@ msgstr "编辑快捷方式"
#: frappe/public/js/frappe/ui/sidebar/sidebar_header.js:40
msgid "Edit Sidebar"
msgstr ""
msgstr "编辑侧边栏"
#. Label of the edit_values (Button) field in DocType 'Web Page Block'
#. Label of the edit_navbar_template_values (Button) field in DocType 'Website
@ -9296,15 +9296,15 @@ msgstr "邮件队列已暂停。恢复后系统将自动发送其他邮件。"
#: frappe/public/js/frappe/views/communication.js:955
msgid "Email sending undone"
msgstr ""
msgstr "邮件发送已撤销"
#: frappe/email/doctype/email_queue/email_queue.py:199
msgid "Email size {0:.2f} MB exceeds the maximum allowed size of {1:.2f} MB"
msgstr ""
msgstr "邮件大小 {0:.2f} MB 超过了允许的最大大小 {1:.2f} MB"
#: frappe/core/doctype/communication/email.py:349
msgid "Email undo window is over. Cannot undo email."
msgstr ""
msgstr "邮件撤销窗口已过期。无法撤销邮件。"
#. Label of the section_break_udjs (Section Break) field in DocType 'System
#. Health Report'
@ -9711,7 +9711,7 @@ msgstr "请输入静态的URL参数(例如 sender=ERPNext, username=ERPNext, pas
#: frappe/public/js/form_builder/components/FieldProperties.vue:66
msgid "Enter the fieldname of the currency field or a cached value (e.g. Company:company:default_currency)."
msgstr ""
msgstr "输入货币字段的字段名称或缓存值(例如 Company:company:default_currency"
#. Description of the 'Message Parameter' (Data) field in DocType 'SMS
#. Settings'
@ -9878,7 +9878,7 @@ msgstr "错误集"
#. Document State'
#: frappe/workflow/doctype/workflow_document_state/workflow_document_state.json
msgid "Evaluate as Expression"
msgstr ""
msgstr "作为公式求值"
#. Option for the 'Type' (Select) field in DocType 'Communication'
#. Name of a DocType
@ -10182,7 +10182,7 @@ msgstr "不允许导出,您没有{0}的角色。"
#: frappe/custom/doctype/customize_form/customize_form.js:285
msgid "Export only customizations assigned to the selected module.<br><span class='text-muted'><strong>Note:</strong> You must set the <em>Module (for export)</em> field on Custom Field and Property Setter records before applying this filter.</span><p class='alert alert-warning'> <strong>Warning:</strong> Customizations from other modules will be excluded.</p>"
msgstr ""
msgstr "仅导出分配给所选模块的自定义。<br><span class='text-muted'><strong>注意:</strong>在应用此过滤条件之前,您必须在自定义字段和属性设置记录上设置<em>模块(用于导出)</em>字段。</span><p class='alert alert-warning'> <strong>警告:</strong>来自其他模块的自定义将被排除。</p>"
#. Description of the 'Export without main header' (Check) field in DocType
#. 'Data Export'
@ -10252,7 +10252,7 @@ msgstr "附加参数"
#. 'Email Account'
#: frappe/email/doctype/email_account/email_account.json
msgid "FAILURE"
msgstr ""
msgstr "失败"
#. Option for the 'Social Login Provider' (Select) field in DocType 'Social
#. Login Key'
@ -10296,7 +10296,7 @@ msgstr "失败任务"
#. Label of a number card in the Users Workspace
#: frappe/core/workspace/users/users.json
msgid "Failed Login Attempts"
msgstr ""
msgstr "失败的登录尝试"
#. Label of the failed_logins (Int) field in DocType 'System Health Report'
#: frappe/desk/doctype/system_health_report/system_health_report.json
@ -10339,7 +10339,7 @@ msgstr "解密密钥{0}失败"
#: frappe/core/doctype/communication/email.py:344
msgid "Failed to delete communication"
msgstr ""
msgstr "删除沟通记录失败"
#: frappe/desk/reportview.py:642
msgid "Failed to delete {0} documents: {1}"
@ -10396,7 +10396,7 @@ msgstr "请求登录Frappe云失败"
#: frappe/email/doctype/email_account/email_account.py:236
msgid "Failed to retrieve the list of IMAP folders from the server. Please ensure the mailbox is accessible and the account has permission to list folders."
msgstr ""
msgstr "无法从服务器检索 IMAP 文件夹列表。请确保邮箱可访问且科目具有列出文件夹的权限。"
#: frappe/email/doctype/email_queue/email_queue.py:347
msgid "Failed to send email with subject:"
@ -10482,7 +10482,7 @@ msgstr "正在获取默认全局搜索文档。"
#: frappe/website/doctype/web_form/web_form.js:169
msgid "Fetching fields from {0}..."
msgstr ""
msgstr "正在从 {0} 获取字段..."
#. Label of the field (Select) field in DocType 'Assignment Rule'
#. Label of the field (Select) field in DocType 'Document Naming Rule
@ -10522,7 +10522,7 @@ msgstr "字段值必填。请指定值进行更新"
#: frappe/desk/search.py:271
msgid "Field <code>{0}</code> not found in {1}"
msgstr ""
msgstr "在 {1} 中未找到字段 <code>{0}</code>"
#. Label of the description (Text) field in DocType 'Custom Field'
#: frappe/custom/doctype/custom_field/custom_field.json
@ -10782,7 +10782,7 @@ msgstr "文件的URL"
#: frappe/core/doctype/file/file.py:123
msgid "File URL is required when copying an existing attachment."
msgstr ""
msgstr "复制现有附件时,文件 URL 为必填项。"
#: frappe/desk/page/backups/backups.py:107
msgid "File backup is ready"
@ -10811,7 +10811,7 @@ msgstr "不允许{0}文件类型"
#: frappe/public/js/frappe/file_uploader/FileUploader.vue:651
msgid "File upload failed."
msgstr ""
msgstr "文件上传失败。"
#: frappe/core/doctype/file/file.py:421 frappe/core/doctype/file/file.py:492
msgid "File {0} does not exist"
@ -10838,7 +10838,7 @@ msgstr "过滤条件"
#. Label of the filter_area (HTML) field in DocType 'Workspace Sidebar Item'
#: frappe/desk/doctype/workspace_sidebar_item/workspace_sidebar_item.json
msgid "Filter Area"
msgstr ""
msgstr "筛选区域"
#. Label of the filter_data (Section Break) field in DocType 'Auto Email
#. Report'
@ -10873,7 +10873,7 @@ msgstr "运算符后缺少筛选条件:{0}"
#: frappe/database/query.py:832
msgid "Filter fields have invalid backtick notation: {0}"
msgstr ""
msgstr "过滤条件字段包含无效的反引号标记: {0}"
#: frappe/printing/page/print_format_builder/print_format_builder_sidebar.html:3
msgid "Filter..."
@ -10896,7 +10896,7 @@ msgstr "基于“{0}”过滤"
#: frappe/public/js/frappe/form/controls/link.js:743
msgid "Filtered by: {0}."
msgstr ""
msgstr "已按 {0} 过滤。"
#. Label of the filters (Code) field in DocType 'Access Log'
#. Label of the filters_sb (Section Break) field in DocType 'Prepared Report'
@ -10992,7 +10992,7 @@ msgstr "完成时间"
#: frappe/public/js/frappe/form/grid_pagination.js:123
msgid "First"
msgstr ""
msgstr "第一页"
#. Label of the first_day_of_the_week (Select) field in DocType 'Language'
#. Label of the first_day_of_the_week (Select) field in DocType 'System
@ -11120,7 +11120,7 @@ msgstr "正在关注文档{0}"
#: frappe/public/js/frappe/form/linked_with.js:56
msgid "Following documents are linked with {0}"
msgstr ""
msgstr "以下单据与 {0} 相关联"
#: frappe/website/doctype/web_form/web_form.py:111
msgid "Following fields are missing:"
@ -11299,7 +11299,8 @@ msgstr "如需动态主题请使用Jinja标签例如<code>{{ doc.name }
#: frappe/public/js/frappe/views/reports/report_view.js:435
msgid "For comparison, use >5, <10 or =324.\n"
"For ranges, use 5:10 (for values between 5 & 10)."
msgstr ""
msgstr "比较时使用 >5、<10 或 =324。\n"
"范围时使用 5:10表示介于 5 和 10 之间的值)。"
#: frappe/public/js/frappe/views/reports/query_report.js:2293
msgid "For comparison, use >5, <10 or =324. For ranges, use 5:10 (for values between 5 & 10)."
@ -11482,7 +11483,7 @@ msgstr "分数单位"
#. Label of a Desktop Icon
#: frappe/desktop_icon/framework.json
msgid "Framework"
msgstr ""
msgstr "框架"
#. Option for the 'Social Login Provider' (Select) field in DocType 'Social
#. Login Key'
@ -11581,7 +11582,7 @@ msgstr "从"
#. Label of the from_attach_field (Select) field in DocType 'Notification'
#: frappe/email/doctype/notification/notification.json
msgid "From Attach Field"
msgstr ""
msgstr "从附件字段"
#. Label of the from_date (Date) field in DocType 'Dashboard Chart'
#: frappe/desk/doctype/dashboard_chart/dashboard_chart.json
@ -11601,7 +11602,7 @@ msgstr "单据类型"
#. Option for the 'Attach Files' (Select) field in DocType 'Notification'
#: frappe/email/doctype/notification/notification.json
msgid "From Field"
msgstr ""
msgstr "从字段"
#. Label of the sender_full_name (Data) field in DocType 'Communication'
#: frappe/core/doctype/communication/communication.json
@ -11819,7 +11820,7 @@ msgstr "从Gravatar.com网站获取您的个人图标"
#: frappe/public/js/frappe/ui/sidebar/sidebar.html:47
#: frappe/public/js/frappe/ui/user_onboarding/OnboardingPanel.vue:235
msgid "Getting Started"
msgstr ""
msgstr "入门指南"
#. Label of the git_branch (Data) field in DocType 'Installed Application'
#: frappe/core/doctype/installed_application/installed_application.json
@ -12241,7 +12242,7 @@ msgstr "HTML编辑器"
#: frappe/public/js/frappe/views/communication.js:145
msgid "HTML Message"
msgstr ""
msgstr "HTML 消息"
#. Label of the page (HTML Editor) field in DocType 'Access Log'
#: frappe/core/doctype/access_log/access_log.json
@ -12287,7 +12288,7 @@ msgstr "有附件"
#: frappe/public/js/frappe/views/inbox/inbox_view.js:102
msgid "Has Attachments"
msgstr ""
msgstr "有附件"
#. Name of a DocType
#: frappe/core/doctype/has_domain/has_domain.json
@ -12342,7 +12343,7 @@ msgstr "使用附件{0}设置HTML文件头"
#. Label of the header_icon (Icon) field in DocType 'Workspace Sidebar'
#: frappe/desk/doctype/workspace_sidebar/workspace_sidebar.json
msgid "Header Icon"
msgstr ""
msgstr "标题图标"
#. Label of the header_script (Code) field in DocType 'Letter Head'
#: frappe/printing/doctype/letter_head/letter_head.json
@ -12397,7 +12398,7 @@ msgstr "标题"
#. Label of a Workspace Sidebar Item
#: frappe/workspace_sidebar/system.json
msgid "Health Report"
msgstr ""
msgstr "健康报告"
#. Option for the 'Type' (Select) field in DocType 'Dashboard Chart'
#: frappe/desk/doctype/dashboard_chart/dashboard_chart.json
@ -12456,7 +12457,7 @@ msgstr "HTML帮助"
#. Description of the 'Content' (Text Editor) field in DocType 'Note'
#: frappe/desk/doctype/note/note.json
msgid "Help: To link to another record in the system, use \"/desk/note/[Note Name]\" as the Link URL. (don't use \"http://\")"
msgstr ""
msgstr "帮助:要链接到系统中的另一条记录,请使用 \"/desk/note/[Note Name]\" 作为链接 URL。请勿使用 \"http://\""
#. Label of the helpful (Int) field in DocType 'Help Article'
#: frappe/website/doctype/help_article/help_article.json
@ -12511,7 +12512,7 @@ msgstr "隐藏字段"
#: frappe/public/js/frappe/views/reports/query_report.js:1777
msgid "Hidden columns include: <br> {0}"
msgstr ""
msgstr "隐藏列包括:<br> {0}"
#. Option for the 'Page Number' (Select) field in DocType 'Print Format'
#: frappe/printing/doctype/print_format/print_format.json
@ -12817,16 +12818,16 @@ msgstr "收件箱目录"
#: frappe/email/doctype/email_account/email_account.py:275
msgid "IMAP Folder Not Found"
msgstr ""
msgstr "未找到收件箱目录"
#: frappe/email/doctype/email_account/email_account.py:239
#: frappe/email/doctype/email_account/email_account.py:247
msgid "IMAP Folder Validation Failed"
msgstr ""
msgstr "收件箱目录验证失败"
#: frappe/email/doctype/email_account/email_account.py:255
msgid "IMAP Folder name cannot be empty."
msgstr ""
msgstr "收件箱目录名称不能为空。"
#. Label of the ip_address (Data) field in DocType 'Activity Log'
#. Label of the ip_address (Data) field in DocType 'Comment'
@ -12870,21 +12871,21 @@ msgstr "图标"
#. Label of the icon_image (Attach) field in DocType 'Desktop Icon'
#: frappe/desk/doctype/desktop_icon/desktop_icon.json
msgid "Icon Image"
msgstr ""
msgstr "图标图片"
#. Label of the icon_style (Select) field in DocType 'Desktop Settings'
#: frappe/desk/doctype/desktop_settings/desktop_settings.json
msgid "Icon Style"
msgstr ""
msgstr "图标样式"
#. Label of the icon_type (Select) field in DocType 'Desktop Icon'
#: frappe/desk/doctype/desktop_icon/desktop_icon.json
msgid "Icon Type"
msgstr ""
msgstr "图标类型"
#: frappe/desk/page/desktop/desktop.js:1071
msgid "Icon is not correctly configured please check the workspace sidebar to it"
msgstr ""
msgstr "图标配置不正确,请检查工作区侧边栏进行修正"
#. Description of the 'Icon' (Select) field in DocType 'Workflow State'
#: frappe/workflow/doctype/workflow_state/workflow_state.json
@ -12986,7 +12987,7 @@ msgstr "如果启用,系统会记录单据被查看过多少次"
#. (Check) field in DocType 'System Settings'
#: frappe/core/doctype/system_settings/system_settings.json
msgid "If enabled, only System Managers can upload public files. Other users can't see the checkbox <i>Is Private</i> in the upload dialog."
msgstr ""
msgstr "如果启用,只有系统管理员可以上传公共文件。其他用户在上传对话框中看不到 <i>私有?</i> 复选框。"
#. Description of the 'Track Seen' (Check) field in DocType 'DocType'
#: frappe/core/doctype/doctype/doctype.json
@ -13024,7 +13025,7 @@ msgstr "如果不勾选,默认工作区为最后一次访问的工作区"
#: frappe/public/js/frappe/form/print_utils.js:36
msgid "If no Print Format is selected, the default template for this report will be used."
msgstr ""
msgstr "如果未选择打印格式,将使用此报表的默认模板。"
#. Description of the 'Port' (Data) field in DocType 'Email Domain'
#: frappe/email/doctype/email_domain/email_domain.json
@ -13218,7 +13219,7 @@ msgstr "图片字段"
#. Label of the footer_image_height (Float) field in DocType 'Letter Head'
#: frappe/printing/doctype/letter_head/letter_head.json
msgid "Image Height (px)"
msgstr ""
msgstr "图片高度 (px)"
#. Label of the image_link (Attach) field in DocType 'About Us Team Member'
#: frappe/website/doctype/about_us_team_member/about_us_team_member.json
@ -13233,7 +13234,7 @@ msgstr "图像视图"
#. Label of the footer_image_width (Float) field in DocType 'Letter Head'
#: frappe/printing/doctype/letter_head/letter_head.json
msgid "Image Width (px)"
msgstr ""
msgstr "图片宽度 (px)"
#: frappe/core/doctype/doctype/doctype.py:1569
msgid "Image field must be a valid fieldname"
@ -13596,7 +13597,7 @@ msgstr "验证码不正确"
#: frappe/public/js/frappe/views/gantt/gantt_view.js:88
msgid "Incorrect configuration"
msgstr ""
msgstr "配置不正确"
#: frappe/model/document.py:1743
msgid "Incorrect value in row {0}:"
@ -13930,7 +13931,7 @@ msgstr "无效证件"
#: frappe/email/smtp.py:143
msgid "Invalid Credentials for Email Account: {0}"
msgstr ""
msgstr "电子邮箱帐号的凭据无效: {0}"
#: frappe/utils/data.py:146 frappe/utils/data.py:309
msgid "Invalid Date"
@ -14085,7 +14086,7 @@ msgstr "参数格式无效:{0}。仅允许带引号的字符串字面量或简
#: frappe/database/query.py:2382
msgid "Invalid argument type: {0}. Only strings, numbers, dicts, and None are allowed."
msgstr ""
msgstr "无效的参数类型:{0}。仅允许字符串、数字、字典和 None。"
#: frappe/database/query.py:867
msgid "Invalid characters in fieldname: {0}. Only letters, numbers, and underscores are allowed."
@ -14109,11 +14110,11 @@ msgstr "文档状态无效"
#: frappe/www/list.py:231
msgid "Invalid expression in Web Form Dynamic Filter for {0}: {1}"
msgstr ""
msgstr "Web Form 动态筛选器中 {0} 的公式无效:{1}"
#: frappe/model/workflow.py:112
msgid "Invalid expression in Workflow Update Value: {0}"
msgstr ""
msgstr "工作流更新值中的公式无效:{0}"
#: frappe/public/js/frappe/utils/dashboard_utils.js:218
msgid "Invalid expression set in filter {0} ({1})"
@ -14186,7 +14187,7 @@ msgstr "命名序列{}无效:数字占位符前缺少点号(.)。请使用类
#: frappe/database/query.py:2374
msgid "Invalid nested expression: dictionary must represent a function or operator"
msgstr ""
msgstr "无效的嵌套公式:字典必须表示函数或操作符"
#: frappe/core/doctype/data_import/importer.py:458
msgid "Invalid or corrupted content for import"
@ -14248,7 +14249,7 @@ msgstr "{0}条件无效"
#: frappe/database/query.py:2263
msgid "Invalid {0} dictionary format"
msgstr ""
msgstr "无效的 {0} 字典格式"
#. Option for the 'Style' (Select) field in DocType 'Workflow State'
#: frappe/workflow/doctype/workflow_state/workflow_state.json
@ -14368,7 +14369,7 @@ msgstr "默认"
#. 'Navbar Settings'
#: frappe/core/doctype/navbar_settings/navbar_settings.json
msgid "Is Dismissible"
msgstr ""
msgstr "可关闭"
#. Label of the is_dynamic_url (Check) field in DocType 'Webhook'
#: frappe/integrations/doctype/webhook/webhook.json
@ -14566,7 +14567,7 @@ msgstr "删除此文件有风险:{0}。请联系您的系统管理员。"
#: frappe/core/doctype/communication/email.py:359
msgid "It is too late to undo this email. It is already being sent."
msgstr ""
msgstr "撤销此邮件已来不及了,邮件正在发送中。"
#. Label of the item_label (Data) field in DocType 'Navbar Item'
#: frappe/core/doctype/navbar_item/navbar_item.json
@ -14696,7 +14697,7 @@ msgstr "作业未运行。"
#: frappe/core/doctype/prepared_report/prepared_report.py:211
msgid "Job stopped successfully"
msgstr ""
msgstr "任务已成功停止"
#: frappe/desk/doctype/event/event.js:55
msgid "Join video conference with {0}"
@ -14752,7 +14753,7 @@ msgstr "看板视图"
#. Label of the keep_closed (Check) field in DocType 'Workspace Sidebar Item'
#: frappe/desk/doctype/workspace_sidebar_item/workspace_sidebar_item.json
msgid "Keep Closed"
msgstr ""
msgstr "保持关闭"
#. Description of a DocType
#: frappe/core/doctype/activity_log/activity_log.json
@ -15103,11 +15104,11 @@ msgstr "最后活动"
#: frappe/public/js/frappe/form/sidebar/form_sidebar.js:161
msgid "Last Edited by You"
msgstr ""
msgstr "您最后编辑"
#: frappe/public/js/frappe/form/sidebar/form_sidebar.js:162
msgid "Last Edited by {0}"
msgstr ""
msgstr "最后由 {0} 编辑"
#. Label of the last_execution (Datetime) field in DocType 'Scheduled Job Type'
#: frappe/core/doctype/scheduled_job_type/scheduled_job_type.json
@ -15473,11 +15474,11 @@ msgstr "谁喜欢"
#: frappe/public/js/frappe/list/list_view.js:785
msgid "Liked by me"
msgstr ""
msgstr "我点赞的"
#: frappe/public/js/frappe/ui/like.js:117
msgid "Liked by {0} people"
msgstr ""
msgstr "{0} 人点赞"
#. Label of the likes (Int) field in DocType 'Help Article'
#: frappe/website/doctype/help_article/help_article.json
@ -15665,7 +15666,7 @@ msgstr "链接"
#: frappe/public/js/frappe/views/inbox/inbox_view.js:109
msgid "Linked with {0}"
msgstr ""
msgstr "已链接到 {0}"
#: frappe/public/js/frappe/ui/toolbar/about.js:40
msgid "LinkedIn"
@ -15831,7 +15832,7 @@ msgstr "载入中..."
#: frappe/core/page/permission_manager/permission_manager.js:615
msgid "Loading…"
msgstr ""
msgstr "加载中…"
#. Label of the location (Data) field in DocType 'User'
#. Label of the location (Data) field in DocType 'Event'
@ -15909,7 +15910,7 @@ msgstr "登录"
#. Label of a chart in the Users Workspace
#: frappe/core/workspace/users/users.json
msgid "Login Activity"
msgstr ""
msgstr "登录活动"
#. Label of the login_after (Int) field in DocType 'User'
#: frappe/core/doctype/user/user.json
@ -15984,7 +15985,7 @@ msgstr "登录以发起新讨论"
#: frappe/www/portal.py:19
msgid "Login to view"
msgstr ""
msgstr "登录以查看"
#: frappe/www/login.html:63
msgid "Login to {0}"
@ -16034,7 +16035,7 @@ msgstr "标识URI"
#. Label of the logo_url (Data) field in DocType 'Desktop Icon'
#: frappe/desk/doctype/desktop_icon/desktop_icon.json
msgid "Logo URL"
msgstr ""
msgstr "标识 URL"
#. Option for the 'Operation' (Select) field in DocType 'Activity Log'
#: frappe/core/doctype/activity_log/activity_log.json frappe/www/me.html:91
@ -17203,7 +17204,7 @@ msgstr "不适用"
#. 'Email Account'
#: frappe/email/doctype/email_account/email_account.json
msgid "NEVER"
msgstr ""
msgstr "从不"
#: frappe/workflow/doctype/workflow/workflow.js:19
msgid "NOTE: If you add states or transitions in the table, it will be reflected in the Workflow Builder but you will have to position them manually. Also Workflow Builder is currently in <b>BETA</b>."
@ -17506,7 +17507,7 @@ msgstr "新的报表名称"
#: frappe/core/doctype/role/role.js:55
msgid "New Role Name"
msgstr ""
msgstr "新角色名称"
#: frappe/public/js/frappe/widgets/widget_dialog.js:60
msgid "New Shortcut"
@ -17557,11 +17558,11 @@ msgstr "新密码不能与旧密码相同"
#: frappe/core/doctype/user/user.py:962
msgid "New password cannot be the same as your current password. Please choose a different password."
msgstr ""
msgstr "新密码不能与您的当前密码相同。请选择一个不同的密码。"
#: frappe/core/doctype/role/role.js:78
msgid "New role created successfully."
msgstr ""
msgstr "新角色创建成功。"
#: frappe/utils/change_log.py:389
msgid "New updates are available"
@ -17666,7 +17667,7 @@ msgstr "审批邮件模板"
#: frappe/core/doctype/success_action/success_action.js:44
msgid "Next Actions"
msgstr ""
msgstr "后续操作"
#. Label of the next_actions_html (HTML) field in DocType 'Success Action'
#: frappe/core/doctype/success_action/success_action.json
@ -17829,7 +17830,7 @@ msgstr "无Google日历事件需同步"
#: frappe/email/doctype/email_account/email_account.py:244
msgid "No IMAP folders were found on the server. Please verify the email account settings and ensure the mailbox contains folders."
msgstr ""
msgstr "在服务器上未找到 IMAP 文件夹。请验证电子邮箱帐号设置,并确保邮箱中包含文件夹。"
#: frappe/public/js/frappe/ui/capture.js:263
msgid "No Images"
@ -17928,7 +17929,7 @@ msgstr "无未处理事项"
#: frappe/core/page/permission_manager/permission_manager.js:630
msgid "No activity recorded yet."
msgstr ""
msgstr "尚未记录任何活动。"
#: frappe/public/js/frappe/form/templates/address_list.html:43
msgid "No address added yet."
@ -18033,7 +18034,7 @@ msgstr "没有下一个记录了"
#: frappe/public/js/frappe/views/reports/report_view.js:327
msgid "No matching entries in the current results"
msgstr ""
msgstr "当前结果中没有匹配的条目"
#: frappe/templates/includes/search_template.html:49
msgid "No matching records. Search something new"
@ -18109,7 +18110,7 @@ msgstr "无行数据"
#: frappe/public/js/frappe/list/list_view.js:2434
msgid "No rows selected"
msgstr ""
msgstr "未选择任何行"
#: frappe/email/doctype/notification/notification.py:136
msgid "No subject"
@ -18121,7 +18122,7 @@ msgstr "从{0}路径中找不到模板"
#: frappe/core/page/permission_manager/permission_manager.js:369
msgid "No user has the role <strong>{0}</strong>"
msgstr ""
msgstr "没有用户拥有角色 <strong>{0}</strong>"
#: frappe/public/js/frappe/form/controls/multiselect_list.js:277
#: frappe/public/js/frappe/utils/utils.js:1024
@ -18661,7 +18662,7 @@ msgstr "OAuth错误"
#. Label of a Workspace Sidebar Item
#: frappe/workspace_sidebar/integrations.json
msgid "OAuth Provider"
msgstr ""
msgstr "OAuth提供商"
#. Name of a DocType
#. Label of a Link in the Integrations Workspace
@ -18708,11 +18709,11 @@ msgstr "OTP发行人名称"
#. Settings'
#: frappe/core/doctype/system_settings/system_settings.json
msgid "OTP SMS Template"
msgstr ""
msgstr "OTP短信模板"
#: frappe/core/doctype/system_settings/system_settings.py:168
msgid "OTP SMS Template must contain <code>{0}</code> placeholder to insert the OTP."
msgstr ""
msgstr "OTP短信模板必须包含 <code>{0}</code> 占位符以插入OTP。"
#: frappe/twofactor.py:459
msgid "OTP Secret Reset - {0}"
@ -18726,7 +18727,7 @@ msgstr "OTP Secret已被重置。下次登录时需要重新注册。"
#. Settings'
#: frappe/core/doctype/system_settings/system_settings.json
msgid "OTP placeholder should be defined as <code>{{ otp }}</code> "
msgstr ""
msgstr "OTP占位符应定义为 <code>{{ otp }}</code> "
#: frappe/templates/includes/login/login.js:351
msgid "OTP setup using OTP App was not completed. Please contact Administrator."
@ -18930,7 +18931,7 @@ msgstr "角色(允许编辑)"
#: frappe/core/doctype/module_def/module_def.py:95
msgid "Only Custom Modules can be renamed."
msgstr ""
msgstr "只有自定义模块才能重命名。"
#: frappe/core/doctype/doctype/doctype.py:1683
msgid "Only Options allowed for Data field are:"
@ -18943,7 +18944,7 @@ msgstr "只发送最后X小时更新的记录"
#: frappe/core/doctype/file/file.py:201
msgid "Only System Managers can make this file public."
msgstr ""
msgstr "只有系统管理员才能将此文件设为公开。"
#: frappe/desk/doctype/workspace/workspace.js:32
msgid "Only Workspace Manager can edit public workspaces"
@ -18953,7 +18954,7 @@ msgstr "仅工作区管理员可编辑公共工作区"
#. in DocType 'System Settings'
#: frappe/core/doctype/system_settings/system_settings.json
msgid "Only allow System Managers to upload public files"
msgstr ""
msgstr "仅允许系统管理员上传公开文件"
#: frappe/modules/utils.py:80
msgid "Only allowed to export customizations in developer mode"
@ -19055,7 +19056,7 @@ msgstr "打开帮助"
#: frappe/public/js/frappe/form/controls/data.js:84
#: frappe/public/js/frappe/form/controls/link.js:17
msgid "Open Link"
msgstr ""
msgstr "打开链接"
#. Label of the open_reference_document (Button) field in DocType 'Notification
#. Log'
@ -19073,7 +19074,7 @@ msgstr "开源为Web应用程序"
#: frappe/public/js/frappe/form/controls/base_control.js:165
msgid "Open Translation"
msgstr ""
msgstr "打开翻译"
#. Label of the open_in_new_tab (Check) field in DocType 'Top Bar Item'
#: frappe/website/doctype/top_bar_item/top_bar_item.json
@ -19097,7 +19098,7 @@ msgstr "打开控制台"
#. Item'
#: frappe/desk/doctype/workspace_sidebar_item/workspace_sidebar_item.json
msgid "Open in New Tab"
msgstr ""
msgstr "在新标签页中打开"
#: frappe/public/js/print_format_builder/Preview.vue:17
msgid "Open in a new tab"
@ -19105,7 +19106,7 @@ msgstr "在新标签页打开"
#: frappe/public/js/frappe/ui/toolbar/awesome_bar.js:229
msgid "Open in new tab"
msgstr ""
msgstr "在新标签页中打开"
#: frappe/public/js/frappe/list/list_view.js:1479
msgctxt "Description of a list view shortcut"
@ -19165,7 +19166,7 @@ msgstr "运算符必须是{0}"
#: frappe/database/query.py:2330
msgid "Operator {0} requires exactly 2 arguments (left and right operands)"
msgstr ""
msgstr "操作符 {0} 需要恰好 2 个参数(左操作数和右操作数)"
#: frappe/core/doctype/file/file.js:36
#: frappe/core/report/database_storage_usage_by_tables/database_storage_usage_by_tables.js:8
@ -19286,7 +19287,7 @@ msgstr "方向"
#: frappe/core/doctype/version/version.py:241
msgid "Original"
msgstr ""
msgstr "原始"
#: frappe/core/doctype/version/version_view.html:74
#: frappe/core/doctype/version/version_view.html:139
@ -19649,7 +19650,7 @@ msgstr "父字段必须是有效字段名"
#. Label of the parent_icon (Link) field in DocType 'Desktop Icon'
#: frappe/desk/doctype/desktop_icon/desktop_icon.json
msgid "Parent Icon"
msgstr ""
msgstr "父图标"
#. Label of the parent_label (Select) field in DocType 'Top Bar Item'
#: frappe/website/doctype/top_bar_item/top_bar_item.json
@ -19785,7 +19786,7 @@ msgstr "未找到{0} {1} {2}的密码"
#: frappe/core/doctype/user/user.py:1336
msgid "Password requirements not met"
msgstr ""
msgstr "不满足密码要求"
#: frappe/core/doctype/user/user.py:1169
msgid "Password reset instructions have been sent to {}'s email"
@ -19865,7 +19866,7 @@ msgstr "私钥文件的路径"
#: frappe/modules/utils.py:252
msgid "Path {0} is not within module {1}"
msgstr ""
msgstr "路径 {0} 不在模块 {1} 内"
#: frappe/website/path_resolver.py:230
msgid "Path {0} it not a valid path"
@ -20025,7 +20026,7 @@ msgstr "权限类型"
#: frappe/core/doctype/permission_type/permission_type.py:40
msgid "Permission Type '{0}' is reserved. Please choose another name."
msgstr ""
msgstr "权限类型 '{0}' 是保留名称。请选择其他名称。"
#. Label of the section_break_4 (Section Break) field in DocType 'Custom
#. DocPerm'
@ -20219,7 +20220,7 @@ msgstr "请添加有效评论"
#: frappe/public/js/frappe/views/reports/query_report.js:1560
msgid "Please adjust filters to include some data"
msgstr ""
msgstr "请调整过滤条件以包含一些数据"
#: frappe/core/doctype/user/user.py:1152
msgid "Please ask your administrator to verify your sign-up"
@ -20572,7 +20573,7 @@ msgstr "由于调度器的触发频率请至少指定10分钟"
#: frappe/email/doctype/notification/notification.py:171
msgid "Please specify the field from which to attach files"
msgstr ""
msgstr "请指定用于附加文件的字段"
#: frappe/email/doctype/notification/notification.py:161
msgid "Please specify the minutes offset"

File diff suppressed because it is too large Load diff

View file

@ -41,6 +41,7 @@ IMPORTABLE_DOCTYPES = [
("core", "server_script"),
("custom", "custom_field"),
("custom", "property_setter"),
("printing", "letter_head"),
]

View file

@ -6,7 +6,22 @@ frappe.ui.form.on("Letter Head", {
frm.get_field("instructions").html(INSTRUCTIONS);
},
refresh: function (frm) {
refresh(frm) {
frm.set_intro("");
frm.enable_save();
if (!frappe.boot.developer_mode) {
if (frm.is_new()) {
frm.toggle_enable("standard", false);
}
if (!frm.is_new() && frm.doc.standard === "Yes") {
frm.set_intro(__("Please duplicate this to make changes"));
frm.set_read_only();
frm.disable_save();
}
}
frm.flag_public_attachments = true;
},

View file

@ -2,15 +2,18 @@
"actions": [],
"allow_rename": 1,
"autoname": "field:letter_head_name",
"creation": "2012-11-22 17:45:46",
"creation": "2026-04-07 12:33:33.368499",
"doctype": "DocType",
"document_type": "Setup",
"engine": "InnoDB",
"field_order": [
"letter_head_for",
"letter_head_name",
"module",
"source",
"footer_source",
"column_break_3",
"standard",
"disabled",
"is_default",
"letter_head_image_section",
@ -196,6 +199,30 @@
"fieldtype": "HTML",
"label": "Instructions",
"read_only": 1
},
{
"default": "No",
"fieldname": "standard",
"fieldtype": "Select",
"label": "Standard",
"options": "No\nYes",
"reqd": 1
},
{
"default": "DocType",
"fieldname": "letter_head_for",
"fieldtype": "Select",
"label": "Letter Head For",
"options": "DocType\nReport",
"reqd": 1
},
{
"depends_on": "eval: doc.standard == \"Yes\"",
"fieldname": "module",
"fieldtype": "Link",
"label": "Module",
"mandatory_depends_on": "eval: doc.standard == \"Yes\"",
"options": "Module Def"
}
],
"icon": "fa fa-font",
@ -203,7 +230,7 @@
"links": [],
"make_attachments_public": 1,
"max_attachments": 3,
"modified": "2026-02-25 14:37:57.061516",
"modified": "2026-04-08 13:15:24.935222",
"modified_by": "Administrator",
"module": "Printing",
"name": "Letter Head",

View file

@ -4,6 +4,7 @@
import frappe
from frappe import _
from frappe.model.document import Document
from frappe.modules.utils import export_module_json
from frappe.utils import flt, is_image
@ -31,8 +32,11 @@ class LetterHead(Document):
image_height: DF.Float
image_width: DF.Float
is_default: DF.Check
letter_head_for: DF.Literal["DocType", "Report"]
letter_head_name: DF.Data
module: DF.Link | None
source: DF.Literal["Image", "HTML"]
standard: DF.Literal["No", "Yes"]
# end: auto-generated types
def before_insert(self):
@ -50,6 +54,7 @@ class LetterHead(Document):
def validate(self):
self.set_image()
self.validate_disabled_and_default()
self.validate_standard_letter_head()
def validate_disabled_and_default(self):
if self.disabled and self.is_default:
@ -119,6 +124,7 @@ class LetterHead(Document):
def on_update(self):
self.set_as_default()
self.export_letter_head()
# clear the cache so that the new letter head is uploaded
frappe.clear_cache()
@ -136,3 +142,14 @@ class LetterHead(Document):
else:
frappe.defaults.clear_default("letter_head", self.name)
frappe.defaults.clear_default("default_letter_head_content", self.content)
def export_letter_head(self):
return export_module_json(self, self.standard == "Yes", self.module)
def validate_standard_letter_head(self):
if self.standard == "Yes":
if not frappe.conf.developer_mode and not self.is_new() and not frappe.flags.in_migrate:
frappe.throw(_("Standard Letter Head can be updated in Developer Mode only."))
if not self.module:
frappe.throw(_("Module is required when Standard is set to 'Yes'"))

View file

@ -1,14 +1,45 @@
# Copyright (c) 2017, Frappe Technologies and Contributors
# License: MIT. See LICENSE
import os
import shutil
import frappe
from frappe.tests import IntegrationTestCase
class TestLetterHead(IntegrationTestCase):
def test_auto_image(self):
letter_head = frappe.get_doc(
doctype="Letter Head", letter_head_name="Test", source="Image", image="/public/test.png"
).insert()
doc = frappe.new_doc("Letter Head")
doc.letter_head_for = "DocType"
doc.letter_head_name = "Test Letter Head"
doc.module = "Core"
doc.standard = "No"
doc.source = "Image"
doc.image = "/public/test.png"
doc.insert()
# test if image is automatically set
self.assertTrue(letter_head.image in letter_head.content)
self.assertTrue(doc.image in doc.content)
def test_export_letter_head(self):
doc = frappe.new_doc("Letter Head")
doc.letter_head_for = "DocType"
doc.letter_head_name = "Test Letter Head Standard"
doc.module = "Core"
doc.standard = "No"
doc.insert()
doc.standard = "Yes"
dev_mode_before = frappe.conf.developer_mode
frappe.conf.developer_mode = True
export_path = doc.export_letter_head()
frappe.conf.developer_mode = dev_mode_before
final_path = f"{export_path}.json"
self.assertTrue(os.path.exists(final_path))
dir_path = os.path.dirname(os.path.dirname(final_path))
self.addCleanup(shutil.rmtree, dir_path)

View file

@ -39,7 +39,9 @@ frappe.ui.form.ControlDate = class ControlDate extends frappe.ui.form.ControlDat
}
if (should_refresh) {
this._suppress_change = true;
this.datepicker.selectDate(frappe.datetime.str_to_obj(value));
this._suppress_change = false;
}
}
set_date_options() {
@ -68,7 +70,9 @@ frappe.ui.form.ControlDate = class ControlDate extends frappe.ui.form.ControlDat
maxDate: this.df.max_date,
firstDay: frappe.datetime.get_first_day_of_the_week_index(),
onSelect: () => {
this.$input.trigger("change");
if (!this._suppress_change) {
this.$input.trigger("change");
}
},
onShow: () => {
this.datepicker.$datepicker

View file

@ -14,7 +14,7 @@ frappe.ui.form.ControlLink = class ControlLink extends frappe.ui.form.ControlDat
$(`<div class="link-field ui-front" style="position: relative;">
<input type="text" class="input-with-feedback form-control">
<span class="link-btn">
<a class="btn-clear" style="display: inline-block;" title="${__("Clear Link")}">
<a class="btn-clear" style="display: inline-flex;" title="${__("Clear Link")}">
${frappe.utils.icon("close", "xs", "es-icon")}
</a>
<a class="btn-open" style="display: inline-flex;" title="${__("Open Link")}">

View file

@ -57,6 +57,14 @@ frappe.ui.get_print_settings = function (
depends_on: "with_letter_head",
options: "Letter Head",
default: letter_head || default_letter_head,
get_query: () => {
return {
filters: {
letter_head_for: "Report",
disabled: 0,
},
};
},
},
];

View file

@ -1048,7 +1048,7 @@ class FilterArea {
apply_filter(fieldname, value) {
let operator = "=";
if (value === "") {
if (value === "" || (fieldname === "_user_tags" && value === "No Tags")) {
operator = "is";
value = "not set";
}

View file

@ -205,6 +205,7 @@ frappe.ui.keys.add_shortcut({
return false;
},
description: __("Open Awesomebar"),
ignore_inputs: true,
});
frappe.ui.keys.add_shortcut({
@ -215,6 +216,7 @@ frappe.ui.keys.add_shortcut({
return false;
},
description: __("Open Awesomebar"),
ignore_inputs: true,
});
frappe.ui.keys.add_shortcut({

View file

@ -175,8 +175,23 @@ frappe.ui.menu = class ContextMenu {
if (item.items) {
let nested_menu = this.handle_nested_menu(item_wrapper, item);
this.nested_menus.push(nested_menu);
me.handle_submenu_hover(item_wrapper);
}
}
handle_submenu_hover(item_wrapper) {
const me = this;
$(item_wrapper).on("mouseenter", function (event) {
me.nested_menus.forEach((menu) => {
if (menu.parent.get(0) === this) {
me.current_menu = menu;
menu.show(event);
} else {
menu.hide();
}
});
});
}
handle_nested_menu(item_wrapper, item) {
return frappe.ui.create_menu({
@ -242,6 +257,11 @@ frappe.ui.menu = class ContextMenu {
hide() {
this.template.css("display", "none");
this.visible = false;
if (this.nested_menus && this.nested_menus.length) {
this.nested_menus.forEach((menu) => {
menu.hide();
});
}
}
mouseX(evt) {
if (evt.pageX) {

View file

@ -49,7 +49,7 @@ frappe.search.AwesomeBar = class AwesomeBar {
<span>${__("to select")}</span>
</span>
<span class="help-item-navigate">
<span class="help-item help-item-escape">${__("esc")}</span>
<span class="help-item help-item-escape">${frappe.utils.is_mac() ? "⌘K" : "Ctrl+K"}</span>
<span>${__("to close")}</span>
</span>
</div>
@ -68,6 +68,10 @@ frappe.search.AwesomeBar = class AwesomeBar {
});
$search_element.on("click", () => {
if ($(search_modal).hasClass("show")) {
search_modal.modal("hide");
return;
}
search_modal.modal("show");
if (is_event_listeners_added) return;

View file

@ -50,8 +50,6 @@
&::before {
position: absolute;
top: 0;
right: 0;
left: auto;
height: 6px;
width: 6px;
@ -60,6 +58,23 @@
}
}
.desktop-notification-icon.indicator::before {
top: 0;
right: 0;
}
.sidebar-notification .sidebar-item-icon.indicator::before {
top: 5px;
right: 6px;
height: 5.5px;
width: 5.5px;
transition: opacity 0.2s ease-in-out;
}
.sidebar-notification:hover .sidebar-item-icon.indicator::before {
opacity: 0;
}
.sidebar-notification-count {
min-width: 20px;
padding: 1px 7px;
@ -71,7 +86,7 @@
border-radius: 10px;
}
.sidebar-notification .item-anchor {
.sidebar-notification .standard-sidebar-item .item-anchor {
overflow: visible;
}

View file

@ -118,9 +118,11 @@ data-fieldname="{{ df.fieldname }}" data-fieldtype="{{ df.fieldtype }}"
{%- endif %}
{%- if df.fieldtype=="Code" %}
<pre class="value">{{ doc.get(df.fieldname)|e }}</pre>
{% else -%}
{%- elif df.fieldtype in ("Text", "Long Text") -%}
{{ doc.get_formatted(df.fieldname, parent_doc or doc, translated=df.translatable)|e }}
{%- else -%}
{{ doc.get_formatted(df.fieldname, parent_doc or doc, translated=df.translatable) }}
{% endif -%}
{%- endif -%}
</div>
{%- endif -%}
{%- endmacro -%}
@ -169,6 +171,9 @@ data-fieldname="{{ df.fieldname }}" data-fieldtype="{{ df.fieldtype }}"
{% elif df.fieldtype=="Data" %}
{%- set parent = parent_doc or doc -%}
{{ doc.get_formatted(df.fieldname, parent, translated=df.translatable, absolute_value=parent.absolute_value) |e }}
{% elif df.fieldtype in ("Text", "Long Text") %}
{%- set parent = parent_doc or doc -%}
{{ doc.get_formatted(df.fieldname, parent, translated=df.translatable, absolute_value=parent.absolute_value) |e }}
{% else %}
{%- set parent = parent_doc or doc -%}
{{ doc.get_formatted(df.fieldname, parent, translated=df.translatable, absolute_value=parent.absolute_value) }}

View file

@ -1,8 +1,9 @@
{% extends base_template_path %}
{% block hero %}{% endblock %}
{% block content %}
{% block hero %}{% endblock %}
{% macro main_content() %}
<div class="page-content-wrapper">
<!-- breadcrumbs -->

View file

@ -1556,7 +1556,7 @@ def money_in_words(
if main == "0" and fraction in ["0", "00", "000"]:
out = _(main_currency, context="Currency") + " " + _("Zero")
elif main == "0":
out = f"{fraction_in_words()} {fraction_currency}"
out = f"{fraction_in_words()} {_(fraction_currency, context='Currency')}"
else:
if main_currency == "DZD":
# Use Dinars for Algerian Compliance
@ -1564,7 +1564,15 @@ def money_in_words(
else:
out = _(main_currency, context="Currency") + " " + in_words(main, in_million).title()
if cint(fraction):
out = out + " " + _("and") + " " + fraction_in_words() + " " + fraction_currency
out = (
out
+ " "
+ _("and")
+ " "
+ fraction_in_words()
+ " "
+ _(fraction_currency, context="Currency")
)
if main_currency == "DZD":
return _("{0}.", context="Money in words").format(out)

View file

@ -116,8 +116,15 @@ class Page:
def intercept_request_for_local_resources(self, url_pattern="*"):
"""Starts intercepting network requests for the given target_id and URL pattern."""
import os
data = {}
bench_sites = os.path.abspath(os.path.join(frappe.utils.get_bench_path(), "sites"))
asset_path = os.path.abspath(os.path.join(bench_sites, "assets"))
site_public_root = os.path.realpath(frappe.utils.get_site_path("public"))
files_path = os.path.realpath(frappe.utils.get_site_path("public", "files"))
def on_request_paused_event(future, response):
"""Callback for when a request is paused (intercepted)."""
params = response.get("params")
@ -127,11 +134,17 @@ class Page:
if url.startswith(get_host_url()):
path = url.replace(get_host_url(), "").split("?v", 1)[0]
if path.startswith("assets/") or path.startswith("files/"):
path = urllib.parse.unquote(path)
if path.startswith("files/"):
path = frappe.utils.get_site_path("public", path)
content = frappe.read_file(path, as_base64=True)
clean_path = urllib.parse.unquote(path)
if clean_path.startswith("assets/"):
final_system_path = os.path.abspath(os.path.join(bench_sites, clean_path))
is_safe = os.path.commonpath([final_system_path, asset_path]) == asset_path
else:
final_system_path = os.path.realpath(os.path.join(site_public_root, clean_path))
is_safe = os.path.commonpath([final_system_path, files_path]) == files_path
if is_safe:
content = frappe.read_file(final_system_path, as_base64=True)
response_headers = []
# write logic to handle all file types as required
if path.endswith(".svg"):
@ -148,6 +161,17 @@ class Page:
return_future=True,
)
return
elif path:
self.session.send(
"Fetch.failRequest",
{"requestId": data["request_id"], "errorReason": "AccessDenied"},
return_future=True,
)
frappe.log_error(
title="Attempted Unauthorized File Access in PDF Generator",
message=f"Blocked access to: {path} \nResolved Path to: {final_system_path}",
)
return
self.session.send(
"Fetch.continueRequest",
{"requestId": data["request_id"]},

View file

@ -1,5 +1,9 @@
{% extends "templates/web.html" %}
{% block navbar %}
{% if show_language_picker %}
{{ super() }}
{% endif %}
{% endblock %}
{% macro email_login_body() -%}
{% if not disable_user_pass_login or (ldap_settings and ldap_settings.enabled) %}
<div class="page-card-body">
@ -66,6 +70,7 @@
{% endmacro %}
{% block page_content %}
<!-- {{ for_test }} -->
<div>
<noscript>

View file

@ -20,7 +20,7 @@ dependencies = [
# We depend on internal attributes,
# do NOT add loose requirements on PyMySQL versions.
"PyMySQL==1.1.2",
"pypdf==6.10.1",
"pypdf==6.10.2",
"PyPika @ git+https://github.com/frappe/pypika@2c50e6142b2d61d2d243e466fdd5dc03b3d918f2",
"mysqlclient==2.2.7",
"PyQRCode~=1.2.1",