mirror of
https://github.com/discourse/discourse.git
synced 2026-08-14 13:58:53 +08:00
Previously, stale topic workflow triggers filtered only the selected category when a category was configured. This change adds an include subcategories option that defaults to true, so stale topic checks include child categories unless admins opt out. This commit also took the opportunity to rename an exposed variable (_cnd) into `condition` for the public API.
1039 lines
45 KiB
YAML
Vendored
1039 lines
45 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_workflow_created: "Create workflow"
|
|
discourse_workflows_workflow_destroyed: "Delete workflow"
|
|
js:
|
|
discourse_workflows:
|
|
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"
|
|
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"
|
|
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."
|
|
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:create_post": "Create post"
|
|
"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"
|
|
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, or set custom fields on topics"
|
|
"action:post": "Create, retrieve, or list posts"
|
|
"action:create_post": "Create a reply in an existing topic"
|
|
"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": "Add or remove a user from a group"
|
|
"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"
|
|
topic_admin_button:
|
|
label: "Button label"
|
|
label_placeholder: "Run workflow"
|
|
icon: "Button icon"
|
|
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"
|
|
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"
|
|
create_post:
|
|
topic_id: "Topic ID"
|
|
raw: "Body"
|
|
raw_description: "Raw content for the reply"
|
|
reply_to_post_number: "Reply to post number"
|
|
reply_to_post_number_description: "Reply to a specific post number in the topic"
|
|
author_username: "Author"
|
|
post:
|
|
operation: "Operation"
|
|
operations:
|
|
create: "Create 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"
|
|
author_username: "Author"
|
|
post_id: "Post ID"
|
|
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:
|
|
all: "All posts"
|
|
first: "First posts only"
|
|
reply: "Replies only"
|
|
status: "Status"
|
|
statuses:
|
|
any: "Any status"
|
|
open: "Open"
|
|
closed: "Closed"
|
|
archived: "Archived"
|
|
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"
|
|
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:
|
|
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"
|
|
id: "an ID"
|
|
number: "a number"
|
|
option_value: "an option value"
|
|
query_id: "a query ID"
|
|
tag_names: "tag names"
|
|
username: "a username"
|
|
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"
|
|
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"
|
|
number_inputs: "Number of inputs"
|
|
append: "Append"
|
|
combine: "Combine"
|
|
choose_branch: "Choose branch"
|
|
combine_by: "Combine by"
|
|
matching_fields: "Matching fields"
|
|
position: "Position"
|
|
all: "All possible combinations"
|
|
fields_to_match: "Fields to match"
|
|
field_1: "Input 1 field"
|
|
field_2: "Input 2 field"
|
|
join_mode: "Output type"
|
|
keep_matches: "Keep matches"
|
|
keep_non_matches: "Keep non-matches"
|
|
keep_everything: "Keep everything"
|
|
enrich_input_1: "Enrich input 1"
|
|
enrich_input_2: "Enrich input 2"
|
|
output_data_from: "Output data from"
|
|
both: "Both inputs"
|
|
input_1: "Input 1"
|
|
input_2: "Input 2"
|
|
multiple_matches: "Multiple matches"
|
|
first: "First match"
|
|
use_data_of_input: "Use data of input"
|
|
choose_output: "Output"
|
|
specified_input: "Specified input"
|
|
empty: "A single, empty item"
|
|
include_unpaired: "Include unpaired items"
|
|
resolve_clash: "When field values clash"
|
|
prefer_last: "Prefer last input"
|
|
prefer_input_1: "Prefer input 1"
|
|
prefer_input_2: "Prefer input 2"
|
|
add_suffix: "Add suffix"
|
|
merge_mode: "Merging nested fields"
|
|
deep_merge: "Deep merge"
|
|
shallow_merge: "Shallow merge"
|
|
override_empty: "Minimize empty fields"
|
|
fuzzy_compare: "Fuzzy compare"
|
|
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>{% for item in items %}...{% endfor %}</code>. Inside the loop, prefix item fields with <code>item.</code>, for example <code>{{ item.topic.title }}</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"
|