discourse/plugins/discourse-workflows/config/locales/client.en.yml
Sam 65024326dd
FEATURE: Add AI authoring to Discourse Workflows (#40504)
Previously, admins could only build Discourse Workflows by manually
adding and connecting every trigger, condition, and action node on the
canvas.

This change adds an AI authoring assistant, gated behind
`discourse_workflows_ai_authoring_enabled` and DiscourseAi, that turns a
natural-language request into a server-validated, reviewable workflow
patch the admin applies. It only ever proposes drafts and never
publishes.

---------

Co-authored-by: chapoi <101828855+chapoi@users.noreply.github.com>
Co-authored-by: Rafael Silva <xfalcox@gmail.com>
Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
2026-06-18 18:32:30 +02:00

1123 lines
50 KiB
YAML
Vendored

en:
admin_js:
admin:
logs:
staff_actions:
actions:
discourse_workflows_credential_created: "Create workflow credential"
discourse_workflows_credential_destroyed: "Delete workflow credential"
discourse_workflows_credential_updated: "Update workflow credential"
discourse_workflows_data_table_column_created: "Create workflow data table column"
discourse_workflows_data_table_column_destroyed: "Delete workflow data table column"
discourse_workflows_data_table_column_renamed: "Rename workflow data table column"
discourse_workflows_data_table_created: "Create workflow data table"
discourse_workflows_data_table_destroyed: "Delete workflow data table"
discourse_workflows_data_table_updated: "Update workflow data table"
discourse_workflows_variable_created: "Create workflow variable"
discourse_workflows_variable_destroyed: "Delete workflow variable"
discourse_workflows_variable_updated: "Update workflow variable"
discourse_workflows_ai_proposal_applied: "Apply AI workflow proposal"
discourse_workflows_workflow_created: "Create workflow"
discourse_workflows_workflow_destroyed: "Delete workflow"
js:
discourse_ai:
features:
discourse_workflows:
name: "Workflows"
description: "AI-assisted workflow authoring"
workflow_authoring: "Workflow authoring"
discourse_workflows:
actor:
system: "System user"
anonymous: "Anonymous user"
user: "Specific user"
node_unavailable:
default: "This node is currently unavailable"
short: "Unavailable"
node_issues:
title: "Configuration issues"
required: "%{label} is required"
unknown: "%{label}: %{message}"
header_auth:
name: "Header name"
value: "Header value"
run_scope:
per_item: "One run per item"
all_items: "One run for all items"
admin:
title: "Workflows"
ai:
button: "Build with AI"
title: "Workflow assistant"
subtitle: "Create automatic drafts. Publishing stays manual."
close: "Close workflow assistant"
description: "Describe a change, then generate a draft to review. Publishing stays manual."
review_description: "Review this draft, then apply it when it looks right."
prompt_label: "What should change?"
prompt_placeholder: "Example: When a new support topic is created, tag it needs-review and reply with a checklist."
generate: "Generate draft"
apply: "Apply draft"
back_to_prompt: "Edit request"
start_over: "Start over"
applied: "AI workflow proposal applied to the draft. Publish when you're ready."
risks: "Risks"
created_agents: "AI agents to create"
created_agent_system_prompt: "System prompt"
questions: "Questions"
status_idle: "Ready"
status_working: "Working"
status_ready: "Draft ready"
status_error: "Needs attention"
unexpected_error: "Something went wrong while generating the draft. Please try again."
needs_clarification: "Choose an answer, or type a custom response, so the assistant can continue."
clarification_intro: "Choose the best option for this question. Use custom answer when the options do not fit."
question_progress: "Question %{current} of %{total}"
next_question: "Next question"
previous_question: "Previous question"
continue: "Continue"
custom_answer: "Custom answer"
custom_answer_placeholder: "Type a different answer…"
code_node: "Code node"
script_preview: "Code script preview"
script_mode: "Mode: %{mode}"
script_validation_passed: "Script validation passed"
script_validation_failed: "Script validation failed"
progress_title: "Progress"
progress:
queued: "Workflow authoring request queued"
loading_context: "Loading workflow authoring context"
planning: "Asking the workflow authoring agent to draft a response"
writing_scripts: "Reviewing generated Code node scripts"
validating_scripts: "Validating generated Code node scripts"
validating_patch: "Validating workflow patch"
drafting_response: "Drafting workflow authoring response"
writing_response: "Writing workflow authoring response"
using_tool: "Using %{tool}"
tool_finished: "Finished %{tool}"
summarizing: "Preparing workflow authoring response"
title: "Workflows"
templates:
title: "Templates"
description: "Start with a pre-built workflow template"
new_workflow: "New workflow"
default_workflow_name: "My workflow"
delete: "Delete"
edit: "Edit"
save: "Save"
cancel: "Cancel"
more_options: "More options"
publish: "Publish"
discard_changes: "Discard changes"
discard_changes_confirmation: "Discard unpublished changes? This will restore the published workflow and remove the current draft."
published: "Published"
unpublish: "Unpublish"
unpublished: "Unpublished"
unpublished_changes: "Unpublished changes"
unpublished_changes_message: "You have unpublished changes"
unpublished_changes_message_detail: "Publish to make them live"
unpublished_changes_confirmation: "This workflow has unpublished changes. If you leave now, those changes will stay in draft and won't run until you publish them."
leave_without_publishing: "Leave without publishing"
keep_editing: "Keep editing"
workflow_name: "Workflow name"
last_editor: "Last editor"
last_update: "Last update"
last_run: "Last run"
status: "Status"
last_execution_never: "Never"
last_execution_failed: "Last execution failed"
create_first_workflow: "Create your first workflow"
empty_title: "%{username}, let's set up a workflow"
empty_description: "Workflows automate tasks by connecting triggers, conditions, and actions into a visual flow"
delete_confirm: "Are you sure you want to delete the workflow \"%{name}\"?"
tabs:
workflow: "Workflow"
executions: "Executions"
settings: "Settings"
versions: "Versions"
data_tables: "Data tables"
templates: "Templates"
credentials: "Credentials"
variables: "Variables"
all_workflows: "All workflows"
settings:
saved: "Settings saved"
error_workflow: "Error workflow"
error_workflow_description: "When this workflow fails, trigger the selected error workflow. If none is selected and this workflow has an Error trigger, it handles its own errors."
error_workflow_none: "None"
no_error_workflows_available: "No workflows with an Error trigger node are available"
timezone: "Timezone"
timezone_description: "Schedule triggers use this timezone. If unset, they use the site timezone."
danger_zone: "Danger zone"
delete_description: "Permanently delete this workflow and all its executions. This action cannot be undone."
versions:
title: "Versions"
version: "Version"
version_number: "Version %{number}"
author: "Author"
changed_at: "Changed"
current: "Current"
live: "Live"
revert: "Revert"
revert_confirm: "Revert the draft to version %{version}? You can review it in the editor and publish when ready."
reverted: "Reverted to version %{version}"
empty_title: "No versions yet"
empty_description: "Each time you save changes, a new version is recorded here."
add_node:
title: "Add step"
first_step: "Add first step"
browse_templates: "Browse templates"
search: "Search steps..."
categories:
discourse_triggers: "Discourse triggers"
triggers: "Triggers"
discourse_actions: "Discourse actions"
ai: "AI"
data: "Data transformation"
utilities: "Utilities"
flow: "Flow"
human_review: "Human review"
configurator:
title: "Configure"
save: "Done"
saving: "Saving"
saved: "Saved"
no_configuration: "This node has no configurable options"
description: "Note"
description_placeholder: "Add a note about this step..."
always_output_data: "Always output data"
always_output_data_help: "If on, this node emits an empty item when it would otherwise produce no items, so the next node still runs."
tabs:
parameters: "Parameters"
settings: "Settings"
drag_drop_hint_title: "Tip"
drag_drop_hint: "Drag and drop a property from this panel into a field"
output_context: "Output"
no_input_context: "No input data yet. It will appear after the first run."
no_input_fields: "No input fields"
environment: "Environment"
no_output_context: "No output data"
no_output_fields: "No output fields"
no_output_context_run_to_discover: "Run the workflow to discover output fields"
schema_input_label: "Input %{number}"
schema_item_count:
one: "%{count} item"
other: "%{count} items"
nodes:
"trigger:topic_closed": "Topic closed"
"trigger:post_created": "Post created"
"trigger:post_edited": "Post edited"
"trigger:post_moved": "Post moved"
"trigger:topic_created": "Topic created"
"trigger:topic_category_changed": "Topic category changed"
"trigger:topic_tag_changed": "Topic tag changed"
"trigger:reviewable_approved": "Approved reviewable"
"trigger:webhook": "Webhook"
"trigger:manual": "Manual trigger"
"condition:if": "If"
"condition:filter": "Filter"
"action:topic_tags": "Topic tags"
"action:code": "Code"
"action:topic": "Topic"
"action:post": "Post"
"action:send_personal_message": "Send personal message"
"action:set_fields": "Set fields"
"trigger:stale_topic": "Stale topic"
"trigger:schedule": "Schedule"
"flow:merge": "Merge"
"flow:loop_over_items": "Loop over items"
"action:split_out": "Split out"
"action:sort": "Sort"
"action:http_request": "HTTP request"
"action:data_table": "Data table"
"action:group": "Group"
"action:badge": "Badge"
"trigger:form": "Form trigger"
"action:form": "Form"
"action:limit": "Limit"
"action:log": "Log"
"action:markdown_table": "Markdown table"
"action:template": "Template"
"action:respond_to_webhook": "Respond to webhook"
"trigger:topic_admin_button": "Topic admin button"
"trigger:error": "Error trigger"
"flow:wait": "Wait"
"action:modal": "Modal"
node_descriptions:
"trigger:topic_closed": "Fires when a topic is closed by a user or auto-close timer"
"trigger:post_created": "Fires when a new post or reply is created"
"trigger:post_edited": "Fires after the first post in a topic is edited and cooked"
"trigger:post_moved": "Fires when a post is moved to another topic"
"trigger:topic_created": "Fires when a new topic is created"
"trigger:topic_category_changed": "Fires when a topic is moved to a different category"
"trigger:topic_tag_changed": "Fires when tags are added to or removed from a topic"
"trigger:reviewable_approved": "Fires when a reviewable is approved"
"trigger:webhook": "Fires when an external service sends a webhook request"
"trigger:manual": "Fires when triggered manually by an admin"
"condition:if": "Branch the workflow based on a condition"
"condition:filter": "Continue only if conditions are met"
"action:topic_tags": "Add or remove tags on a topic"
"action:code": "Run custom JavaScript code"
"action:topic": "Create, retrieve, list, close, archive, or set custom fields on topics"
"action:post": "Create, edit, retrieve, or list posts"
"action:send_personal_message": "Send a personal message to users or groups"
"action:set_fields": "Set or modify data fields in the workflow context"
"trigger:stale_topic": "Fires when a topic has had no activity for a period"
"trigger:schedule": "Fires on a recurring schedule"
"flow:merge": "Merge data from multiple workflow branches"
"flow:loop_over_items": "Iterate over a list of items and run steps for each"
"action:split_out": "Split an array into individual items for parallel processing"
"action:sort": "Sort items by field values, randomly, or with custom code"
"action:http_request": "Make an HTTP request to an external API"
"action:data_table": "Read, write, or query a workflow data table"
"action:group": "Read, check, or update group membership"
"action:badge": "Grant or revoke a badge"
"trigger:form": "Generates a public web form and fires when it is submitted"
"action:form": "Adds a page to a multi-step form"
"action:limit": "Keep only the first or last N items"
"action:log": "Record key/value data to the execution log without affecting the workflow"
"action:markdown_table": "Build a markdown table from a list of items"
"action:template": "Render text with a template"
"action:respond_to_webhook": "Send a custom HTTP response to the webhook caller"
"trigger:topic_admin_button": "Adds a button to the topic admin menu that triggers this workflow"
"trigger:error": "Fires when another workflow fails"
"flow:wait": "Pause workflow execution and resume after a delay or webhook callback"
"action:modal": "Shows a modal to a user and waits for them to choose an option"
topic_admin_button:
label: "Button label"
label_placeholder: "Run workflow"
icon: "Button icon"
modal:
target_user: "Target user"
target_user_placeholder: "Defaults to the user who triggered the workflow"
title: "Title"
title_placeholder: "Title shown at the top of the modal"
body: "Body"
body_placeholder: "Message shown to the user..."
buttons: "Buttons"
add_button: "Add button"
label: "Label"
label_placeholder: "Approve"
value: "Value"
value_placeholder: "approve"
style: "Style"
style_default: "Default"
style_primary: "Primary"
style_danger: "Danger"
if:
no_conditions_body: "Conditions are used to filter items based on their values"
add_condition: "Add condition"
conditions: "Conditions"
column: "Column"
field: "Field"
operator: "Operator"
value: "Value"
combinator:
title: "Match mode"
all: "All conditions must pass"
any: "Any condition can pass"
operators:
equals: "equals"
not_equals: "does not equal"
contains: "contains"
not_contains: "does not contain"
empty: "is empty"
not_empty: "is not empty"
gt: "greater than"
lt: "less than"
gte: "greater than or equal"
lte: "less than or equal"
"true": "is true"
"false": "is false"
topic_tags:
operation: "Operation"
operations:
add: "Add tag"
remove: "Remove tag"
topic_id: "Topic ID"
tag_names: "Tags"
actor_username: "Performed by user"
limit:
max_items: "Max items"
keep: "Keep"
keep_first: "First items"
keep_last: "Last items"
group:
operation: "Operation"
operations:
add: "Add user"
remove: "Remove user"
get: "Get group"
check_membership: "Check membership"
username: "User"
group_id: "Group"
group_id_placeholder: "Select a group"
manage_groups: "Manage groups"
actor_username: "Performed by user"
badge:
operation: "Operation"
operations:
grant: "Grant badge"
revoke: "Revoke badge"
username: "User"
badge_id: "Badge"
badge_id_placeholder: "Select a badge"
actor_username: "Performed by user"
send_personal_message:
recipient_usernames: "Recipients"
recipient_usernames_description: "Select one or more users"
recipient_group_names: "Recipient groups"
recipient_group_names_description: "Select one or more groups"
title: "Title"
raw: "Body"
raw_description: "Raw content for the personal message"
sender_username: "Sender"
post:
operation: "Operation"
operations:
create: "Create post"
edit: "Edit post"
get: "Get post"
list: "List posts"
topic_id: "Topic ID"
raw: "Body"
raw_description: "Raw content for the post"
reply_to_post_number: "Reply to post number"
reply_to_post_number_description: "Reply to a specific post number in the topic"
whisper: "Create as whisper"
whisper_description: "Create the post as a whisper. The author must be allowed to create whispers."
author_username: "Author"
post_id: "Post ID"
editor_username: "Editor"
include_raw: "Include raw"
include_cooked: "Include cooked"
query: "Query"
query_description: "Filter query using PostsFilter syntax (e.g. category:support username:system order:latest)"
query_placeholder: "Filter posts by category, tag, author, keywords, or other criteria"
created_after: "Created after"
created_before: "Created before"
topic_created_after: "Topic created after"
topic_created_before: "Topic created before"
categories: "Categories"
categories_description: "Category IDs, slugs, or names, separated by commas"
exclude_categories: "Exclude categories"
exact_category_match: "Exact category match"
exact_category_match_description: "Exclude subcategories when matching categories"
tags: "Tags"
exclude_tags: "Exclude tags"
topics: "Topics"
topics_description: "Topic IDs separated by commas"
usernames: "Users"
usernames_description: "Usernames separated by commas"
groups: "Groups"
groups_description: "Group names separated by commas"
post_type: "Post type"
post_types:
regular: "Regular posts only"
all: "All visible post types"
first: "First posts only"
reply: "Replies only"
moderator_action: "Moderator action posts only"
small_action: "Small action posts only"
whisper: "Whispers only"
status: "Status"
statuses:
any: "Any status"
open: "Open"
closed: "Closed"
archived: "Archived"
listed: "Listed"
unlisted: "Unlisted"
deleted: "Deleted"
public: "Public"
noreplies: "No replies"
single_user: "Single user"
keywords: "Keywords"
keywords_description: "Keywords separated by commas"
topic_keywords: "Topic keywords"
order: "Order"
orders:
latest: "Latest posts"
oldest: "Oldest posts"
latest_topic: "Latest topics"
oldest_topic: "Oldest topics"
likes: "Most liked"
limit: "Limit"
limit_description: "Maximum number of posts to return (1-500, default 30)"
offset: "Offset"
advanced_filter: "Advanced filter"
advanced_filter_description: "Additional PostsFilter query string appended to the configured filters"
actor_username: "Performed by user"
topic:
operation: "Operation"
operations:
create: "Create topic"
get: "Get topic"
list: "List topics"
close: "Close topic"
archive: "Archive topic"
set_custom_fields: "Set custom fields"
topic_id: "Topic ID"
title: "Title"
raw: "Body"
raw_description: "Raw content for the first post"
category_id: "Category"
tag_names: "Tags"
query: "Query"
query_description: "Filter query using the same syntax as `/filter` (e.g. category:support status:open order:activity)"
query_placeholder: "category:support status:open"
custom_field_names: "Include custom fields"
custom_field_names_placeholder: "Select custom fields"
custom_fields: "Custom fields"
key: "Key"
value: "Value"
add_custom_field: "Add custom field"
limit: "Limit"
limit_description: "Maximum number of topics to return (1-100, default 30)"
offset: "Offset"
offset_description: "Number of matching topics to skip before returning results"
actor_username: "Performed by user"
set_fields:
mode: "Mode"
mode_manual: "Manual"
mode_raw: "JSON"
assignments: "Fields"
json_output: "JSON"
include_other_fields: "Include input fields"
include: "Input fields to include"
include_all: "All"
include_selected: "Selected"
include_except: "All except"
include_fields: "Fields to include"
include_fields_placeholder: "company, id"
exclude_fields: "Fields to exclude"
exclude_fields_placeholder: "debug, internal.notes"
type_string: "String"
type_number: "Number"
type_boolean: "Boolean"
type_array: "Array"
type_object: "Object"
add_field: "Add field"
code:
mode: "Mode"
mode_description: "Choose whether the code runs once per item or once for all items"
mode_run_once_for_each_item: "Run once for each item"
mode_run_once_for_all_items: "Run once for all items"
code: "JavaScript code"
code_description: "Access the previous step's output via $json. Return an object to pass data to the next step."
parameter_field:
fixed: "Fixed"
plain: "Plain"
dynamic: "Dynamic"
expression_preview:
result: "Result"
empty: "Empty"
undefined: "Undefined"
invalid: "Invalid JavaScript"
warning: "Missing function call"
pending: "Not resolved yet"
expression_docs:
sections:
previous_nodes: "Previous nodes"
vars:
input: "Current node input helpers. Use $input.item, $input.all(), $input.first(), $input.last(), or $input.params."
item_index: "Index of the input item currently being processed."
json: "JSON data of the current input item. Shorthand for $input.item.json."
trigger: "Alias for $json — the trigger node's output data."
site_settings: "Access Discourse site settings. Example: $site_settings.title"
current_user: "The user who triggered the workflow. Properties: id, username"
workflow_vars: "Workflow variables defined in the admin panel."
execution: "Execution metadata: id, workflow_id, workflow_name"
node_ref: "Reference a previous node's output. Example: $('Node Name').item.json"
methods:
input:
all: "Returns an array of the current node's input items."
first: "Returns the current node's first input item."
last: "Returns the current node's last input item."
property_engine:
add_item: "Add item"
add_option: "Add option"
add_field: "Add field"
remove_item: "Remove item"
dynamic_hint: "Must resolve to %{value}."
dynamic_values:
badge_id: "a badge ID"
boolean: "true or false"
category_id: "a category ID"
chat_channel_id: "a chat channel ID"
column_name: "a column name"
data_table_id: "a data table ID"
group_id: "a group ID"
group_names: "group names"
id: "an ID"
number: "a number"
option_value: "an option value"
query_id: "a query ID"
tag_names: "tag names"
username: "a username"
usernames: "usernames"
user_or_group_name: "a username or group name"
add_attributes: "Attributes"
assignment_name: "Name"
assignment_type: "Type"
assignment_value: "Value"
max_items_reached:
one: "Limited to %{count} item"
other: "Limited to %{count} items"
webhook:
http_method: "HTTP method"
path: "Path"
path_placeholder: "my-webhook"
url_preview: "Webhook URL"
click_to_copy: "Click to copy"
copy_test_url: "Copy test URL"
listening_seconds: "Listening for test event for %{seconds}s"
cancel_test_listener: "Cancel"
response_mode: "Respond"
response_mode_on_received: "Immediately"
response_mode_last_node: "When last node finishes"
response_mode_response_node: "Using Respond to webhook node"
response_code: "Response code"
response_data: "Response data"
response_data_first_entry_json: "First entry JSON"
response_data_all_entries: "All entries"
response_data_no_data: "No data"
response_body: "Response body"
no_response_body: "No response body"
response_headers: "Response headers"
add_response_header: "Add response header"
ip_allowlist: "IP allowlist"
ignore_bots: "Ignore bots"
authentication: "Authentication"
authentication_none: "None"
authentication_basic_auth: "Basic auth"
authentication_bearer_auth: "Bearer token"
authentication_header_auth: "Header auth"
credential: "Credential"
stale_topic:
hours: "Hours with no reply"
description: "Fires when a topic has had no replies for the specified number of hours"
category_id: "Category"
category_id_description: "Only consider topics in this category"
include_subcategories: "Include subcategories"
tag_names: "Tags"
tag_names_description: "Only consider topics that have at least one of these tags"
topic_closed:
category_id: "Category"
category_id_description: "Only trigger for topics in this category"
tag_names: "Tags"
tag_names_description: "Only trigger for topics that have at least one of these tags"
post_created:
topic_type: "Topic type"
topic_type_description: "Choose whether topics, personal messages, or both should trigger the workflow"
topic_type_all: "All"
topic_type_topics: "Topics"
topic_type_personal_messages: "Personal messages"
group_inbox_id: "Group inbox"
group_inbox_id_description: "Only trigger for personal messages in this group inbox"
group_inbox_id_placeholder: "All group inboxes"
category_id: "Category"
category_id_description: "Only trigger for posts in this category"
include_subcategories: "Include subcategories"
tag_names: "Tags"
tag_names_description: "Only trigger for posts in topics that have at least one of these tags"
post_edited:
category_id: "Category"
category_id_description: "Only trigger for posts in this category"
tag_names: "Tags"
tag_names_description: "Only trigger for posts in topics that have at least one of these tags"
post_scope: "Post scope"
post_scope_description: "Choose which posts should trigger the workflow"
post_scope_first_post: "First post"
post_scope_replies: "Replies"
post_scope_all_posts: "All posts"
trust_levels: "Trust levels"
trust_levels_description: "Only trigger for posts created by users with these trust levels"
post_moved:
category_id: "Destination category"
category_id_description: "Only trigger for posts moved into this category"
tag_names: "Destination tags"
tag_names_description: "Only trigger for posts moved into topics that have at least one of these tags"
topic_created:
topic_type: "Topic type"
topic_type_description: "Choose whether topics, personal messages, or both should trigger the workflow"
topic_type_all: "All"
topic_type_topics: "Topics"
topic_type_personal_messages: "Personal messages"
group_inbox_id: "Group inbox"
group_inbox_id_description: "Only trigger for personal messages in this group inbox"
group_inbox_id_placeholder: "All group inboxes"
category_id: "Category"
category_id_description: "Only trigger for topics in this category"
include_subcategories: "Include subcategories"
tag_names: "Tags"
tag_names_description: "Only trigger for topics that have at least one of these tags"
topic_tag_changed:
category_id: "Category"
category_id_description: "Only trigger for topics in this category"
reviewable_approved:
reviewable_types: "Reviewable types"
reviewable_types_description: "Only trigger for these reviewable types"
reviewable_types_placeholder: "All types"
schedule:
rule: "Trigger rules"
add_rule: "Add rule"
field: "Trigger interval"
field_minutes: "Minutes"
field_hours: "Hours"
field_days: "Days"
field_weeks: "Weeks"
field_months: "Months"
field_cron_expression: "Custom (Cron)"
minutes_interval: "Minutes between triggers"
minutes_interval_description: "Must be in range 1-59"
hours_interval: "Hours between triggers"
hours_interval_description: "Must be in range 1-23"
days_interval: "Days between triggers"
days_interval_description: "Must be in range 1-31"
weeks_interval: "Weeks between triggers"
months_interval: "Months between triggers"
months_interval_description: "Must be in range 1-12"
trigger_at_day: "Trigger on weekdays"
trigger_at_day_of_month: "Trigger at day of month"
trigger_at_day_of_month_description: "If a month doesn't have this day, the node won't trigger"
trigger_at_hour: "Trigger at hour"
trigger_at_minute: "Trigger at minute"
expression: "Cron expression"
expression_description: "Standard 5-field cron (minute hour day-of-month month day-of-week). Example: 0 9 * * 1-5 for weekdays at 9 AM. <a href='https://crontab.guru/examples.html' target='_blank'>Help on cron</a>."
cron: "Cron expression"
cron_invalid: "Must be a valid 5-field cron expression"
wait:
resume: "Resume when"
resume_time_interval: "After time interval"
resume_webhook: "On webhook call"
wait_amount: "Wait"
wait_unit: "Unit"
wait_unit_seconds: "Seconds"
wait_unit_minutes: "Minutes"
wait_unit_hours: "Hours"
wait_unit_days: "Days"
webhook_info_description: "The webhook URL will be generated at run time. Reference the base URL in earlier nodes with the <code>$execution.resume_url</code> variable. If this node has a webhook suffix, append it to that URL."
http_method: "HTTP method"
response_mode: "Respond"
response_mode_on_received: "Immediately"
response_mode_last_node: "When last node finishes"
response_mode_response_node: "Using Respond to webhook node"
response_code: "Response code"
response_data: "Response data"
response_data_first_entry_json: "First entry JSON"
response_data_all_entries: "All entries"
response_data_no_data: "No data"
response_body: "Response body"
no_response_body: "No response body"
response_headers: "Response headers"
add_response_header: "Add response header"
ip_allowlist: "IP allowlist"
ignore_bots: "Ignore bots"
webhook_suffix: "Webhook suffix"
limit_wait_time: "Limit wait time"
timeout_amount: "Timeout after"
timeout_unit: "Timeout unit"
loop_over_items:
batch_size: "Batch size"
batch_size_description: "Number of items to process per iteration"
http_request:
authentication: "Authentication"
authentication_none: "None"
authentication_basic_auth: "Basic auth"
authentication_bearer_token: "Bearer token"
authentication_header_auth: "Header auth"
credential: "Credential"
method: "Method"
url: "URL"
headers: "Headers"
query_params: "Query parameters"
key_placeholder: "key"
value_placeholder: "value"
add_query_param: "Add parameter"
add_header: "Add header"
content_type: "Content type"
content_type_json: "JSON"
content_type_form_urlencoded: "Form URL-encoded"
content_type_raw: "Raw"
body_json: "Request body"
body_json_placeholder: '{"key": "value"}'
body_raw: "Request body"
body_form: "Form data"
add_body_form: "Add field"
raw_content_type: "Content type"
raw_content_type_placeholder: "text/plain"
never_error: "Never error"
never_error_description: "Return non-2xx responses instead of raising an error"
full_response: "Include response headers and status"
full_response_description: "Return the full response instead of only the body"
split_out:
field: "Fields to split out"
field_description: "Comma-separated field name(s) containing arrays to split. Supports dot notation for nested fields."
field_placeholder: "items"
include: "Include"
no_other_fields: "No other fields"
all_other_fields: "All other fields"
selected_other_fields: "Selected other fields"
fields_to_include: "Fields to include"
fields_to_include_description: "Comma-separated list of fields to carry over from the input item"
fields_to_include_placeholder: "company, id"
destination_field_name: "Destination field name"
destination_field_name_description: "Rename the split field in output. If splitting multiple fields, provide matching count of names."
sort:
type: "Sort type"
simple: "Simple"
random: "Random"
code: "Code"
sort_fields: "Sort fields"
field_name: "Field name"
field_name_placeholder: "name"
order: "Order"
ascending: "Ascending"
descending: "Descending"
code_field: "JavaScript code"
code_description: "Write a comparator function body. Variables a and b are item objects. Return -1, 0, or 1."
merge:
mode: "Mode"
mode_append: "Append"
mode_combine: "Combine"
include_unpaired: "Include unpaired items"
include_unpaired_description: "When the two inputs have different numbers of items, keep the leftover items that have no counterpart to pair with instead of dropping them."
resolve_clash: "When fields clash"
resolve_clash_add_suffix: "Add a suffix"
resolve_clash_prefer_first: "Prefer first item"
resolve_clash_prefer_last: "Prefer last item"
log:
mode: "Mode"
mode_description: "Choose whether entries are logged once per item or once for all items"
mode_run_once_for_each_item: "Run once for each item"
mode_run_once_for_all_items: "Run once for all items"
entries: "Log entries"
key: "Key"
value: "Value"
add_entry: "Add entry"
markdown_table:
mapping_mode: "Mapping column mode"
mapping_mode_manual: "Map each column manually"
mapping_mode_auto: "Map automatically"
columns: "Columns"
header: "Header"
value: "Value"
add_column: "Add column"
template:
mode: "Mode"
mode_description: "Choose whether the template renders once per item or once for all items"
mode_run_once_for_each_item: "Run once for each item"
mode_run_once_for_all_items: "Run once for all items"
template: "Template"
template_description: "In all-items mode, use loop syntax <code>&#123;% for item in items %&#125;...&#123;% endfor %&#125;</code>. Inside the loop, prefix item fields with <code>item.</code>, for example <code>&#123;&#123; item.topic.title &#125;&#125;</code>. The loop index is available as <code>item.item_index</code>. In each-item mode, use the same <code>item.</code> prefix for the current item. <code>items_count</code>, <code>vars</code>, <code>workflow</code>, <code>execution</code>, and <code>site_settings</code> are also accessible. Workflow expressions are not evaluated inside this field. If you need to modify your items, use the Set fields node before the template node."
template_placeholder: "Hello item.name"
form:
page_type: "Page type"
page_type_page: "Next form page"
page_type_completion: "Form ending"
form_title: "Form title"
form_title_placeholder: "My form"
form_description: "Form description"
form_description_placeholder: "Describe the purpose of this form..."
form_fields: "Form fields"
add_form_field: "Add field"
field_label: "Label"
field_label_placeholder: "Field label"
field_type: "Type"
field_type_text: "Text"
field_type_textarea: "Textarea"
field_type_number: "Number"
field_type_email: "Email"
field_type_password: "Password"
field_type_date: "Date"
field_type_checkbox: "Checkbox"
field_type_dropdown: "Dropdown"
field_type_radio: "Radio"
field_type_hiddenField: "Hidden field"
field_type_html: "HTML"
field_name: "Custom field name"
required: "Required"
description: "Description"
placeholder: "Placeholder"
placeholder_placeholder: "Enter placeholder text..."
field_value: "Field value"
html: "HTML"
default_value: "Default value"
options: "Field options"
value: "Option"
on_submission: "On form submission"
on_submission_completion_screen: "Show completion screen"
on_submission_redirect: "Redirect to URL"
on_submission_show_text: "Show text"
completion_title: "Title"
completion_title_placeholder: "Thank you!"
completion_message: "Message"
completion_message_placeholder: "Your response has been recorded"
redirect_url: "URL"
redirect_url_placeholder: "https://example.com/thanks"
completion_text: "Text"
completion_text_placeholder: "Thank you for your submission"
response_mode: "Respond when"
response_mode_on_received: "Form is submitted"
response_mode_workflow_finishes: "Workflow finishes"
authentication: "Authentication"
authentication_description: "Who can access and submit this form"
authentication_none: "Anyone"
authentication_login_required: "Logged-in users only"
form_url: "Form URL"
test_url: "Test"
production_url: "Production"
listen_for_test_event: "Listen for test event"
test_mode_banner: "This is a test version of your form"
thank_you: "Thank you! Your response has been recorded."
redirecting: "Redirecting..."
error_message: "Something went wrong. Please try again."
errors:
invalid: "%{field} is invalid"
missing: "%{field} is required"
submitting: "Submitting..."
submit: "Submit"
save_for_url: "Save the workflow to generate a form URL"
respond_to_webhook:
response_type: "Respond with"
response_type_json: "JSON"
response_type_redirect: "Redirect"
response_type_text: "Text"
response_type_no_data: "No data"
response_type_first_incoming_item: "First incoming item"
response_type_all_incoming_items: "All incoming items"
status_code: "Status code"
redirect_url: "Redirect URL"
redirect_url_placeholder: "https://example.com/thanks"
allowed_redirect_domains: "Allowed redirect domains"
allowed_redirect_domains_description: "External domains this node may redirect to. Use exact hostnames such as example.com or wildcard subdomains such as *.example.com. Only use wildcards when the redirect URL cannot be influenced by untrusted request data."
add_allowed_redirect_domain: "Add domain"
domain: "Domain"
domain_placeholder: "example.com"
response_body: "Response body"
response_body_placeholder: '{"success": true}'
response_key: "Response key"
response_headers: "Response headers"
add_response_header: "Add response header"
data_table_node:
resource: "Resource"
resources:
row: "Row"
operation: "Operation"
operations:
insert: "Insert"
get: "Get"
update: "Update"
delete: "Delete"
upsert: "Upsert"
row_exists: "If row exists"
row_not_exists: "If row does not exist"
data_table_id: "Data table"
data_table_id_placeholder: "Select a data table..."
mapping_mode: "Mapping column mode"
mapping_mode_manual: "Map each column manually"
mapping_mode_auto: "Map automatically"
columns_case_sensitive_hint_description: "Column mappings must match the data table column names exactly (case sensitive)"
columns: "Columns"
filter_combinator: "Match mode"
filter_combinator_and: "All conditions must match"
filter_combinator_or: "Any condition can match"
filter: "Conditions"
limit: "Limit"
sort_column: "Sort by"
sort_column_placeholder: "Select a column..."
sort_direction: "Sort direction"
sort_direction_asc: "Ascending"
sort_direction_desc: "Descending"
value_placeholder: "Value"
executions:
title: "Executions"
workflow: "Workflow"
view_executions: "Executions"
back_to_editor: "Back to editor"
status: "Status"
started_at: "Started"
finished_at: "Finished"
run_time: "Run time"
id: "ID"
expand: "Details"
collapse: "Hide"
details: "Details"
no_executions: "No executions recorded yet"
empty_title: "Hey %{username}, no runs yet"
empty_description: "Once your first workflow runs, execution logs will appear here so you can monitor activity and troubleshoot issues"
delete_selected: "Delete selected"
select: "Select"
cancel_select: "Cancel"
show: "Show"
delete_confirm:
one: "Are you sure you want to delete %{count} execution?"
other: "Are you sure you want to delete %{count} executions?"
input: "Input"
output: "Output"
items: "items"
logs: "Console"
total_time: "Total time:"
export: "Export"
error: "Error"
reason: "Reason"
with_value: "with value"
truncated:
input: "Input truncated"
output: "Output truncated"
value: "Value truncated"
original_bytes: "%{count} bytes before truncation"
original_size: "%{count} items before truncation"
max_bytes: "%{count} byte limit"
statuses:
pending: "Pending"
running: "Running"
success: "Completed"
error: "Error"
skipped: "Skipped"
filtered: "Filtered"
waiting: "Waiting"
kept: "Kept"
rejected: "Rejected"
rate_limited: "Rate limited"
kinds:
trigger: "Trigger"
condition: "Condition"
action: "Action"
flow: "Flow"
stats:
executions: "Executions"
failures: "Failures"
failure_rate: "Failure rate"
avg_run_time: "Avg. run time"
period: "Last 7 days"
variables:
title: "Variables"
description: "Global constants available in all workflows via $vars.KEY"
add: "Add variable"
key: "Key"
key_placeholder: "my_variable"
key_invalid: "Must start with a letter or underscore and contain only letters, numbers, and underscores"
value: "Value"
value_placeholder: "Variable value"
creator: "Creator"
no_variables: "No variables defined yet"
delete_confirm: "Are you sure you want to delete the variable \"%{key}\"?"
empty_title: "%{username}, let's set up a variable"
empty_description: "Variables can be used to store data that can be referenced easily across multiple workflows"
add_first: "Add first variable"
usage_syntax: "Usage syntax"
copy_syntax: "Copy to clipboard"
copied: "Copied to clipboard"
edit: "Edit variable"
credentials:
title: "Credentials"
description: "Encrypted credentials for authenticating workflow integrations"
add: "Add credential"
edit: "Edit credential"
name: "Name"
name_placeholder: "My credential"
type: "Type"
created: "Created"
no_credentials: "No credentials defined yet"
delete_confirm: "Are you sure you want to delete the credential \"%{name}\"?"
empty_title: "%{username}, let's set up a credential"
empty_description: "Credentials store encrypted authentication data for use in workflows"
add_first: "Add first credential"
set_up_credential: "Set up credential"
select_type: "Select type"
referenced_by_workflows: "This credential is used by workflows and cannot be deleted. Remove references first."
in_use_title: "Credential in use"
in_use_description: "This credential cannot be deleted because it is used by the following workflows:"
data_tables:
title: "Data tables"
add: "Add data table"
edit: "Edit data table"
name: "Name"
name_placeholder: "my_table"
name_invalid: "Must start with a letter or underscore and contain only letters, numbers, underscores, and spaces"
no_data_tables: "No data tables yet"
empty_title: "%{username}, let's set up a data table"
empty_description: "Data tables can be used to store structured data that your workflows can read and write"
add_first: "Add first data table"
manage_data_tables: "Manage data tables"
columns: "Columns"
size: "Size"
rows: "Rows"
column_name: "Column name"
column_name_invalid: "Must start with a letter or underscore and contain only letters, numbers, and underscores"
column_type: "Column type"
column_types:
string: "String"
number: "Number"
boolean: "Boolean"
date: "Date"
add_column: "Add column"
add_row: "Add row"
edit_row: "Edit row"
no_rows: "No rows yet"
back: "Back"
delete_confirm: "Are you sure you want to delete this data table and all its rows?"
in_use_title: "Data table in use"
in_use_description: "This data table cannot be deleted because it is used by the following workflows:"
delete_selected: "Delete selected"
clear_selection: "Clear selection"
delete_rows_confirm:
one: "Are you sure you want to delete %{count} row?"
other: "Are you sure you want to delete %{count} rows?"
canvas:
fit_to_view: "Fit"
zoom_to_fit: "Zoom to fit [1]"
zoom_in: "Zoom in [+]"
zoom_out: "Zoom out [-]"
undo: "Undo"
redo: "Redo"
auto_layout: "Auto layout [2]"
add_step: "Add step"
remove_connection: "Remove connection"
export_nodes: "Export"
import_nodes: "Import"
import_error: "Failed to import: invalid file format"
import_version_error: "Failed to import: unsupported format version"
max_nodes_reached: "Workflows are limited to %{max} nodes"
sync_error: "Failed to sync canvas changes. Please reload the page."
sticky_note:
add: "Add sticky note"
delete: "Delete"
change_color: "Change color"
placeholder: "Double-click to edit..."
manual_trigger:
run: "Run manually with the sample pinned data"
triggered: "Triggered"
failed: "Execution failed"
view_execution: "View execution"
listening: "Listening for test webhook event"
needs_pin_data: "Pin sample data on this trigger before running it manually."
pin_data:
pin: "Pin data"
unpin: "Unpin"
is_pinned: "This data is pinned for test executions."
output_available_tip: "Now that you have output data for this node, you can pin it and use it when executing this trigger manually with the green play button."
save: "Save"
cancel: "Cancel"
schema_view: "Schema"
json_view: "JSON"
add_sample_data: "Add sample data"
empty_title: "No output yet"
no_data_yet: "No output yet. Add sample data to test this node manually."
no_data_no_edit: "No output data."
loading_editor: "Loading editor…"
invalid_json: "Invalid JSON"
invalid_json_empty: "JSON cannot be empty."
invalid_shape_not_array: "Pinned data must be an array of items."
invalid_shape_empty: "Pinned data must contain at least one item."
invalid_shape_item_not_object: "Each item must be a JSON object."
size_hint: "%{bytes} / %{max} bytes"
size_exceeded: "Pinned data exceeds the maximum size."
confirm_discard: "Discard your unsaved changes to the pinned data?"
branch:
"true": "Yes"
"false": "No"
done: "Done"
loop: "Loop"