Quellcode durchsuchen

Merge branch 'develop'

version-14
mbauskar vor 8 Jahren
Ursprung
Commit
65f0cfce23
100 geänderte Dateien mit 12191 neuen und 11025 gelöschten Zeilen
  1. +11
    -4
      frappe/__init__.py
  2. +7
    -0
      frappe/contacts/doctype/address/address.py
  3. +46
    -2
      frappe/core/doctype/docfield/docfield.json
  4. +1
    -2
      frappe/core/doctype/doctype/doctype.py
  5. +3
    -2
      frappe/custom/doctype/custom_field/custom_field.json
  6. +6
    -0
      frappe/custom/doctype/customize_form/customize_form.py
  7. +5
    -5
      frappe/custom/doctype/customize_form/test_customize_form.py
  8. +2
    -2
      frappe/custom/doctype/customize_form_field/customize_form_field.json
  9. +2
    -2
      frappe/desk/doctype/event/event.json
  10. +7
    -0
      frappe/desk/page/backups/backups.js
  11. +28
    -1
      frappe/desk/page/backups/backups.py
  12. +1
    -1
      frappe/email/doctype/email_group/email_group.py
  13. +44
    -18
      frappe/email/email_body.py
  14. +8
    -6
      frappe/email/queue.py
  15. +103
    -0
      frappe/email/test_email_body.py
  16. +1
    -1
      frappe/frappeclient.py
  17. +2
    -1
      frappe/model/db_schema.py
  18. +6
    -0
      frappe/model/naming.py
  19. +48
    -0
      frappe/public/css/desk.css
  20. +96
    -13
      frappe/public/js/frappe/form/control.js
  21. +14
    -1
      frappe/public/js/frappe/form/save.js
  22. +3
    -0
      frappe/public/js/frappe/ui/toolbar/awesome_bar.js
  23. +53
    -0
      frappe/public/less/desk.less
  24. +10
    -0
      frappe/templates/emails/email_header.html
  25. +6
    -0
      frappe/templates/emails/file_backup_notification.html
  26. +49
    -22
      frappe/templates/emails/standard.html
  27. +1
    -1
      frappe/templates/print_formats/standard_macros.html
  28. +3
    -1
      frappe/tests/test_api.py
  29. +19
    -0
      frappe/tests/test_document.py
  30. +94
    -0
      frappe/tests/ui/test_calendar_view.js
  31. +64
    -0
      frappe/tests/ui/test_desktop.js
  32. +53
    -0
      frappe/tests/ui/test_gantt_view.js
  33. +65
    -1
      frappe/tests/ui/test_lib.js
  34. +13
    -9
      frappe/tests/ui/test_list.js
  35. +183
    -177
      frappe/translations/am.csv
  36. +229
    -223
      frappe/translations/ar.csv
  37. +183
    -177
      frappe/translations/bg.csv
  38. +183
    -177
      frappe/translations/bn.csv
  39. +183
    -177
      frappe/translations/bs.csv
  40. +183
    -177
      frappe/translations/ca.csv
  41. +183
    -177
      frappe/translations/cs.csv
  42. +183
    -177
      frappe/translations/da.csv
  43. +187
    -181
      frappe/translations/de.csv
  44. +183
    -177
      frappe/translations/el.csv
  45. +1
    -1
      frappe/translations/es-AR.csv
  46. +1
    -1
      frappe/translations/es-CL.csv
  47. +1
    -1
      frappe/translations/es-NI.csv
  48. +49
    -49
      frappe/translations/es-PE.csv
  49. +254
    -248
      frappe/translations/es.csv
  50. +183
    -177
      frappe/translations/et.csv
  51. +183
    -177
      frappe/translations/fa.csv
  52. +183
    -177
      frappe/translations/fi.csv
  53. +187
    -181
      frappe/translations/fr.csv
  54. +183
    -177
      frappe/translations/gu.csv
  55. +137
    -139
      frappe/translations/he.csv
  56. +183
    -177
      frappe/translations/hi.csv
  57. +183
    -177
      frappe/translations/hr.csv
  58. +261
    -255
      frappe/translations/hu.csv
  59. +183
    -177
      frappe/translations/id.csv
  60. +182
    -176
      frappe/translations/is.csv
  61. +189
    -183
      frappe/translations/it.csv
  62. +183
    -177
      frappe/translations/ja.csv
  63. +185
    -179
      frappe/translations/km.csv
  64. +187
    -181
      frappe/translations/kn.csv
  65. +187
    -181
      frappe/translations/ko.csv
  66. +187
    -181
      frappe/translations/ku.csv
  67. +187
    -181
      frappe/translations/lo.csv
  68. +187
    -181
      frappe/translations/lt.csv
  69. +187
    -181
      frappe/translations/lv.csv
  70. +187
    -181
      frappe/translations/mk.csv
  71. +187
    -181
      frappe/translations/ml.csv
  72. +187
    -181
      frappe/translations/mr.csv
  73. +187
    -181
      frappe/translations/ms.csv
  74. +187
    -181
      frappe/translations/my.csv
  75. +186
    -180
      frappe/translations/nl.csv
  76. +186
    -180
      frappe/translations/no.csv
  77. +187
    -181
      frappe/translations/pl.csv
  78. +187
    -181
      frappe/translations/ps.csv
  79. +102
    -103
      frappe/translations/pt-BR.csv
  80. +185
    -179
      frappe/translations/pt.csv
  81. +185
    -179
      frappe/translations/ro.csv
  82. +186
    -180
      frappe/translations/ru.csv
  83. +187
    -181
      frappe/translations/si.csv
  84. +186
    -180
      frappe/translations/sk.csv
  85. +187
    -181
      frappe/translations/sl.csv
  86. +187
    -181
      frappe/translations/sq.csv
  87. +42
    -0
      frappe/translations/sr-SP.csv
  88. +186
    -180
      frappe/translations/sr.csv
  89. +185
    -179
      frappe/translations/sv.csv
  90. +187
    -181
      frappe/translations/ta.csv
  91. +187
    -181
      frappe/translations/te.csv
  92. +187
    -181
      frappe/translations/th.csv
  93. +187
    -181
      frappe/translations/tr.csv
  94. +186
    -180
      frappe/translations/uk.csv
  95. +184
    -178
      frappe/translations/ur.csv
  96. +430
    -424
      frappe/translations/vi.csv
  97. +161
    -155
      frappe/translations/zh-TW.csv
  98. +188
    -182
      frappe/translations/zh.csv
  99. +2
    -1
      frappe/utils/backups.py
  100. +6
    -1
      frappe/utils/formatters.py

+ 11
- 4
frappe/__init__.py Datei anzeigen

@@ -12,9 +12,9 @@ import os, sys, importlib, inspect, json

# public
from .exceptions import *
from .utils.jinja import get_jenv, get_template, render_template
from .utils.jinja import get_jenv, get_template, render_template, get_email_from_template

__version__ = '8.3.10'
__version__ = '8.4.0'
__title__ = "Frappe Framework"

local = Local()
@@ -380,7 +380,7 @@ def sendmail(recipients=[], sender="", subject="No Subject", message="No Message
attachments=None, content=None, doctype=None, name=None, reply_to=None,
cc=[], message_id=None, in_reply_to=None, send_after=None, expose_recipients=None,
send_priority=1, communication=None, retry=1, now=None, read_receipt=None, is_notification=False,
inline_images=None):
inline_images=None, template=None, args=None):
"""Send email using user's default **Email Account** or global default **Email Account**.


@@ -403,7 +403,14 @@ def sendmail(recipients=[], sender="", subject="No Subject", message="No Message
:param expose_recipients: Display all recipients in the footer message - "This email was sent to"
:param communication: Communication link to be set in Email Queue record
:param inline_images: List of inline images as {"filename", "filecontent"}. All src properties will be replaced with random Content-Id
:param template: Name of html template from templates/emails folder
:param args: Arguments for rendering the template
"""

text_content = None
if template:
message, text_content = get_email_from_template(template, args)

message = content or message

if as_markdown:
@@ -415,7 +422,7 @@ def sendmail(recipients=[], sender="", subject="No Subject", message="No Message

import email.queue
email.queue.send(recipients=recipients, sender=sender,
subject=subject, message=message,
subject=subject, message=message, text_content=text_content,
reference_doctype = doctype or reference_doctype, reference_name = name or reference_name,
unsubscribe_method=unsubscribe_method, unsubscribe_params=unsubscribe_params, unsubscribe_message=unsubscribe_message,
attachments=attachments, reply_to=reply_to, cc=cc, message_id=message_id, in_reply_to=in_reply_to,


+ 7
- 0
frappe/contacts/doctype/address/address.py Datei anzeigen

@@ -185,6 +185,13 @@ def get_shipping_address(company):
address_as_dict = address[0]
name, address_template = get_address_templates(address_as_dict)
return address_as_dict.get("name"), frappe.render_template(address_template, address_as_dict)
def get_company_address(company):
ret = frappe._dict()
ret.company_address = get_default_address('Company', company)
ret.company_address_display = get_address_display(ret.company_address)
return ret

def address_query(doctype, txt, searchfield, start, page_len, filters):
from frappe.desk.reportview import get_match_cond


+ 46
- 2
frappe/core/doctype/docfield/docfield.json Datei anzeigen

@@ -11,8 +11,10 @@
"doctype": "DocType",
"document_type": "Setup",
"editable_grid": 1,
"engine": "InnoDB",
"fields": [
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -41,6 +43,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 1,
"collapsible": 0,
@@ -73,6 +76,7 @@
"width": "163"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 1,
"collapsible": 0,
@@ -92,7 +96,7 @@
"no_copy": 0,
"oldfieldname": "fieldtype",
"oldfieldtype": "Select",
"options": "Attach\nAttach Image\nButton\nCheck\nCode\nColumn Break\nCurrency\nData\nDate\nDatetime\nDynamic Link\nFloat\nFold\nHeading\nHTML\nImage\nInt\nLink\nLong Text\nPassword\nPercent\nRead Only\nSection Break\nSelect\nSmall Text\nTable\nText\nText Editor\nTime\nSignature",
"options": "Attach\nAttach Image\nButton\nCheck\nCode\nColor\nColumn Break\nCurrency\nData\nDate\nDatetime\nDynamic Link\nFloat\nFold\nHeading\nHTML\nImage\nInt\nLink\nLong Text\nPassword\nPercent\nRead Only\nSection Break\nSelect\nSmall Text\nTable\nText\nText Editor\nTime\nSignature",
"permlevel": 0,
"print_hide": 0,
"print_hide_if_no_value": 0,
@@ -105,6 +109,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 1,
"collapsible": 0,
@@ -135,6 +140,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -167,6 +173,7 @@
"width": "50px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -198,6 +205,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -228,6 +236,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -260,6 +269,7 @@
"width": "50px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -290,6 +300,7 @@
"width": "70px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -319,6 +330,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -349,6 +361,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -378,6 +391,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -408,6 +422,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -438,6 +453,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -465,6 +481,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -496,6 +513,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -526,6 +544,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -554,6 +573,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -584,6 +604,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -616,6 +637,7 @@
"width": "50px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -646,6 +668,7 @@
"width": "50px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -675,6 +698,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -704,6 +728,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -734,6 +759,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -761,6 +787,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -794,6 +821,7 @@
"width": "50px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -823,6 +851,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -855,6 +884,7 @@
"width": "50px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -887,6 +917,7 @@
"width": "50px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -917,6 +948,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -947,6 +979,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -975,6 +1008,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1007,6 +1041,7 @@
"width": "50px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1039,6 +1074,7 @@
"width": "50px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1071,6 +1107,7 @@
"width": "50px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1101,6 +1138,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1129,6 +1167,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1161,6 +1200,7 @@
"width": "50px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1192,6 +1232,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1219,6 +1260,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1251,6 +1293,7 @@
"width": "300px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1280,6 +1323,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1319,7 +1363,7 @@
"issingle": 0,
"istable": 1,
"max_attachments": 0,
"modified": "2017-04-21 16:56:04.023296",
"modified": "2017-07-06 12:36:21.248293",
"modified_by": "Administrator",
"module": "Core",
"name": "DocField",


+ 1
- 2
frappe/core/doctype/doctype/doctype.py Datei anzeigen

@@ -773,8 +773,7 @@ def init_list(doctype):

def check_if_fieldname_conflicts_with_methods(doctype, fieldname):
doc = frappe.get_doc({"doctype": doctype})
method_list = [method for method in dir(doc) if callable(getattr(doc, method))]
method_list = [method for method in dir(doc) if isinstance(method, str) and callable(getattr(doc, method))]

if fieldname in method_list:
frappe.throw(_("Fieldname {0} conflicting with meta object").format(fieldname))


+ 3
- 2
frappe/custom/doctype/custom_field/custom_field.json Datei anzeigen

@@ -11,6 +11,7 @@
"doctype": "DocType",
"document_type": "Setup",
"editable_grid": 0,
"engine": "InnoDB",
"fields": [
{
"allow_bulk_edit": 0,
@@ -219,7 +220,7 @@
"no_copy": 0,
"oldfieldname": "fieldtype",
"oldfieldtype": "Select",
"options": "Attach\nAttach Image\nButton\nCheck\nCode\nColumn Break\nCurrency\nData\nDate\nDatetime\nDynamic Link\nFloat\nHTML\nImage\nInt\nLink\nLong Text\nPassword\nPercent\nRead Only\nSection Break\nSelect\nSmall Text\nTable\nText\nText Editor\nTime\nSignature",
"options": "Attach\nAttach Image\nButton\nCheck\nCode\nColor\nColumn Break\nCurrency\nData\nDate\nDatetime\nDynamic Link\nFloat\nHTML\nImage\nInt\nLink\nLong Text\nPassword\nPercent\nRead Only\nSection Break\nSelect\nSmall Text\nTable\nText\nText Editor\nTime\nSignature",
"permlevel": 0,
"print_hide": 0,
"print_hide_if_no_value": 0,
@@ -1160,7 +1161,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2017-06-13 09:52:49.692096",
"modified": "2017-07-06 17:23:43.835189",
"modified_by": "Administrator",
"module": "Custom",
"name": "Custom Field",


+ 6
- 0
frappe/custom/doctype/customize_form/customize_form.py Datei anzeigen

@@ -68,6 +68,8 @@ allowed_fieldtype_change = (('Currency', 'Float', 'Percent'), ('Small Text', 'Da
('Text', 'Data'), ('Text', 'Text Editor', 'Code', 'Signature'), ('Data', 'Select'),
('Text', 'Small Text'))

allowed_fieldtype_for_options_change = ('Read Only', 'HTML', 'Select',)

class CustomizeForm(Document):
def on_update(self):
frappe.db.sql("delete from tabSingles where doctype='Customize Form'")
@@ -197,6 +199,10 @@ class CustomizeForm(Document):
frappe.msgprint(_("You cannot unset 'Read Only' for field {0}").format(df.label))
continue

elif property == "options" and df.get("fieldtype") not in allowed_fieldtype_for_options_change:
frappe.msgprint(_("You can't set 'Options' for field {0}").format(df.label))
continue

self.make_property_setter(property=property, value=df.get(property),
property_type=docfield_properties[property], fieldname=df.fieldname)



+ 5
- 5
frappe/custom/doctype/customize_form/test_customize_form.py Datei anzeigen

@@ -165,22 +165,22 @@ class TestCustomizeForm(unittest.TestCase):
df = d.get("fields", {"fieldname": "title"})[0]

# invalid fieldname
df.options = """{doc_type} - {introduction_test}"""
df.default = """{doc_type} - {introduction_test}"""
self.assertRaises(InvalidFieldNameError, d.run_method, "save_customization")

# space in formatter
df.options = """{doc_type} - {introduction text}"""
df.default = """{doc_type} - {introduction text}"""
self.assertRaises(InvalidFieldNameError, d.run_method, "save_customization")

# valid fieldname
df.options = """{doc_type} - {introduction_text}"""
df.default = """{doc_type} - {introduction_text}"""
d.run_method("save_customization")

# valid fieldname with escaped curlies
df.options = """{{ {doc_type} }} - {introduction_text}"""
df.default = """{{ {doc_type} }} - {introduction_text}"""
d.run_method("save_customization")

# undo
df.options = None
df.default = None
d.run_method("save_customization")


+ 2
- 2
frappe/custom/doctype/customize_form_field/customize_form_field.json Datei anzeigen

@@ -94,7 +94,7 @@
"no_copy": 0,
"oldfieldname": "fieldtype",
"oldfieldtype": "Select",
"options": "Attach\nAttach Image\nButton\nCheck\nCode\nColumn Break\nCurrency\nData\nDate\nDatetime\nDynamic Link\nFloat\nFold\nHeading\nHTML\nImage\nInt\nLink\nLong Text\nPassword\nPercent\nRead Only\nSection Break\nSelect\nSignature\nSmall Text\nTable\nText\nText Editor\nTime",
"options": "Attach\nAttach Image\nButton\nCheck\nCode\nColor\nColumn Break\nCurrency\nData\nDate\nDatetime\nDynamic Link\nFloat\nFold\nHeading\nHTML\nImage\nInt\nLink\nLong Text\nPassword\nPercent\nRead Only\nSection Break\nSelect\nSignature\nSmall Text\nTable\nText\nText Editor\nTime",
"permlevel": 0,
"print_hide": 0,
"print_hide_if_no_value": 0,
@@ -1202,7 +1202,7 @@
"issingle": 0,
"istable": 1,
"max_attachments": 0,
"modified": "2017-04-21 17:02:14.903382",
"modified": "2017-07-06 17:24:03.665171",
"modified_by": "Administrator",
"module": "Custom",
"name": "Customize Form Field",


+ 2
- 2
frappe/desk/doctype/event/event.json Datei anzeigen

@@ -895,8 +895,8 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2017-05-01 15:27:39.217961",
"modified_by": "vartakashwini@gmail.com",
"modified": "2017-07-06 12:37:44.036819",
"modified_by": "Administrator",
"module": "Desk",
"name": "Event",
"owner": "Administrator",


+ 7
- 0
frappe/desk/page/backups/backups.js Datei anzeigen

@@ -9,6 +9,13 @@ frappe.pages['backups'].on_page_load = function(wrapper) {
frappe.set_route('Form', 'System Settings');
});

page.add_inner_button(__("Download Files Backup"), function () {
frappe.call({
method:"frappe.desk.page.backups.backups.schedule_files_backup",
args: {"user_email": frappe.session.user_email}
});
});

frappe.breadcrumbs.add("Setup");

$(frappe.render_template("backups")).appendTo(page.body.addClass("no-border"));


+ 28
- 1
frappe/desk/page/backups/backups.py Datei anzeigen

@@ -1,6 +1,7 @@
import os
import frappe
from frappe.utils import get_site_path, cint
from frappe import _
from frappe.utils import get_site_path, cint, get_url
from frappe.utils.data import convert_utc_to_user_timezone
import datetime

@@ -57,3 +58,29 @@ def delete_downloadable_backups():

if len(files) > backup_limit:
cleanup_old_backups(path, files, backup_limit)

@frappe.whitelist()
def schedule_files_backup(user_email):
from frappe.utils.background_jobs import enqueue, get_jobs
queued_jobs = get_jobs(site=frappe.local.site, queue="long")
method = 'frappe.desk.page.backups.backups.backup_files_and_notify_user'

if method not in queued_jobs[frappe.local.site]:
enqueue("frappe.desk.page.backups.backups.backup_files_and_notify_user", queue='long', user_email=user_email)
frappe.msgprint(_("Queued for backup. You will receive an email with the download link"))
else:
frappe.msgprint(_("Backup job is already queued. You will receive an email with the download link"))

def backup_files_and_notify_user(user_email=None):
from frappe.utils.backups import backup
backup_files = backup(with_files=True)
get_downloadable_links(backup_files)

subject = "File backup is ready"
message = frappe.render_template('frappe/templates/emails/file_backup_notification.html', backup_files, is_path=True)
frappe.sendmail(recipients=[user_email], subject=subject, message=message)

def get_downloadable_links(backup_files):
for key in ['backup_path_files', 'backup_path_private_files']:
path = backup_files[key]
backup_files[key] = get_url('/'.join(path.split('/')[-2:]))

+ 1
- 1
frappe/email/doctype/email_group/email_group.py Datei anzeigen

@@ -26,7 +26,7 @@ class EmailGroup(Document):

for user in frappe.db.get_all(doctype, [email_field, unsubscribed_field or "name"]):
try:
email = parse_addr(user.get(email_field))[1]
email = parse_addr(user.get(email_field))[1] if user.get(email_field) else None
if email:
frappe.get_doc({
"doctype": "Email Group Member",


+ 44
- 18
frappe/email/email_body.py Datei anzeigen

@@ -16,7 +16,15 @@ def get_email(recipients, sender='', msg='', subject='[No Subject]',
text_content = None, footer=None, print_html=None, formatted=None, attachments=None,
content=None, reply_to=None, cc=[], email_account=None, expose_recipients=None,
inline_images=[]):
"""send an html email as multipart with attachments and all"""
""" Prepare an email with the following format:
- multipart/mixed
- multipart/alternative
- text/plain
- multipart/related
- text/html
- inline image
- attachment
"""
content = content or msg
emailobj = EMail(sender, recipients, subject, reply_to=reply_to, cc=cc, email_account=email_account, expose_recipients=expose_recipients)

@@ -58,8 +66,8 @@ class EMail:
self.expose_recipients = expose_recipients

self.msg_root = MIMEMultipart('mixed')
self.msg_multipart = MIMEMultipart('alternative')
self.msg_root.attach(self.msg_multipart)
self.msg_alternative = MIMEMultipart('alternative')
self.msg_root.attach(self.msg_alternative)
self.cc = cc or []
self.html_set = False

@@ -88,33 +96,42 @@ class EMail:
"""
from email.mime.text import MIMEText
part = MIMEText(message, 'plain', 'utf-8')
self.msg_multipart.attach(part)
self.msg_alternative.attach(part)

def set_part_html(self, message, inline_images):
from email.mime.text import MIMEText
if inline_images:
related = MIMEMultipart('related')
# process inline images
_inline_images = []
for image in inline_images:
# images in dict like {filename:'', filecontent:'raw'}

content_id = random_string(10)
message = replace_filename_with_cid(message,
image.get('filename'), content_id)

# replace filename in message with CID
message = re.sub('''src=['"]{0}['"]'''.format(image.get('filename')),
'src="cid:{0}"'.format(content_id), message)
_inline_images.append({
'filename': image.get('filename'),
'filecontent': image.get('filecontent'),
'content_id': content_id
})

self.add_attachment(image.get('filename'), image.get('filecontent'),
None, content_id=content_id, parent=related)
# prepare parts
msg_related = MIMEMultipart('related')

html_part = MIMEText(message, 'html', 'utf-8')
related.attach(html_part)
msg_related.attach(html_part)

self.msg_multipart.attach(related)
for image in _inline_images:
self.add_attachment(image.get('filename'), image.get('filecontent'),
content_id=image.get('content_id'), parent=msg_related, inline=True)

self.msg_alternative.attach(msg_related)
else:
self.msg_multipart.attach(MIMEText(message, 'html', 'utf-8'))
self.msg_alternative.attach(MIMEText(message, 'html', 'utf-8'))

def set_html_as_text(self, html):
"""return html2text"""
"""Set plain text from HTML"""
self.set_text(to_markdown(html))

def set_message(self, message, mime_type='text/html', as_attachment=0, filename='attachment.html'):
@@ -139,7 +156,7 @@ class EMail:
self.add_attachment(res[0], res[1])

def add_attachment(self, fname, fcontent, content_type=None,
parent=None, content_id=None):
parent=None, content_id=None, inline=False):
"""add attachment"""
from email.mime.audio import MIMEAudio
from email.mime.base import MIMEBase
@@ -174,8 +191,8 @@ class EMail:

# Set the filename parameter
if fname:
part.add_header(b'Content-Disposition',
("attachment; filename=\"%s\"" % fname).encode('utf-8'))
attachment_type = 'inline' if inline else 'attachment'
part.add_header(b'Content-Disposition', attachment_type, filename=fname.encode('utf=8'))
if content_id:
part.add_header(b'Content-ID', '<{0}>'.format(content_id))

@@ -311,3 +328,12 @@ def get_footer(email_account, footer=None):
footer += '<div style="margin: 15px auto;">{0}</div>'.format(default_mail_footer)

return footer

def replace_filename_with_cid(message, filename, content_id):
""" Replaces <img embed="filename.jpg" ...> with
<img src="cid:content_id" ...>
"""
message = re.sub('''embed=['"]{0}['"]'''.format(filename),
'src="cid:{0}"'.format(content_id), message)

return message

+ 8
- 6
frappe/email/queue.py Datei anzeigen

@@ -17,7 +17,7 @@ from frappe.utils.scheduler import log

class EmailLimitCrossedError(frappe.ValidationError): pass

def send(recipients=None, sender=None, subject=None, message=None, reference_doctype=None,
def send(recipients=None, sender=None, subject=None, message=None, text_content=None, reference_doctype=None,
reference_name=None, unsubscribe_method=None, unsubscribe_params=None, unsubscribe_message=None,
attachments=None, reply_to=None, cc=[], message_id=None, in_reply_to=None, send_after=None,
expose_recipients=None, send_priority=1, communication=None, now=False, read_receipt=None,
@@ -28,6 +28,7 @@ def send(recipients=None, sender=None, subject=None, message=None, reference_doc
:param sender: Email sender.
:param subject: Email subject.
:param message: Email message.
:param text_content: Text version of email message.
:param reference_doctype: Reference DocType of caller document.
:param reference_name: Reference name of caller document.
:param send_priority: Priority for Email Queue, default 1.
@@ -65,12 +66,13 @@ def send(recipients=None, sender=None, subject=None, message=None, reference_doc

check_email_limit(recipients)

formatted = get_formatted_html(subject, message, email_account=email_account)
if not text_content:
try:
text_content = html2text(message)
except HTMLParser.HTMLParseError:
text_content = "See html attachment"

try:
text_content = html2text(formatted)
except HTMLParser.HTMLParseError:
text_content = "See html attachment"
formatted = get_formatted_html(subject, message, email_account=email_account)

if reference_doctype and reference_name:
unsubscribed = [d.email for d in frappe.db.get_all("Email Unsubscribe", "email",


+ 103
- 0
frappe/email/test_email_body.py Datei anzeigen

@@ -0,0 +1,103 @@
# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals

import unittest, os, base64
from frappe.email.email_body import replace_filename_with_cid, get_email

class TestEmailBody(unittest.TestCase):
def setUp(self):
email_html = '''
<div>
<h3>Hey John Doe!</h3>
<p>This is embedded image you asked for</p>
<img embed="favicon.png" />
</div>
'''
email_text = '''
Hey John Doe!
This is the text version of this email
'''
frappe_app_path = os.path.join('..', 'apps', 'frappe')
img_path = os.path.join(frappe_app_path, 'frappe', 'public', 'images', 'favicon.png')

with open(img_path) as f:
img_content = f.read()
img_base64 = base64.b64encode(img_content)

# email body keeps 76 characters on one line
self.img_base64 = fixed_column_width(img_base64, 76)

self.email_string = get_email(
recipients=['test@example.com'],
sender='me@example.com',
subject='Test Subject',
content=email_html,
text_content=email_text,
inline_images=[{
'filename': 'favicon.png',
'filecontent': img_content
}]
).as_string()


def test_image(self):
img_signature = '''
Content-Type: image/png
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="favicon.png"
'''

self.assertTrue(img_signature in self.email_string)
self.assertTrue(self.img_base64 in self.email_string)


def test_text_content(self):
text_content = '''
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable


Hey John Doe!
This is the text version of this email
'''
self.assertTrue(text_content in self.email_string)


def test_email_content(self):
html_head = '''
Content-Type: text/html; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.=
w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=3D"http://www.w3.org/1999/xhtml">
'''

html = '''<h3>Hey John Doe!</h3>'''

self.assertTrue(html_head in self.email_string)
self.assertTrue(html in self.email_string)


def test_replace_filename_with_cid(self):
original_message = '''
<div>
<img embed="test.jpg" alt="test" />
</div>
'''
processed_message = '''
<div>
<img src="cid:abcdefghij" alt="test" />
</div>
'''
message = replace_filename_with_cid(original_message, 'test.jpg', 'abcdefghij')
self.assertEquals(message, processed_message)


def fixed_column_width(string, chunk_size):
parts = [string[0+i:chunk_size+i] for i in range(0, len(string), chunk_size)]
return '\n'.join(parts)

+ 1
- 1
frappe/frappeclient.py Datei anzeigen

@@ -102,7 +102,7 @@ class FrappeClient(object):
:param doctype: `doctype` to be deleted
:param name: `name` of document to be deleted'''
return self.post_request({
"cmd": "frappe.model.delete_doc",
"cmd": "frappe.client.delete",
"doctype": doctype,
"name": name
})


+ 2
- 1
frappe/model/db_schema.py Datei anzeigen

@@ -43,6 +43,7 @@ type_map = {
,'Attach': ('text', '')
,'Attach Image':('text', '')
,'Signature': ('longtext', '')
,'Color': ('varchar', varchar_len)
}

default_columns = ['name', 'creation', 'modified', 'modified_by', 'owner',
@@ -307,7 +308,7 @@ class DbTable:
if not frappe.db.sql("show index from `%s` where key_name = %s" %
(self.name, '%s'), col.fieldname):
query.append("add index `{}`(`{}`)".format(col.fieldname, col.fieldname))
for col in self.drop_index:
if col.fieldname != 'name': # primary key
# if index key exists


+ 6
- 0
frappe/model/naming.py Datei anzeigen

@@ -99,6 +99,9 @@ def make_autoname(key='', doctype='', doc=''):

def parse_naming_series(parts, doctype= '', doc = ''):
n = ''
if isinstance(parts, basestring):
parts = parts.split('.')

series_set = False
today = now_datetime()
for e in parts:
@@ -142,6 +145,9 @@ def getseries(key, digits, doctype=''):
def revert_series_if_last(key, name):
if ".#" in key:
prefix, hashes = key.rsplit(".", 1)
if '.' in prefix:
prefix = parse_naming_series(prefix.split('.'))

if "#" not in hashes:
return
else:


+ 48
- 0
frappe/public/css/desk.css Datei anzeigen

@@ -995,3 +995,51 @@ input[type="checkbox"]:checked:before {
visibility: visible;
}
}
.color-picker {
position: relative;
z-index: 999;
}
.color-picker .color-picker-pallete {
border-radius: 4px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
background: #fff;
border: 1px solid #d1d8dd;
width: 290px;
height: 106px;
padding-top: 10px;
padding-left: 5px;
position: absolute;
top: 0;
left: 0;
}
.color-picker .color-picker-pallete:after,
.color-picker .color-picker-pallete:before {
border: solid transparent;
content: " ";
height: 0;
width: 0;
pointer-events: none;
position: absolute;
bottom: 100%;
left: 30px;
}
.color-picker .color-picker-pallete:after {
border-color: rgba(255, 255, 255, 0);
border-bottom-color: #fff;
border-width: 8px;
margin-left: -8px;
}
.color-picker .color-picker-pallete:before {
border-color: rgba(221, 221, 221, 0);
border-bottom-color: #d1d8dd;
border-width: 9px;
margin-left: -9px;
}
.color-picker .color-box {
cursor: pointer;
display: inline-block;
width: 20px;
height: 20px;
margin: -2px 0 0 3px;
border: 1px solid rgba(0, 0, 0, 0.25);
}

+ 96
- 13
frappe/public/js/frappe/form/control.js Datei anzeigen

@@ -652,6 +652,85 @@ frappe.ui.form.ControlCurrency = frappe.ui.form.ControlFloat.extend({

frappe.ui.form.ControlPercent = frappe.ui.form.ControlFloat;

frappe.ui.form.ControlColor = frappe.ui.form.ControlData.extend({
make_input: function () {
this._super();
this.colors = [
"#ffc4c4", "#ff8989", "#ff4d4d", "#a83333",
"#ffe8cd", "#ffd19c", "#ffb868", "#a87945",
"#ffd2c2", "#ffa685", "#ff7846", "#a85b5b",
"#ffd7d7", "#ffb1b1", "#ff8989", "#a84f2e",
"#fffacd", "#fff168", "#fff69c", "#a89f45",
"#ebf8cc", "#d9f399", "#c5ec63", "#7b933d",
"#cef6d1", "#9deca2", "#6be273", "#428b46",
"#d2f8ed", "#a4f3dd", "#77ecca", "#49937e",
"#d2f1ff", "#a6e4ff", "#78d6ff", "#4f8ea8",
"#d2d2ff", "#a3a3ff", "#7575ff", "#4d4da8",
"#dac7ff", "#b592ff", "#8e58ff", "#5e3aa8",
"#f8d4f8", "#f3aaf0", "#ec7dea", "#934f92"
];
this.make_color_input();
},
make_color_input: function () {
this.$wrapper
.find('.control-input-wrapper')
.append(`<div class="color-picker">
<div class="color-picker-pallete"></div>
</div>`);
this.$color_pallete = this.$wrapper.find('.color-picker-pallete');

var color_html = this.colors.map(this.get_color_box).join("");
this.$color_pallete.append(color_html);
this.$color_pallete.hide();
this.bind_events();
},
get_color_box: function (hex) {
return `<div class="color-box" data-color="${hex}" style="background-color: ${hex}"></div>`;
},
set_formatted_input: function(value) {
this._super(value);
this.$input.css({
"background-color": value
});
},
bind_events: function () {
var mousedown_happened = false;
this.$wrapper.on("click", ".color-box", (e) => {
mousedown_happened = false;

var color_val = $(e.target).data("color");
this.set_value(color_val);
// set focus so that we can blur it later
this.set_focus();
});

this.$wrapper.find(".color-box").mousedown(() => {
mousedown_happened = true;
});

this.$input.on("focus", () => {
this.$color_pallete.show();
});
this.$input.on("blur", () => {
if (mousedown_happened) {
// cancel the blur event
mousedown_happened = false;
} else {
// blur event is okay
$(this.$color_pallete).hide();
}
});
},
validate: function (value) {
var is_valid = /^#[0-9A-F]{6}$/i.test(value);
if(is_valid) {
return value;
}
frappe.msgprint(__("{0} is not a valid hex color", [value]));
return null;
}
});

frappe.ui.form.ControlDate = frappe.ui.form.ControlData.extend({
make_input: function() {
this._super();
@@ -683,7 +762,17 @@ frappe.ui.form.ControlDate = frappe.ui.form.ControlData.extend({
},
onShow: function() {
$('.datepicker--button:visible').text(__('Today'));
},

if(!me.frm) return;
var window_height = $(window).height();
var window_scroll_top = $(window).scrollTop();
var el_offset_top = me.$input.offset().top + 280;
var position = 'top left';
if(window_height + window_scroll_top >= el_offset_top) {
position = 'bottom left';
}
me.datepicker.update('position', position);
}
};
},
set_datepicker: function() {
@@ -883,6 +972,9 @@ frappe.ui.form.ControlCheck = frappe.ui.form.ControlData.extend({
this._super();
this.$input.removeClass("form-control");
},
get_input_value: function() {
return this.input && this.input.checked ? 1 : 0;
},
validate: function(value) {
return cint(value);
},
@@ -893,14 +985,7 @@ frappe.ui.form.ControlCheck = frappe.ui.form.ControlData.extend({
this.last_value = value;
this.set_mandatory(value);
this.set_disp_area();
},
get_input_value: function() {
if (!this.$input) {
return;
}

return this.$input.prop("checked") ? 1 : 0;
},
}
});

frappe.ui.form.ControlButton = frappe.ui.form.ControlData.extend({
@@ -1853,8 +1938,6 @@ frappe.ui.form.ControlTextEditor = frappe.ui.form.ControlCode.extend({
// also firefox tends to reset the cursor for some reason if the values
// are reset

let current = this.get_input_value();

if(this.setting_count > 2) {
// we don't understand how the internal triggers work,
// so if someone is setting the value third time, then quit
@@ -1867,13 +1950,13 @@ frappe.ui.form.ControlTextEditor = frappe.ui.form.ControlCode.extend({

if(!this._last_change_on || (time_since_last_keystroke > 3000)) {
setTimeout(() => this.setting_count = 0, 500);
this.editor.summernote('code', value);
this.editor.summernote('code', value || '');
} else {
this._setting_value = setInterval(() => {
if(time_since_last_keystroke > 3000) {
if(this.last_value !== this.get_input_value()) {
// if not already in sync, reset
this.editor.summernote('code', this.last_value);
this.editor.summernote('code', this.last_value || '');
}
clearInterval(this._setting_value);
this._setting_value = null;


+ 14
- 1
frappe/public/js/frappe/form/save.js Datei anzeigen

@@ -176,6 +176,8 @@ frappe.ui.form.save = function (frm, action, callback, btn) {
console.log("Already saving. Please wait a few moments.")
throw "saving";
}

frappe.ui.form.remove_old_form_route();
frappe.ui.form.is_saving = true;

return frappe.call({
@@ -206,7 +208,18 @@ frappe.ui.form.save = function (frm, action, callback, btn) {
}
}

frappe.ui.form.update_calling_link = function (newdoc) {
frappe.ui.form.remove_old_form_route = () => {
let index = -1;
let current_route = frappe.get_route();
frappe.route_history.map((arr, i) => {
if (arr.join("/") === current_route.join("/")) {
index = i;
}
});
frappe.route_history.splice(index, 1);
}

frappe.ui.form.update_calling_link = (newdoc) => {
if (frappe._from_link && newdoc.doctype === frappe._from_link.df.options) {
var doc = frappe.get_doc(frappe._from_link.doctype, frappe._from_link.docname);
// set value


+ 3
- 0
frappe/public/js/frappe/ui/toolbar/awesome_bar.js Datei anzeigen

@@ -43,6 +43,9 @@ frappe.search.AwesomeBar = Class.extend({
}
});

// Added to aid UI testing of global search
input.awesomplete = awesomplete;

$input.on("input", function(e) {
var value = e.target.value;
var txt = value.trim().replace(/\s\s+/g, ' ');


+ 53
- 0
frappe/public/less/desk.less Datei anzeigen

@@ -918,3 +918,56 @@ input[type="checkbox"] {
visibility: visible;
}
}

// color picker
.color-picker {
position: relative;
z-index: 999;

.color-picker-pallete {
border-radius: 4px;
box-shadow: 0 4px 12px rgba(0,0,0,.15);
background: #fff;
border: 1px solid @border-color;
width: 290px;
height: 106px;
padding-top: 10px;
padding-left: 5px;
position: absolute;
top: 0;
left: 0;

&:after,
&:before {
border: solid transparent;
content: " ";
height: 0;
width: 0;
pointer-events: none;
position: absolute;
bottom: 100%;
left: 30px;
}
&:after {
border-color: rgba(255, 255, 255, 0);
border-bottom-color: #fff;
border-width: 8px;
margin-left: -8px;
}
&:before {
border-color: rgba(221, 221, 221, 0);
border-bottom-color: @border-color;
border-width: 9px;
margin-left: -9px;
}
}
.color-box {
cursor: pointer;
display: inline-block;
width: 20px;
height: 20px;
margin: -2px 0 0 3px;
border: 1px solid rgba(0,0,0, 0.25);

}
}

+ 10
- 0
frappe/templates/emails/email_header.html Datei anzeigen

@@ -0,0 +1,10 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="email_header">
<tr>
<td width="35" height="50" style="border-bottom: 1px solid #d1d8dd;">
<img embed="{{brand_image}}" width="24" height="24" style="display: block;" alt="{{brand_text}}">
</td>
<td style="border-bottom: 1px solid #d1d8dd;">
<p>{{ brand_text }}</p>
</td>
</tr>
</table>

+ 6
- 0
frappe/templates/emails/file_backup_notification.html Datei anzeigen

@@ -0,0 +1,6 @@
Hello,

<br>
<p> Please use following links to download file backup. </p>
<p> Public Files Backup: <a href='{{ backup_path_files }}'>{{ backup_path_files }}</a> </p>
<p> Private Files Backup: <a href='{{ backup_path_private_files }}'>{{ backup_path_private_files }}</a> </p>

+ 49
- 22
frappe/templates/emails/standard.html Datei anzeigen

@@ -1,28 +1,55 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>{{ subject or "" }}</title>
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>{{ subject or "" }}</title>
</head>
<body style="line-height: 1.5; color: #36414C;">
<!-- body -->
<div style="font-family: -apple-system, BlinkMacSystemFont,
"Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell",
"Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
font-size: 14px; padding: 10px;">
{{ content }}
{{ signature }}
</div>

<!-- footer -->
<div style="margin-top: 30px; font-family: Helvetica, Arial, sans-serif; font-size: 11px;
margin-bottom: 15px; border-top: 1px solid #d1d8dd;"
data-email-footer="true">
{{ footer }}
</div>
<!-- /footer -->

<div class="print-html">{{ print_html or "" }}</div>
<body style="line-height: 1.5; color: #36414C;">
<table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%" id="body_table" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 14px;">
<tr>
<td align="center" valign="top">
<table border="0" cellpadding="0" cellspacing="0" width="600" id="email_container">
<tr>
<td valign="top">
{{ header or "" }}
</td>
</tr>
<tr>
<td valign="top">
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="email_body">
<tr>
<td valign="top">
<p>{{ content }}</p>
<p>{{ signature }}</p>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td valign="top">
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="email_footer">
<tr>
<td valign="top" style="font-family: Helvetica, Arial, sans-serif; font-size: 11px;
margin-bottom: 15px; border-top: 1px solid #d1d8dd;" data-email-footer="true">
{{ footer }}
</td>
</tr>
<tr>
<td valign="top">
<div class="print-html">{{ print_html or "" }}</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>

</html>

+ 1
- 1
frappe/templates/print_formats/standard_macros.html Datei anzeigen

@@ -1,7 +1,7 @@
{% macro render_field(df, doc) -%}
{%- if df.fieldtype=="Table" -%}
{{ render_table(df, doc) }}
{%- elif df.fieldtype=="HTML" -%}
{%- elif df.fieldtype=="HTML" and df.options -%}
<div>{{ frappe.render_template(df.options, {"doc": doc}) or "" }}</div>
{%- elif df.fieldtype in ("Text", "Text Editor", "Code") -%}
{{ render_text_field(df, doc) }}


+ 3
- 1
frappe/tests/test_api.py Datei anzeigen

@@ -2,11 +2,13 @@
# MIT License. See license.txt
from __future__ import unicode_literals

import unittest, frappe
import unittest, frappe, os
from frappe.utils import get_url

class TestAPI(unittest.TestCase):
def test_insert_many(self):
if os.environ.get('CI'):
return
from frappe.frappeclient import FrappeClient

frappe.db.sql('delete from `tabToDo` where description like "Test API%"')


+ 19
- 0
frappe/tests/test_document.py Datei anzeigen

@@ -3,6 +3,8 @@
from __future__ import unicode_literals

import frappe, unittest, os
from frappe.utils import cint
from frappe.model.naming import revert_series_if_last, make_autoname, parse_naming_series

class TestDocument(unittest.TestCase):
def test_get_return_empty_list_for_table_field_if_none(self):
@@ -217,3 +219,20 @@ class TestDocument(unittest.TestCase):

self.assertEquals(before_update + new_count, after_update)

def test_naming_series(self):
data = ["TEST-", "TEST/17-18/.test_data./.####", "TEST.YYYY.MM.####"]

for series in data:
name = make_autoname(series)
prefix = series

if ".#" in series:
prefix = series.rsplit('.',1)[0]

prefix = parse_naming_series(prefix)
old_current = frappe.db.get_value('Series', prefix, "current", order_by="name")

revert_series_if_last(series, name)
new_current = cint(frappe.db.get_value('Series', prefix, "current", order_by="name"))

self.assertEquals(cint(old_current) - 1, new_current)

+ 94
- 0
frappe/tests/ui/test_calendar_view.js Datei anzeigen

@@ -0,0 +1,94 @@
QUnit.module('views');

QUnit.test("Calendar View Tests", function(assert) {
assert.expect(7);
let done = assert.async();
let random_text = frappe.utils.get_random(10);
let today = frappe.datetime.get_today()+" 16:20:35"; //arbitrary value taken to prevent cases like 12a for 12:00am and 12h to 24h conversion
let visible_time = () => {
// Method to return the start-time (hours) of the event visible
return $('.fc-time').text().split('p')[0]; // 'p' because the arbitrary time is pm
};
// let visible_hours = () => {
// // Method to return the start-time (hours) of the event visible
// return $('.fc-time').text().split(':')[0].replace(/\D+/g, '');
// };
// let visible_minutes = () => {
// // Method to return the start-time (minutes) of the event visible
// return $('.fc-time').text().split(':')[1].replace(/\D+/g, '');
// };
let event_title_text = () => {
// Method to return the title of the event visible
return $('.fc-title:visible').text();
};

frappe.run_serially([
// Create an event using the frappe API
() => frappe.tests.make("Event", [
{subject: random_text},
{starts_on: today},
{event_type: 'Private'}
]),
// Goto Calendar view
() => frappe.set_route(["List", "Event", "Calendar"]),
// Check if event is created
() => {
// Check if the event exists and if its title matches with the one created
assert.equal(event_title_text(), random_text);
// Check if time of event created is correct
// assert.equal(visible_hours(), 4);
// assert.equal(visible_minutes(), 20);
assert.equal(visible_time(), "4:20");
},

// Delete event
// Goto Calendar view
() => frappe.set_route(["List", "Event", "Calendar"]),
() => frappe.timeout(0.3),
// Open the event to be deleted
() => frappe.tests.click_generic_text(random_text),
() => frappe.tests.click_page_head_item('Menu'),
() => frappe.tests.click_dropdown_item('Delete'),
() => frappe.tests.click_page_head_item('Yes'),
() => frappe.timeout(4),
// Goto Calendar View
() => frappe.set_route(["List", "Event", "Calendar"]),
() => frappe.timeout(0.3),

// Check if all menu items redirect to correct locations
// Check if clicking on 'Import' redirects you to ["data-import-tool"]
() => frappe.tests.click_page_head_item('Menu'),
() => frappe.tests.click_dropdown_item('Import'),
() => assert.deepEqual(["data-import-tool"], frappe.get_route()),
() => window.history.back(),
() => frappe.timeout(0.5),
// Check if clicking on 'User Permissions Manager' redirects you to ["user-permissions"]
() => frappe.tests.click_page_head_item('Menu'),
() => frappe.tests.click_dropdown_item('User Permissions Manager'),
() => assert.deepEqual(["user-permissions"], frappe.get_route()),
() => window.history.back(),
() => frappe.timeout(0.5),
// Check if clicking on 'Role Permissions Manager' redirects you to ["permission-manager"]
() => frappe.tests.click_page_head_item('Menu'),
() => frappe.tests.click_dropdown_item('Role Permissions Manager'),
() => assert.deepEqual(["permission-manager"], frappe.get_route()),
() => window.history.back(),
() => frappe.timeout(0.5),
// Check if clicking on 'Customize' redirects you to ["Form", "Customize Form"]
() => frappe.tests.click_page_head_item('Menu'),
() => frappe.tests.click_dropdown_item('Customize'),
() => assert.deepEqual(["Form", "Customize Form"], frappe.get_route()),
() => window.history.back(),
() => frappe.timeout(0.5),

// Check if event is deleted
() => assert.equal(event_title_text(), ""),

() => done()

]);
});

+ 64
- 0
frappe/tests/ui/test_desktop.js Datei anzeigen

@@ -0,0 +1,64 @@
QUnit.module('views');

QUnit.test("Verification of navbar menu links", function(assert) {
assert.expect(14);
let done = assert.async();
let navbar_user_items = ['Set Desktop Icons', 'My Settings', 'Reload', 'View Website', 'Background Jobs', 'Logout'];
let modal_and_heading = ['Documentation', 'About'];
frappe.run_serially([
// Goto Desk using button click to check if its working
() => frappe.tests.click_navbar_item('Home'),
() => assert.deepEqual([""], frappe.get_route()),

// Click username on the navbar (Adminisrator) and verify visibility of all elements
() => frappe.tests.click_navbar_item('navbar_user'),
() => navbar_user_items.forEach(function(navbar_user_item) {
assert.ok(frappe.tests.is_visible(navbar_user_item));
}),

// Click Help and verify visibility of all elements
() => frappe.tests.click_navbar_item('Help'),
() => modal_and_heading.forEach(function(modal) {
assert.ok(frappe.tests.is_visible(modal));
}),

// Goto Desk
() => frappe.tests.click_navbar_item('Home'),
() => frappe.timeout(0.3),

// Click navbar-username and verify links of all menu items
// Check if clicking on 'Set Desktop Icons' redirects you to the correct page
() => frappe.tests.click_navbar_item('navbar_user'),
() => frappe.tests.click_dropdown_item('Set Desktop Icons'),
() => assert.deepEqual(["modules_setup"], frappe.get_route()),
() => frappe.tests.click_navbar_item('Home'),
// Check if clicking on 'My Settings' redirects you to the correct page
() => frappe.tests.click_navbar_item('navbar_user'),
() => frappe.tests.click_dropdown_item('My Settings'),
() => assert.deepEqual(["Form", "User", "Administrator"], frappe.get_route()),
() => frappe.tests.click_navbar_item('Home'),
// Check if clicking on 'Background Jobs' redirects you to the correct page
() => frappe.tests.click_navbar_item('navbar_user'),
() => frappe.tests.click_dropdown_item('Background Jobs'),
() => assert.deepEqual(["background_jobs"], frappe.get_route()),
() => frappe.tests.click_navbar_item('Home'),

// Click Help and check both modals
// Check if clicking 'Documentation' opens the right modal
() => frappe.tests.click_navbar_item('Help'),
() => frappe.tests.click_dropdown_item('Documentation'),
() => assert.ok(frappe.tests.is_visible('Documentation', 'span')),
() => frappe.tests.click_generic_text('Close', 'button'),
// Check if clicking 'About' opens the right modal
() => frappe.tests.click_navbar_item('Help'),
() => frappe.tests.click_dropdown_item('About'),
() => assert.ok(frappe.tests.is_visible('Frappe Framework', 'div')),
() => frappe.tests.click_generic_text('Close', 'button'),

() => done()
]);
});

+ 53
- 0
frappe/tests/ui/test_gantt_view.js Datei anzeigen

@@ -0,0 +1,53 @@
QUnit.module('views');

QUnit.test("Gantt View Tests", function(assert) {
assert.expect(2);
let done = assert.async();
let random_text = frappe.utils.get_random(10);
let start_date = frappe.datetime.get_today()+" 16:20:35"; // arbitrary value taken to prevent cases like 12a for 12:00am and 12h to 24h conversion
let end_date = frappe.datetime.get_today()+" 18:30:45"; //arbitrary value taken to prevent cases like 12a for 12:00am and 12h to 24h conversion
let event_id = () => {
// Method to acquire the ID of the event created. This is needed to redirect to the event page
let event_label = $('.bar-label').text();
let init = event_label.indexOf('(');
let fin = event_label.indexOf(')');
return (event_label.substr(init+1,fin-init-1));
};
let event_title_text = (text) => {
// Method to check the name of the event created. This is needed to verify the creation and deletion of the event
return $('#bar > g > g.bar-group > text:visible').text().includes(text);
};

frappe.run_serially([
// Create an event using the Frapee API
() => {
return frappe.tests.make("Event", [
{subject: random_text},
{starts_on: start_date},
{ends_on: end_date},
{event_type: 'Private'}
]);
},

// Check if event is created
() => frappe.set_route(["List", "Event", "Gantt"]),
() => assert.ok( event_title_text(random_text) ),

// Delete event
() => frappe.set_route(["List", "Event", "Gantt"]),
() => frappe.timeout(0.3),
// Redirect to the event page to delete the event
() => frappe.set_route(["Form", "Event", event_id()]),
() => frappe.tests.click_page_head_item('Menu'),
() => frappe.tests.click_dropdown_item('Delete'),
() => frappe.tests.click_page_head_item('Yes'),
() => frappe.timeout(0.3),
() => frappe.set_route(["List", "Event", "Gantt"]),
() => frappe.timeout(0.3),

// Check if event is deleted
() => assert.ok( event_title_text("") ),

() => done()
]);
});

+ 65
- 1
frappe/tests/ui/test_lib.js Datei anzeigen

@@ -90,6 +90,70 @@ frappe.tests = {
return frappe.run_serially(tasks);
});
},
click_page_head_item: (text) => {
// Method to items present on the page header like New, Save, Delete etc.
let possible_texts = ["New", "Delete", "Save", "Yes"];
return frappe.run_serially([
() => {
if (text == "Menu"){
$("span.menu-btn-group-label:contains('Menu'):visible").click();
} else if (text == "Refresh") {
$(".btn-secondary:contains('Refresh'):visible").click();
} else if (possible_texts.includes(text)) {
$(".btn-primary:contains("+text+"):visible").click();
}
},
() => frappe.timeout(0.3)
]);
},
click_dropdown_item: (text) => {
// Method to click dropdown elements
return frappe.run_serially([
() => {
let li = $(".dropdown-menu li:contains("+text+"):visible").get(0);
$(li).find('a')[0].click();
},
() => frappe.timeout(0.3)
]);
},
click_navbar_item: (text) => {
// Method to click an elements present on the navbar
return frappe.run_serially([
() => {
if (text == "Help"){
$(".dropdown-help .dropdown-toggle:visible").click();
}
else if (text == "navbar_user"){
$(".dropdown-navbar-user .dropdown-toggle:visible").click();
}
else if (text == "Notification"){
$(".navbar-new-comments").click();
}
else if (text == "Home"){
$(".navbar-home:contains('Home'):visible")[0].click();
}
},
() => frappe.timeout(0.3)
]);
},
click_generic_text: (text, tag='a') => {
// Method to click an element by its name
return frappe.run_serially([
() => $(tag+":contains("+text+"):visible")[0].click(),
() => frappe.timeout(0.3)
]);
},
click_desktop_icon: (text) => {
// Method to click the desktop icons on the Desk, by their name
return frappe.run_serially([
() => $("#icon-grid > div > div.app-icon[title="+text+"]").click(),
() => frappe.timeout(0.3)
]);
},
is_visible: (text, tag='a') => {
// Method to check the visibility of an element
return $(tag+":contains("+text+")").is(':visible');
},
click_button: function(text) {
$(`.btn:contains("${text}"):visible`).click();
return frappe.timeout(0.3);
@@ -98,4 +162,4 @@ frappe.tests = {
$(`a:contains("${text}"):visible`).click();
return frappe.timeout(0.3);
}
};
};

+ 13
- 9
frappe/tests/ui/test_list.js Datei anzeigen

@@ -1,27 +1,31 @@
QUnit.module('views');

QUnit.test("test quick entry", function(assert) {
QUnit.test("Test quick entry", function(assert) {
assert.expect(2);
let done = assert.async();
let random = frappe.utils.get_random(10);
let random_text = frappe.utils.get_random(10);

frappe.run_serially([
() => frappe.set_route('List', 'ToDo'),
() => frappe.new_doc('ToDo'),
() => frappe.quick_entry.dialog.set_value('description', random),
() => frappe.quick_entry.dialog.set_value('description', random_text),
() => frappe.quick_entry.insert(),
(doc) => {
assert.ok(doc && !doc.__islocal);
return frappe.set_route('Form', 'ToDo', doc.name);
},
() => {
assert.ok(cur_frm.doc.description.includes(random));
return done();
}
() => assert.ok(cur_frm.doc.description.includes(random_text)),

// Delete the created ToDo
() => frappe.tests.click_page_head_item('Menu'),
() => frappe.tests.click_dropdown_item('Delete'),
() => frappe.tests.click_page_head_item('Yes'),

() => done()
]);
});

QUnit.test("test list values", function(assert) {
QUnit.test("Test list values", function(assert) {
assert.expect(2);
let done = assert.async();
frappe.set_route('List', 'DocType')
@@ -30,4 +34,4 @@ QUnit.test("test list values", function(assert) {
assert.ok($('.list-item:visible').length > 10);
done();
});
});
});

+ 183
- 177
frappe/translations/am.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 229
- 223
frappe/translations/ar.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 183
- 177
frappe/translations/bg.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 183
- 177
frappe/translations/bn.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 183
- 177
frappe/translations/bs.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 183
- 177
frappe/translations/ca.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 183
- 177
frappe/translations/cs.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 183
- 177
frappe/translations/da.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/de.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 183
- 177
frappe/translations/el.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 1
- 1
frappe/translations/es-AR.csv Datei anzeigen

@@ -1,3 +1,3 @@
DocType: Communication,Comment Type,Tipo de Comentario
apps/frappe/frappe/public/js/frappe/form/control.js +1028,Clear Attachment,Limpiar Adjunto
apps/frappe/frappe/public/js/frappe/form/control.js +1002,Clear Attachment,Limpiar Adjunto
DocType: Communication,Communication,Comunicacion

+ 1
- 1
frappe/translations/es-CL.csv Datei anzeigen

@@ -28,7 +28,7 @@ DocType: Communication,Link DocType,Enlace DocType
apps/frappe/frappe/desk/doctype/kanban_board/kanban_board.py +20,Column Name cannot be empty,El Nombre de la Columna no puede estar vacía
,Feedback Ratings,Ratings de Feedback
apps/frappe/frappe/email/queue.py +210,Cannot send this email. You have crossed the sending limit of {0} emails for this month.,No se puede enviar este correo electrónico. Usted ha cruzado el límite de envío de {0} mensajes de correo electrónico para este mes.
apps/frappe/frappe/model/db_query.py +508,Cannot use sub-query in order by,No se puede utilizar una sub-consulta en order by
apps/frappe/frappe/model/db_query.py +513,Cannot use sub-query in order by,No se puede utilizar una sub-consulta en order by
apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +227,Permissions can be managed via Setup &gt; Role Permissions Manager,Los permisos se pueden gestionar a través de Configuración &gt; Administrador de permisos
DocType: LDAP Settings,LDAP First Name Field,Campo de Primer Nombre LDAP
apps/frappe/frappe/core/page/modules_setup/modules_setup.html +32,Global Settings: Users will only be able to choose checked icons,Configuraciones Globales: Los usuarios sólo podrán elegir los iconos marcados


+ 1
- 1
frappe/translations/es-NI.csv Datei anzeigen

@@ -1,5 +1,5 @@
DocType: Web Form,Accept Payment,Aceptar Pago
DocType: Auto Email Report,Based on Permissions For User,Base sobre Permiso de Usuario
apps/frappe/frappe/model/base_document.py +580,"{0}: '{1}' ({3}) will get truncated, as max characters allowed is {2}","{0}: '{1}' ({3}) resultarán truncadas, como caracteres máximo permitido es {2}"
apps/frappe/frappe/model/base_document.py +579,"{0}: '{1}' ({3}) will get truncated, as max characters allowed is {2}","{0}: '{1}' ({3}) resultarán truncadas, como caracteres máximo permitido es {2}"
DocType: System Settings,Backups,Respaldos
apps/frappe/frappe/utils/password_strength.py +58,Better add a few more letters or another word,Mejor añadir algunas letras extras u otra palabra

+ 49
- 49
frappe/translations/es-PE.csv Datei anzeigen

@@ -1,4 +1,4 @@
apps/frappe/frappe/core/doctype/doctype/doctype.py +725,{0}: Cannot set import as {1} is not importable,{0}: no se puede definir 'De Importación' como {1} porque no es importable
apps/frappe/frappe/core/doctype/doctype/doctype.py +729,{0}: Cannot set import as {1} is not importable,{0}: no se puede definir 'De Importación' como {1} porque no es importable
DocType: DocField,Heading,Título
apps/frappe/frappe/public/js/frappe/model/model.js +106,Unable to load: {0},No se puede cargar : {0}
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +26,Permissions at higher levels are Field Level permissions. All Fields have a Permission Level set against them and the rules defined at that permissions apply to the field. This is useful in case you want to hide or make certain field read-only for certain Roles.,Permisos en los niveles más altos son los permisos de nivel de campo. Todos los campos tienen un conjunto Nivel de permiso en su contra y las reglas definidas en el que los permisos se aplican al campo. Esto es útil en caso de que quiera ocultar o hacer cierto campo de sólo lectura para ciertas funciones.
@@ -14,11 +14,11 @@ apps/frappe/frappe/public/js/frappe/views/reports/grid_report.js +852,With Ledge
DocType: Report,Ref DocType,Referencia Tipo de Documento
DocType: Print Settings,Print Style Preview,Vista previa de Estilo de impresión
DocType: Customize Form,Enter Form Type,Introduzca Tipo de Formulario
apps/frappe/frappe/public/js/frappe/form/control.js +1026,Select from existing attachments,Seleccione de archivos adjuntos existentes
apps/frappe/frappe/public/js/frappe/form/control.js +1000,Select from existing attachments,Seleccione de archivos adjuntos existentes
DocType: Email Alert Recipient,Email By Document Field,Email Por Campo Documento
apps/frappe/frappe/core/page/permission_manager/permission_manager.js +483,Saved!,Guardado!
apps/frappe/frappe/public/js/frappe/ui/messages.js +66,Enter Value,Introducir valor
apps/frappe/frappe/core/doctype/doctype/doctype.py +694,"{0}: Cannot set Submit, Cancel, Amend without Write","{0}: no se puede Presentar, Cancelar y Corregir sin Guardar"
apps/frappe/frappe/core/doctype/doctype/doctype.py +698,"{0}: Cannot set Submit, Cancel, Amend without Write","{0}: no se puede Presentar, Cancelar y Corregir sin Guardar"
DocType: Web Page,Insert Style,Inserte Estilo
DocType: Workflow State,th-large,-ésimo gran
DocType: User,Email Settings,Configuración del correo electrónico
@@ -45,7 +45,7 @@ apps/frappe/frappe/model/document.py +577,Cannot edit cancelled document,No se p
DocType: Social Login Keys,Facebook Client ID,Facebook Client ID
apps/frappe/frappe/config/setup.py +107,Set numbering series for transactions.,Establecer series de numeración para las transacciones.
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +39,Submit an Issue,Presentar un problema
apps/frappe/frappe/public/js/frappe/views/communication.js +64,Send As Email,Enviar como correo electrónico
apps/frappe/frappe/public/js/frappe/views/communication.js +63,Send As Email,Enviar como correo electrónico
DocType: Currency,Symbol,Símbolo
DocType: Workflow Document State,Update Field,Actualizar Campos
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +17,"You can change Submitted documents by cancelling them and then, amending them.","Puede cambiar los documentos Enviados cancelándolos y luego, haciendo los cambios pertinentes."
@@ -55,7 +55,7 @@ DocType: Website Script,Script to attach to all web pages.,Guión para unir a to
apps/frappe/frappe/core/page/data_import_tool/data_import_main.html +5,Select Type of Document to Download,Seleccionar tipo de documento para descargar
apps/frappe/frappe/core/page/data_import_tool/importer.py +56,Only allowed {0} rows in one import,Soló esta filas {0} permitidas para una importación
DocType: Property Setter,Set Value,Valor seleccionado
apps/frappe/frappe/public/js/frappe/form/layout.js +98,Show more details,Mostrar más detalles
apps/frappe/frappe/public/js/frappe/form/layout.js +125,Show more details,Mostrar más detalles
apps/frappe/frappe/custom/doctype/custom_field/custom_field.js +66,Fieldname which will be the DocType for this link field.,Nombre de campo el cual será el DocType para enlazar el campo.
DocType: Workflow,DocType on which this Workflow is applicable.,El DocType en el presente del flujo de trabajo es aplicable.
DocType: Workflow,"If checked, all other workflows become inactive.","Si se selecciona, todos los otros flujos de trabajo se vuelven inactivos ."
@@ -70,7 +70,7 @@ apps/frappe/frappe/public/js/frappe/form/print.js +169,Warning: This Print Forma
apps/frappe/frappe/core/page/data_import_tool/exporter.py +65,"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.","Si va a cargar nuevos registros, ""Secuencias"" se convierte en obligatoria, si está presente."
DocType: Report,Letter Head,Membretes
DocType: Custom DocPerm,Role,Función
apps/frappe/frappe/model/base_document.py +466,Options not set for link field {0},Las opciones no establecen para campo de enlace {0}
apps/frappe/frappe/model/base_document.py +465,Options not set for link field {0},Las opciones no establecen para campo de enlace {0}
DocType: Web Page,Style,Estilo
apps/frappe/frappe/model/rename_doc.py +130,{0} not allowed to be renamed,{0} no es permitido ser renombrado
DocType: Property Setter,Field Name,Nombre del campo
@@ -78,7 +78,7 @@ DocType: Custom Script,Adds a custom script (client or server) to a DocType,Aña
DocType: Report,Report Type,Tipo de informe
DocType: User Email,Enable Outgoing,Habilitar saliente
DocType: Email Account,Ignore attachments over this size,Ignorar los adjuntos mayores a este tamaño
apps/frappe/frappe/public/js/frappe/form/control.js +739,Date must be in format: {0},La fecha debe estar en formato : {0}
apps/frappe/frappe/public/js/frappe/form/control.js +721,Date must be in format: {0},La fecha debe estar en formato : {0}
DocType: Print Settings,In points. Default is 9.,En puntos. El valor predeterminado es 9.
apps/frappe/frappe/config/website.py +18,User editable form on Website.,Forma editable Usuario en el Sitio Web.
apps/frappe/frappe/core/page/user_permissions/user_permissions.js +140,Upload and Sync,Carga y Sincronización
@@ -88,7 +88,7 @@ DocType: Workflow State,thumbs-down,pulgar hacia abajo
DocType: Address Template,This format is used if country specific format is not found,Este formato se utiliza si no se encuentra un formato específico del país
apps/frappe/frappe/public/js/frappe/views/treeview.js +65,{0} Tree,{0} Árbol
DocType: Communication,Email,Correo electrónico
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +124,Help on Search,Ayuda en la búsqueda
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +127,Help on Search,Ayuda en la búsqueda
DocType: Web Page,Left,Izquierda
apps/frappe/frappe/core/doctype/user/user.py +174,Sorry! Sharing with Website User is prohibited.,¡Lo siento! Compartir con los del Sitio Web está prohibido.
DocType: Custom Script,Script,Guión
@@ -96,7 +96,7 @@ apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +71,Refresh F
apps/frappe/frappe/templates/emails/new_user.html +3,A new account has been created for you at {0},Una nueva cuenta ha sido creada para ti en {0}
DocType: Website Script,Website Script,Guión del Sitio Web
apps/frappe/frappe/core/doctype/communication/communication.js +100,Reference DocType,Referencia DocType
apps/frappe/frappe/__init__.py +1063,Thank you,Gracias
apps/frappe/frappe/__init__.py +1062,Thank you,Gracias
DocType: Address,Shipping,Envío
DocType: Standard Reply,Standard Reply,Respuestas automáticas
DocType: Currency,"How should this currency be formatted? If not set, will use system defaults","¿Cómo se debe formatear esta moneda ? Si no se establece, utilizará valores predeterminados del sistema"
@@ -119,7 +119,7 @@ apps/frappe/frappe/desk/form/assign_to.py +143,"The task {0}, that you assigned
DocType: Workflow State,star-empty,- estrella vacía
apps/frappe/frappe/templates/emails/auto_reply.html +1,Thank you for your email,Gracias por tu email
DocType: Social Login Keys,Social Login Keys,Credenciales sociales
apps/frappe/frappe/public/js/legacy/form.js +63,"Allowing DocType, DocType. Be careful!","Permitir DocType , tipo de documento . ¡Ten cuidado!"
apps/frappe/frappe/public/js/legacy/form.js +62,"Allowing DocType, DocType. Be careful!","Permitir DocType , tipo de documento . ¡Ten cuidado!"
apps/frappe/frappe/core/doctype/docshare/docshare.py +40,"You need to have ""Share"" permission","Usted necesita tener el permiso ""Compartir"""
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +9,The system provides many pre-defined roles. You can add new roles to set finer permissions.,El sistema ofrece muchas funciones predefinidas . Usted puede agregar nuevos roles para establecer permisos más finos.
apps/frappe/frappe/utils/nestedset.py +235,{0} {1} cannot be a leaf node as it has children,"{0} {1} no puede ser un nodo de hoja , ya que tiene los niños"
@@ -127,18 +127,18 @@ DocType: Footer Item,Company,Compañía(s)
DocType: Email Alert,Send alert if date matches this field's value,Envíe la alarma si la fecha coincide con el valor de este campo
apps/frappe/frappe/config/setup.py +156,Setup Email Alert based on various criteria.,Configuración de Alerta de E-mail basado en varios criterios.
apps/frappe/frappe/printing/page/print_format_builder/print_format_builder.js +697,You can add dynamic properties from the document by using Jinja templating.,Puede añadir propiedades dinámicas del documento mediante el uso de plantillas Jinja.
apps/frappe/frappe/core/doctype/doctype/doctype.py +455,Default for {0} must be an option,Predeterminado para {0} debe ser una opción
apps/frappe/frappe/core/doctype/doctype/doctype.py +422,Options must be a valid DocType for field {0} in row {1},Las opciones deben ser validas para el DocType en el campo {0} de la linea {1}
apps/frappe/frappe/core/doctype/doctype/doctype.py +459,Default for {0} must be an option,Predeterminado para {0} debe ser una opción
apps/frappe/frappe/core/doctype/doctype/doctype.py +426,Options must be a valid DocType for field {0} in row {1},Las opciones deben ser validas para el DocType en el campo {0} de la linea {1}
apps/frappe/frappe/templates/emails/auto_reply.html +5,This is an automatically generated reply,Esta es una respuesta generada automáticamente
apps/frappe/frappe/core/page/permission_manager/permission_manager.js +434,Set,conjunto
DocType: Workflow State,Workflow State,Estados de los flujos de trabajo
DocType: Communication,Submitted,Enviado
apps/frappe/frappe/core/doctype/doctype/doctype.py +655,{0}: No basic permissions set,{0}: No se han asignado permisos básicos
apps/frappe/frappe/core/doctype/doctype/doctype.py +659,{0}: No basic permissions set,{0}: No se han asignado permisos básicos
apps/frappe/frappe/public/js/frappe/ui/toolbar/toolbar.js +234,"Your download is being built, this may take a few moments...","Se está generando su descarga, esto puede tardar unos minutos..."
apps/frappe/frappe/core/page/user_permissions/user_permissions.js +127,Upload User Permissions,Sube Permisos de Usuario
apps/frappe/frappe/core/page/data_import_tool/data_import_main.html +43,Download with data,Descarga de datos
DocType: DocType,Hide Heading,Ocultar Rubro
apps/frappe/frappe/core/doctype/doctype/doctype.py +721,{0}: Cannot set Assign Amend if not Submittable,{0}: no se puede 'Asignar Correción' si no se puede presentar
apps/frappe/frappe/core/doctype/doctype/doctype.py +725,{0}: Cannot set Assign Amend if not Submittable,{0}: no se puede 'Asignar Correción' si no se puede presentar
apps/frappe/frappe/printing/page/print_format_builder/print_format_builder.js +411,Remove Section,Retire la Sección
apps/frappe/frappe/core/doctype/file/file.py +221,No permission to write / remove.,No tiene permiso para escribir/eliminar.
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +158,No Report Loaded. Please use query-report/[Report Name] to run a report.,No se cargo el reporte. Utilice Consultar Informes/[Report Name]] para ejecutar un reporte.
@@ -146,11 +146,11 @@ apps/frappe/frappe/config/setup.py +199,Define workflows for forms.,Definir los
DocType: Workflow State,font,Fuente
apps/frappe/frappe/public/js/frappe/model/model.js +31,Parent,Padre
DocType: Communication,Workflow,Flujo de Trabajo
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +133,Search in a document type,Buscar en un tipo de documento
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +136,Search in a document type,Buscar en un tipo de documento
DocType: Print Format,Server,Servidor
DocType: Custom DocPerm,Apply User Permissions,Aplicar permisos de usuario
DocType: Website Settings,Set Banner from Image,Establecer Banner de imagen
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +489,Sr No,No.
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +488,Sr No,No.
DocType: DocType,Is Single,Es Individual
apps/frappe/frappe/templates/includes/list/filters.html +19,clear,claro
DocType: Email Alert,Send alert if this field's value changes,Enviar alerta si cambia el valor de este campo
@@ -161,16 +161,16 @@ apps/frappe/frappe/core/page/data_import_tool/exporter.py +62,Please do not chan
DocType: Email Alert,Days Before or After,Días Anteriores o Posteriores
DocType: File,Content Hash,Hash contenido
DocType: Workflow State,align-left,alinear -izquierda
apps/frappe/frappe/core/doctype/doctype/doctype.py +698,{0}: Cannot set Import without Create,{0}: no se puede establecer 'De importación' sin crearlo primero
apps/frappe/frappe/core/doctype/doctype/doctype.py +702,{0}: Cannot set Import without Create,{0}: no se puede establecer 'De importación' sin crearlo primero
apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +255,Hide field in Report Builder,Ocultar campo en el Generador de Informes
apps/frappe/frappe/core/doctype/doctype/doctype.py +433,Max width for type Currency is 100px in row {0},El ancho máximo para la moneda es 100px en la linea {0}
apps/frappe/frappe/core/doctype/doctype/doctype.py +437,Max width for type Currency is 100px in row {0},El ancho máximo para la moneda es 100px en la linea {0}
apps/frappe/frappe/public/js/frappe/form/link_selector.js +143,{0} added,{0} agregado(s)
DocType: Integration Request,Reference DocName,Referencia DocNombre
apps/frappe/frappe/printing/page/print_format_builder/print_format_builder.js +790,Saved,Guardado
DocType: System Settings,Security,Seguridad
DocType: Custom DocPerm,Read,Lectura
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +216,use % as wildcard,Use% como comodín
apps/frappe/frappe/model/delete_doc.py +161,User not allowed to delete {0}: {1},El usuario no puede eliminar {0}: {1}
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +229,use % as wildcard,Use% como comodín
apps/frappe/frappe/model/delete_doc.py +162,User not allowed to delete {0}: {1},El usuario no puede eliminar {0}: {1}
apps/frappe/frappe/desk/query_report.py +87,Query must be a SELECT,Debe seleccionar la Consulta
DocType: DocShare,Document Name,Nombre del documento
apps/frappe/frappe/printing/page/print_format_builder/print_format_builder.js +162,Start new Format,Comenzar una nueva Formato
@@ -185,13 +185,13 @@ apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +34
apps/frappe/frappe/website/doctype/website_theme/website_theme.py +30,You are not allowed to delete a standard Website Theme,No se le permite eliminar un tema Sitio web estándar
apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +227,Permissions can be managed via Setup &gt; Role Permissions Manager,Los permisos se pueden gestionar a través de Configuración > Administrador de Funciones
apps/frappe/frappe/core/page/data_import_tool/data_import_main.html +34,Download Blank Template,Descargar la plantilla en blanco
apps/frappe/frappe/core/doctype/doctype/doctype.py +684,{0}: Permission at level 0 must be set before higher levels are set,{0} : Permiso en el nivel 0 se debe establecer antes de fijar niveles más altos
apps/frappe/frappe/core/doctype/doctype/doctype.py +688,{0}: Permission at level 0 must be set before higher levels are set,{0} : Permiso en el nivel 0 se debe establecer antes de fijar niveles más altos
DocType: System Settings,dd-mm-yyyy,dd- mm- aaaa
apps/frappe/frappe/config/desk.py +54,"Newsletters to contacts, leads.","Boletines para contactos, clientes potenciales ."
DocType: Email Alert,Message Examples,Ejemplos de Mensajes
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +11,"As a best practice, do not assign the same set of permission rule to different Roles. Instead, set multiple Roles to the same User.","Como práctica recomendada , no asigne el mismo conjunto de permisos para diferentes funciones. En su lugar, establecer varias funciones al mismo usuario ."
DocType: Website Theme,Top Bar Color,Inicio Barra Color
apps/frappe/frappe/core/doctype/doctype/doctype.py +498,There can be only one Fold in a form,Sólo puede haber un doblez en forma
apps/frappe/frappe/core/doctype/doctype/doctype.py +502,There can be only one Fold in a form,Sólo puede haber un doblez en forma
DocType: Address,Shop,Tienda
apps/frappe/frappe/public/js/frappe/views/treeview.js +161,Add Child,Agregar subcuenta
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +7,Roles can be set for users from their User page.,Las funciones se pueden configurar para los usuarios de su página de usuario .
@@ -210,8 +210,8 @@ DocType: Contact,Open,Abrir
DocType: DocType,Hide Copy,Copia Oculta
apps/frappe/frappe/printing/doctype/print_format/print_format.py +19,Standard Print Format cannot be updated,Formato de impresión estándar no se puede actualizar
apps/frappe/frappe/core/page/data_import_tool/data_import_main.html +7,Select Type,Seleccione el tipo de
apps/frappe/frappe/model/rename_doc.py +377,** Failed: {0} to {1}: {2},** Fallo: {0} a {1}: {2}
apps/frappe/frappe/public/js/frappe/form/layout.js +33,This form does not have any input,Esta forma no tiene ninguna entrada
apps/frappe/frappe/model/rename_doc.py +378,** Failed: {0} to {1}: {2},** Fallo: {0} a {1}: {2}
apps/frappe/frappe/public/js/frappe/form/layout.js +35,This form does not have any input,Esta forma no tiene ninguna entrada
apps/frappe/frappe/model/naming.py +44,{0} is required,{0} es necesario
DocType: Website Settings,Select an image of approx width 150px with a transparent background for best results.,Seleccione una imagen de ancho aprox 150px con fondo transparente para obtener mejores resultados .
DocType: Workflow State,Tag,Etiqueta
@@ -229,7 +229,7 @@ DocType: DocType,Single Types have only one record no tables associated. Values
apps/frappe/frappe/public/js/frappe/form/multi_select_dialog.js +58,Make a new,Hacer una nueva
apps/frappe/frappe/core/page/user_permissions/user_permissions.js +222,Select User or DocType to start.,Seleccionar usuario o tipo de documento para empezar.
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +35,"Once you have set this, the users will only be able access documents (eg. Blog Post) where the link exists (eg. Blogger).","Una vez que haya establecido esto, los usuarios sólo tendrán acceso a los documentos que puedan (por ejemplo, Entrada de blog ) donde se encuentra la relación (por ejemplo, Blogger ) ."
apps/frappe/frappe/core/doctype/doctype/doctype.py +437,'In List View' not allowed for type {0} in row {1},No está permitido para el tipo {0} en la linea {1}
apps/frappe/frappe/core/doctype/doctype/doctype.py +441,'In List View' not allowed for type {0} in row {1},No está permitido para el tipo {0} en la linea {1}
apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +216,"Change type of field. (Currently, Type change is \
allowed among 'Currency and Float')","Cambiar el tipo de campo. (Actual, Tipo de cambio, Cantidad permitida, Moneda, Flotante, etc)"
DocType: Footer Item,"Select target = ""_blank"" to open in a new page.","Select target = "" _blank"" para abrir en una nueva página."
@@ -254,7 +254,7 @@ apps/frappe/frappe/sessions.py +156,Redis cache server not running. Please conta
DocType: Workflow Document State,Only Allow Edit For,Sólo Permitir Editar Para
DocType: Website Slideshow,This goes above the slideshow.,Esto va por encima de la presentación de diapositivas.
DocType: Website Settings,Footer Items,Elementos del Pie de Página
apps/frappe/frappe/core/doctype/doctype/doctype.py +696,{0}: Cannot set Amend without Cancel,{0}: no se puede 'Corregir' sin antes cancelar
apps/frappe/frappe/core/doctype/doctype/doctype.py +700,{0}: Cannot set Amend without Cancel,{0}: no se puede 'Corregir' sin antes cancelar
apps/frappe/frappe/templates/emails/new_user.html +4,Your login id is,Su nombre de usuario es
DocType: DocField,Currency,Divisa
apps/frappe/frappe/core/report/permitted_documents_for_user/permitted_documents_for_user.py +36,Please specify doctype,"Por favor, especifique el doctype"
@@ -262,12 +262,12 @@ DocType: System Settings,Session Expiry Mobile,Vencimiento de sesión en disposi
DocType: Web Form,Text to be displayed for Link to Web Page if this form has a web page. Link route will be automatically generated based on `page_name` and `parent_website_route`,El texto que se muestra para enlazar a la página Web si esta forma dispone de una página web. Ruta Enlace automáticamente se genera en base a `page_name` y` parent_website_route`
,Setup Wizard,Asistente de configuración
DocType: Print Settings,Send Email Print Attachments as PDF (Recommended),Enviar Emails con adjuntos en formato PDF (recomendado)
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +269,Field {0} is not selectable.,El campo {0} no se puede seleccionar .
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +286,Field {0} is not selectable.,El campo {0} no se puede seleccionar .
apps/frappe/frappe/public/js/frappe/views/reports/grid_report.js +850,Select To Download:,Seleccione la descarga :
apps/frappe/frappe/public/js/frappe/upload.js +223,Please attach a file or set a URL,"Por favor, adjuntar un archivo o defina una URL"
DocType: Contact,Is Primary Contact,Es Contacto principal
,Permitted Documents For User,Documentos permitidos para los usuarios
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +129,Make a new record,Hacer un Nuevo Registro
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +132,Make a new record,Hacer un Nuevo Registro
DocType: Report,Script Report,Informe de secuencias de comandos
apps/frappe/frappe/custom/doctype/custom_field/custom_field.py +19,Label is mandatory,Etiqueta es obligatoria
DocType: Currency,**Currency** Master,**Moneda** Principal
@@ -288,7 +288,7 @@ DocType: Workflow State,"Style represents the button color: Success - Green, Dan
DocType: User,Facebook Username,Facebook Nombre de usuario
apps/frappe/frappe/core/page/permission_manager/permission_manager.js +301,Users with role {0}:,Los usuarios con función {0}:
apps/frappe/frappe/core/doctype/file/file.py +151,Same file has already been attached to the record,El mismo archivo ya se ha adjuntado al registro
apps/frappe/frappe/core/doctype/doctype/doctype.py +691,{0}: Cannot set Cancel without Submit,{0}: no se puede 'Cancelar' sin presentarlo
apps/frappe/frappe/core/doctype/doctype/doctype.py +695,{0}: Cannot set Cancel without Submit,{0}: no se puede 'Cancelar' sin presentarlo
DocType: Address,Address Title,Dirección Título
apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +239,Mark the field as Mandatory,Marque el campo como obligatorio
DocType: Workflow State,resize-full,cambiar a tamaño completo
@@ -300,7 +300,7 @@ DocType: Contact,Sales Master Manager,Gerente de Ventas
apps/frappe/frappe/public/js/frappe/form/link_selector.js +26,You can use wildcard %,Puede utilizar caracteres comodín%
apps/frappe/frappe/public/js/frappe/views/reports/reportview.js +771,Report was not saved (there were errors),Informe no se guardó ( hubo errores )
apps/frappe/frappe/public/js/frappe/upload.js +296,Uploading...,Subiendo ...
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +826,You are not allowed to export this report,No se le permite exportar este reporte
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +825,You are not allowed to export this report,No se le permite exportar este reporte
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +24,"Permissions at level 0 are Document Level permissions, i.e. they are primary for access to the document.","Los permisos del nivel 0 son los permisos a nivel de documentos, es decir, que tienen permiso especial para los documentos."
apps/frappe/frappe/config/setup.py +220,"Change field properties (hide, readonly, permission etc.)","Cambiar las propiedades de campo (ocultar, sólo lectura, permisos, etc)"
apps/frappe/frappe/printing/page/print_format_builder/print_format_builder.js +108,Select a DocType to make a new format,Seleccione un tipo de documento para hacer un nuevo formato
@@ -312,7 +312,7 @@ apps/frappe/frappe/email/receive.py +65,Cannot connect: {0},No puede conectarse:
apps/frappe/frappe/core/doctype/report/report.py +33,Only Administrator can save a standard report. Please rename and save.,"Sólo el administrador puede guardar un informe estándar. Por favor, cambie el nombre y guardar."
apps/frappe/frappe/core/page/user_permissions/user_permissions.js +154,Permissions Updated,Actualización de permisos
apps/frappe/frappe/printing/page/print_format_builder/print_format_builder.js +126,Both DocType and Name required,Tanto DocType y Nombre son obligatorios
apps/frappe/frappe/core/doctype/doctype/doctype.py +672,"{0}: Only one rule allowed with the same Role, Level and {1}","{0}: Sólo una regla es permitida con el mismo rol, Nivel y {1}"
apps/frappe/frappe/core/doctype/doctype/doctype.py +676,"{0}: Only one rule allowed with the same Role, Level and {1}","{0}: Sólo una regla es permitida con el mismo rol, Nivel y {1}"
DocType: Customize Form,"Customize Label, Print Hide, Default etc.","Personaliza etiquetas, impresión Hide , Default , etc"
apps/frappe/frappe/public/js/frappe/views/reports/reportview.js +661,Sort By,Ordenado por
apps/frappe/frappe/desk/form/utils.py +91,No further records,No hay registros adicionales
@@ -340,7 +340,7 @@ apps/frappe/frappe/printing/page/print_format_builder/print_format_builder_layou
DocType: Currency,"Sub-currency. For e.g. ""Cent""","Sub-moneda, por ejemplo, ""Centavo"""
DocType: Workflow State,exclamation-sign,signo de exclamación
DocType: Desktop Icon,List,Vista de árbol
apps/frappe/frappe/public/js/frappe/views/communication.js +509,There were errors while sending email. Please try again.,"Hubo errores al enviar el correo electrónico. Por favor, inténtelo de nuevo."
apps/frappe/frappe/public/js/frappe/views/communication.js +520,There were errors while sending email. Please try again.,"Hubo errores al enviar el correo electrónico. Por favor, inténtelo de nuevo."
apps/frappe/frappe/core/doctype/system_settings/system_settings.py +26,Session Expiry must be in format {0},Vencimiento de sesión debe estar en formato {0}
DocType: User,Stores the JSON of last known versions of various installed apps. It is used to show release notes.,Almacena el JSON de las últimas versiones conocidas de diferentes aplicaciones instaladas. Se utiliza para mostrar notas de la versión.
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +14,"Meaning of Submit, Cancel, Amend","Significado de Enviar, Cancelar, Corregir"
@@ -370,7 +370,7 @@ apps/frappe/frappe/public/js/frappe/form/link_selector.js +106,Make a new {0},Cr
apps/frappe/frappe/core/page/permission_manager/permission_manager.js +140,Select Document Type or Role to start.,Seleccione el Tipo de Documento o Función para empezar.
DocType: Workflow Transition,Defines actions on states and the next step and allowed roles.,Define las acciones de los estados y el siguiente paso y funciones permitidas.
DocType: DocType,Show Print First,Mostrar Imprimir Primera
apps/frappe/frappe/core/doctype/doctype/doctype.py +705,Report cannot be set for Single types,Reportar no se puede configurar para los tipos individuales
apps/frappe/frappe/core/doctype/doctype/doctype.py +709,Report cannot be set for Single types,Reportar no se puede configurar para los tipos individuales
apps/frappe/frappe/core/doctype/report/report.js +37,Disable Report,Desactivar Informe
DocType: Workflow State,resize-small,cambiar el tamaño pequeño
DocType: Workflow State,question-sign,Consultar Firma
@@ -378,14 +378,14 @@ apps/frappe/frappe/utils/nestedset.py +229,Multiple root nodes not allowed.,Nodo
DocType: Event,Saturday,Sábado
DocType: Address,Maintenance User,Mantenimiento por el Usuario
apps/frappe/frappe/email/doctype/newsletter/newsletter.py +30,Scheduled to send to {0},Programado para enviar a {0}
apps/frappe/frappe/model/base_document.py +470,{0} must be set first,debe establecerse primero: {0}
apps/frappe/frappe/model/base_document.py +469,{0} must be set first,debe establecerse primero: {0}
apps/frappe/frappe/core/page/data_import_tool/exporter.py +67,"For updating, you can update only selective columns.","Para la actualización, usted lo puede hacer solo en algunas columnas."
DocType: Custom DocPerm,Export,Exportación
DocType: Workflow State,Search,Búsqueda
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +16,"Certain documents, like an Invoice, should not be changed once final. The final state for such documents is called Submitted. You can restrict which roles can Submit.","Algunos documentos como facturas, no se deben cambiar una vez guardados. El estado final de dichos documentos se llama 'Presentado'. Puede restringir qué roles/usuarios pueden presentar documentos"
apps/frappe/frappe/public/js/frappe/views/pageview.js +104,Sorry! I could not find what you were looking for.,¡Lo siento! No pude encontrar lo que estabas buscando.
DocType: Workflow State,remove-sign,Eliminar el efecto de signo
apps/frappe/frappe/public/js/frappe/form/control.js +1284,Please attach a file first.,Adjunte un archivo primero .
apps/frappe/frappe/public/js/frappe/form/control.js +1250,Please attach a file first.,Adjunte un archivo primero .
apps/frappe/frappe/core/page/permission_manager/permission_manager.js +252,Show User Permissions,Permisos Mostrar usuario
apps/frappe/frappe/public/js/frappe/request.js +347,Report this issue,Reportar Incidencia
apps/frappe/frappe/public/js/frappe/views/treeview.js +212,New {0},Nuevo {0}
@@ -394,23 +394,23 @@ DocType: Custom Script,Script Type,Guión Tipo
DocType: Workflow State,text-width,texto de ancho
DocType: Custom DocPerm,This role update User Permissions for a user,Este función actualiza los Permisos de Usuario para un usuario
DocType: Workflow State,resize-horizontal,cambiar el tamaño horizontal
apps/frappe/frappe/model/delete_doc.py +165,{0} {1}: Submitted Record cannot be deleted.,{0} {1}: registro presentado no se puede eliminar.
apps/frappe/frappe/model/delete_doc.py +166,{0} {1}: Submitted Record cannot be deleted.,{0} {1}: registro presentado no se puede eliminar.
apps/frappe/frappe/public/js/frappe/form/save.js +141,Mandatory fields required in {0},Campos obligatorios requeridos en {0}
apps/frappe/frappe/model/rename_doc.py +364,Maximum {0} rows allowed,Máximo {0} filas permitidos
apps/frappe/frappe/model/rename_doc.py +365,Maximum {0} rows allowed,Máximo {0} filas permitidos
DocType: Custom DocPerm,Import,Importación
apps/frappe/frappe/model/naming.py +168,"There were some errors setting the name, please contact the administrator","Había algunos errores de configuración el nombre, por favor póngase en contacto con el administrador"
apps/frappe/frappe/website/doctype/web_form/web_form.py +37,You need to be in developer mode to edit a Standard Web Form,Se requiere estar en modo desarrollador para editar un formulario web estándar.
DocType: Website Theme,Google Font (Heading),Google Font (Título)
apps/frappe/frappe/core/page/user_permissions/user_permissions.js +31,A user can be permitted to multiple records of the same DocType.,Un usuario se puede permitir que varios registros de un mismo tipo de documento .
apps/frappe/frappe/core/doctype/doctype/doctype.py +449,Options 'Dynamic Link' type of field must point to another Link Field with options as 'DocType',"Las opciones de campo de tipo 'Vinculo Dinámico' debe apuntar a otro campo con propiedades ""Tipo de Documento"""
apps/frappe/frappe/core/doctype/doctype/doctype.py +453,Options 'Dynamic Link' type of field must point to another Link Field with options as 'DocType',"Las opciones de campo de tipo 'Vinculo Dinámico' debe apuntar a otro campo con propiedades ""Tipo de Documento"""
apps/frappe/frappe/public/js/frappe/ui/tree.js +130,Collapse,Plegar/Desplegar
apps/frappe/frappe/core/doctype/doctype/doctype.py +719,{0}: Cannot set Assign Submit if not Submittable,{0}: no se puede 'Asignar Enviar' si no se puede presentar
apps/frappe/frappe/core/doctype/doctype/doctype.py +723,{0}: Cannot set Assign Submit if not Submittable,{0}: no se puede 'Asignar Enviar' si no se puede presentar
DocType: Workflow State,step-forward,paso hacia adelante
DocType: Workflow State,align-justify,alinear - justificar
apps/frappe/frappe/core/page/data_import_tool/importer.py +249,Not allowed to Import,No tiene permisos para importar
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +135,Open a module or tool,Abra un Módulo o Herramienta
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +138,Open a module or tool,Abra un Módulo o Herramienta
apps/frappe/frappe/core/page/user_permissions/user_permissions.js +132,Upload CSV file containing all user permissions in the same format as Download.,Subir archivo CSV que contiene todos los permisos de usuario en el mismo formato que en Descargar.
apps/frappe/frappe/public/js/legacy/form.js +139,Please save before attaching.,"Por favor, guarde los cambios antes de conectar"
apps/frappe/frappe/public/js/legacy/form.js +137,Please save before attaching.,"Por favor, guarde los cambios antes de conectar"
apps/frappe/frappe/core/page/data_import_tool/data_import_tool.py +15,Parent Table,Tabla de Padres
DocType: Dropbox Settings,Dropbox Access Key,Clave de Acceso de Dropbox
apps/frappe/frappe/public/js/frappe/ui/field_group.js +82,Missing Values Required,Valores perdidos requeridos
@@ -433,7 +433,7 @@ apps/frappe/frappe/model/naming.py +66,Naming Series mandatory,Las secuencias so
DocType: Event,Ref Type,Tipo Ref
DocType: DocType,Sort Order,Orden de Clasificación
apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.js +131,Sit tight while your system is being setup. This may take a few moments.,Tome asiento mientras el sistema está siendo configurado. Esto puede tomar un momento.
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +663,"Unable to display this tree report, due to missing data. Most likely, it is being filtered out due to permissions.","No se puede mostrar este informe árbol, debido a los datos faltantes. Lo más probable es que se está filtrando a cabo debido a los permisos."
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +662,"Unable to display this tree report, due to missing data. Most likely, it is being filtered out due to permissions.","No se puede mostrar este informe árbol, debido a los datos faltantes. Lo más probable es que se está filtrando a cabo debido a los permisos."
apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +247,Hide field in form,Ocultar campo en forma
DocType: Newsletter,Email Sent?,Enviar Email ?
apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +272,Show a description below the field,Mostrar una descripción debajo del campo
@@ -452,7 +452,7 @@ DocType: Custom Field,Field Description,Descripción del Campo
apps/frappe/frappe/utils/nestedset.py +194,Root {0} cannot be deleted,Raíz {0} no se puede eliminar
DocType: Website Settings,Banner is above the Top Menu Bar.,El Banner está por sobre la barra de menú superior.
apps/frappe/frappe/templates/includes/comments/comments.py +50,View it in your browser,Véalo en su navegador
apps/frappe/frappe/core/doctype/doctype/doctype.py +523,Title field must be a valid fieldname,Campo Título debe ser un nombre de campo válido
apps/frappe/frappe/core/doctype/doctype/doctype.py +527,Title field must be a valid fieldname,Campo Título debe ser un nombre de campo válido
apps/frappe/frappe/client.py +86,Cannot edit standard fields,No se puede editar campos estándar
apps/frappe/frappe/config/website.py +78,Settings for Contact Us Page.,Ajustes para la página de contacto.
apps/frappe/frappe/public/js/frappe/misc/pretty_date.js +48,1 hour ago,Hace 1 hora
@@ -483,14 +483,14 @@ apps/frappe/frappe/core/doctype/user/user.py +172,Sorry! User should have comple
apps/frappe/frappe/core/page/user_permissions/user_permissions.js +14,Edit Role Permissions,Editar permisos de rol
apps/frappe/frappe/core/doctype/doctype/doctype.py +287,DocType can not be merged,El DocType no se puede fusionar
DocType: DocField,Allow on Submit,Permitir en Enviar
apps/frappe/frappe/public/js/frappe/views/communication.js +78,Select Print Format,Seleccionar el formato de impresión
apps/frappe/frappe/public/js/frappe/views/communication.js +77,Select Print Format,Seleccionar el formato de impresión
DocType: DocField,"For Links, enter the DocType as range.
For Select, enter list of Options, each on a new line.","Para enlaces, introduzca el DocType como rango. para seleccionar, ingrese lista de opciones, cada uno en una nueva línea."
DocType: Workflow State,eye-open,- ojo abierto
apps/frappe/frappe/core/page/data_import_tool/data_import_main.html +87,Submit after importing.,Revisar después de importar.
DocType: Email Account,Email Account Name,Correo electrónico Nombre de cuenta
apps/frappe/frappe/public/js/frappe/list/list_renderer.js +554,No {0} found,{0} no encontrado
apps/frappe/frappe/website/doctype/blog_post/blog_post.py +102,Posts by {0},Publicaciones por {0}
apps/frappe/frappe/website/doctype/blog_post/blog_post.py +106,Posts by {0},Publicaciones por {0}
apps/frappe/frappe/core/doctype/doctype/doctype.py +198,Series {0} already used in {1},Serie {0} ya se utiliza en {1}
DocType: Report,Report Manager,Administrador de informes
DocType: Custom DocPerm,Report,Informe
@@ -509,16 +509,16 @@ apps/frappe/frappe/www/list.html +3,{0} List,Listado: {0}
DocType: DocType,Is Submittable,Es presentable--
DocType: System Settings,Disable Standard Email Footer,Desactivar pie de página estandar en Email
DocType: Blog Post,"Description for listing page, in plain text, only a couple of lines. (max 140 characters)","Descripción de la página perfil, en texto plano, sólo un par de líneas. (máx. 140 caracteres)"
apps/frappe/frappe/core/doctype/doctype/doctype.py +715,{0} cannot be set for Single types,{0} no se puede establecer para los tipos individuales
apps/frappe/frappe/core/doctype/doctype/doctype.py +719,{0} cannot be set for Single types,{0} no se puede establecer para los tipos individuales
apps/frappe/frappe/printing/page/print_format_builder/print_format_builder.js +600,Select Table Columns for {0},Seleccionar columnas de tabla para {0}
DocType: Workflow State,cog,diente
DocType: Custom Field,Select the label after which you want to insert new field.,Seleccione la etiqueta después de la cual desea insertar el nuevo campo .
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +132,"document type..., e.g. customer","Tipo de documento ..., por ejemplo, al cliente"
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +135,"document type..., e.g. customer","Tipo de documento ..., por ejemplo, al cliente"
apps/frappe/frappe/public/js/frappe/form/link_selector.js +22,Select {0},Seleccione {0}
DocType: Property Setter,Property Setter,Establecer prioridad--
DocType: Website Settings,"Show title in browser window as ""Prefix - title""",Mostrar título en la ventana del navegador como &quot;Prefijo - título&quot;
DocType: File,Attached To DocType,Asociado A DocType
apps/frappe/frappe/model/base_document.py +535,Row #{0}:,Fila # {0}:
apps/frappe/frappe/model/base_document.py +534,Row #{0}:,Fila # {0}:
apps/frappe/frappe/utils/response.py +134,You need to be logged in and have System Manager Role to be able to access backups.,"Necesitas estar conectado y tener la función de Administrador del Sistema, para poder tener acceso a las copias de seguridad ."
DocType: Website Settings,Title Prefix,Prefijo del Título
DocType: DocField,Section Break,Salto de sección
@@ -527,7 +527,7 @@ DocType: Print Settings,PDF Settings,Configuración de PDF
apps/frappe/frappe/templates/includes/login/login.js +193,Oops! Something went wrong,Oups! Algo salió mal
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +54,For ranges,Por rangos
DocType: Web Form,Select DocType,Seleccione tipo de documento
apps/frappe/frappe/public/js/legacy/form.js +776,Permanently Submit {0}?,Presentar permanentemente {0}?
apps/frappe/frappe/public/js/legacy/form.js +751,Permanently Submit {0}?,Presentar permanentemente {0}?
DocType: Email Account,"e.g. ""Support"", ""Sales"", ""Jerry Yang""","por ejemplo ""Soporte "","" Ventas "","" Jerry Yang """
apps/frappe/frappe/config/setup.py +209,"Actions for workflow (e.g. Approve, Cancel).","Acciones para los flujos de trabajo (por ejemplo: Aprobar, Cancelar)."
DocType: Communication,Feedback,Comentarios


+ 254
- 248
frappe/translations/es.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 183
- 177
frappe/translations/et.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 183
- 177
frappe/translations/fa.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 183
- 177
frappe/translations/fi.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/fr.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 183
- 177
frappe/translations/gu.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 137
- 139
frappe/translations/he.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 183
- 177
frappe/translations/hi.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 183
- 177
frappe/translations/hr.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 261
- 255
frappe/translations/hu.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 183
- 177
frappe/translations/id.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 182
- 176
frappe/translations/is.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 189
- 183
frappe/translations/it.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 183
- 177
frappe/translations/ja.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 185
- 179
frappe/translations/km.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/kn.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/ko.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/ku.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/lo.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/lt.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/lv.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/mk.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/ml.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/mr.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/ms.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/my.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 186
- 180
frappe/translations/nl.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 186
- 180
frappe/translations/no.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/pl.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/ps.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 102
- 103
frappe/translations/pt-BR.csv Datei anzeigen

@@ -8,7 +8,7 @@ DocType: Workflow State,pause,pausar
DocType: User,Facebook Username,Usuário do Facebook
DocType: System Settings,Note: Multiple sessions will be allowed in case of mobile device,Observação: Serão permitidas múltiplas sessões no caso de dispositivo móvel
apps/frappe/frappe/email/queue.py +210,Cannot send this email. You have crossed the sending limit of {0} emails for this month.,Não é possível enviar este email. Você excedeu o limite de envio de {0} emails para este mês.
apps/frappe/frappe/public/js/legacy/form.js +776,Permanently Submit {0}?,Confirmar Permanentemente {0} ?
apps/frappe/frappe/public/js/legacy/form.js +751,Permanently Submit {0}?,Confirmar Permanentemente {0} ?
DocType: Workflow,If Checked workflow status will not override status in list view,Uma vez selecionado o status do fluxo de trabalho não sobrescreverá o status do documentos na visualização da lista
apps/frappe/frappe/client.py +280,Invalid file path: {0},Caminho de arquivo inválido: {0}
DocType: Workflow State,eye-open,olho aberto
@@ -24,7 +24,7 @@ apps/frappe/frappe/config/core.py +42,Logs,Logs
DocType: Custom DocPerm,This role update User Permissions for a user,Este papel arualiza Permissões do Usuário para um usuário
apps/frappe/frappe/public/js/frappe/model/model.js +507,Rename {0},Mudar o nome {0}
DocType: Workflow State,zoom-out,diminuir zoom
apps/frappe/frappe/public/js/legacy/form.js +67,Cannot open {0} when its instance is open,Não é possível abrir {0} quando sua instância está aberta
apps/frappe/frappe/public/js/legacy/form.js +66,Cannot open {0} when its instance is open,Não é possível abrir {0} quando sua instância está aberta
apps/frappe/frappe/model/document.py +930,Table {0} cannot be empty,Tabela {0} não pode ser vazio
apps/frappe/frappe/public/js/frappe/views/reports/grid_report.js +852,With Ledgers,Com Razões
apps/frappe/frappe/public/js/frappe/views/image/image_view.js +15,Images,Imagens
@@ -34,19 +34,19 @@ apps/frappe/frappe/model/document.py +904,Beginning with,Começando com
apps/frappe/frappe/core/page/data_import_tool/exporter.py +52,Data Import Template,Modelo de importação de dados
apps/frappe/frappe/public/js/frappe/model/model.js +31,Parent,Parente
DocType: About Us Settings,"""Team Members"" or ""Management""",&quot;Membros da Equipe&quot; ou &quot;Gerenciamento&quot;
apps/frappe/frappe/core/doctype/doctype/doctype.py +453,Default for 'Check' type of field must be either '0' or '1',"Padrão para ""Verificar"" o tipo de campo deve ser '0' ou '1'"
apps/frappe/frappe/core/doctype/doctype/doctype.py +457,Default for 'Check' type of field must be either '0' or '1',"Padrão para ""Verificar"" o tipo de campo deve ser '0' ou '1'"
DocType: Email Account,Enable Incoming,Ativar Entrada
apps/frappe/frappe/www/login.html +22,Email Address,Endereço de Email
DocType: Communication,Unread Notification Sent,Notificação de mensagem não lida enviada
apps/frappe/frappe/public/js/frappe/misc/tools.js +8,Export not allowed. You need {0} role to export.,Exportação não é permitido . Você precisa da função {0} para exportar .
DocType: Email Group,Email Group,Grupo de Emails
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +460,Not Like,Não Parecido
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +479,Not Like,Não Parecido
apps/frappe/frappe/config/setup.py +220,"Change field properties (hide, readonly, permission etc.)","Alterar as propriedades do campo (esconder , readonly , permissão etc )"
DocType: Workflow State,lock,trancar
apps/frappe/frappe/config/website.py +78,Settings for Contact Us Page.,Configurações da Página Fale Conosco.
apps/frappe/frappe/core/doctype/user/user.py +877,Administrator Logged In,Administrador logou-se
DocType: Contact Us Settings,"Contact options, like ""Sales Query, Support Query"" etc each on a new line or separated by commas.","Opções de contato, como ""Perguntas sobre Vendas, Perguntas de suporte"", etc cada uma em uma nova linha ou separadas por vírgulas."
apps/frappe/frappe/public/js/frappe/form/control.js +1895,Insert,Insert
apps/frappe/frappe/public/js/frappe/form/control.js +1896,Insert,Insert
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +54,For ranges,Para faixas
DocType: Workflow State,indent-right,indentar à direita
apps/frappe/frappe/public/js/frappe/misc/pretty_date.js +46,1 minute ago,1 minuto atrás
@@ -83,11 +83,11 @@ DocType: OAuth Bearer Token,Refresh Token,Token de Atualização
apps/frappe/frappe/email/doctype/newsletter/newsletter.py +35,Newsletter has already been sent,O Boletim Informativo já foi enviado
apps/frappe/frappe/core/report/permitted_documents_for_user/permitted_documents_for_user.py +33,Please specify user,"Por favor, especifique usuário"
DocType: Email Unsubscribe,Email Unsubscribe,Cancelar inscrição de email
apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.js +504,The first user will become the System Manager (you can change this later).,O primeiro usuário será o System Manager (você pode mudar isso mais tarde).
apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.js +516,The first user will become the System Manager (you can change this later).,O primeiro usuário será o System Manager (você pode mudar isso mais tarde).
,App Installer,Instalador de Aplicativos
apps/frappe/frappe/public/js/frappe/upload.js +296,Uploading...,Carregando...
DocType: Email Domain,Email Domain,Domínio de Email
apps/frappe/frappe/core/doctype/doctype/doctype.py +698,{0}: Cannot set Import without Create,{0}: Não é possível definir Importação sem Criar
apps/frappe/frappe/core/doctype/doctype/doctype.py +702,{0}: Cannot set Import without Create,{0}: Não é possível definir Importação sem Criar
apps/frappe/frappe/public/js/frappe/views/reports/reportview.js +861,Drag to sort columns,Arraste para classificar colunas
apps/frappe/frappe/printing/page/print_format_builder/print_format_builder_column_selector.html +2,Widths can be set in px or %.,Larguras podem ser definidas em px ou %.
apps/frappe/frappe/public/js/frappe/form/print.js +101,Start,Iniciar
@@ -96,7 +96,7 @@ DocType: Portal Settings,Standard Sidebar Menu,Menu Lateral Padrão
apps/frappe/frappe/core/doctype/file/file.py +167,Cannot delete Home and Attachments folders,Não é possível excluir pastas Inicial e Anexos
apps/frappe/frappe/config/desk.py +19,Files,Arquivos
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +6,Permissions get applied on Users based on what Roles they are assigned.,As permissões são aplicadas em usuários com base nas funções que lhe são atribuídas.
apps/frappe/frappe/public/js/frappe/views/communication.js +459,You are not allowed to send emails related to this document,Você não tem permissão para enviar emails relacionados a este documento
apps/frappe/frappe/public/js/frappe/views/communication.js +460,You are not allowed to send emails related to this document,Você não tem permissão para enviar emails relacionados a este documento
apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +238,Reqd,Solicitado
apps/frappe/frappe/core/doctype/communication/email.py +263,Unable to find attachment {0},Incapaz de encontrar o anexo {0}
apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +226,Assign a permission level to the field.,Atribuir um nível de permissão para o campo.
@@ -121,7 +121,6 @@ DocType: Workflow State,headphones,fones de ouvido
DocType: Email Account,e.g. replies@yourcomany.com. All replies will come to this inbox.,eg replies@yourcomany.com. Todas as respostas virão a esta caixa de entrada.
apps/frappe/frappe/templates/includes/login/login.js +36,Valid email and name required,É necessário email válido e nome
DocType: DocType,Hide Heading,Ocultar Título
apps/frappe/frappe/public/js/frappe/form/templates/form_links.html +2,Related Documents,Documentos Relacionados
DocType: Workflow State,remove-circle,remove-círculo
DocType: Contact,Is Primary Contact,É o contato principal
apps/frappe/frappe/config/website.py +68,Javascript to append to the head section of the page.,Javascript para acrescentar ao cabeçalho da página.
@@ -132,7 +131,7 @@ apps/frappe/frappe/model/db_schema.py +563,Fieldname {0} cannot have special cha
apps/frappe/frappe/config/setup.py +121,Update many values at one time.,Atualizar muitas informações de uma só vez.
apps/frappe/frappe/model/document.py +538,Error: Document has been modified after you have opened it,Erro: O documento foi modificado depois de aberto
apps/frappe/frappe/core/doctype/communication/feed.py +63,{0} logged out: {1},{0} deslogado: {1}
apps/frappe/frappe/core/doctype/doctype/doctype.py +719,{0}: Cannot set Assign Submit if not Submittable,{0}: Não é possível definir atributo Enviar se não pode ser enviado
apps/frappe/frappe/core/doctype/doctype/doctype.py +723,{0}: Cannot set Assign Submit if not Submittable,{0}: Não é possível definir atributo Enviar se não pode ser enviado
apps/frappe/frappe/desk/page/chat/chat.js +54,Message from {0},Mensagem do {0}
DocType: Newsletter,Newsletter,Boletim Informativo
DocType: Web Form,Button Help,Botão de Ajuda
@@ -142,7 +141,7 @@ DocType: Address Template,System Manager,Administrador do Sistema
DocType: Dropbox Settings,Allow Dropbox Access,Permitir Acesso Dropbox
DocType: Workflow State,plus-sign,sinal de mais
apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.py +24,Setup already complete,Configuração já está concluída
apps/frappe/frappe/__init__.py +890,App {0} is not installed,App {0} não está instalado
apps/frappe/frappe/__init__.py +889,App {0} is not installed,App {0} não está instalado
DocType: Workflow State,Refresh,Atualizar
apps/frappe/frappe/public/js/frappe/ui/base_list.js +76,Nothing to show,Nada para mostrar
apps/frappe/frappe/public/js/frappe/model/model.js +24,Liked By,Gostou por
@@ -158,14 +157,14 @@ apps/frappe/frappe/printing/page/print_format_builder/print_format_builder_start
DocType: Customize Form,Is Table,É Tabela
DocType: Website Settings,Set Banner from Image,Definir imagem como banner
apps/frappe/frappe/templates/emails/new_user.html +3,A new account has been created for you at {0},Uma nova conta foi criada para você em {0}
apps/frappe/frappe/public/js/frappe/views/communication.js +448,Enter Email Recipient(s),Digite email do Destinatário(s)
apps/frappe/frappe/public/js/frappe/views/communication.js +449,Enter Email Recipient(s),Digite email do Destinatário(s)
apps/frappe/frappe/utils/bot.py +83,Can't identify open {0}. Try something else.,Não é possível identificar aberto {0}. Tente outra coisa.
apps/frappe/frappe/website/doctype/web_form/templates/web_form.html +355,Your information has been submitted,Suas informações foram enviadas
apps/frappe/frappe/core/doctype/user/user.py +292,User {0} cannot be deleted,O usuário {0} não pode ser excluído
apps/frappe/frappe/public/js/frappe/request.js +113,Another transaction is blocking this one. Please try again in a few seconds.,"Outra transação está bloqueando essa. Por favor, tente novamente em alguns segundos."
DocType: DocType,App,Aplicativo
DocType: Communication,Attachment,Anexos
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +136,module name...,nome do módulo ...
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +139,module name...,nome do módulo ...
DocType: Custom Field,Fieldname,Nome do Campo
DocType: User,Tile,Telha
apps/frappe/frappe/templates/includes/login/login.js +106,Verifying...,Verificando...
@@ -193,12 +192,12 @@ apps/frappe/frappe/public/js/frappe/form/footer/timeline.js +431,{0} from {1} to
DocType: Web Form,Amount Based On Field,Total Baseado no Campo
apps/frappe/frappe/core/doctype/docshare/docshare.py +34,User is mandatory for Share,Usuário é obrigatória para Partilhar
DocType: Web Form,Allow Incomplete Forms,Permitir Formulários Incompletos
apps/frappe/frappe/model/base_document.py +470,{0} must be set first,{0} deve ser definida primeiro
apps/frappe/frappe/model/base_document.py +469,{0} must be set first,{0} deve ser definida primeiro
apps/frappe/frappe/utils/password_strength.py +31,"Use a few words, avoid common phrases.","Use algumas palavras, evite frases comuns."
apps/frappe/frappe/core/page/data_import_tool/exporter.py +65,"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.","Se você estiver fazendo upload de novos registros, a coluna ""Naming Series"" torna-se obrigatória, se presente."
apps/frappe/frappe/core/doctype/doctype/doctype.py +280,DocType can only be renamed by Administrator,DocType só pode ser renomeado pelo Administrador
apps/frappe/frappe/public/js/frappe/form/footer/timeline.js +442,changed value of {0},mudou o valor de {0}
apps/frappe/frappe/core/doctype/doctype/doctype.py +505,Fold can not be at the end of the form,Fold não pode ser no final da forma
apps/frappe/frappe/core/doctype/doctype/doctype.py +509,Fold can not be at the end of the form,Fold não pode ser no final da forma
DocType: Communication,Bounced,Bounced
DocType: Deleted Document,Deleted Name,Nome Excluído
apps/frappe/frappe/config/setup.py +14,System and Website Users,Usuários do sistema e do site
@@ -209,7 +208,7 @@ apps/frappe/frappe/public/js/frappe/ui/toolbar/toolbar.js +234,"Your download is
apps/frappe/frappe/www/feedback.html +23,Your rating: ,Seu rating:
DocType: Print Settings,"Always add ""Draft"" Heading for printing draft documents","Sempre adicionar ""Rascunho"" no cabeçalho para impressão de documentos não enviados"
DocType: About Us Settings,Website Manager,Administrador do Site
apps/frappe/frappe/core/doctype/doctype/doctype.py +429,Field {0} in row {1} cannot be hidden and mandatory without default,"O campo {0} na linha {1} não pode ser escondido e obrigatória , sem padrão"
apps/frappe/frappe/core/doctype/doctype/doctype.py +433,Field {0} in row {1} cannot be hidden and mandatory without default,"O campo {0} na linha {1} não pode ser escondido e obrigatória , sem padrão"
DocType: Print Settings,Send document web view link in email,Enviar link no email para visualizar o documento online
DocType: Currency,"Sub-currency. For e.g. ""Cent""",Sub-moeda. Por exemplo &quot;Centavo&quot;
DocType: Letter Head,Check this to make this the default letter head in all prints,Marque esta opção para tornar este o cabeçalho padrão em todas as impressões
@@ -219,18 +218,18 @@ DocType: Version,Version,Versão
DocType: User,Fill Screen,Preencher Tela
apps/frappe/frappe/core/page/data_import_tool/data_import_main.html +67,1. Select File,1. Selecionar arquivo
apps/frappe/frappe/public/js/frappe/form/grid.js +599,Edit via Upload,Editar via Upload
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +132,"document type..., e.g. customer","Tipo de documento ..., por exemplo: cliente"
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +135,"document type..., e.g. customer","Tipo de documento ..., por exemplo: cliente"
DocType: Workflow State,barcode,Código de barras
apps/frappe/frappe/config/setup.py +232,Add your own translations,Adicione suas próprias traduções
DocType: About Us Team Member,About Us Team Member,Sobre Nós - Membros da Equipe
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +5,"Permissions are set on Roles and Document Types (called DocTypes) by setting rights like Read, Write, Create, Delete, Submit, Cancel, Amend, Report, Import, Export, Print, Email and Set User Permissions.","As permissões são definidas em Funções e Tipos de Documentos (chamados Doctypes ) , definindo direitos como Ler, Escrever, Criar, Deletar, Enviar, Cancelar, Corrigir, Reportar, Importar, Exportar, Imprimir, Email e Definir Permissões de Usuário."
apps/frappe/frappe/core/page/user_permissions/user_permissions.js +19,"Apart from Role based Permission Rules, you can apply User Permissions based on DocTypes.","Além de função com base em regras de permissão, você pode aplicar permissões de usuário baseado em doctypes ."
apps/frappe/frappe/core/doctype/doctype/doctype.py +550,Image field must be a valid fieldname,Campo de imagem deve ser um nome de campo válido
apps/frappe/frappe/core/doctype/doctype/doctype.py +554,Image field must be a valid fieldname,Campo de imagem deve ser um nome de campo válido
DocType: Property Setter,ID (name) of the entity whose property is to be set,ID (nome) da entidade cuja propriedade é para ser definida
DocType: Website Settings,Website Theme Image Link,Link da Imagem do Tema do Site
DocType: Web Form,Sidebar Items,Itens da barra lateral
apps/frappe/frappe/core/report/permitted_documents_for_user/permitted_documents_for_user.js +30,Show Permissions,Mostrar Permissões
apps/frappe/frappe/core/doctype/doctype/doctype.py +570,Timeline field must be a Link or Dynamic Link,Campo Timeline deve ser um link ou link dinâmico
apps/frappe/frappe/core/doctype/doctype/doctype.py +574,Timeline field must be a Link or Dynamic Link,Campo Timeline deve ser um link ou link dinâmico
apps/frappe/frappe/public/js/frappe/form/multi_select_dialog.js +53,Date Range,Intervalo entre datas
DocType: About Us Settings,Introduce your company to the website visitor.,Apresente sua empresa para o visitante do site.
apps/frappe/frappe/public/js/frappe/form/workflow.js +116,To,Para
@@ -248,11 +247,11 @@ DocType: Print Format,Style Settings,Configurações de Estilo
DocType: Contact,Sales Manager,Gerente de Vendas
apps/frappe/frappe/public/js/frappe/model/model.js +513,Rename,Renomear
DocType: Print Format,Format Data,Formato de dados
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +460,Like,Parecido
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +479,Like,Parecido
apps/frappe/frappe/core/page/user_permissions/user_permissions.js +251,Allow User,Permitir que o usuário
apps/frappe/frappe/config/setup.py +59,Check which Documents are readable by a User,Confira quais os documentos são lidos por um Usuário
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +216,use % as wildcard,usar % como coringa
apps/frappe/frappe/email/doctype/email_account/email_account.js +150,"Email Domain not configured for this account, Create one?","Domínio de email não configurado para esta conta, criar um?"
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +229,use % as wildcard,usar % como coringa
apps/frappe/frappe/email/doctype/email_account/email_account.js +151,"Email Domain not configured for this account, Create one?","Domínio de email não configurado para esta conta, criar um?"
DocType: User,Reset Password Key,Redefinição de senha chave
DocType: Email Account,Enable Auto Reply,Ativar resposta automática
DocType: Workflow State,zoom-in,aumentar zoom
@@ -280,7 +279,7 @@ DocType: Property Setter,Property Setter overrides a standard DocType or Field p
apps/frappe/frappe/core/doctype/user/user.py +689,Cannot Update: Incorrect / Expired Link.,Não é possível atualizar : Link incorreto / expirado.
apps/frappe/frappe/utils/password_strength.py +58,Better add a few more letters or another word,Recomenda-se adicionar mais algumas letras ou colocar uma palavra adicional
apps/frappe/frappe/core/doctype/user/user.py +405,Username {0} already exists,O nome de usuário {0} já existe
apps/frappe/frappe/core/doctype/doctype/doctype.py +725,{0}: Cannot set import as {1} is not importable,{0}: Não é possível definir importação como {1} se não é importável
apps/frappe/frappe/core/doctype/doctype/doctype.py +729,{0}: Cannot set import as {1} is not importable,{0}: Não é possível definir importação como {1} se não é importável
apps/frappe/frappe/contacts/doctype/address/address.py +110,There is an error in your Address Template {0},Há um erro no seu modelo de endereço {0}
DocType: Workflow State,hdd,hdd
DocType: ToDo,High,Alta
@@ -302,11 +301,11 @@ DocType: Website Theme,Google Font (Text),Google Font (Texto)
apps/frappe/frappe/email/doctype/email_unsubscribe/email_unsubscribe.py +31,{0} already unsubscribed for {1} {2},{0} já teve sua sua inscrição cancelada para {1} {2}
apps/frappe/frappe/core/page/permission_manager/permission_manager.js +327,Did not remove,Não removido
apps/frappe/frappe/desk/like.py +89,Liked,Gostou
apps/frappe/frappe/core/doctype/doctype/doctype.py +437,'In List View' not allowed for type {0} in row {1},'Visualização em Lista' não pode ser utilizado para o tipo {0} na linha {1}
apps/frappe/frappe/core/doctype/doctype/doctype.py +441,'In List View' not allowed for type {0} in row {1},'Visualização em Lista' não pode ser utilizado para o tipo {0} na linha {1}
DocType: Custom Field,Select the label after which you want to insert new field.,Selecione a etiqueta após a qual você deseja inserir um novo campo.
,Document Share Report,Relatório de Documentos Compartilhados
DocType: User,Last Login,Último Login
apps/frappe/frappe/core/doctype/doctype/doctype.py +597,Fieldname is required in row {0},Nome do campo é necessário na linha {0}
apps/frappe/frappe/core/doctype/doctype/doctype.py +600,Fieldname is required in row {0},Nome do campo é necessário na linha {0}
DocType: Custom Field,Adds a custom field to a DocType,Adiciona um campo personalizado para um Tipo de Documento (DocType)
DocType: File,Is Home Folder,É Home Folder
apps/frappe/frappe/core/page/user_permissions/user_permissions.js +140,Upload and Sync,Upload e Sincronizar
@@ -318,13 +317,13 @@ apps/frappe/frappe/config/setup.py +89,Log of error during requests.,Log de erro
apps/frappe/frappe/email/doctype/newsletter/newsletter.py +193,{0} has been successfully added to the Email Group.,"{0} foi adicionado com sucesso ao grupo de emails,"
apps/frappe/frappe/public/js/frappe/upload.js +364,Make file(s) private or public?,Tornar o(s) arquivo(s) privados ou públicos?
DocType: DocShare,Everyone,Todos
apps/frappe/frappe/core/doctype/doctype/doctype.py +672,"{0}: Only one rule allowed with the same Role, Level and {1}","{0}: Apenas uma regra de permissão com a mesma função, nível e {1}"
apps/frappe/frappe/core/doctype/doctype/doctype.py +676,"{0}: Only one rule allowed with the same Role, Level and {1}","{0}: Apenas uma regra de permissão com a mesma função, nível e {1}"
DocType: Email Queue,Add Unsubscribe Link,Adicionar link para cancelar inscrição
DocType: Custom DocPerm,Filter records based on User Permissions defined for a user,Filtrar registros com base em permissões de usuário definidos para um usuário
DocType: PayPal Settings,API Password,Senha da API
apps/frappe/frappe/custom/doctype/custom_field/custom_field.py +40,Fieldname not set for Custom Field,Fieldname não definida para campo personalizado
apps/frappe/frappe/public/js/frappe/model/model.js +22,Last Updated By,Última atualização por
apps/frappe/frappe/public/js/frappe/views/communication.js +509,There were errors while sending email. Please try again.,"Ocorreram erros durante o envio de email. Por favor, tente novamente."
apps/frappe/frappe/public/js/frappe/views/communication.js +520,There were errors while sending email. Please try again.,"Ocorreram erros durante o envio de email. Por favor, tente novamente."
DocType: Portal Settings,Portal Settings,Configurações do Portal
apps/frappe/frappe/core/doctype/communication/communication.js +117,Are you sure you want to relink this communication to {0}?,Você tem certeza que deseja relinkar a comunicação para {0}?
DocType: Email Group Member,Email Group Member,Membro do Grupo de Emails
@@ -339,32 +338,32 @@ DocType: Workflow State,play,jogar
apps/frappe/frappe/core/page/permission_manager/permission_manager.js +408,Did not add,Não adicionado
DocType: Contact Us Settings,Contact Us Settings,Configurações do Fale Conosco
DocType: Workflow State,text-width,largura de texto
apps/frappe/frappe/public/js/legacy/form.js +144,Maximum Attachment Limit for this record reached.,Limite máximo de anexo para este recorde atingido.
apps/frappe/frappe/public/js/legacy/form.js +142,Maximum Attachment Limit for this record reached.,Limite máximo de anexo para este recorde atingido.
DocType: Email Alert,View Properties (via Customize Form),Exibir Propriedades (via Personalizar Formulário)
DocType: Note Seen By,Note Seen By,Nota Vista por
DocType: Feedback Trigger,Check Communication,Checar Comunicação
apps/frappe/frappe/core/doctype/report/report.js +5,Report Builder reports are managed directly by the report builder. Nothing to do.,Os relatórios são gerenciados diretamente pelo sistema. Nada a fazer.
apps/frappe/frappe/email/doctype/newsletter/newsletter.py +163,Please verify your Email Address,"Por favor, verifique seu endereço de email"
apps/frappe/frappe/model/document.py +903,none of,nenhum
apps/frappe/frappe/public/js/frappe/views/communication.js +66,Send Me A Copy,Envie-me uma Cópia
apps/frappe/frappe/public/js/frappe/views/communication.js +65,Send Me A Copy,Envie-me uma Cópia
apps/frappe/frappe/core/page/user_permissions/user_permissions.js +127,Upload User Permissions,Publique as permissões de usuário
apps/frappe/frappe/config/website.py +7,Web Site,Web Site
apps/frappe/frappe/core/page/desktop/all_applications_dialog.html +8,Checked items will be shown on desktop,Itens marcados serão mostrado na área de trabalho
apps/frappe/frappe/core/doctype/doctype/doctype.py +715,{0} cannot be set for Single types,{0} não pode ser ajustada para os modelos únicos
apps/frappe/frappe/core/doctype/doctype/doctype.py +719,{0} cannot be set for Single types,{0} não pode ser ajustada para os modelos únicos
apps/frappe/frappe/public/js/frappe/views/kanban/kanban_board.js +858,Kanban Board {0} does not exist.,Painel Kanban {0} não existe.
apps/frappe/frappe/public/js/frappe/form/form_viewers.js +48,{0} are currently viewing this document,{0} está vendo atualmente este documento
apps/frappe/frappe/custom/doctype/customize_form/customize_form.py +151,{0} updated,{0} atualizado(a)
apps/frappe/frappe/core/doctype/doctype/doctype.py +705,Report cannot be set for Single types,Relatório não pode ser ajustada para os modelos únicos
apps/frappe/frappe/core/doctype/doctype/doctype.py +709,Report cannot be set for Single types,Relatório não pode ser ajustada para os modelos únicos
DocType: Email Account,Awaiting Password,Aguardando Senha
DocType: Address,Address Line 1,Endereço
apps/frappe/frappe/utils/data.py +441,Cent,Centavo
apps/frappe/frappe/config/setup.py +204,"States for workflow (e.g. Draft, Approved, Cancelled).","Status para o fluxo de trabalho (por exemplo, rascunho, aprovado, cancelado)."
DocType: Print Settings,Allow Print for Draft,Permitir impressão para rascunho
apps/frappe/frappe/public/js/legacy/form.js +357,Submit this document to confirm,Enviar este documento para confirmar
apps/frappe/frappe/public/js/legacy/form.js +338,Submit this document to confirm,Enviar este documento para confirmar
DocType: Contact,Unsubscribed,Inscrição Cancelada
apps/frappe/frappe/public/js/frappe/misc/rating_icons.html +2,Rating: ,Rating:
apps/frappe/frappe/website/js/web_form.js +259,Uploading files please wait for a few seconds.,"Fazendo upload de arquivos, por favor aguarde alguns segundos."
apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.js +497,Attach Your Picture,Anexe sua Imagem
apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.js +509,Attach Your Picture,Anexe sua Imagem
apps/frappe/frappe/core/doctype/version/version_view.html +69,Row Values Changed,Valores das Linhas Mudaram
DocType: Workflow State,Stop,Parar
DocType: Footer Item,Link to the page you want to open. Leave blank if you want to make it a group parent.,Link para a página que você deseja abrir. Deixe em branco se você quiser torná-lo um pai grupo.
@@ -373,7 +372,7 @@ DocType: Blogger,User ID of a Blogger,ID do usuário de um Blogger
apps/frappe/frappe/core/doctype/user/user.py +287,There should remain at least one System Manager,Não deve permanecer pelo menos um gestor de sistema
DocType: Print Format,Align Labels to the Left,Alinhar etiquetas à esquerda
DocType: Workflow State,circle-arrow-right,círculo de seta à direita
apps/frappe/frappe/public/js/legacy/form.js +73,Cannot open instance when its {0} is open,"Não é possível abrir instância , quando o seu {0} é aberto"
apps/frappe/frappe/public/js/legacy/form.js +72,Cannot open instance when its {0} is open,"Não é possível abrir instância , quando o seu {0} é aberto"
apps/frappe/frappe/desk/page/applications/applications.py +79,Queued for install,Na fila para instalação
DocType: Newsletter,Send Unsubscribe Link,Enviar link para cancelar inscrição
DocType: Report,Script Report,Relatório Script
@@ -433,7 +432,7 @@ apps/frappe/frappe/core/page/data_import_tool/data_import_tool.js +213,Import Fa
DocType: Email Account,Auto Reply Message,Resposta Automática
DocType: Contact,User ID,ID de Usuário
DocType: File,Lft,LFT
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +135,Open a module or tool,Abra um módulo ou ferramenta
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +138,Open a module or tool,Abra um módulo ou ferramenta
DocType: Communication,Delivery Status,Status da Entrega
DocType: Module Def,App Name,Nome do App
DocType: Workflow,"Field that represents the Workflow State of the transaction (if field is not present, a new hidden Custom Field will be created)","Campo que representa o status da transação no fluxo de trabalho (se o campo não estiver presente, um novo campo oculto personalizado será criado)"
@@ -441,7 +440,7 @@ apps/frappe/frappe/utils/oauth.py +194,Email not verified with {1},Email não ve
DocType: Help Article,Knowledge Base Contributor,Colaborador da Base de Conhecimento
DocType: Communication,Sent Read Receipt,Enviar Confirmação de Leitura
DocType: Email Queue,Unsubscribe Method,Método de Cancelamento de Inscrição
apps/frappe/frappe/public/js/frappe/views/communication.js +80,Select Languages,Selecionar Idiomas
apps/frappe/frappe/public/js/frappe/views/communication.js +79,Select Languages,Selecionar Idiomas
apps/frappe/frappe/integrations/doctype/razorpay_settings/razorpay_settings.py +78,Seems API Key or API Secret is wrong !!!,Parece que a chave API ou o segredo da API estão errados !!!
DocType: File,Attached To Name,Anexado Para Nome
apps/frappe/frappe/email/receive.py +95,Invalid User Name or Support Password. Please rectify and try again.,"Nome de usuário ou senha inválidos. Por favor, corrigir e tentar novamente."
@@ -454,7 +453,7 @@ DocType: Customize Form,Enter Form Type,Digite o Tipo de Formulário
apps/frappe/frappe/public/js/frappe/list/list_sidebar_stat.html +5,No records tagged.,Não há registros marcados.
apps/frappe/frappe/printing/page/print_format_builder/print_format_builder.js +466,Remove Field,Remover Campo
DocType: User,Send Password Update Notification,Enviar notificação de alteração de senha
apps/frappe/frappe/public/js/legacy/form.js +63,"Allowing DocType, DocType. Be careful!","Permitindo DocType , DocType . Tenha cuidado !"
apps/frappe/frappe/public/js/legacy/form.js +62,"Allowing DocType, DocType. Be careful!","Permitindo DocType , DocType . Tenha cuidado !"
apps/frappe/frappe/config/core.py +32,"Customized Formats for Printing, Email","Formatos personalizados para impressão, Email"
apps/frappe/frappe/public/js/frappe/desk.js +460,Updated To New Version,Atualizado para uma Nova Versão
DocType: Custom Field,Depends On,Depende de
@@ -532,7 +531,7 @@ apps/frappe/frappe/desk/page/applications/applications.py +112,Downloading App {
DocType: Communication,Feedback Request,Solicitação de Feedback
apps/frappe/frappe/www/login.html +30,Sign in,Entrar
DocType: System Settings,Backups,Backups
apps/frappe/frappe/public/js/frappe/form/layout.js +106,Hide Details,Ocultar Detalhes
apps/frappe/frappe/public/js/frappe/form/layout.js +133,Hide Details,Ocultar Detalhes
DocType: Workflow State,Tasks,Tarefas
DocType: Blog Settings,Blog Settings,Configurações do Blog
DocType: Workflow State,bullhorn,megafone
@@ -545,9 +544,8 @@ DocType: Website Settings,Hide Footer Signup,Esconder Link de Inscrição do Rod
apps/frappe/frappe/public/js/frappe/form/footer/timeline.js +421,cancelled this document,cancelou este documento
apps/frappe/frappe/core/doctype/report/report.js +16,Write a Python file in the same folder where this is saved and return column and result.,Gravar um arquivo Python na mesma pasta onde este é guardado e coluna de retorno e resultado.
DocType: DocType,Sort Field,Ordenar por campo
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +424,Edit Filter,Edit Filter
apps/frappe/frappe/core/doctype/doctype/doctype.py +411,Field {0} of type {1} cannot be mandatory,O campo {0} do tipo {1} não pode ser obrigatória
DocType: System Settings,"eg. If Apply User Permissions is checked for Report DocType but no User Permissions are defined for Report for a User, then all Reports are shown to that User","por exemplo. Se aplicar permissões do usuário está marcada para o relatório DocType mas não permissões de usuário são definidos para o relatório para um usuário, em seguida, todos os relatórios são mostrados para que o Usuário"
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +445,Edit Filter,Edit Filter
apps/frappe/frappe/core/doctype/doctype/doctype.py +415,Field {0} of type {1} cannot be mandatory,O campo {0} do tipo {1} não pode ser obrigatória
DocType: System Settings,Session Expiry Mobile,Duração da Sessão Móvel
apps/frappe/frappe/templates/includes/search_box.html +19,Search results for,Pesquisar resultados para
apps/frappe/frappe/public/js/frappe/views/reports/grid_report.js +850,Select To Download:,Selecione para Download:
@@ -591,7 +589,7 @@ apps/frappe/frappe/website/doctype/contact_us_settings/contact_us_settings.js +3
DocType: User,Block Modules,Módulos de blocos
apps/frappe/frappe/model/db_schema.py +141,Reverting length to {0} for '{1}' in '{2}'; Setting the length as {3} will cause truncation of data.,Revertendo comprimento para {0} para &#39;{1}&#39; em &#39;{2}&#39;; Definir o comprimento como {3} irá causar truncamento de dados.
DocType: Print Format,Custom CSS,CSS Personalizado
apps/frappe/frappe/model/rename_doc.py +375,Ignored: {0} to {1},Ignorados: {0} para {1}
apps/frappe/frappe/model/rename_doc.py +376,Ignored: {0} to {1},Ignorados: {0} para {1}
apps/frappe/frappe/config/setup.py +84,Log of error on automated events (scheduler).,Log de erro sobre eventos automatizados ( programador ) .
apps/frappe/frappe/utils/csvutils.py +75,Not a valid Comma Separated Value (CSV File),Não é um valor CSV válido (arquivo CSV)
DocType: Email Account,Default Incoming,Padrão de Entrada
@@ -628,26 +626,27 @@ apps/frappe/frappe/core/page/user_permissions/user_permissions.js +251,If Docume
apps/frappe/frappe/email/doctype/auto_email_report/auto_email_report.py +48,"%s is not a valid report format. Report format should \
one of the following %s",%s não é um formato válido de relatório. O formato do relatório deve ser um dos seguintes %s
DocType: Communication,Chat,Conversa ou Chat
apps/frappe/frappe/core/doctype/doctype/doctype.py +407,Fieldname {0} appears multiple times in rows {1},Fieldname {0} aparece várias vezes em linhas {1}
apps/frappe/frappe/core/doctype/doctype/doctype.py +408,Fieldname {0} appears multiple times in rows {1},Fieldname {0} aparece várias vezes em linhas {1}
apps/frappe/frappe/public/js/frappe/form/footer/timeline.js +460,{0} from {1} to {2} in row #{3},{0} de {1} para {2} na linha #{3}
DocType: Customize Form Field,Number of columns for a field in a Grid (Total Columns in a grid should be less than 11),O número de colunas para um campo numa Grelha (O Total de Colunas em um grid deve ser inferior a 11)
apps/frappe/frappe/www/login.html +93,Have an account? Login,Possui cadastro? Entre
apps/frappe/frappe/public/js/legacy/print_format.js +148,Unknown Print Format: {0},Formato de Impressão desconhecido: {0}
DocType: Workflow State,arrow-down,seta para baixo
apps/frappe/frappe/public/js/frappe/ui/tree.js +130,Collapse,Recolher
apps/frappe/frappe/model/delete_doc.py +161,User not allowed to delete {0}: {1},Usuário não tem permissão para excluir {0}: {1}
apps/frappe/frappe/model/delete_doc.py +162,User not allowed to delete {0}: {1},Usuário não tem permissão para excluir {0}: {1}
apps/frappe/frappe/public/js/frappe/model/model.js +21,Last Updated On,Última atualização em
DocType: Help Article,Likes,Likes
DocType: Website Settings,Top Bar,Barra superior
apps/frappe/frappe/core/page/modules_setup/modules_setup.html +32,Global Settings: Users will only be able to choose checked icons,Configurações Globais: Os Usuários serão capazes de escolher apenas ícones selecionados
apps/frappe/frappe/core/doctype/file/test_file.py +57,Home/Test Folder 2,Início / Teste pasta 2
DocType: System Settings,Ignore User Permissions If Missing,Ignorar permissões de usuário se ausente
apps/frappe/frappe/public/js/frappe/form/control.js +1016,Please save the document before uploading.,"Por favor, salve o documento antes de fazer upload."
apps/frappe/frappe/public/js/frappe/form/control.js +990,Please save the document before uploading.,"Por favor, salve o documento antes de fazer upload."
apps/frappe/frappe/public/js/frappe/ui/messages.js +214,Enter your password,Digite sua senha
DocType: Dropbox Settings,Dropbox Access Secret,Segredo de Acesso Dropbox
apps/frappe/frappe/core/doctype/doctype/doctype.py +503,Fold must come before a Section Break,Dobre deve vir antes de uma quebra de secção
apps/frappe/frappe/core/doctype/doctype/doctype.py +507,Fold must come before a Section Break,Dobre deve vir antes de uma quebra de secção
apps/frappe/frappe/public/js/frappe/model/meta.js +190,Last Modified By,Última Alteração por
DocType: Workflow State,hand-down,mão abaixo
apps/frappe/frappe/core/doctype/doctype/doctype.py +691,{0}: Cannot set Cancel without Submit,{0}: Não é possível definir Cancelar sem Submeter
apps/frappe/frappe/core/doctype/doctype/doctype.py +695,{0}: Cannot set Cancel without Submit,{0}: Não é possível definir Cancelar sem Submeter
apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.js +162,There were errors.,Ocorreram erros.
DocType: DocType,Is Submittable,Pode ser Enviado
apps/frappe/frappe/core/page/data_import_tool/exporter.py +265,Column Labels:,Rótulos de coluna:
@@ -658,7 +657,7 @@ DocType: Custom Script,Script,Script
apps/frappe/frappe/public/js/frappe/ui/toolbar/navbar.html +28,My Settings,Minhas Configurações
DocType: Desktop Icon,Force Show,Forçar Exibição
apps/frappe/frappe/auth.py +78,Invalid Request,Requisição Inválida
apps/frappe/frappe/public/js/frappe/form/layout.js +33,This form does not have any input,Este formulário não tem nenhum campo a ser preenchido
apps/frappe/frappe/public/js/frappe/form/layout.js +35,This form does not have any input,Este formulário não tem nenhum campo a ser preenchido
DocType: Footer Item,"Select target = ""_blank"" to open in a new page.","Select target = "" _blank"" para abrir em uma nova página."
apps/frappe/frappe/public/js/frappe/model/model.js +487,Permanently delete {0}?,Excluir Permanentemente {0} ?
apps/frappe/frappe/desk/page/applications/applications.js +45,Not Set,Não Definido
@@ -667,7 +666,7 @@ apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.js +131,Sit tight while y
DocType: Email Queue,Email Queue,Fila de Emails
apps/frappe/frappe/core/page/desktop/desktop.py +12,Add Employees to Manage Them,Adicione colaboradores para gerí-los
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +7,Roles can be set for users from their User page.,As funções podem ser definidas para os usuários através de sua página de Usuário.
apps/frappe/frappe/core/doctype/doctype/doctype.py +655,{0}: No basic permissions set,{0}: Nenhum conjunto de permissões básico
apps/frappe/frappe/core/doctype/doctype/doctype.py +659,{0}: No basic permissions set,{0}: Nenhum conjunto de permissões básico
apps/frappe/frappe/utils/backups.py +159,Download link for your backup will be emailed on the following email address: {0},Link de download para o seu backup será enviado por email no seguinte endereço de email: {0}
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +14,"Meaning of Submit, Cancel, Amend","Significado de Enviar, Cancelar, Corrigir"
apps/frappe/frappe/desk/doctype/todo/todo_list.js +7,To Do,Atribuições
@@ -676,7 +675,7 @@ DocType: File,Preview HTML,Pré-visualização de HTML
apps/frappe/frappe/desk/doctype/todo/todo.py +20,Assigned to {0}: {1},Atribuído para {0}: {1}
apps/frappe/frappe/public/js/frappe/views/kanban/kanban_board.js +129,Filters saved,Filtros salvos
DocType: DocField,Percent,Por cento
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +436,Please set filters,"Por favor, defina filtros"
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +435,Please set filters,"Por favor, defina filtros"
apps/frappe/frappe/public/js/frappe/form/linked_with.js +29,Linked With,Relacionado com
DocType: Website Settings,Landing Page,Página de chegada
apps/frappe/frappe/public/js/frappe/form/quick_entry.js +77,{0} Name,{0} Nome
@@ -691,10 +690,10 @@ apps/frappe/frappe/desk/page/applications/applications.js +175,Remove {0} and de
apps/frappe/frappe/desk/page/activity/activity_row.html +34,{0} {1} to {2},{0} {1} para {2}
DocType: User,Login After,Login após
DocType: Print Format,Monospace,Monospace
apps/frappe/frappe/core/doctype/doctype/doctype.py +459,Precision should be between 1 and 6,Precisão deve estar entre 1 e 6
apps/frappe/frappe/core/doctype/doctype/doctype.py +463,Precision should be between 1 and 6,Precisão deve estar entre 1 e 6
apps/frappe/frappe/patches/v6_19/comment_feed_communication.py +131,Assignment,Tarefa
DocType: Workflow State,step-backward,voltar
apps/frappe/frappe/utils/boilerplate.py +262,{app_title},{app_title}
apps/frappe/frappe/utils/boilerplate.py +263,{app_title},{app_title}
apps/frappe/frappe/integrations/doctype/dropbox_settings/dropbox_settings.py +200,Please set Dropbox access keys in your site config,Defina teclas de acesso Dropbox em sua configuração local
apps/frappe/frappe/email/doctype/email_unsubscribe/email_unsubscribe.py +16,Delete this record to allow sending to this email address,Excluir este registro para permitir o envio para esse endereço de email
apps/frappe/frappe/core/page/data_import_tool/exporter.py +66,Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,"Somente os campos obrigatórios são necessários para novos registros. Você pode excluir colunas não-obrigatórias, se desejar."
@@ -710,7 +709,7 @@ DocType: Custom DocPerm,Amend,Corrigir
DocType: File,Is Attachments Folder,É Pasta de Anexos
apps/frappe/frappe/templates/includes/login/login.js +49,Valid Login id required.,É necessário um usuário válido.
apps/frappe/frappe/desk/doctype/todo/todo.js +30,Re-open,Abrir Novamente
apps/frappe/frappe/model/rename_doc.py +359,Please select a valid csv file with data,"Por favor, selecione um arquivo csv com dados válidos"
apps/frappe/frappe/model/rename_doc.py +360,Please select a valid csv file with data,"Por favor, selecione um arquivo csv com dados válidos"
apps/frappe/frappe/core/doctype/docshare/docshare.py +56,{0} un-shared this document with {1},{0} descompartilhou este documento com {1}
apps/frappe/frappe/public/js/frappe/form/workflow.js +118,Document Status transition from {0} to {1} is not allowed,Transição Status do Documento de {0} para {1} não é permitido
DocType: DocType,"Make ""name"" searchable in Global Search","Tornar ""nome"" pesquisável na Busca Global"
@@ -720,7 +719,6 @@ apps/frappe/frappe/model/document.py +526,Record does not exist,Registro não ex
apps/frappe/frappe/core/doctype/version/version_view.html +13,Original Value,Valor Original
apps/frappe/frappe/utils/oauth.py +288,User {0} is disabled,Usuário {0} está desativado
apps/frappe/frappe/www/404.html +8,Page missing or moved,Página ausente ou mudou
apps/frappe/frappe/public/js/legacy/form.js +192,Edit {0} properties,Editar propriedades de {0}
apps/frappe/frappe/desk/form/load.py +46,Did not load,Não carregue
DocType: Tag Category,Doctypes,Doctypes
apps/frappe/frappe/desk/query_report.py +87,Query must be a SELECT,Consulta deve ser um SELECT
@@ -746,7 +744,7 @@ apps/frappe/frappe/integrations/doctype/ldap_settings/ldap_settings.py +32,Incor
apps/frappe/frappe/email/doctype/email_account/email_account_list.js +6,Default Sending and Inbox,Padrão para Envio e Recebimento
apps/frappe/frappe/core/doctype/file/file_list.js +84,Import .zip,Importar .zip
apps/frappe/frappe/core/report/feedback_ratings/feedback_ratings.js +21,Document ID,ID do Documento
apps/frappe/frappe/core/doctype/doctype/doctype.py +552,Image field must be of type Attach Image,Campo de imagem deve ser do tipo Anexar Imagem
apps/frappe/frappe/core/doctype/doctype/doctype.py +556,Image field must be of type Attach Image,Campo de imagem deve ser do tipo Anexar Imagem
apps/frappe/frappe/public/js/frappe/form/save.js +141,Mandatory fields required in {0},Os campos obrigatórios exigidos no {0}
apps/frappe/frappe/core/page/permission_manager/permission_manager.js +95,Reset Permissions for {0}?,Repor permissões para {0} ?
apps/frappe/frappe/core/doctype/version/version_view.html +32,Rows Removed,Linhas Excluídas
@@ -773,7 +771,7 @@ DocType: Customize Form,"Fields separated by comma (,) will be included in the "
apps/frappe/frappe/website/doctype/website_theme/website_theme.py +35,Please Duplicate this Website Theme to customize.,Por favor Duplicar este site Tema para personalizar.
apps/frappe/frappe/config/website.py +73,Settings for About Us Page.,Configurações para a Página Sobre Nós.
DocType: Error Snapshot,Error Snapshot,Snapshot de Erro
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +460,In,em
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +479,In,em
DocType: Email Alert,Value Change,Mudança de Valor
DocType: Standard Reply,Standard Reply,Resposta Padrão
apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +233,Width of the input box,Largura de entrada da caixa
@@ -784,9 +782,9 @@ apps/frappe/frappe/desk/doctype/bulk_update/bulk_update.js +8,"Field ""value"" i
DocType: Customize Form,Use this fieldname to generate title,Utilize este campo para gerar o título
apps/frappe/frappe/email/doctype/email_group/email_group.js +13,Import Email From,Importar Email do
apps/frappe/frappe/contacts/doctype/contact/contact.js +20,Invite as User,Convidar como Usuário
apps/frappe/frappe/public/js/frappe/views/communication.js +83,Select Attachments,Selecione os Anexos
apps/frappe/frappe/public/js/frappe/views/communication.js +82,Select Attachments,Selecione os Anexos
apps/frappe/frappe/website/js/web_form.js +293,There were errors. Please report this.,"Houveram erros. Por favor, reporte isso."
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +380,Loading Report,Carregando Relatório
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +379,Loading Report,Carregando Relatório
apps/frappe/frappe/public/js/frappe/form/templates/form_sidebar.html +46,Attach File,Anexar Arquivo
apps/frappe/frappe/templates/emails/password_update.html +1,Password Update Notification,Notificação de Atualização de Senha
apps/frappe/frappe/public/js/frappe/form/footer/assign_to.js +59,Assignment Complete,Atribuição Concluída
@@ -800,7 +798,7 @@ DocType: Custom Field,Default Value,Valor padrão
DocType: Workflow Document State,Update Field,Atualizar Campo
apps/frappe/frappe/desk/page/applications/applications.js +50,Regional Extensions,Extensões regionais
apps/frappe/frappe/core/doctype/communication/email.py +143,Leave this conversation,Deixar essa conversa
apps/frappe/frappe/model/base_document.py +466,Options not set for link field {0},Opções não definida para o campo link {0}
apps/frappe/frappe/model/base_document.py +465,Options not set for link field {0},Opções não definida para o campo link {0}
apps/frappe/frappe/core/page/data_import_tool/data_import_main.html +25,Unselect All,Desmarcar Todos
apps/frappe/frappe/custom/doctype/customize_form/customize_form.py +197,You cannot unset 'Read Only' for field {0},"Você não pode desabilitar ""Somente leitura"" para o campo {0}"
apps/frappe/frappe/core/page/data_import_tool/exporter.py +62,Please do not change the template headings.,"Por favor, não alterar as posições do modelo."
@@ -824,7 +822,7 @@ DocType: Authentication Log,Logout,Sair
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +26,Permissions at higher levels are Field Level permissions. All Fields have a Permission Level set against them and the rules defined at that permissions apply to the field. This is useful in case you want to hide or make certain field read-only for certain Roles.,As permissões em níveis mais elevados são permissões igualdade. Todos os campos têm um conjunto Nível de Permissão contra eles e as regras definidas em que as permissões se aplicam ao campo. Isso é útil no caso de você querer esconder ou fazer determinado campo somente leitura para certas funções.
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +38,"If these instructions where not helpful, please add in your suggestions on GitHub Issues.","Se estas instruções não forem úteis, dê sua sugestão no GitHub."
apps/frappe/frappe/core/doctype/error_snapshot/error_snapshot.html +32,Error Report,Reportar erro
apps/frappe/frappe/model/base_document.py +535,Row #{0}:,Linha # {0}:
apps/frappe/frappe/model/base_document.py +534,Row #{0}:,Linha # {0}:
apps/frappe/frappe/auth.py +245,Login not allowed at this time,Entrada não permitida neste momento
DocType: Async Task,Runtime,Runtime
DocType: DocType,Permissions Settings,Configurações de Permissões
@@ -840,7 +838,7 @@ DocType: DocField,Text,Texto
apps/frappe/frappe/config/setup.py +161,Standard replies to common queries.,Repostas padrões para perguntas comuns.
apps/frappe/frappe/email/doctype/email_account/email_account_list.js +14,Default Sending,Padrão Envio
DocType: Workflow State,volume-off,mudo
apps/frappe/frappe/public/js/frappe/form/footer/timeline_item.html +160,Liked by {0},Aprovado por {0}
apps/frappe/frappe/public/js/frappe/form/footer/timeline_item.html +161,Liked by {0},Aprovado por {0}
,Download Backups,Download de Backups
apps/frappe/frappe/core/doctype/file/test_file.py +43,Home/Test Folder 1,Início / Teste pasta 1
apps/frappe/frappe/core/page/data_import_tool/data_import_main.html +75,"Do not update, but insert new records.","Não atualizar, mas inserir novos registros."
@@ -895,11 +893,11 @@ apps/frappe/frappe/core/doctype/doctype/doctype.py +377,"DocType's name should s
DocType: Address,Accounts User,Usuário de Contas
DocType: Web Page,HTML for header section. Optional,HTML para a seção de cabeçalho. opcional
apps/frappe/frappe/public/js/frappe/form/templates/form_sidebar.html +13,This feature is brand new and still experimental,Esta funcionalidade é nova e ainda está em fase experimental
apps/frappe/frappe/model/rename_doc.py +364,Maximum {0} rows allowed,Máximo de {0} linhas permitido
apps/frappe/frappe/model/rename_doc.py +365,Maximum {0} rows allowed,Máximo de {0} linhas permitido
DocType: Email Unsubscribe,Global Unsubscribe,Mundial Unsubscribe
apps/frappe/frappe/utils/password_strength.py +157,This is a very common password.,Essa é uma senha muito comum.
apps/frappe/frappe/email/doctype/email_group/email_group.js +9,View,Ver
apps/frappe/frappe/public/js/frappe/views/communication.js +78,Select Print Format,Selecione o Formato de Impressão
apps/frappe/frappe/public/js/frappe/views/communication.js +77,Select Print Format,Selecione o Formato de Impressão
DocType: Portal Settings,Portal Menu,Portal menu
apps/frappe/frappe/public/js/frappe/ui/toolbar/search.js +356,Search for anything,Procurar por qualquer coisa
DocType: DocField,Print Hide,Ocultar Impressão
@@ -928,11 +926,11 @@ DocType: Error Snapshot,Snapshot View,Ver Snapshot
apps/frappe/frappe/email/doctype/newsletter/newsletter.py +100,Please save the Newsletter before sending,"Por favor, salve o Boletim Informativo antes de enviar"
DocType: Patch Log,List of patches executed,Lista de correções executado
apps/frappe/frappe/email/doctype/email_unsubscribe/email_unsubscribe.py +21,{0} already unsubscribed,{0} já teve sua inscrição removida
apps/frappe/frappe/public/js/frappe/views/communication.js +70,Communication Medium,Meio de comunicação
apps/frappe/frappe/public/js/frappe/views/communication.js +69,Communication Medium,Meio de comunicação
DocType: Website Settings,Banner HTML,Faixa HTML
apps/frappe/frappe/integrations/doctype/dropbox_settings/dropbox_settings.py +29,Queued for backup. It may take a few minutes to an hour.,Na fila para backup em até uma hora.
apps/frappe/frappe/config/integrations.py +53,Register OAuth Client App,Registrar App OAuth Cliente
apps/frappe/frappe/model/base_document.py +539,"{0} {1} cannot be ""{2}"". It should be one of ""{3}""","{0} {1} não pode ser ""{2}"". Deve pertencer a ""{3}"""
apps/frappe/frappe/model/base_document.py +538,"{0} {1} cannot be ""{2}"". It should be one of ""{3}""","{0} {1} não pode ser ""{2}"". Deve pertencer a ""{3}"""
apps/frappe/frappe/core/page/modules_setup/modules_setup.js +4,Show or Hide Desktop Icons,Mostrar ou ocultar ícones no desktop
apps/frappe/frappe/core/doctype/user/user.py +231,Password Update,Atualização de Senha
DocType: Workflow State,trash,lixo
@@ -966,11 +964,11 @@ apps/frappe/frappe/core/page/user_permissions/user_permissions.py +106,Please up
apps/frappe/frappe/modules/utils.py +202,App not found,App não encontrado
apps/frappe/frappe/core/doctype/communication/communication.py +52,Cannot create a {0} against a child document: {1},Não é possível criar um {0} contra um documento filho: {1}
apps/frappe/frappe/config/desk.py +32,Chat messages and other notifications.,Mensagens do chat e outras notificações.
apps/frappe/frappe/custom/doctype/custom_field/custom_field.py +72,Insert After cannot be set as {0},Depois de inserir não pode ser definido como {0}
apps/frappe/frappe/custom/doctype/custom_field/custom_field.py +76,Insert After cannot be set as {0},Depois de inserir não pode ser definido como {0}
apps/frappe/frappe/public/js/frappe/desk.js +134,Email Account setup please enter your password for: ,"Configuração de email, por favor informe sua senha para:"
DocType: Workflow State,hand-up,mão acima
DocType: Blog Settings,Writers Introduction,Introdução dos Escritores
apps/frappe/frappe/email/doctype/email_alert/email_alert.py +239,Error while evaluating Email Alert {0}. Please fix your template.,Erro ao avaliar Email de Alerta {0}. Corrija seu modelo.
apps/frappe/frappe/email/doctype/email_alert/email_alert.py +244,Error while evaluating Email Alert {0}. Please fix your template.,Erro ao avaliar Email de Alerta {0}. Corrija seu modelo.
apps/frappe/frappe/core/page/permission_manager/permission_manager.js +140,Select Document Type or Role to start.,Selecione o Tipo de Documento ou Função para começar.
DocType: Contact,Passive,Sem movimento
DocType: Contact,Accounts Manager,Gerente de Contas
@@ -1002,7 +1000,7 @@ DocType: Currency,"How should this currency be formatted? If not set, will use s
apps/frappe/frappe/core/page/permission_manager/permission_manager.js +252,Show User Permissions,Mostrar Permissões de Usuário
apps/frappe/frappe/utils/response.py +134,You need to be logged in and have System Manager Role to be able to access backups.,Você precisa estar conectado e ter permissão para ser capaz de acessar backups.
apps/frappe/frappe/core/page/usage_info/usage_info.html +22,Remaining,Remanescente
apps/frappe/frappe/public/js/legacy/form.js +139,Please save before attaching.,"Por favor, salve antes de anexar."
apps/frappe/frappe/public/js/legacy/form.js +137,Please save before attaching.,"Por favor, salve antes de anexar."
apps/frappe/frappe/custom/doctype/customize_form/customize_form.py +319,Fieldtype cannot be changed from {0} to {1} in row {2},FieldType não pode ser alterado a partir de {0} a {1} em linha {2}
apps/frappe/frappe/public/js/frappe/form/workflow.js +41,Workflow will start after saving.,Fluxo de trabalho será iníciado após salvar.
apps/frappe/frappe/public/js/frappe/form/templates/set_sharing.html +7,Can Share,Pode Compartilhar
@@ -1011,7 +1009,7 @@ DocType: Workflow State,step-forward,prosseguir
apps/frappe/frappe/core/doctype/user/user.js +42,Refreshing...,Atualizando...
DocType: System Settings,System Settings,Configurações do Sistema
apps/frappe/frappe/email/queue.py +454,This email was sent to {0} and copied to {1},Este email foi enviado para {0} e copiados para {1}
apps/frappe/frappe/public/js/frappe/form/control.js +1470,Create a new {0},Criar um(a) novo(a) {0}
apps/frappe/frappe/public/js/frappe/form/control.js +1432,Create a new {0},Criar um(a) novo(a) {0}
DocType: Workflow State,ok-sign,ok-sinal
DocType: Newsletter,Create and Send Newsletters,Criar e enviar email marketing
apps/frappe/frappe/public/js/frappe/views/reports/grid_report.js +309,From Date must be before To Date,A data inicial deve ser anterior a data final
@@ -1043,13 +1041,13 @@ DocType: Feedback Trigger,Email Field,Campo do Email
apps/frappe/frappe/core/doctype/docshare/docshare.py +49,{0} shared this document with {1},{0} compartilhou este documento com {1}
DocType: Website Settings,Brand Image,Imagem da Marca
apps/frappe/frappe/config/website.py +58,"Setup of top navigation bar, footer and logo.","Configuração de barra de navegação do topo, rodapé, e logotipo."
apps/frappe/frappe/core/doctype/doctype/doctype.py +651,For {0} at level {1} in {2} in row {3},Por {0} a nível {1} em {2} na linha {3}
apps/frappe/frappe/core/doctype/doctype/doctype.py +655,For {0} at level {1} in {2} in row {3},Por {0} a nível {1} em {2} na linha {3}
DocType: Address,Sales User,Usuário de Vendas
apps/frappe/frappe/config/setup.py +178,Drag and Drop tool to build and customize Print Formats.,Ferramenta de segure e arraste para construir e personalizar formatos de impressão.
apps/frappe/frappe/core/page/permission_manager/permission_manager.js +434,Set,Conjunto
DocType: Workflow State,align-right,Alinhar à direita
apps/frappe/frappe/core/doctype/file/file.py +211,Folder {0} is not empty,Pasta {0} não está vazio
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +269,Field {0} is not selectable.,O campo {0} não é selecionável.
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +286,Field {0} is not selectable.,O campo {0} não é selecionável.
DocType: System Settings,Session Expiry,Duração da Sessão
DocType: Bulk Update,Desk,Mesa
apps/frappe/frappe/core/doctype/report/report.js +8,Write a SELECT query. Note result is not paged (all data is sent in one go).,Escreva uma consulta SELECT. Resultado nota não é paginada (todos os dados são enviados de uma só vez).
@@ -1057,7 +1055,7 @@ apps/frappe/frappe/public/js/frappe/views/reports/reportview.js +131,Setup Auto
apps/frappe/frappe/public/js/frappe/form/templates/grid_form.html +25,Ctrl + Down,Ctrl + Seta para baixo
apps/frappe/frappe/utils/password_strength.py +153,This is a top-10 common password.,Essa é uma das 10 senhas mais comuns..
DocType: Workflow State,chevron-down,divisa-abaixo
apps/frappe/frappe/public/js/frappe/views/communication.js +494,Email not sent to {0} (unsubscribed / disabled),Email não enviado para {0} (inscrição cancelada / desativado)
apps/frappe/frappe/public/js/frappe/views/communication.js +495,Email not sent to {0} (unsubscribed / disabled),Email não enviado para {0} (inscrição cancelada / desativado)
DocType: Currency,Smallest Currency Fraction Value,Menor valor fracionado de moeda
apps/frappe/frappe/public/js/frappe/form/footer/assign_to.js +137,Assign To,Atribuir a
DocType: Web Page,Enable Comments,Ativação de comentários
@@ -1065,18 +1063,18 @@ DocType: User,Restrict user from this IP address only. Multiple IP addresses can
DocType: Website Theme,Google Font (Heading),Fonte do Google (cabeçalho)
apps/frappe/frappe/public/js/frappe/views/treeview.js +204,Select a group node first.,Selecione um nó de grupo primeiro.
DocType: Email Account,"Append as communication against this DocType (must have fields, ""Status"", ""Subject"")","Anexar como a comunicação contra este DocType (deve ter campos, ""status"", ""Assunto"")"
apps/frappe/frappe/model/base_document.py +602,Not allowed to change {0} after submission,Não é permitido alterar {0} após a apresentação
apps/frappe/frappe/model/base_document.py +601,Not allowed to change {0} after submission,Não é permitido alterar {0} após a apresentação
apps/frappe/frappe/core/page/usage_info/usage_info.html +10,Users,Usuários
DocType: Communication,Timeline field Name,Nome do campo da timeline
apps/frappe/frappe/core/page/permission_manager/permission_manager.js +136,Loading,Carregando
apps/frappe/frappe/config/integrations.py +43,"Enter keys to enable login via Facebook, Google, GitHub.","Enter para ativar o login via Facebook , Google, GitHub ."
apps/frappe/frappe/public/js/frappe/ui/tags.js +20,Add a tag,Inclua uma etiqueta
apps/frappe/frappe/public/js/frappe/form/control.js +1284,Please attach a file first.,"Por favor, anexar um arquivo primeiro"
apps/frappe/frappe/public/js/frappe/form/control.js +1250,Please attach a file first.,"Por favor, anexar um arquivo primeiro"
DocType: Website Slideshow Item,Website Slideshow Item,Item do Slideshow do Site
DocType: Portal Settings,Default Role at Time of Signup,Função padrão no momento da inscrição
DocType: DocType,Title Case,Caixa do Título
DocType: Blog Post,Email Sent,Email enviado
apps/frappe/frappe/public/js/frappe/views/communication.js +64,Send As Email,Enviar como email
apps/frappe/frappe/public/js/frappe/views/communication.js +63,Send As Email,Enviar como email
DocType: Website Theme,Link Color,Cor do link
apps/frappe/frappe/core/doctype/user/user.py +99,User {0} cannot be disabled,O usuário {0} não pode ser desativado
apps/frappe/frappe/core/doctype/user/user.py +866,"Dear System Manager,","Caro Administrador de Sistemas,"
@@ -1090,7 +1088,7 @@ DocType: Workflow State,file,arquivo
apps/frappe/frappe/www/login.html +108,Back to Login,Voltar para Login
DocType: File,File Size,Tamanho do arquivo
apps/frappe/frappe/website/doctype/web_form/web_form.py +399,You must login to submit this form,Você precisa estar logado para enviar este formulário
apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.js +463,"Select your Country, Time Zone and Currency","Escolha o seu País, Fuso Horário e Moeda"
apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.js +475,"Select your Country, Time Zone and Currency","Escolha o seu País, Fuso Horário e Moeda"
DocType: Async Task,Queued,Enfileiradas
apps/frappe/frappe/public/js/frappe/views/reports/grid_report.js +204,Invalid Filter: {0},Filtro inválido: {0}
DocType: OAuth Bearer Token,Access Token,Token de Acesso
@@ -1115,7 +1113,7 @@ DocType: Contact,Maintenance Manager,Gerente de Manutenção
DocType: Website Theme,Top Bar Text Color,Cor do texto da barra superior
apps/frappe/frappe/core/doctype/file/file.py +370,File '{0}' not found,Arquivo &#39;{0}&#39; não encontrado
DocType: User,Change Password,Alterar a senha
apps/frappe/frappe/public/js/frappe/form/control.js +509,Invalid Email: {0},Email inválido: {0}
apps/frappe/frappe/public/js/frappe/form/control.js +498,Invalid Email: {0},Email inválido: {0}
apps/frappe/frappe/desk/doctype/event/event.py +23,Event end must be after start,Evento final deve ser após o início
apps/frappe/frappe/desk/query_report.py +23,You don't have permission to get a report on: {0},Você não tem permissão para acessar um relatório sobre: {0}
DocType: Blog Post,Blog Post,Mensagem do Blog
@@ -1131,7 +1129,7 @@ apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +18
DocType: Workflow State,circle-arrow-left,círculo de seta para a esquerda
apps/frappe/frappe/sessions.py +156,Redis cache server not running. Please contact Administrator / Tech support,Servidor de cache Redis não está funcionando. Entre em contato com o Administrador de apoio / Tecnologia
apps/frappe/frappe/contacts/report/addresses_and_contacts/addresses_and_contacts.js +23,Party Name,Nome do Sujeito
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +129,Make a new record,Criar um novo registro
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +132,Make a new record,Criar um novo registro
DocType: LDAP Settings,LDAP First Name Field,Campo Primeiro Nome do LDAP
DocType: Custom Field,Field Description,Descrição do Campo
apps/frappe/frappe/model/naming.py +53,Name not set via Prompt,Nome não definido através Prompt
@@ -1162,7 +1160,7 @@ apps/frappe/frappe/www/update-password.html +111,Please enter the password,Por f
apps/frappe/frappe/www/printview.py +83,Not allowed to print cancelled documents,Não permitido para imprimir documentos cancelados
apps/frappe/frappe/core/page/data_import_tool/exporter.py +269,Info:,Info:
DocType: User,Send Notifications for Transactions I Follow,Enviar notificações para transações seguidas por mim
apps/frappe/frappe/core/doctype/doctype/doctype.py +694,"{0}: Cannot set Submit, Cancel, Amend without Write","{0}: Não é possível definir Enviar, Cancelar, Alterar sem Salvar"
apps/frappe/frappe/core/doctype/doctype/doctype.py +698,"{0}: Cannot set Submit, Cancel, Amend without Write","{0}: Não é possível definir Enviar, Cancelar, Alterar sem Salvar"
apps/frappe/frappe/public/js/frappe/form/footer/attachments.js +83,Are you sure you want to delete the attachment?,Tem certeza de que deseja excluir o anexo?
apps/frappe/frappe/public/js/frappe/form/save.js +11,Saving,Salvando
DocType: Print Settings,Print Style Preview,Estilo de visualização de impressão
@@ -1171,7 +1169,7 @@ DocType: Website Settings,Website Theme,Tema do Site
DocType: DocField,In List View,Mostrar na Visualização da Lista
apps/frappe/frappe/email/smtp.py +24,Invalid login or password,Login ou senha inválidos
apps/frappe/frappe/config/setup.py +237,Add custom javascript to forms.,Adicionar javascript personalizado aos formulários.
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +489,Sr No,Nº de série
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +488,Sr No,Nº de série
,Role Permissions Manager,Gestor de Permissões por Função
,User Permissions Manager,Gestor de Permissões de Usuário
DocType: Email Alert,Days Before or After,Dias Antes ou Após
@@ -1187,14 +1185,14 @@ apps/frappe/frappe/core/doctype/error_log/error_log_list.js +12,Clear Error Logs
DocType: Email Account,Notify if unreplied for (in mins),Informar se não for respondido em (minutos)
apps/frappe/frappe/public/js/frappe/list/list_renderer.js +497,2 days ago,Há 2 dias
apps/frappe/frappe/config/website.py +47,Categorize blog posts.,Categorizar posts.
apps/frappe/frappe/core/doctype/doctype/doctype.py +535,{{{0}}} is not a valid fieldname pattern. It should be {{field_name}}.,{{{0}}} não é padrão para nome de campo válido. Deve ser {{field_name}}.
apps/frappe/frappe/core/doctype/doctype/doctype.py +539,{{{0}}} is not a valid fieldname pattern. It should be {{field_name}}.,{{{0}}} não é padrão para nome de campo válido. Deve ser {{field_name}}.
apps/frappe/frappe/public/js/frappe/views/treeview.js +161,Add Child,Adicionar sub-item
apps/frappe/frappe/model/delete_doc.py +165,{0} {1}: Submitted Record cannot be deleted.,{0} {1}: Registro enviado não pode ser excluído.
apps/frappe/frappe/model/delete_doc.py +166,{0} {1}: Submitted Record cannot be deleted.,{0} {1}: Registro enviado não pode ser excluído.
apps/frappe/frappe/core/page/usage_info/usage_info.html +99,Backup Size,Tamanho do backup
apps/frappe/frappe/printing/page/print_format_builder/print_format_builder.js +460,Align Value,Alinhar Valor
apps/frappe/frappe/website/doctype/blog_post/blog_post.py +102,Posts by {0},Posts de {0}
apps/frappe/frappe/website/doctype/blog_post/blog_post.py +106,Posts by {0},Posts de {0}
apps/frappe/frappe/www/login.html +72,Don't have an account? Sign up,Não tem uma conta? Se inscreva
apps/frappe/frappe/core/doctype/doctype/doctype.py +721,{0}: Cannot set Assign Amend if not Submittable,{0}: Não é possível definir atributo Corrigir se não pode ser enviado
apps/frappe/frappe/core/doctype/doctype/doctype.py +725,{0}: Cannot set Assign Amend if not Submittable,{0}: Não é possível definir atributo Corrigir se não pode ser enviado
apps/frappe/frappe/core/page/user_permissions/user_permissions.js +14,Edit Role Permissions,Editar permissões de Função
DocType: Communication,Link DocType,Relacionar ao DocType
DocType: Social Login Keys,Social Login Keys,Login nas Redes Sociais
@@ -1255,7 +1253,7 @@ apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +227,Permissi
DocType: Contact Us Settings,Pincode,CEP
apps/frappe/frappe/core/page/data_import_tool/importer.py +81,Please make sure that there are no empty columns in the file.,"Por favor, certifique-se de que não existem colunas vazias no arquivo."
apps/frappe/frappe/utils/oauth.py +232,Please ensure that your profile has an email address,Verifique se o seu perfil tem um endereço de email
apps/frappe/frappe/core/doctype/doctype/doctype.py +455,Default for {0} must be an option,Padrão para {0} deve ser uma opção
apps/frappe/frappe/core/doctype/doctype/doctype.py +459,Default for {0} must be an option,Padrão para {0} deve ser uma opção
DocType: User,User Image,Imagem do Usuário
apps/frappe/frappe/email/queue.py +289,Emails are muted,Emails são silenciados
apps/frappe/frappe/public/js/frappe/form/templates/grid_form.html +25,Ctrl + Up,Ctrl + Seta para cima
@@ -1272,13 +1270,13 @@ apps/frappe/frappe/public/js/frappe/views/treeview.js +17,Tree view not availabl
DocType: Custom Field,Label Help,Ajuda sobre Etiquetas
apps/frappe/frappe/utils/password_strength.py +122,Dates are often easy to guess.,Datas são frequentemente fáceis de adivinhar.
DocType: User,These values will be automatically updated in transactions and also will be useful to restrict permissions for this user on transactions containing these values.,Esses valores serão atualizados automaticamente em transações e também serão úteis para restringir as permissões para este usuário em operações que contenham esses valores.
apps/frappe/frappe/model/rename_doc.py +377,** Failed: {0} to {1}: {2},** Falha: {0} para {1}: {2}
apps/frappe/frappe/model/rename_doc.py +378,** Failed: {0} to {1}: {2},** Falha: {0} para {1}: {2}
apps/frappe/frappe/core/page/data_import_tool/data_import_main.html +23,Select Mandatory,Selecionar Campos Obrigatórios
apps/frappe/frappe/public/js/frappe/ui/upload.html +4,Browse,Procurar
DocType: Async Task,Running,Correndo
apps/frappe/frappe/email/doctype/email_group/email_group.py +102,Please Upgrade to add more than {0} subscribers,"Por favor, atualize para adicionar mais de {0} assinantes"
DocType: Workflow State,hand-left,mão à esquerda
apps/frappe/frappe/core/doctype/doctype/doctype.py +468,Fieldtype {0} for {1} cannot be unique,FieldType {0} para {1} não pode ser exclusivo
apps/frappe/frappe/core/doctype/doctype/doctype.py +472,Fieldtype {0} for {1} cannot be unique,FieldType {0} para {1} não pode ser exclusivo
DocType: Workflow State,play-circle,jogo-círculo
apps/frappe/frappe/printing/page/print_format_builder/print_format_builder.js +82,Select Print Format to Edit,Selecione um formato de impressão para editar
DocType: Address,Shipping,Expedição
@@ -1306,7 +1304,7 @@ DocType: ToDo,ToDo,Lista de Atribuições
DocType: Workflow State,qrcode,QRCode
apps/frappe/frappe/www/login.html +34,Login with LDAP,Logar com LDAP
DocType: Web Form,Breadcrumbs,Breadcrumbs
apps/frappe/frappe/core/doctype/doctype/doctype.py +667,If Owner,Se proprietário
apps/frappe/frappe/core/doctype/doctype/doctype.py +671,If Owner,Se proprietário
DocType: Web Page,Website Sidebar,Menu Lateral do Site
DocType: Web Form,Show Sidebar,Mostrar menu lateral
apps/frappe/frappe/public/js/frappe/form/footer/assign_to.js +142,Complete By,Finalizar até
@@ -1316,7 +1314,7 @@ DocType: Website Settings,Top Bar Items,Itens da barra superior
DocType: Print Settings,Print Settings,Configurações de Impressão
DocType: DocType,Max Attachments,Máx. de Anexos
apps/frappe/frappe/config/website.py +93,Knowledge Base,Base de Conhecimento
apps/frappe/frappe/model/base_document.py +561,Value cannot be changed for {0},Valor não pode ser alterado para {0}
apps/frappe/frappe/model/base_document.py +560,Value cannot be changed for {0},Valor não pode ser alterado para {0}
DocType: Workflow State,"Style represents the button color: Success - Green, Danger - Red, Inverse - Black, Primary - Dark Blue, Info - Light Blue, Warning - Orange","Estilo representa a cor do botão: Sucesso - Verde, Perigo - Vermelho, Inverso - Preto, Primário - Azul Escuro, Informações - Azul Claro, Aviso - Laranja"
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +158,No Report Loaded. Please use query-report/[Report Name] to run a report.,"Não Relatório Loaded. Por favor, use-consulta do relatório / [Nome do relatório] para executar um relatório."
DocType: Workflow Transition,Workflow Transition,Transição do Fluxo de Trabalho
@@ -1335,6 +1333,7 @@ apps/frappe/frappe/permissions.py +397,Permission already set,Permissão já def
apps/frappe/frappe/core/doctype/docshare/docshare.py +47,{0} shared this document with everyone,{0} compartilhou este documento com todos
apps/frappe/frappe/desk/page/activity/activity_row.html +17,Commented on {0}: {1},Comentou sobre {0}: {1}
apps/frappe/frappe/core/page/user_permissions/user_permissions.js +248,These restrictions will apply for Document Types where 'Apply User Permissions' is checked for the permission rule and a field with this value is present.,Essas restrições serão aplicadas para tipos de documento onde &quot;Aplicar permissões de usuário &#39;está marcada para a regra de permissão e um campo com esse valor está presente.
apps/frappe/frappe/public/js/frappe/ui/filters/edit_filter.html +24,Apply,Aplicar
apps/frappe/frappe/integrations/utils.py +76,{0} Settings not found,{0} Configurações não encontradas
DocType: Module Def,Module Def,Módulo Def
apps/frappe/frappe/config/core.py +22,Pages in Desk (place holders),Páginas na Desk (suportes do lugar)
@@ -1363,8 +1362,8 @@ apps/frappe/frappe/core/page/data_import_tool/importer.py +49,Please do not chan
DocType: Contact,More Information,Mais Informações
DocType: Desktop Icon,Desktop Icon,Ícone da área de trabalho
apps/frappe/frappe/utils/nestedset.py +235,{0} {1} cannot be a leaf node as it has children,"{0} {1} não pode ser um nó de extremidade , uma vez que tem filhos"
apps/frappe/frappe/public/js/frappe/views/communication.js +336,Add Attachment,Anexar
apps/frappe/frappe/public/js/frappe/views/communication.js +68,Send Read Receipt,Enviar Confirmação de Leitura
apps/frappe/frappe/public/js/frappe/views/communication.js +337,Add Attachment,Anexar
apps/frappe/frappe/public/js/frappe/views/communication.js +67,Send Read Receipt,Enviar Confirmação de Leitura
DocType: Stripe Settings,Stripe Settings,Configurações do Stripe
DocType: Dropbox Settings,Dropbox Setup via Site Config,Configuração do Dropbox via Site Config
apps/frappe/frappe/www/login.py +64,Invalid Login Token,Inválido símbolo de logon
@@ -1428,7 +1427,7 @@ apps/frappe/frappe/config/setup.py +146,Add / Manage Email Accounts.,Adicionar /
apps/frappe/frappe/templates/emails/auto_reply.html +1,Thank you for your email,Obrigado pelo seu email
apps/frappe/frappe/core/doctype/user/user.py +868,Administrator accessed {0} on {1} via IP Address {2}.,Administrador acessada {0} em {1} através do endereço IP {2}.
apps/frappe/frappe/public/js/frappe/ui/filters/edit_filter.html +6,Equals,Igual
apps/frappe/frappe/core/doctype/doctype/doctype.py +449,Options 'Dynamic Link' type of field must point to another Link Field with options as 'DocType',"Opções 'Dynamic Link' tipo de campo deve apontar para um outro campo Ligação com opções como ""TipoDoc '"
apps/frappe/frappe/core/doctype/doctype/doctype.py +453,Options 'Dynamic Link' type of field must point to another Link Field with options as 'DocType',"Opções 'Dynamic Link' tipo de campo deve apontar para um outro campo Ligação com opções como ""TipoDoc '"
DocType: About Us Settings,Team Members Heading,Título da página Membros da Equipe
apps/frappe/frappe/utils/csvutils.py +35,Invalid CSV Format,Formato inválido de CSV
DocType: DocField,Do not allow user to change after set the first time,Não permitir que o usuário altere após definir o primeiro tempo
@@ -1436,7 +1435,7 @@ apps/frappe/frappe/public/js/frappe/upload.js +252,Private or Public?,Privada ou
DocType: Contact,Contact,Contato
DocType: Website Settings,Banner is above the Top Menu Bar.,A faixa está acima da barra de menu superior.
DocType: Razorpay Settings,API Secret,Segredo da API
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +859,Export Report: ,Exportar Relatório:
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +858,Export Report: ,Exportar Relatório:
apps/frappe/frappe/config/core.py +12,Models (building blocks) of the Application,Modelos (blocos de construção) do aplicativo
apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +105,Select Module,Selecione o Módulo
apps/frappe/frappe/sessions.py +29,Cache Cleared,Cache Limpo
@@ -1447,7 +1446,7 @@ DocType: Print Settings,PDF Settings,Configurações do PDF
DocType: Kanban Board Column,Column Name,Nome da coluna
DocType: Language,Based On,Baseado em
apps/frappe/frappe/printing/doctype/print_format/print_format.js +34,Make Default,Tornar padrão
apps/frappe/frappe/core/doctype/doctype/doctype.py +491,Fieldtype {0} for {1} cannot be indexed,FieldType {0} para {1} não pode ser indexado
apps/frappe/frappe/core/doctype/doctype/doctype.py +495,Fieldtype {0} for {1} cannot be indexed,FieldType {0} para {1} não pode ser indexado
DocType: Workflow State,Download,Baixar
DocType: Blog Post,Blog Intro,Introdução do Blog
DocType: DocField,Display Depends On,Visualização depende
@@ -1468,7 +1467,7 @@ DocType: Web Form,Amount,Total
apps/frappe/frappe/website/doctype/portal_settings/portal_settings.js +10,Restore to default settings?,Restaurar as configurações padrão?
apps/frappe/frappe/website/doctype/website_settings/website_settings.py +23,Invalid Home Page,Inválido Página Inicial
apps/frappe/frappe/public/js/frappe/views/reports/grid_report.js +170,Reset Filters,Restaurar Filtros
apps/frappe/frappe/core/doctype/doctype/doctype.py +684,{0}: Permission at level 0 must be set before higher levels are set,{0} : permissão no nível 0 deve ser definida antes de definir os níveis mais altos
apps/frappe/frappe/core/doctype/doctype/doctype.py +688,{0}: Permission at level 0 must be set before higher levels are set,{0} : permissão no nível 0 deve ser definida antes de definir os níveis mais altos
apps/frappe/frappe/desk/doctype/todo/todo.py +28,Assignment closed by {0},Atribuição fechado por {0}
DocType: Integration Request,Remote,Remoto
DocType: Integration Request,Remote,Remoto
@@ -1477,15 +1476,15 @@ apps/frappe/frappe/email/doctype/newsletter/newsletter.py +173,Confirm Your Emai
apps/frappe/frappe/www/login.html +42,Or login with,Ou faça login com
apps/frappe/frappe/desk/page/activity/activity_row.html +19,Communicated via {0} on {1}: {2},Comunicada via {0} em {1}: {2}
apps/frappe/frappe/core/doctype/communication/comment.py +85,{0} mentioned you in a comment in {1},{0} mencionou você em um comentário em {1}
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +138,e.g. (55 + 434) / 4 or =Math.sin(Math.PI/2)...,por exemplo (55 + 434) / 4 ou = Math.sin (Math.PI / 2) ...
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +141,e.g. (55 + 434) / 4 or =Math.sin(Math.PI/2)...,por exemplo (55 + 434) / 4 ou = Math.sin (Math.PI / 2) ...
DocType: Social Login Keys,GitHub Client ID,ID do Cliente do Github
DocType: DocField,Perm Level,Nível Permanente
apps/frappe/frappe/desk/doctype/event/event.py +54,Events In Today's Calendar,Eventos no calendário de hoje
apps/frappe/frappe/public/js/frappe/views/treeview.js +297,View List,Ver Lista
apps/frappe/frappe/public/js/frappe/form/control.js +739,Date must be in format: {0},A data deve estar no formato : {0}
apps/frappe/frappe/public/js/frappe/form/control.js +721,Date must be in format: {0},A data deve estar no formato : {0}
apps/frappe/frappe/www/feedback.html +90,Please give a rating.,"Por favor, atribua um rating."
apps/frappe/frappe/public/js/frappe/feedback.js +47,{0} Feedback Request,{0} Solicitação de Feedback
apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.js +493,The First User: You,O primeiro usuário: Você
apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.js +505,The First User: You,O primeiro usuário: Você
DocType: Translation,Source Text,Texto Original
apps/frappe/frappe/www/login.py +55,Missing parameters for login,Parâmetros que faltam para o login
DocType: Workflow State,folder-open,abrir pasta
@@ -1506,7 +1505,7 @@ DocType: Email Domain,domain name,nome de domínio
DocType: Kanban Board Column,Order,Pedido
DocType: Custom DocPerm,"JSON list of DocTypes used to apply User Permissions. If empty, all linked DocTypes will be used to apply User Permissions.","Lista JSON de doctypes usados para aplicar permissões de usuário. Se vazio, todas as doctypes vinculados serão usados para aplicar permissões de usuário."
DocType: Report,Ref DocType,DocType de Ref.
apps/frappe/frappe/core/doctype/doctype/doctype.py +696,{0}: Cannot set Amend without Cancel,{0}: Não é possível definir Amend sem Cancelar
apps/frappe/frappe/core/doctype/doctype/doctype.py +700,{0}: Cannot set Amend without Cancel,{0}: Não é possível definir Amend sem Cancelar
apps/frappe/frappe/public/js/frappe/form/templates/print_layout.html +22,Full Page,Página completa
DocType: DocType,Is Child Table,É Tabela Filho
apps/frappe/frappe/utils/csvutils.py +124,{0} must be one of {1},{0} deve fazer parte de {1}
@@ -1524,7 +1523,7 @@ DocType: Workflow Action,Workflow Action,Ação do Fluxo de Trabalho
DocType: Event,Send an email reminder in the morning,Enviar um email lembrete na parte da manhã
DocType: Blog Post,Published On,Publicado no
apps/frappe/frappe/website/doctype/web_form/web_form.py +342,Mandatory Information missing:,Informações obrigatórias ausente:
apps/frappe/frappe/core/doctype/doctype/doctype.py +488,Field '{0}' cannot be set as Unique as it has non-unique values,"O campo &#39;{0}&#39; não pode ser definido como único, pois tem valores não-exclusivos"
apps/frappe/frappe/core/doctype/doctype/doctype.py +492,Field '{0}' cannot be set as Unique as it has non-unique values,"O campo &#39;{0}&#39; não pode ser definido como único, pois tem valores não-exclusivos"
apps/frappe/frappe/client.py +140,Only 200 inserts allowed in one request,São permitidas somente 200 inserções por solicitação
DocType: Event,Repeat On,Repetir em
DocType: Communication,Marked As Spam,Marcado como spam
@@ -1544,7 +1543,7 @@ DocType: Email Account,Notifications and bulk mails will be sent from this outgo
apps/frappe/frappe/public/js/frappe/form/templates/form_sidebar.html +64,Currently Viewing,Atualmente Exibindo
apps/frappe/frappe/email/doctype/email_group/email_group.py +42,{0} subscribers added,{0} assinantes acrescentados
apps/frappe/frappe/public/js/frappe/ui/filters/edit_filter.html +9,Not In,Não Presente
apps/frappe/frappe/core/doctype/doctype/doctype.py +433,Max width for type Currency is 100px in row {0},Largura máxima para o tipo de moeda é 100px na linha {0}
apps/frappe/frappe/core/doctype/doctype/doctype.py +437,Max width for type Currency is 100px in row {0},Largura máxima para o tipo de moeda é 100px na linha {0}
apps/frappe/frappe/config/website.py +13,Content web page.,Conteúdo da Página Web
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +9,Add a New Role,Adicionar um Novo Papel
DocType: Deleted Document,Deleted Document,Documento Excluído
@@ -1552,7 +1551,7 @@ apps/frappe/frappe/templates/includes/login/login.js +193,Oops! Something went w
apps/frappe/frappe/config/core.py +37,Client side script extensions in Javascript,Extensões de script do lado do cliente em Javascript
DocType: User,Email Settings,Configurações de Email
apps/frappe/frappe/workflow/doctype/workflow/workflow.py +57,{0} not a valid State,{0} não é um status válido
apps/frappe/frappe/core/doctype/doctype/doctype.py +515,Search field {0} is not valid,Campo de pesquisa {0} não é válido
apps/frappe/frappe/core/doctype/doctype/doctype.py +519,Search field {0} is not valid,Campo de pesquisa {0} não é válido
DocType: Workflow State,ok-circle,ok-círculo
apps/frappe/frappe/utils/bot.py +150,You can find things by asking 'find orange in customers',"Você pode encontrar as coisas pedindo ""encontrar fulano em clientes"""
apps/frappe/frappe/core/doctype/user/user.py +172,Sorry! User should have complete access to their own record.,Desculpe! O usuário deve ter acesso completo ao seu próprio registro.
@@ -1590,7 +1589,7 @@ apps/frappe/frappe/model/document.py +540,Please refresh to get the latest docum
,Desktop,Área de trabalho
DocType: Web Form,Text to be displayed for Link to Web Page if this form has a web page. Link route will be automatically generated based on `page_name` and `parent_website_route`,"O texto a ser exibido para o link da página da web, se este formulário tem uma página web. Um link será gerado automaticamente com base em ` page_name` e `parent_website_route`"
DocType: Feedback Request,Feedback Trigger,Gatilho para Feedback
apps/frappe/frappe/public/js/frappe/form/control.js +1697,Please set {0} first,Defina {0} primeiro
apps/frappe/frappe/public/js/frappe/form/control.js +1656,Please set {0} first,Defina {0} primeiro
DocType: Patch Log,Patch,Remendo
apps/frappe/frappe/core/page/data_import_tool/importer.py +54,No data found,Não foram encontrados dados
DocType: User,Background Style,Estilo do Fundo


+ 185
- 179
frappe/translations/pt.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 185
- 179
frappe/translations/ro.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 186
- 180
frappe/translations/ru.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/si.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 186
- 180
frappe/translations/sk.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/sl.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/sq.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 42
- 0
frappe/translations/sr-SP.csv Datei anzeigen

@@ -0,0 +1,42 @@
apps/frappe/frappe/desk/doctype/todo/todo_list.js +22,Assigned By Me,Dodijelio
apps/frappe/frappe/public/js/frappe/form/toolbar.js +189,New {0} (Ctrl+B),Novi {0} (Ctrl-B)
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +23,Add Filter,Dodaj filter
apps/frappe/frappe/public/js/frappe/model/model.js +26,Assigned To,Dodijeljeno
apps/frappe/frappe/public/js/frappe/form/footer/assign_to.js +138,Assign to me,Dodijeljeno meni
apps/frappe/frappe/public/js/frappe/ui/filters/edit_filter.html +16,Between,Između
apps/frappe/frappe/public/js/frappe/list/list_sidebar.js +389,UnCategorised Tags,Nekategorisani tag-ovi
apps/frappe/frappe/public/js/frappe/form/toolbar.js +163,Customize,Prilagodite
apps/frappe/frappe/desk/reportview.py +253,No Tags,Nema tag-ova
apps/frappe/frappe/public/js/frappe/views/treeview.js +212,New {0},Novi {0}
apps/frappe/frappe/public/js/frappe/ui/filters/edit_filter.html +10,Not equals,Nije jednak
apps/frappe/frappe/public/js/frappe/ui/page.html +24,Menu,Meni
apps/frappe/frappe/public/js/frappe/model/model.js +27,Document Status,Status dokumenta
apps/frappe/frappe/config/core.py +27,Script or Query reports,Skripte ili query izvještaji
apps/frappe/frappe/public/js/frappe/views/reports/reportview.js +111,Add to Desktop,Dodaj na radnu površinu
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +30,User Permissions,Prava pristupa korisnika
apps/frappe/frappe/public/js/frappe/model/meta.js +186,Created On,Kreirano
apps/frappe/frappe/public/js/frappe/ui/toolbar/search_utils.js +107,New,Novi
,User Permissions Manager,Menadžer prava pristupa korisnika
DocType: Workflow State,Refresh,Osvježi
DocType: Contact,Status,Status
apps/frappe/frappe/desk/doctype/todo/todo.py +20,Assigned to {0}: {1},Dodijeljen {0}: {1}
apps/frappe/frappe/public/js/frappe/model/meta.js +187,Last Modified On,Poslednji put izmijenjeno
DocType: Authentication Log,Full Name,Puno ime
DocType: Custom DocPerm,Import,Uvoz
DocType: Communication,Assigned,Dodijeljeno
apps/frappe/frappe/desk/moduleview.py +94,Standard Reports,Standardni izvještaji
apps/frappe/frappe/public/js/frappe/list/list_sidebar.html +49,Assigned To Me,Dodijeljeno meni
,Role Permissions Manager,Menadžer prava pristupa rolama
apps/frappe/frappe/public/js/frappe/ui/filters/edit_filter.html +24,Apply,Primijeni
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +479,Like,Kao
DocType: Workflow State,remove,Ukloni
apps/frappe/frappe/public/js/frappe/list/list_sidebar.html +32,Kanban,Kanban
apps/frappe/frappe/public/js/frappe/roles_editor.js +195,Role Permissions,Prava pristupa rolama
apps/frappe/frappe/public/js/frappe/ui/filters/edit_filter.html +9,Not In,Nije u
apps/frappe/frappe/public/js/frappe/ui/filters/edit_filter.html +6,Equals,Jednak
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +479,Not Like,Nije kao
apps/frappe/frappe/public/js/frappe/list/list_sidebar.html +10,Reports,Izvještaji
apps/frappe/frappe/public/js/frappe/ui/sort_selector.js +182,Most Used,Najviše korišćeno
DocType: ToDo,Assigned By,Dodijelio
apps/frappe/frappe/desk/report/todo/todo.py +19,ID,ID
DocType: Workflow State,Print,Štampaj

+ 186
- 180
frappe/translations/sr.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 185
- 179
frappe/translations/sv.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/ta.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/te.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/th.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 187
- 181
frappe/translations/tr.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 186
- 180
frappe/translations/uk.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 184
- 178
frappe/translations/ur.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 430
- 424
frappe/translations/vi.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 161
- 155
frappe/translations/zh-TW.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 188
- 182
frappe/translations/zh.csv
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 2
- 1
frappe/utils/backups.py Datei anzeigen

@@ -217,7 +217,8 @@ def backup(with_files=False, backup_path_db=None, backup_path_files=None, quiet=
odb = scheduled_backup(ignore_files=not with_files, backup_path_db=backup_path_db, backup_path_files=backup_path_files, force=True)
return {
"backup_path_db": odb.backup_path_db,
"backup_path_files": odb.backup_path_files
"backup_path_files": odb.backup_path_files,
"backup_path_private_files": odb.backup_path_private_files
}

if __name__ == "__main__":


+ 6
- 1
frappe/utils/formatters.py Datei anzeigen

@@ -4,7 +4,7 @@
from __future__ import unicode_literals
import frappe
import datetime
from frappe.utils import formatdate, fmt_money, flt, cstr, cint, format_datetime
from frappe.utils import formatdate, fmt_money, flt, cstr, cint, format_datetime, format_time
from frappe.model.meta import get_field_currency, get_field_precision
import re

@@ -20,6 +20,8 @@ def format_value(value, df=None, doc=None, currency=None, translated=False):
df.fieldtype = 'Datetime'
elif isinstance(value, datetime.date):
df.fieldtype = 'Date'
elif isinstance(value, datetime.timedelta):
df.fieldtype = 'Time'
elif isinstance(value, int):
df.fieldtype = 'Int'
elif isinstance(value, float):
@@ -45,6 +47,9 @@ def format_value(value, df=None, doc=None, currency=None, translated=False):
elif df.get("fieldtype")=="Datetime":
return format_datetime(value)

elif df.get("fieldtype")=="Time":
return format_time(value)

elif value==0 and df.get("fieldtype") in ("Int", "Float", "Currency", "Percent") and df.get("print_hide_if_no_value"):
# this is required to show 0 as blank in table columns
return ""


Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.

Laden…
Abbrechen
Speichern