mirror of
https://github.com/langgenius/dify.git
synced 2026-06-26 14:51:13 +08:00
Merge remote-tracking branch 'origin/main' into feat/agent-v2
This commit is contained in:
commit
f9cd7ba9ce
@ -102,11 +102,11 @@ describe('ComponentName', () => {
|
||||
})
|
||||
})
|
||||
|
||||
// Props tests (REQUIRED)
|
||||
// Props tests (REQUIRED when props change observable behavior)
|
||||
describe('Props', () => {
|
||||
it('should apply custom className', () => {
|
||||
render(<Component className="custom" />)
|
||||
expect(screen.getByRole('button')).toHaveClass('custom')
|
||||
it('should disable the action when disabled', () => {
|
||||
render(<Component disabled />)
|
||||
expect(screen.getByRole('button')).toBeDisabled()
|
||||
})
|
||||
})
|
||||
|
||||
@ -220,6 +220,7 @@ Every test should clearly separate:
|
||||
### 2. Black-Box Testing
|
||||
|
||||
- Test observable behavior, not implementation details
|
||||
- Test product contracts, not cosmetic implementation. Do not add or expand unit tests only to lock pure style classes, spacing, colors, backgrounds, or layout micro-adjustments. Cover visual-only fixes with browser/manual verification, screenshots, or E2E/visual checks when risk justifies it. Add unit tests only when the change affects user-observable behavior, accessibility semantics, state, data flow, routing, or a stable component API contract.
|
||||
- Use semantic queries (`getByRole` with accessible `name`, `getByLabelText`, `getByPlaceholderText`, `getByText`, and scoped `within(...)`)
|
||||
- Treat `getByTestId` as a last resort. If a control cannot be found by role/name, label, landmark, or dialog scope, fix the component accessibility first instead of adding or relying on `data-testid`.
|
||||
- Remove production `data-testid` attributes when semantic selectors can cover the behavior. Keep them only for non-visual mocked boundaries, editor/browser shims such as Monaco, canvas/chart output, or third-party widgets with no accessible DOM in the test environment.
|
||||
@ -273,7 +274,7 @@ it('should disable input when isReadOnly is true')
|
||||
### Always Required (All Components)
|
||||
|
||||
1. **Rendering**: Component renders without crashing
|
||||
1. **Props**: Required props, optional props, default values
|
||||
1. **Props**: Required props, optional props, default values that change observable behavior. Do not test pass-through styling props such as `className` unless they are an explicit, stable component API whose absence would break a real integration contract.
|
||||
1. **Edge Cases**: null, undefined, empty values, boundary conditions
|
||||
|
||||
### Conditional (When Present)
|
||||
|
||||
4
.github/workflows/style.yml
vendored
4
.github/workflows/style.yml
vendored
@ -109,6 +109,10 @@ jobs:
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
run: vp run knip:production
|
||||
|
||||
- name: Web production unused declarations check
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
run: vp run knip:production-unused-check
|
||||
|
||||
ts-common-style:
|
||||
name: TS Common
|
||||
runs-on: depot-ubuntu-24.04
|
||||
|
||||
@ -201,21 +201,23 @@ def _legacy_workspace_roles(
|
||||
This keeps the new `/rbac/roles` endpoint compatible with the original
|
||||
Dify role model when enterprise RBAC is disabled.
|
||||
"""
|
||||
|
||||
legacy_roles = [
|
||||
svc.RBACRole(
|
||||
id=role_name,
|
||||
tenant_id="",
|
||||
type=svc.RBACRoleType.WORKSPACE.value,
|
||||
category="global_system_default",
|
||||
name=role_name,
|
||||
description="",
|
||||
is_builtin=True,
|
||||
permission_keys=list(dict.fromkeys(_LEGACY_ROLE_PERMISSION_KEYS[role_name])),
|
||||
role_tag="owner" if role_name == "owner" else "",
|
||||
legacy_roles = []
|
||||
for role_name in ("owner", "admin", "editor", "normal", "dataset_operator"):
|
||||
if not dify_config.DATASET_OPERATOR_ENABLED and role_name == "dataset_operator":
|
||||
continue
|
||||
legacy_roles.append(
|
||||
svc.RBACRole(
|
||||
id=role_name,
|
||||
tenant_id="",
|
||||
type=svc.RBACRoleType.WORKSPACE.value,
|
||||
category="global_system_default",
|
||||
name=role_name,
|
||||
description="",
|
||||
is_builtin=True,
|
||||
permission_keys=list(dict.fromkeys(_LEGACY_ROLE_PERMISSION_KEYS[role_name])),
|
||||
role_tag="owner" if role_name == "owner" else "",
|
||||
)
|
||||
)
|
||||
for role_name in ("owner", "admin", "editor", "normal", "dataset_operator")
|
||||
]
|
||||
|
||||
if not include_owner:
|
||||
legacy_roles = [r for r in legacy_roles if r.name != "owner"]
|
||||
|
||||
@ -195,16 +195,16 @@ class TestTencentDataTrace:
|
||||
mock_proc.assert_called_once_with(trace_info, 123)
|
||||
mock_dur.assert_called_once_with(trace_info)
|
||||
|
||||
def test_workflow_trace_exception(self, tencent_data_trace):
|
||||
def test_workflow_trace_exception(self, tencent_data_trace, caplog):
|
||||
trace_info = MagicMock(spec=WorkflowTraceInfo)
|
||||
trace_info.workflow_run_id = "run-id"
|
||||
|
||||
with patch(
|
||||
"dify_trace_tencent.tencent_trace.TencentTraceUtils.convert_to_trace_id", side_effect=Exception("error")
|
||||
):
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.exception") as mock_log:
|
||||
with caplog.at_level(logging.ERROR):
|
||||
tencent_data_trace.workflow_trace(trace_info)
|
||||
mock_log.assert_called_once_with("[Tencent APM] Failed to process workflow trace")
|
||||
assert "[Tencent APM] Failed to process workflow trace" in caplog.text
|
||||
|
||||
def test_message_trace(self, tencent_data_trace, mock_trace_utils, mock_span_builder):
|
||||
trace_info = MagicMock(spec=MessageTraceInfo)
|
||||
@ -228,15 +228,15 @@ class TestTencentDataTrace:
|
||||
mock_metrics.assert_called_once_with(trace_info)
|
||||
mock_dur.assert_called_once_with(trace_info)
|
||||
|
||||
def test_message_trace_exception(self, tencent_data_trace):
|
||||
def test_message_trace_exception(self, tencent_data_trace, caplog):
|
||||
trace_info = MagicMock(spec=MessageTraceInfo)
|
||||
|
||||
with patch(
|
||||
"dify_trace_tencent.tencent_trace.TencentTraceUtils.convert_to_trace_id", side_effect=Exception("error")
|
||||
):
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.exception") as mock_log:
|
||||
with caplog.at_level(logging.ERROR):
|
||||
tencent_data_trace.message_trace(trace_info)
|
||||
mock_log.assert_called_once_with("[Tencent APM] Failed to process message trace")
|
||||
assert "[Tencent APM] Failed to process message trace" in caplog.text
|
||||
|
||||
def test_tool_trace(self, tencent_data_trace, mock_trace_utils, mock_span_builder):
|
||||
trace_info = MagicMock(spec=ToolTraceInfo)
|
||||
@ -259,16 +259,16 @@ class TestTencentDataTrace:
|
||||
tencent_data_trace.tool_trace(trace_info)
|
||||
tencent_data_trace.trace_client.add_span.assert_not_called()
|
||||
|
||||
def test_tool_trace_exception(self, tencent_data_trace):
|
||||
def test_tool_trace_exception(self, tencent_data_trace, caplog):
|
||||
trace_info = MagicMock(spec=ToolTraceInfo)
|
||||
trace_info.message_id = "msg-id"
|
||||
|
||||
with patch(
|
||||
"dify_trace_tencent.tencent_trace.TencentTraceUtils.convert_to_span_id", side_effect=Exception("error")
|
||||
):
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.exception") as mock_log:
|
||||
with caplog.at_level(logging.ERROR):
|
||||
tencent_data_trace.tool_trace(trace_info)
|
||||
mock_log.assert_called_once_with("[Tencent APM] Failed to process tool trace")
|
||||
assert "[Tencent APM] Failed to process tool trace" in caplog.text
|
||||
|
||||
def test_dataset_retrieval_trace(self, tencent_data_trace, mock_trace_utils, mock_span_builder):
|
||||
trace_info = MagicMock(spec=DatasetRetrievalTraceInfo)
|
||||
@ -291,29 +291,30 @@ class TestTencentDataTrace:
|
||||
tencent_data_trace.dataset_retrieval_trace(trace_info)
|
||||
tencent_data_trace.trace_client.add_span.assert_not_called()
|
||||
|
||||
def test_dataset_retrieval_trace_exception(self, tencent_data_trace):
|
||||
def test_dataset_retrieval_trace_exception(self, tencent_data_trace, caplog):
|
||||
trace_info = MagicMock(spec=DatasetRetrievalTraceInfo)
|
||||
trace_info.message_id = "msg-id"
|
||||
|
||||
with patch(
|
||||
"dify_trace_tencent.tencent_trace.TencentTraceUtils.convert_to_span_id", side_effect=Exception("error")
|
||||
):
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.exception") as mock_log:
|
||||
with caplog.at_level(logging.ERROR):
|
||||
tencent_data_trace.dataset_retrieval_trace(trace_info)
|
||||
mock_log.assert_called_once_with("[Tencent APM] Failed to process dataset retrieval trace")
|
||||
assert "[Tencent APM] Failed to process dataset retrieval trace" in caplog.text
|
||||
|
||||
def test_suggested_question_trace(self, tencent_data_trace):
|
||||
def test_suggested_question_trace(self, tencent_data_trace, caplog):
|
||||
trace_info = MagicMock(spec=SuggestedQuestionTraceInfo)
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.info") as mock_log:
|
||||
with caplog.at_level(logging.INFO):
|
||||
tencent_data_trace.suggested_question_trace(trace_info)
|
||||
mock_log.assert_called_once_with("[Tencent APM] Processing suggested question trace")
|
||||
assert "[Tencent APM] Processing suggested question trace" in caplog.text
|
||||
|
||||
def test_suggested_question_trace_exception(self, tencent_data_trace):
|
||||
def test_suggested_question_trace_exception(self, tencent_data_trace, monkeypatch, caplog):
|
||||
trace_info = MagicMock(spec=SuggestedQuestionTraceInfo)
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.info", side_effect=Exception("error")):
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.exception") as mock_log:
|
||||
tencent_data_trace.suggested_question_trace(trace_info)
|
||||
mock_log.assert_called_once_with("[Tencent APM] Failed to process suggested question trace")
|
||||
target_logger = logging.getLogger("dify_trace_tencent.tencent_trace")
|
||||
monkeypatch.setattr(target_logger, "info", MagicMock(side_effect=Exception("error")))
|
||||
with caplog.at_level(logging.ERROR):
|
||||
tencent_data_trace.suggested_question_trace(trace_info)
|
||||
assert "[Tencent APM] Failed to process suggested question trace" in caplog.text
|
||||
|
||||
def test_process_workflow_nodes(self, tencent_data_trace, mock_trace_utils):
|
||||
trace_info = MagicMock(spec=WorkflowTraceInfo)
|
||||
@ -335,7 +336,7 @@ class TestTencentDataTrace:
|
||||
assert tencent_data_trace.trace_client.add_span.call_count == 2
|
||||
mock_metrics.assert_called_once_with(node1)
|
||||
|
||||
def test_process_workflow_nodes_node_exception(self, tencent_data_trace, mock_trace_utils):
|
||||
def test_process_workflow_nodes_node_exception(self, tencent_data_trace, mock_trace_utils, caplog):
|
||||
trace_info = MagicMock(spec=WorkflowTraceInfo)
|
||||
mock_trace_utils.convert_to_span_id.return_value = 111
|
||||
|
||||
@ -344,18 +345,17 @@ class TestTencentDataTrace:
|
||||
|
||||
with patch.object(tencent_data_trace, "_get_workflow_node_executions", return_value=[node]):
|
||||
with patch.object(tencent_data_trace, "_build_workflow_node_span", side_effect=Exception("node error")):
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.exception") as mock_log:
|
||||
with caplog.at_level(logging.ERROR):
|
||||
tencent_data_trace._process_workflow_nodes(trace_info, 123)
|
||||
# The exception should be caught by the outer handler since convert_to_span_id is called first
|
||||
mock_log.assert_called_once_with("[Tencent APM] Failed to process workflow nodes")
|
||||
assert "[Tencent APM] Failed to process workflow nodes" in caplog.text
|
||||
|
||||
def test_process_workflow_nodes_exception(self, tencent_data_trace, mock_trace_utils):
|
||||
def test_process_workflow_nodes_exception(self, tencent_data_trace, mock_trace_utils, caplog):
|
||||
trace_info = MagicMock(spec=WorkflowTraceInfo)
|
||||
mock_trace_utils.convert_to_span_id.side_effect = Exception("outer error")
|
||||
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.exception") as mock_log:
|
||||
with caplog.at_level(logging.ERROR):
|
||||
tencent_data_trace._process_workflow_nodes(trace_info, 123)
|
||||
mock_log.assert_called_once_with("[Tencent APM] Failed to process workflow nodes")
|
||||
assert "[Tencent APM] Failed to process workflow nodes" in caplog.text
|
||||
|
||||
def test_build_workflow_node_span(self, tencent_data_trace, mock_span_builder):
|
||||
trace_info = MagicMock(spec=WorkflowTraceInfo)
|
||||
@ -377,16 +377,16 @@ class TestTencentDataTrace:
|
||||
assert result == "span"
|
||||
builder_method.assert_called_once_with(123, 456, trace_info, node)
|
||||
|
||||
def test_build_workflow_node_span_exception(self, tencent_data_trace, mock_span_builder):
|
||||
def test_build_workflow_node_span_exception(self, tencent_data_trace, mock_span_builder, caplog):
|
||||
node = MagicMock(spec=WorkflowNodeExecution)
|
||||
node.node_type = BuiltinNodeTypes.LLM
|
||||
node.id = "n1"
|
||||
mock_span_builder.build_workflow_llm_span.side_effect = Exception("error")
|
||||
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.debug") as mock_log:
|
||||
with caplog.at_level(logging.DEBUG):
|
||||
result = tencent_data_trace._build_workflow_node_span(node, 123, MagicMock(), 456)
|
||||
assert result is None
|
||||
mock_log.assert_called_once()
|
||||
assert result is None
|
||||
assert len([r for r in caplog.records if r.levelno == logging.DEBUG]) >= 1
|
||||
|
||||
def test_get_workflow_node_executions(self, tencent_data_trace):
|
||||
trace_info = MagicMock(spec=WorkflowTraceInfo)
|
||||
@ -419,16 +419,16 @@ class TestTencentDataTrace:
|
||||
assert results == mock_executions
|
||||
account.set_tenant_id.assert_called_once_with("tenant-1")
|
||||
|
||||
def test_get_workflow_node_executions_no_app_id(self, tencent_data_trace):
|
||||
def test_get_workflow_node_executions_no_app_id(self, tencent_data_trace, caplog):
|
||||
trace_info = MagicMock(spec=WorkflowTraceInfo)
|
||||
trace_info.metadata = {}
|
||||
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.exception") as mock_log:
|
||||
with caplog.at_level(logging.ERROR):
|
||||
results = tencent_data_trace._get_workflow_node_executions(trace_info)
|
||||
assert results == []
|
||||
mock_log.assert_called_once()
|
||||
assert results == []
|
||||
assert len([r for r in caplog.records if r.levelno == logging.ERROR]) >= 1
|
||||
|
||||
def test_get_workflow_node_executions_app_not_found(self, tencent_data_trace):
|
||||
def test_get_workflow_node_executions_app_not_found(self, tencent_data_trace, caplog):
|
||||
trace_info = MagicMock(spec=WorkflowTraceInfo)
|
||||
trace_info.metadata = {"app_id": "app-1"}
|
||||
|
||||
@ -439,10 +439,10 @@ class TestTencentDataTrace:
|
||||
session = mock_session_ctx.return_value.__enter__.return_value
|
||||
session.scalar.return_value = None
|
||||
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.exception") as mock_log:
|
||||
with caplog.at_level(logging.ERROR):
|
||||
results = tencent_data_trace._get_workflow_node_executions(trace_info)
|
||||
assert results == []
|
||||
mock_log.assert_called_once()
|
||||
assert results == []
|
||||
assert len([r for r in caplog.records if r.levelno == logging.ERROR]) >= 1
|
||||
|
||||
def test_get_user_id_workflow(self, tencent_data_trace):
|
||||
trace_info = MagicMock(spec=WorkflowTraceInfo)
|
||||
@ -471,16 +471,16 @@ class TestTencentDataTrace:
|
||||
user_id = tencent_data_trace._get_user_id(trace_info)
|
||||
assert user_id == "anonymous"
|
||||
|
||||
def test_get_user_id_exception(self, tencent_data_trace):
|
||||
def test_get_user_id_exception(self, tencent_data_trace, caplog):
|
||||
trace_info = MagicMock(spec=WorkflowTraceInfo)
|
||||
trace_info.tenant_id = "t"
|
||||
trace_info.metadata = {"user_id": "u"}
|
||||
|
||||
with patch("dify_trace_tencent.tencent_trace.sessionmaker", side_effect=Exception("error")):
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.exception") as mock_log:
|
||||
with caplog.at_level(logging.ERROR):
|
||||
user_id = tencent_data_trace._get_user_id(trace_info)
|
||||
assert user_id == "unknown"
|
||||
mock_log.assert_called_once_with("[Tencent APM] Failed to get user ID")
|
||||
assert user_id == "unknown"
|
||||
assert "[Tencent APM] Failed to get user ID" in caplog.text
|
||||
|
||||
def test_record_llm_metrics_usage_in_process_data(self, tencent_data_trace):
|
||||
node = MagicMock(spec=WorkflowNodeExecution)
|
||||
@ -514,14 +514,14 @@ class TestTencentDataTrace:
|
||||
tencent_data_trace.trace_client.record_llm_duration.assert_called_once()
|
||||
tencent_data_trace.trace_client.record_token_usage.assert_called_once()
|
||||
|
||||
def test_record_llm_metrics_exception(self, tencent_data_trace):
|
||||
def test_record_llm_metrics_exception(self, tencent_data_trace, caplog):
|
||||
node = MagicMock(spec=WorkflowNodeExecution)
|
||||
node.process_data = None
|
||||
node.outputs = None
|
||||
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.debug") as mock_log:
|
||||
with caplog.at_level(logging.DEBUG):
|
||||
tencent_data_trace._record_llm_metrics(node)
|
||||
# Should not crash
|
||||
# Should not crash
|
||||
|
||||
def test_record_message_llm_metrics(self, tencent_data_trace):
|
||||
trace_info = MagicMock(spec=MessageTraceInfo)
|
||||
@ -553,13 +553,13 @@ class TestTencentDataTrace:
|
||||
tencent_data_trace._record_message_llm_metrics(trace_info)
|
||||
tencent_data_trace.trace_client.record_llm_duration.assert_called_once()
|
||||
|
||||
def test_record_message_llm_metrics_exception(self, tencent_data_trace):
|
||||
def test_record_message_llm_metrics_exception(self, tencent_data_trace, caplog):
|
||||
trace_info = MagicMock(spec=MessageTraceInfo)
|
||||
trace_info.metadata = None
|
||||
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.debug") as mock_log:
|
||||
with caplog.at_level(logging.DEBUG):
|
||||
tencent_data_trace._record_message_llm_metrics(trace_info)
|
||||
# Should not crash
|
||||
# Should not crash
|
||||
|
||||
def test_record_workflow_trace_duration(self, tencent_data_trace):
|
||||
trace_info = MagicMock(spec=WorkflowTraceInfo)
|
||||
@ -605,11 +605,11 @@ class TestTencentDataTrace:
|
||||
attributes = kwargs["attributes"] if "attributes" in kwargs else args[1] if len(args) > 1 else {}
|
||||
assert attributes["has_conversation"] == "false"
|
||||
|
||||
def test_record_workflow_trace_duration_exception(self, tencent_data_trace):
|
||||
def test_record_workflow_trace_duration_exception(self, tencent_data_trace, caplog):
|
||||
trace_info = MagicMock(spec=WorkflowTraceInfo)
|
||||
trace_info.start_time = MagicMock() # This might cause total_seconds() to fail if not mocked right
|
||||
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.debug") as mock_log:
|
||||
with caplog.at_level(logging.DEBUG):
|
||||
tencent_data_trace._record_workflow_trace_duration(trace_info)
|
||||
|
||||
def test_record_message_trace_duration(self, tencent_data_trace):
|
||||
@ -627,11 +627,11 @@ class TestTencentDataTrace:
|
||||
2.0, {"conversation_mode": "chat", "stream": "true"}
|
||||
)
|
||||
|
||||
def test_record_message_trace_duration_exception(self, tencent_data_trace):
|
||||
def test_record_message_trace_duration_exception(self, tencent_data_trace, caplog):
|
||||
trace_info = MagicMock(spec=MessageTraceInfo)
|
||||
trace_info.start_time = None
|
||||
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.debug") as mock_log:
|
||||
with caplog.at_level(logging.DEBUG):
|
||||
tencent_data_trace._record_message_trace_duration(trace_info)
|
||||
|
||||
def test_close(self, tencent_data_trace):
|
||||
@ -647,11 +647,11 @@ class TestTencentDataTrace:
|
||||
|
||||
client.shutdown.assert_called_once()
|
||||
|
||||
def test_close_exception(self, tencent_data_trace):
|
||||
def test_close_exception(self, tencent_data_trace, caplog):
|
||||
tencent_data_trace.trace_client.shutdown.side_effect = Exception("error")
|
||||
with patch("dify_trace_tencent.tencent_trace.logger.exception") as mock_log:
|
||||
with caplog.at_level(logging.ERROR):
|
||||
tencent_data_trace.close()
|
||||
mock_log.assert_called_once_with("[Tencent APM] Failed to shutdown trace client during cleanup")
|
||||
assert "[Tencent APM] Failed to shutdown trace client during cleanup" in caplog.text
|
||||
|
||||
def test_close_handles_async_shutdown_mock(self, tencent_data_trace):
|
||||
shutdown = AsyncMock()
|
||||
|
||||
@ -113,7 +113,7 @@ class LindormVectorStore(BaseVector):
|
||||
)
|
||||
def _bulk_with_retry(actions):
|
||||
try:
|
||||
response = self._client.bulk(actions, timeout=timeout)
|
||||
response = self._client.bulk(body=actions, timeout=timeout)
|
||||
if response["errors"]:
|
||||
error_items = [item for item in response["items"] if "error" in item["index"]]
|
||||
error_msg = f"Bulk indexing had {len(error_items)} errors"
|
||||
@ -231,7 +231,7 @@ class LindormVectorStore(BaseVector):
|
||||
routing_filter_query = {
|
||||
"query": {"bool": {"must": [{"term": {f"{ROUTING_FIELD}.keyword": self._routing}}]}}
|
||||
}
|
||||
self._client.delete_by_query(self._collection_name, body=routing_filter_query)
|
||||
self._client.delete_by_query(index=self._collection_name, body=routing_filter_query)
|
||||
self.refresh()
|
||||
else:
|
||||
if self._client.indices.exists(index=self._collection_name):
|
||||
|
||||
@ -127,7 +127,7 @@ def test_create_refresh_and_add_texts_success(lindorm_module, monkeypatch: pytes
|
||||
vector.add_texts(docs, embeddings, batch_size=2, timeout=9)
|
||||
|
||||
assert vector._client.bulk.call_count == 2
|
||||
actions = vector._client.bulk.call_args_list[0].args[0]
|
||||
actions = vector._client.bulk.call_args_list[0].kwargs["body"]
|
||||
assert actions[0]["index"]["routing"] == "route"
|
||||
assert actions[1][lindorm_module.ROUTING_FIELD] == "route"
|
||||
vector.refresh()
|
||||
|
||||
@ -1788,6 +1788,9 @@ class TenantService:
|
||||
account_id,
|
||||
)
|
||||
|
||||
if dify_config.RBAC_ENABLED:
|
||||
RBACService.MemberRoles.delete_rbac_bindings(tenant_id=tenant.id, account_id=account_id)
|
||||
|
||||
@staticmethod
|
||||
def update_member_role(
|
||||
tenant: Tenant, member: Account, new_role: str, operator: Account, *, session: scoped_session | Session
|
||||
|
||||
@ -379,6 +379,9 @@ _LEGACY_WORKSPACE_EDITOR_KEYS: list[str] = [
|
||||
"snippets.create_and_modify",
|
||||
"tool.manage",
|
||||
"snippets.create_and_modify",
|
||||
"billing.view",
|
||||
"billing.subscription.manage",
|
||||
"billing.manage",
|
||||
]
|
||||
|
||||
_LEGACY_WORKSPACE_NORMAL_KEYS: list[str] = [
|
||||
@ -386,6 +389,9 @@ _LEGACY_WORKSPACE_NORMAL_KEYS: list[str] = [
|
||||
"plugin.install",
|
||||
"credential.use",
|
||||
"app_library.access",
|
||||
"billing.view",
|
||||
"billing.subscription.manage",
|
||||
"billing.manage",
|
||||
]
|
||||
|
||||
_LEGACY_WORKSPACE_DATASET_OPERATOR_KEYS: list[str] = [
|
||||
@ -834,6 +840,7 @@ class RBACService:
|
||||
options: ListOption | None = None,
|
||||
) -> Paginated[RBACRole]:
|
||||
params = (options or ListOption()).to_params({"include_owner": include_owner})
|
||||
params["dataset_operator_enabled"] = dify_config.DATASET_OPERATOR_ENABLED
|
||||
data = _inner_call(
|
||||
"GET",
|
||||
f"{_INNER_PREFIX}/roles",
|
||||
@ -1678,6 +1685,17 @@ class RBACService:
|
||||
)
|
||||
return MemberRolesResponse.model_validate(data or {})
|
||||
|
||||
@staticmethod
|
||||
def delete_rbac_bindings(tenant_id: str, account_id: str):
|
||||
data = _inner_call(
|
||||
"DELETE",
|
||||
f"{_INNER_PREFIX}/members/rbac-bindings",
|
||||
tenant_id=tenant_id,
|
||||
account_id=account_id,
|
||||
params={"account_id": account_id},
|
||||
)
|
||||
return data
|
||||
|
||||
class CheckAccess:
|
||||
"""Call the ``/inner/api/rbac/check-access`` endpoint."""
|
||||
|
||||
|
||||
@ -9,6 +9,7 @@ This module tests the core authentication endpoints including:
|
||||
"""
|
||||
|
||||
import base64
|
||||
import logging
|
||||
from unittest.mock import ANY, MagicMock, Mock, patch
|
||||
|
||||
import pytest
|
||||
@ -191,7 +192,7 @@ class TestLoginApi:
|
||||
@patch("controllers.console.auth.login.dify_config.BILLING_ENABLED", False)
|
||||
@patch("controllers.console.auth.login.AccountService.is_login_error_rate_limit")
|
||||
@patch("controllers.console.auth.login.RegisterService.get_invitation_with_case_fallback")
|
||||
def test_login_fails_when_rate_limited(self, mock_get_invitation, mock_is_rate_limit, mock_db, app: Flask):
|
||||
def test_login_fails_when_rate_limited(self, mock_get_invitation, mock_is_rate_limit, mock_db, app: Flask, caplog):
|
||||
"""
|
||||
Test login rejection when rate limit is exceeded.
|
||||
|
||||
@ -204,22 +205,24 @@ class TestLoginApi:
|
||||
mock_get_invitation.return_value = None
|
||||
|
||||
# Act & Assert
|
||||
with patch("controllers.console.auth.login.logger.warning") as mock_log_warning:
|
||||
with app.test_request_context(
|
||||
"/login", method="POST", json={"email": "test@example.com", "password": encode_password("password")}
|
||||
):
|
||||
login_api = LoginApi()
|
||||
with pytest.raises(EmailPasswordLoginLimitError):
|
||||
login_api.post()
|
||||
with app.test_request_context(
|
||||
"/login", method="POST", json={"email": "test@example.com", "password": encode_password("password")}
|
||||
):
|
||||
login_api = LoginApi()
|
||||
with pytest.raises(EmailPasswordLoginLimitError):
|
||||
login_api.post()
|
||||
|
||||
assert mock_log_warning.call_count == 1
|
||||
assert mock_log_warning.call_args.args[1] == "test@example.com"
|
||||
assert mock_log_warning.call_args.args[2] == LoginFailureReason.LOGIN_RATE_LIMITED
|
||||
warn_records = [
|
||||
r for r in caplog.records if r.name == "controllers.console.auth.login" and r.levelno == logging.WARNING
|
||||
]
|
||||
assert len(warn_records) == 1
|
||||
assert warn_records[0].args[0] == "test@example.com"
|
||||
assert warn_records[0].args[1] == LoginFailureReason.LOGIN_RATE_LIMITED
|
||||
|
||||
@patch("controllers.console.wraps.db")
|
||||
@patch("controllers.console.auth.login.dify_config.BILLING_ENABLED", True)
|
||||
@patch("controllers.console.auth.login.BillingService.is_email_in_freeze")
|
||||
def test_login_fails_when_account_frozen(self, mock_is_frozen, mock_db, app: Flask):
|
||||
def test_login_fails_when_account_frozen(self, mock_is_frozen, mock_db, app: Flask, caplog):
|
||||
"""
|
||||
Test login rejection for frozen accounts.
|
||||
|
||||
@ -231,17 +234,19 @@ class TestLoginApi:
|
||||
mock_is_frozen.return_value = True
|
||||
|
||||
# Act & Assert
|
||||
with patch("controllers.console.auth.login.logger.warning") as mock_log_warning:
|
||||
with app.test_request_context(
|
||||
"/login", method="POST", json={"email": "frozen@example.com", "password": encode_password("password")}
|
||||
):
|
||||
login_api = LoginApi()
|
||||
with pytest.raises(AccountInFreezeError):
|
||||
login_api.post()
|
||||
with app.test_request_context(
|
||||
"/login", method="POST", json={"email": "frozen@example.com", "password": encode_password("password")}
|
||||
):
|
||||
login_api = LoginApi()
|
||||
with pytest.raises(AccountInFreezeError):
|
||||
login_api.post()
|
||||
|
||||
assert mock_log_warning.call_count == 1
|
||||
assert mock_log_warning.call_args.args[1] == "frozen@example.com"
|
||||
assert mock_log_warning.call_args.args[2] == LoginFailureReason.ACCOUNT_IN_FREEZE
|
||||
warn_records = [
|
||||
r for r in caplog.records if r.name == "controllers.console.auth.login" and r.levelno == logging.WARNING
|
||||
]
|
||||
assert len(warn_records) == 1
|
||||
assert warn_records[0].args[0] == "frozen@example.com"
|
||||
assert warn_records[0].args[1] == LoginFailureReason.ACCOUNT_IN_FREEZE
|
||||
|
||||
@patch("controllers.console.wraps.db")
|
||||
@patch("controllers.console.auth.login.dify_config.BILLING_ENABLED", False)
|
||||
@ -257,6 +262,7 @@ class TestLoginApi:
|
||||
mock_is_rate_limit,
|
||||
mock_db,
|
||||
app: Flask,
|
||||
caplog,
|
||||
):
|
||||
"""
|
||||
Test login failure with invalid credentials.
|
||||
@ -272,20 +278,22 @@ class TestLoginApi:
|
||||
mock_authenticate.side_effect = AccountPasswordError("Invalid password")
|
||||
|
||||
# Act & Assert
|
||||
with patch("controllers.console.auth.login.logger.warning") as mock_log_warning:
|
||||
with app.test_request_context(
|
||||
"/login",
|
||||
method="POST",
|
||||
json={"email": "test@example.com", "password": encode_password("WrongPass123!")},
|
||||
):
|
||||
login_api = LoginApi()
|
||||
with pytest.raises(AuthenticationFailedError):
|
||||
login_api.post()
|
||||
with app.test_request_context(
|
||||
"/login",
|
||||
method="POST",
|
||||
json={"email": "test@example.com", "password": encode_password("WrongPass123!")},
|
||||
):
|
||||
login_api = LoginApi()
|
||||
with pytest.raises(AuthenticationFailedError):
|
||||
login_api.post()
|
||||
|
||||
mock_add_rate_limit.assert_called_once_with("test@example.com")
|
||||
assert mock_log_warning.call_count == 1
|
||||
assert mock_log_warning.call_args.args[1] == "test@example.com"
|
||||
assert mock_log_warning.call_args.args[2] == LoginFailureReason.INVALID_CREDENTIALS
|
||||
warn_records = [
|
||||
r for r in caplog.records if r.name == "controllers.console.auth.login" and r.levelno == logging.WARNING
|
||||
]
|
||||
assert len(warn_records) == 1
|
||||
assert warn_records[0].args[0] == "test@example.com"
|
||||
assert warn_records[0].args[1] == LoginFailureReason.INVALID_CREDENTIALS
|
||||
|
||||
@patch("controllers.console.wraps.db")
|
||||
@patch("controllers.console.auth.login.dify_config.BILLING_ENABLED", False)
|
||||
@ -293,7 +301,7 @@ class TestLoginApi:
|
||||
@patch("controllers.console.auth.login.RegisterService.get_invitation_with_case_fallback")
|
||||
@patch("controllers.console.auth.login.AccountService.authenticate")
|
||||
def test_login_fails_for_banned_account(
|
||||
self, mock_authenticate, mock_get_invitation, mock_is_rate_limit, mock_db, app: Flask
|
||||
self, mock_authenticate, mock_get_invitation, mock_is_rate_limit, mock_db, app: Flask, caplog
|
||||
):
|
||||
"""
|
||||
Test login rejection for banned accounts.
|
||||
@ -308,19 +316,21 @@ class TestLoginApi:
|
||||
mock_authenticate.side_effect = AccountLoginError("Account is banned")
|
||||
|
||||
# Act & Assert
|
||||
with patch("controllers.console.auth.login.logger.warning") as mock_log_warning:
|
||||
with app.test_request_context(
|
||||
"/login",
|
||||
method="POST",
|
||||
json={"email": "banned@example.com", "password": encode_password("ValidPass123!")},
|
||||
):
|
||||
login_api = LoginApi()
|
||||
with pytest.raises(AccountBannedError):
|
||||
login_api.post()
|
||||
with app.test_request_context(
|
||||
"/login",
|
||||
method="POST",
|
||||
json={"email": "banned@example.com", "password": encode_password("ValidPass123!")},
|
||||
):
|
||||
login_api = LoginApi()
|
||||
with pytest.raises(AccountBannedError):
|
||||
login_api.post()
|
||||
|
||||
assert mock_log_warning.call_count == 1
|
||||
assert mock_log_warning.call_args.args[1] == "banned@example.com"
|
||||
assert mock_log_warning.call_args.args[2] == LoginFailureReason.ACCOUNT_BANNED
|
||||
warn_records = [
|
||||
r for r in caplog.records if r.name == "controllers.console.auth.login" and r.levelno == logging.WARNING
|
||||
]
|
||||
assert len(warn_records) == 1
|
||||
assert warn_records[0].args[0] == "banned@example.com"
|
||||
assert warn_records[0].args[1] == LoginFailureReason.ACCOUNT_BANNED
|
||||
|
||||
@patch("controllers.console.wraps.db")
|
||||
@patch("controllers.console.auth.login.dify_config.BILLING_ENABLED", False)
|
||||
@ -452,23 +462,26 @@ class TestLoginApi:
|
||||
mock_get_token_data: MagicMock,
|
||||
mock_db: MagicMock,
|
||||
app: Flask,
|
||||
caplog,
|
||||
):
|
||||
mock_get_token_data.return_value = {"email": "User@Example.com", "code": "123456"}
|
||||
mock_get_account.side_effect = Unauthorized("Account is banned.")
|
||||
|
||||
with patch("controllers.console.auth.login.logger.warning") as mock_log_warning:
|
||||
with app.test_request_context(
|
||||
"/email-code-login/validity",
|
||||
method="POST",
|
||||
json={"email": "User@Example.com", "code": encode_code("123456"), "token": "token-123"},
|
||||
):
|
||||
with pytest.raises(AccountBannedError):
|
||||
EmailCodeLoginApi().post()
|
||||
with app.test_request_context(
|
||||
"/email-code-login/validity",
|
||||
method="POST",
|
||||
json={"email": "User@Example.com", "code": encode_code("123456"), "token": "token-123"},
|
||||
):
|
||||
with pytest.raises(AccountBannedError):
|
||||
EmailCodeLoginApi().post()
|
||||
|
||||
mock_revoke_token.assert_called_once_with("token-123")
|
||||
assert mock_log_warning.call_count == 1
|
||||
assert mock_log_warning.call_args.args[1] == "user@example.com"
|
||||
assert mock_log_warning.call_args.args[2] == LoginFailureReason.ACCOUNT_BANNED
|
||||
warn_records = [
|
||||
r for r in caplog.records if r.name == "controllers.console.auth.login" and r.levelno == logging.WARNING
|
||||
]
|
||||
assert len(warn_records) == 1
|
||||
assert warn_records[0].args[0] == "user@example.com"
|
||||
assert warn_records[0].args[1] == LoginFailureReason.ACCOUNT_BANNED
|
||||
|
||||
|
||||
class TestLogoutApi:
|
||||
|
||||
@ -201,10 +201,10 @@ class TestPaginationMapping:
|
||||
},
|
||||
]
|
||||
assert response["pagination"] == {
|
||||
"total_count": 5,
|
||||
"total_count": 4,
|
||||
"per_page": 2,
|
||||
"current_page": 1,
|
||||
"total_pages": 3,
|
||||
"total_pages": 2,
|
||||
}
|
||||
mock_list.assert_not_called()
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import base64
|
||||
import logging
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
@ -16,6 +17,13 @@ def encode_code(code: str) -> str:
|
||||
return base64.b64encode(code.encode("utf-8")).decode()
|
||||
|
||||
|
||||
def assert_login_failure_logged(caplog: pytest.LogCaptureFixture, email: str, reason: LoginFailureReason) -> None:
|
||||
records = [record for record in caplog.records if record.name == "controllers.web.login"]
|
||||
assert len(records) == 1
|
||||
assert records[0].args[0] == email
|
||||
assert records[0].args[1] == reason
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def app():
|
||||
flask_app = Flask(__name__)
|
||||
@ -114,10 +122,10 @@ class TestLoginApi:
|
||||
"controllers.web.login.WebAppAuthService.authenticate",
|
||||
side_effect=services.errors.account.AccountLoginError(),
|
||||
)
|
||||
def test_login_banned_account(self, mock_auth: MagicMock, app: Flask) -> None:
|
||||
def test_login_banned_account(self, mock_auth: MagicMock, app: Flask, caplog: pytest.LogCaptureFixture) -> None:
|
||||
from controllers.console.error import AccountBannedError
|
||||
|
||||
with patch("controllers.web.login.logger.warning") as mock_log_warning:
|
||||
with caplog.at_level(logging.WARNING, logger="controllers.web.login"):
|
||||
with app.test_request_context(
|
||||
"/web/login",
|
||||
method="POST",
|
||||
@ -126,18 +134,16 @@ class TestLoginApi:
|
||||
with pytest.raises(AccountBannedError):
|
||||
LoginApi().post()
|
||||
|
||||
assert mock_log_warning.call_count == 1
|
||||
assert mock_log_warning.call_args.args[1] == "user@example.com"
|
||||
assert mock_log_warning.call_args.args[2] == LoginFailureReason.ACCOUNT_BANNED
|
||||
assert_login_failure_logged(caplog, "user@example.com", LoginFailureReason.ACCOUNT_BANNED)
|
||||
|
||||
@patch(
|
||||
"controllers.web.login.WebAppAuthService.authenticate",
|
||||
side_effect=services.errors.account.AccountPasswordError(),
|
||||
)
|
||||
def test_login_wrong_password(self, mock_auth: MagicMock, app: Flask) -> None:
|
||||
def test_login_wrong_password(self, mock_auth: MagicMock, app: Flask, caplog: pytest.LogCaptureFixture) -> None:
|
||||
from controllers.console.auth.error import AuthenticationFailedError
|
||||
|
||||
with patch("controllers.web.login.logger.warning") as mock_log_warning:
|
||||
with caplog.at_level(logging.WARNING, logger="controllers.web.login"):
|
||||
with app.test_request_context(
|
||||
"/web/login",
|
||||
method="POST",
|
||||
@ -146,18 +152,16 @@ class TestLoginApi:
|
||||
with pytest.raises(AuthenticationFailedError):
|
||||
LoginApi().post()
|
||||
|
||||
assert mock_log_warning.call_count == 1
|
||||
assert mock_log_warning.call_args.args[1] == "user@example.com"
|
||||
assert mock_log_warning.call_args.args[2] == LoginFailureReason.INVALID_CREDENTIALS
|
||||
assert_login_failure_logged(caplog, "user@example.com", LoginFailureReason.INVALID_CREDENTIALS)
|
||||
|
||||
@patch(
|
||||
"controllers.web.login.WebAppAuthService.authenticate",
|
||||
side_effect=services.errors.account.AccountNotFoundError(),
|
||||
)
|
||||
def test_login_account_not_found(self, mock_auth: MagicMock, app: Flask) -> None:
|
||||
def test_login_account_not_found(self, mock_auth: MagicMock, app: Flask, caplog: pytest.LogCaptureFixture) -> None:
|
||||
from controllers.console.auth.error import AuthenticationFailedError
|
||||
|
||||
with patch("controllers.web.login.logger.warning") as mock_log_warning:
|
||||
with caplog.at_level(logging.WARNING, logger="controllers.web.login"):
|
||||
with app.test_request_context(
|
||||
"/web/login",
|
||||
method="POST",
|
||||
@ -166,13 +170,13 @@ class TestLoginApi:
|
||||
with pytest.raises(AuthenticationFailedError):
|
||||
LoginApi().post()
|
||||
|
||||
assert mock_log_warning.call_count == 1
|
||||
assert mock_log_warning.call_args.args[1] == "missing@example.com"
|
||||
assert mock_log_warning.call_args.args[2] == LoginFailureReason.ACCOUNT_NOT_FOUND
|
||||
assert_login_failure_logged(caplog, "missing@example.com", LoginFailureReason.ACCOUNT_NOT_FOUND)
|
||||
|
||||
@patch("controllers.web.login.WebAppAuthService.get_email_code_login_data", return_value=None)
|
||||
def test_email_code_login_logs_invalid_token(self, mock_get_token_data: MagicMock, app: Flask) -> None:
|
||||
with patch("controllers.web.login.logger.warning") as mock_log_warning:
|
||||
def test_email_code_login_logs_invalid_token(
|
||||
self, mock_get_token_data: MagicMock, app: Flask, caplog: pytest.LogCaptureFixture
|
||||
) -> None:
|
||||
with caplog.at_level(logging.WARNING, logger="controllers.web.login"):
|
||||
with app.test_request_context(
|
||||
"/web/email-code-login/validity",
|
||||
method="POST",
|
||||
@ -182,9 +186,7 @@ class TestLoginApi:
|
||||
EmailCodeLoginApi().post()
|
||||
|
||||
mock_get_token_data.assert_called_once_with("token-123")
|
||||
assert mock_log_warning.call_count == 1
|
||||
assert mock_log_warning.call_args.args[1] == "user@example.com"
|
||||
assert mock_log_warning.call_args.args[2] == LoginFailureReason.INVALID_EMAIL_CODE_TOKEN
|
||||
assert_login_failure_logged(caplog, "user@example.com", LoginFailureReason.INVALID_EMAIL_CODE_TOKEN)
|
||||
|
||||
@patch("controllers.web.login.WebAppAuthService.revoke_email_code_login_token")
|
||||
@patch(
|
||||
@ -201,10 +203,11 @@ class TestLoginApi:
|
||||
mock_get_user: MagicMock,
|
||||
mock_revoke_token: MagicMock,
|
||||
app: Flask,
|
||||
caplog: pytest.LogCaptureFixture,
|
||||
) -> None:
|
||||
from controllers.console.error import AccountBannedError
|
||||
|
||||
with patch("controllers.web.login.logger.warning") as mock_log_warning:
|
||||
with caplog.at_level(logging.WARNING, logger="controllers.web.login"):
|
||||
with app.test_request_context(
|
||||
"/web/email-code-login/validity",
|
||||
method="POST",
|
||||
@ -215,9 +218,7 @@ class TestLoginApi:
|
||||
|
||||
mock_get_token_data.assert_called_once_with("token-123")
|
||||
mock_revoke_token.assert_called_once_with("token-123")
|
||||
assert mock_log_warning.call_count == 1
|
||||
assert mock_log_warning.call_args.args[1] == "user@example.com"
|
||||
assert mock_log_warning.call_args.args[2] == LoginFailureReason.ACCOUNT_BANNED
|
||||
assert_login_failure_logged(caplog, "user@example.com", LoginFailureReason.ACCOUNT_BANNED)
|
||||
|
||||
|
||||
class TestLoginStatusApi:
|
||||
|
||||
@ -86,21 +86,26 @@ class TestRoles:
|
||||
call = _call_args(mock_send)
|
||||
assert call.method == "GET"
|
||||
assert call.endpoint == "/rbac/roles"
|
||||
assert call.params == {"page_number": 2, "results_per_page": 50, "reverse": "true"}
|
||||
assert call.params == {
|
||||
"dataset_operator_enabled": False,
|
||||
"page_number": 2,
|
||||
"results_per_page": 50,
|
||||
"reverse": "true",
|
||||
}
|
||||
assert out.pagination
|
||||
assert out.pagination.total_count == 1
|
||||
|
||||
def test_list_omits_params_when_default(self, mock_send: MagicMock):
|
||||
mock_send.return_value = {"data": [], "pagination": None}
|
||||
svc.RBACService.Roles.list("tenant-1")
|
||||
assert _call_args(mock_send).params is None
|
||||
assert _call_args(mock_send).params is not None
|
||||
|
||||
def test_list_forwards_include_owner(self, mock_send: MagicMock):
|
||||
mock_send.return_value = {"data": [], "pagination": None}
|
||||
|
||||
svc.RBACService.Roles.list("tenant-1", include_owner=1)
|
||||
|
||||
assert _call_args(mock_send).params == {"include_owner": 1}
|
||||
assert _call_args(mock_send).params == {"dataset_operator_enabled": False, "include_owner": 1}
|
||||
|
||||
def test_list_coerces_null_permission_keys(self, mock_send: MagicMock):
|
||||
mock_send.return_value = {
|
||||
|
||||
@ -3269,7 +3269,7 @@
|
||||
},
|
||||
"web/app/components/develop/code.tsx": {
|
||||
"ts/no-explicit-any": {
|
||||
"count": 7
|
||||
"count": 6
|
||||
}
|
||||
},
|
||||
"web/app/components/develop/doc.tsx": {
|
||||
@ -3281,9 +3281,6 @@
|
||||
"jsx-a11y/no-redundant-roles": {
|
||||
"count": 1
|
||||
},
|
||||
"ts/no-empty-object-type": {
|
||||
"count": 1
|
||||
},
|
||||
"ts/no-explicit-any": {
|
||||
"count": 2
|
||||
}
|
||||
@ -7222,7 +7219,7 @@
|
||||
"count": 1
|
||||
},
|
||||
"ts/no-explicit-any": {
|
||||
"count": 13
|
||||
"count": 9
|
||||
}
|
||||
},
|
||||
"web/service/datasets.ts": {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { act, render, screen, waitFor } from '@testing-library/react'
|
||||
import userEvent from '@testing-library/user-event'
|
||||
import { Code, CodeGroup, Embed, Pre } from '../code'
|
||||
import { CodeGroup, Embed } from '../code'
|
||||
|
||||
vi.mock('@/utils/clipboard', () => ({
|
||||
writeTextToClipboard: vi.fn().mockResolvedValue(undefined),
|
||||
@ -21,31 +21,6 @@ describe('code.tsx components', () => {
|
||||
vi.restoreAllMocks()
|
||||
})
|
||||
|
||||
describe('Code', () => {
|
||||
it('should render children as a code element', () => {
|
||||
render(<Code>const x = 1</Code>)
|
||||
const codeElement = screen.getByText('const x = 1')
|
||||
expect(codeElement.tagName).toBe('CODE')
|
||||
})
|
||||
|
||||
it('should pass through additional props', () => {
|
||||
render(<Code data-testid="custom-code" className="custom-class">snippet</Code>)
|
||||
const codeElement = screen.getByTestId('custom-code')
|
||||
expect(codeElement).toHaveClass('custom-class')
|
||||
})
|
||||
|
||||
it('should render with complex children', () => {
|
||||
render(
|
||||
<Code>
|
||||
<span>part1</span>
|
||||
<span>part2</span>
|
||||
</Code>,
|
||||
)
|
||||
expect(screen.getByText('part1')).toBeInTheDocument()
|
||||
expect(screen.getByText('part2')).toBeInTheDocument()
|
||||
})
|
||||
})
|
||||
|
||||
describe('Embed', () => {
|
||||
it('should render value prop as a span element', () => {
|
||||
render(<Embed value="embedded content">ignored children</Embed>)
|
||||
@ -277,28 +252,6 @@ describe('code.tsx components', () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe('Pre', () => {
|
||||
it('should wrap children in CodeGroup when outside CodeGroup context', () => {
|
||||
render(
|
||||
<Pre title="Pre Title">
|
||||
<pre><code>code</code></pre>
|
||||
</Pre>,
|
||||
)
|
||||
expect(screen.getByText('Pre Title')).toBeInTheDocument()
|
||||
})
|
||||
|
||||
it('should return children directly when inside CodeGroup context', () => {
|
||||
render(
|
||||
<CodeGroup targetCode="outer code">
|
||||
<Pre>
|
||||
<code>inner code</code>
|
||||
</Pre>
|
||||
</CodeGroup>,
|
||||
)
|
||||
expect(screen.getByText('outer code')).toBeInTheDocument()
|
||||
})
|
||||
})
|
||||
|
||||
describe('CodePanelHeader (via CodeGroup)', () => {
|
||||
it('should render when tag is provided', () => {
|
||||
render(
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { render, screen } from '@testing-library/react'
|
||||
import { Col, Heading, Properties, Property, PropertyInstruction, Row, SubProperty } from '../md'
|
||||
import { Col, Heading, Properties, Property, Row, SubProperty } from '../md'
|
||||
|
||||
describe('md.tsx components', () => {
|
||||
describe('Heading', () => {
|
||||
@ -540,67 +540,6 @@ describe('md.tsx components', () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe('PropertyInstruction', () => {
|
||||
it('should render children', () => {
|
||||
render(
|
||||
<PropertyInstruction>
|
||||
This is an instruction
|
||||
</PropertyInstruction>,
|
||||
)
|
||||
expect(screen.getByText('This is an instruction')).toBeInTheDocument()
|
||||
})
|
||||
|
||||
it('should render as li element', () => {
|
||||
const { container } = render(
|
||||
<PropertyInstruction>
|
||||
Instruction text
|
||||
</PropertyInstruction>,
|
||||
)
|
||||
expect(container.querySelector('li')).toBeInTheDocument()
|
||||
})
|
||||
|
||||
it('should have m-0 class', () => {
|
||||
const { container } = render(
|
||||
<PropertyInstruction>
|
||||
Instruction
|
||||
</PropertyInstruction>,
|
||||
)
|
||||
const li = container.querySelector('li')!
|
||||
expect(li.className).toContain('m-0')
|
||||
})
|
||||
|
||||
it('should have padding classes', () => {
|
||||
const { container } = render(
|
||||
<PropertyInstruction>
|
||||
Instruction
|
||||
</PropertyInstruction>,
|
||||
)
|
||||
const li = container.querySelector('li')!
|
||||
expect(li.className).toContain('px-0')
|
||||
expect(li.className).toContain('py-4')
|
||||
})
|
||||
|
||||
it('should have italic class', () => {
|
||||
const { container } = render(
|
||||
<PropertyInstruction>
|
||||
Instruction
|
||||
</PropertyInstruction>,
|
||||
)
|
||||
const li = container.querySelector('li')!
|
||||
expect(li.className).toContain('italic')
|
||||
})
|
||||
|
||||
it('should have first:pt-0 class', () => {
|
||||
const { container } = render(
|
||||
<PropertyInstruction>
|
||||
Instruction
|
||||
</PropertyInstruction>,
|
||||
)
|
||||
const li = container.querySelector('li')!
|
||||
expect(li.className).toContain('first:pt-0')
|
||||
})
|
||||
})
|
||||
|
||||
describe('integration tests', () => {
|
||||
it('should render Property inside Properties', () => {
|
||||
render(
|
||||
@ -635,21 +574,5 @@ describe('md.tsx components', () => {
|
||||
expect(screen.getByText('Left column')).toBeInTheDocument()
|
||||
expect(screen.getByText('Right column')).toBeInTheDocument()
|
||||
})
|
||||
|
||||
it('should render PropertyInstruction inside Properties', () => {
|
||||
render(
|
||||
<Properties anchor={false}>
|
||||
<PropertyInstruction>
|
||||
Note: All fields are required
|
||||
</PropertyInstruction>
|
||||
<Property name="required_field" type="string" anchor={false}>
|
||||
A required field
|
||||
</Property>
|
||||
</Properties>,
|
||||
)
|
||||
|
||||
expect(screen.getByText('Note: All fields are required')).toBeInTheDocument()
|
||||
expect(screen.getByText('required_field')).toBeInTheDocument()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
'use client'
|
||||
import type { PropsWithChildren, ReactElement, ReactNode } from 'react'
|
||||
import type { PropsWithChildren, ReactElement } from 'react'
|
||||
import { cn } from '@langgenius/dify-ui/cn'
|
||||
import {
|
||||
Tabs,
|
||||
@ -9,8 +9,6 @@ import {
|
||||
} from '@langgenius/dify-ui/tabs'
|
||||
import {
|
||||
Children,
|
||||
createContext,
|
||||
use,
|
||||
useEffect,
|
||||
useRef,
|
||||
useState,
|
||||
@ -269,8 +267,6 @@ function useTabGroupProps(tabValues: string[]) {
|
||||
}
|
||||
}
|
||||
|
||||
const CodeGroupContext = createContext(false)
|
||||
|
||||
type CodeGroupProps = PropsWithChildren<{
|
||||
/** Code example(s) to display */
|
||||
targetCode?: string | CodeExample[]
|
||||
@ -297,42 +293,20 @@ export function CodeGroup({ children, title, targetCode, ...props }: CodeGroupPr
|
||||
</>
|
||||
)
|
||||
|
||||
return (
|
||||
<CodeGroupContext.Provider value={true}>
|
||||
{hasTabs
|
||||
? (
|
||||
<Tabs
|
||||
{...tabGroupProps}
|
||||
className="not-prose my-6 overflow-hidden rounded-2xl bg-zinc-900 shadow-md dark:ring-1 dark:ring-white/10"
|
||||
>
|
||||
{content}
|
||||
</Tabs>
|
||||
)
|
||||
: (
|
||||
<div className="not-prose my-6 overflow-hidden rounded-2xl bg-zinc-900 shadow-md dark:ring-1 dark:ring-white/10">
|
||||
{content}
|
||||
</div>
|
||||
)}
|
||||
</CodeGroupContext.Provider>
|
||||
)
|
||||
}
|
||||
|
||||
type IChildProps = {
|
||||
children: ReactNode
|
||||
[key: string]: any
|
||||
}
|
||||
|
||||
export function Code({ children, ...props }: IChildProps) {
|
||||
return <code {...props}>{children}</code>
|
||||
}
|
||||
|
||||
export function Pre({ children, ...props }: IChildrenProps) {
|
||||
const isGrouped = use(CodeGroupContext)
|
||||
|
||||
if (isGrouped)
|
||||
return children
|
||||
|
||||
return <CodeGroup {...props}>{children}</CodeGroup>
|
||||
return hasTabs
|
||||
? (
|
||||
<Tabs
|
||||
{...tabGroupProps}
|
||||
className="not-prose my-6 overflow-hidden rounded-2xl bg-zinc-900 shadow-md dark:ring-1 dark:ring-white/10"
|
||||
>
|
||||
{content}
|
||||
</Tabs>
|
||||
)
|
||||
: (
|
||||
<div className="not-prose my-6 overflow-hidden rounded-2xl bg-zinc-900 shadow-md dark:ring-1 dark:ring-white/10">
|
||||
{content}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export function Embed({ value, ...props }: IChildrenProps) {
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
'use client'
|
||||
import type { PropsWithChildren } from 'react'
|
||||
import { cn } from '@langgenius/dify-ui/cn'
|
||||
|
||||
type IChildrenProps = {
|
||||
@ -140,9 +139,3 @@ export function SubProperty({ name, type, children }: ISubProperty) {
|
||||
</li>
|
||||
)
|
||||
}
|
||||
|
||||
export function PropertyInstruction({ children }: PropsWithChildren<{ }>) {
|
||||
return (
|
||||
<li className="m-0 px-0 py-4 italic first:pt-0">{children}</li>
|
||||
)
|
||||
}
|
||||
|
||||
@ -346,7 +346,7 @@ describe('BannerItem', () => {
|
||||
expect(wrapper).toHaveClass('rounded-2xl')
|
||||
})
|
||||
|
||||
it('keeps a fixed height even when text content is empty', () => {
|
||||
it('keeps the desktop height even when text content is empty', () => {
|
||||
const banner = createMockBanner({
|
||||
content: {
|
||||
'category': '',
|
||||
@ -359,7 +359,7 @@ describe('BannerItem', () => {
|
||||
const { container } = renderBannerItem(banner)
|
||||
const wrapper = container.firstChild as HTMLElement
|
||||
|
||||
expect(wrapper).toHaveClass('h-[184px]')
|
||||
expect(wrapper).toHaveClass('xl:h-[184px]')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@ -130,7 +130,7 @@ export function BannerItem({
|
||||
|
||||
return (
|
||||
<div
|
||||
className="flex h-[184px] w-full cursor-pointer items-start overflow-hidden rounded-2xl bg-components-panel-on-panel-item-bg shadow-xs"
|
||||
className="flex h-[224px] w-full cursor-pointer items-start overflow-hidden rounded-2xl bg-components-panel-on-panel-item-bg shadow-xs xl:h-[184px]"
|
||||
onClick={handleBannerClick}
|
||||
>
|
||||
<div className="flex min-w-px flex-1 flex-col items-end self-stretch rounded-2xl py-6 pl-8">
|
||||
@ -140,7 +140,7 @@ export function BannerItem({
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="flex w-full flex-col gap-3 py-1">
|
||||
<div className="flex w-full flex-col gap-3 py-1 max-xl:flex-1 max-xl:justify-between">
|
||||
<div
|
||||
ref={textAreaRef}
|
||||
className="grid w-full grid-cols-[minmax(0,680px)_minmax(240px,600px)] gap-x-1 max-xl:grid-cols-1"
|
||||
@ -159,11 +159,11 @@ export function BannerItem({
|
||||
</div>
|
||||
|
||||
<div
|
||||
className="grid w-full grid-cols-[minmax(0,680px)_minmax(240px,600px)] gap-x-1 max-xl:grid-cols-1"
|
||||
className="flex w-full items-center justify-between gap-4 pr-4 xl:grid xl:grid-cols-[minmax(0,680px)_minmax(240px,600px)] xl:gap-x-1 xl:pr-0"
|
||||
style={responsiveStyle}
|
||||
>
|
||||
<div
|
||||
className="flex min-w-0 items-center gap-[6px] py-1"
|
||||
className="flex min-w-0 items-center gap-[6px] py-1 max-xl:flex-1"
|
||||
style={viewMoreStyle}
|
||||
>
|
||||
<div className="flex h-4 w-4 items-center justify-center rounded-full bg-text-accent p-[2px]">
|
||||
@ -174,7 +174,7 @@ export function BannerItem({
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div className="flex min-w-0 items-center gap-2 py-1 pr-10">
|
||||
<div className="flex min-w-0 shrink-0 items-center gap-2 py-1 xl:pr-10">
|
||||
{/* Slide navigation indicators */}
|
||||
<div className="flex items-center gap-1">
|
||||
{indicatorItems.map(({ id, index }) => (
|
||||
@ -196,13 +196,13 @@ export function BannerItem({
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex w-60 max-w-60 shrink-0 flex-col items-end self-stretch p-2 max-lg:hidden">
|
||||
<div className="flex w-60 max-w-60 shrink-0 flex-col items-end self-stretch p-2 max-xl:w-[360px] max-xl:max-w-[360px] max-lg:hidden">
|
||||
<img
|
||||
src={imgSrc}
|
||||
alt={title}
|
||||
width={224}
|
||||
height={168}
|
||||
className="h-[168px] w-56 shrink-0 rounded-xl object-cover"
|
||||
className="h-full w-full shrink-0 rounded-xl object-cover"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -5,7 +5,10 @@ import { hasPermission } from '@/utils/permission'
|
||||
const pluginReadAndUpdatePermissionKeys = ['plugin.install', 'plugin.manage']
|
||||
|
||||
const useWorkspacePluginInstallPermission = () => {
|
||||
const { langGeniusVersionInfo, workspacePermissionKeys } = useAppContext()
|
||||
const {
|
||||
langGeniusVersionInfo,
|
||||
workspacePermissionKeys,
|
||||
} = useAppContext()
|
||||
|
||||
const canInstallPlugin = useMemo(() => {
|
||||
return hasPermission(workspacePermissionKeys, 'plugin.install')
|
||||
|
||||
@ -164,7 +164,7 @@ describe('useReferenceSetting Hook', () => {
|
||||
expect(result.current.canDebugger).toBe(false)
|
||||
})
|
||||
|
||||
it('should use plugin keys even when legacy admin permission is configured', () => {
|
||||
it('should use plugin keys even when legacy admin permission is configured and RBAC is enabled', () => {
|
||||
vi.mocked(useAppContext).mockReturnValue({
|
||||
isCurrentWorkspaceManager: false,
|
||||
isCurrentWorkspaceOwner: false,
|
||||
@ -179,11 +179,40 @@ describe('useReferenceSetting Hook', () => {
|
||||
},
|
||||
} as ReturnType<typeof usePluginPermissionSettings>)
|
||||
|
||||
const { result } = renderHook(() => useReferenceSetting(PluginCategoryEnum.tool))
|
||||
const { result } = renderHook(() => useReferenceSetting(PluginCategoryEnum.tool), {
|
||||
systemFeatures: { rbac_enabled: true },
|
||||
})
|
||||
|
||||
expect(result.current.canManagement).toBe(true)
|
||||
expect(result.current.canDebugger).toBe(true)
|
||||
})
|
||||
|
||||
it('should apply legacy noOne plugin permissions when RBAC is disabled', () => {
|
||||
vi.mocked(useAppContext).mockReturnValue({
|
||||
isCurrentWorkspaceManager: true,
|
||||
isCurrentWorkspaceOwner: false,
|
||||
langGeniusVersionInfo: { current_version: '1.0.0', latest_version: '', version: '' },
|
||||
workspacePermissionKeys: ['plugin.install', 'plugin.manage', 'plugin.debug'],
|
||||
} as ReturnType<typeof useAppContext>)
|
||||
vi.mocked(usePluginPermissionSettings).mockReturnValue({
|
||||
data: {
|
||||
install_permission: PermissionType.noOne,
|
||||
debug_permission: PermissionType.noOne,
|
||||
},
|
||||
} as ReturnType<typeof usePluginPermissionSettings>)
|
||||
|
||||
const { result } = renderHook(() => useReferenceSetting(PluginCategoryEnum.tool), {
|
||||
systemFeatures: { rbac_enabled: false },
|
||||
})
|
||||
|
||||
expect(result.current.canInstallPlugin).toBe(false)
|
||||
expect(result.current.canManagement).toBe(false)
|
||||
expect(result.current.canUpdatePlugin).toBe(false)
|
||||
expect(result.current.canViewInstalledPlugins).toBe(true)
|
||||
expect(result.current.canManagePlugin).toBe(false)
|
||||
expect(result.current.canDebugPlugin).toBe(false)
|
||||
expect(result.current.canDebugger).toBe(false)
|
||||
})
|
||||
})
|
||||
|
||||
describe('canSetPermissions', () => {
|
||||
@ -446,15 +475,33 @@ describe('useCanInstallPluginFromMarketplace Hook', () => {
|
||||
expect(result.current.canInstallPluginFromMarketplace).toBe(false)
|
||||
})
|
||||
|
||||
it('should not fetch legacy plugin permissions or category auto-upgrade settings', () => {
|
||||
it('should fetch legacy plugin permissions but not category auto-upgrade settings', () => {
|
||||
renderHook(() => useCanInstallPluginFromMarketplace(), {
|
||||
systemFeatures: { enable_marketplace: true },
|
||||
})
|
||||
|
||||
expect(usePluginPermissionSettings).not.toHaveBeenCalled()
|
||||
expect(usePluginPermissionSettings).toHaveBeenCalled()
|
||||
expect(usePluginAutoUpgradeSettings).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('should return false when legacy install permission is noOne and RBAC is disabled', () => {
|
||||
vi.mocked(usePluginPermissionSettings).mockReturnValue({
|
||||
data: {
|
||||
install_permission: PermissionType.noOne,
|
||||
debug_permission: PermissionType.everyone,
|
||||
},
|
||||
} as ReturnType<typeof usePluginPermissionSettings>)
|
||||
|
||||
const { result } = renderHook(() => useCanInstallPluginFromMarketplace(), {
|
||||
systemFeatures: {
|
||||
enable_marketplace: true,
|
||||
rbac_enabled: false,
|
||||
},
|
||||
})
|
||||
|
||||
expect(result.current.canInstallPluginFromMarketplace).toBe(false)
|
||||
})
|
||||
|
||||
it('should use plugin.install when marketplace and RBAC are enabled', () => {
|
||||
vi.mocked(useAppContext).mockReturnValue({
|
||||
isCurrentWorkspaceManager: false,
|
||||
|
||||
@ -7,6 +7,7 @@ import { useAppContext } from '@/context/app-context'
|
||||
import { systemFeaturesQueryOptions } from '@/features/system-features/client'
|
||||
import { useInvalidateReferenceSettings, useMutationPluginPermissionSettings, useMutationReferenceSettings, usePluginAutoUpgradeSettings, usePluginPermissionSettings } from '@/service/use-plugins'
|
||||
import { hasPermission } from '@/utils/permission'
|
||||
import { hasLegacyPluginPermissionAccess } from '../plugin-permissions'
|
||||
|
||||
const pluginReadAndUpdatePermissionKeys = ['plugin.install', 'plugin.manage']
|
||||
|
||||
@ -26,7 +27,11 @@ const useCanSetPluginSettings = () => {
|
||||
|
||||
export const usePluginSettingsAccess = () => {
|
||||
const { t } = useTranslation()
|
||||
const { workspacePermissionKeys, langGeniusVersionInfo } = useAppContext()
|
||||
const { isCurrentWorkspaceManager, isCurrentWorkspaceOwner, workspacePermissionKeys, langGeniusVersionInfo } = useAppContext()
|
||||
const { data: rbacEnabled } = useSuspenseQuery({
|
||||
...systemFeaturesQueryOptions(),
|
||||
select: s => s.rbac_enabled,
|
||||
})
|
||||
const { canSetPermissions, canSetPluginPreferences } = useCanSetPluginSettings()
|
||||
const permissionQuery = usePluginPermissionSettings()
|
||||
const { data: permissions } = permissionQuery
|
||||
@ -35,11 +40,22 @@ export const usePluginSettingsAccess = () => {
|
||||
toast.success(t('api.actionSuccess', { ns: 'common' }))
|
||||
},
|
||||
})
|
||||
const canInstallPlugin = hasPermission(workspacePermissionKeys, 'plugin.install')
|
||||
const canUpdatePlugin = hasPermission(workspacePermissionKeys, pluginReadAndUpdatePermissionKeys)
|
||||
const isAdminOrOwner = isCurrentWorkspaceManager || isCurrentWorkspaceOwner
|
||||
const legacyCanInstallPlugin = hasLegacyPluginPermissionAccess({
|
||||
isAdminOrOwner,
|
||||
permission: permissions?.install_permission,
|
||||
rbacEnabled,
|
||||
})
|
||||
const legacyCanDebugPlugin = hasLegacyPluginPermissionAccess({
|
||||
isAdminOrOwner,
|
||||
permission: permissions?.debug_permission,
|
||||
rbacEnabled,
|
||||
})
|
||||
const canInstallPlugin = hasPermission(workspacePermissionKeys, 'plugin.install') && legacyCanInstallPlugin
|
||||
const canUpdatePlugin = hasPermission(workspacePermissionKeys, pluginReadAndUpdatePermissionKeys) && legacyCanInstallPlugin
|
||||
const canViewInstalledPlugins = hasPermission(workspacePermissionKeys, pluginReadAndUpdatePermissionKeys)
|
||||
const canManagePlugin = hasPermission(workspacePermissionKeys, 'plugin.manage')
|
||||
const canDebugPlugin = hasPermission(workspacePermissionKeys, 'plugin.debug')
|
||||
const canManagePlugin = hasPermission(workspacePermissionKeys, 'plugin.manage') && legacyCanInstallPlugin
|
||||
const canDebugPlugin = hasPermission(workspacePermissionKeys, 'plugin.debug') && legacyCanDebugPlugin
|
||||
|
||||
return {
|
||||
permission: permissions,
|
||||
@ -102,12 +118,18 @@ const useReferenceSetting = (category: PluginCategoryEnum) => {
|
||||
}
|
||||
|
||||
export const useCanInstallPluginFromMarketplace = () => {
|
||||
const { data: marketplaceAccess } = useSuspenseQuery({
|
||||
...systemFeaturesQueryOptions(),
|
||||
select: s => s.enable_marketplace,
|
||||
const { data: systemFeatures } = useSuspenseQuery(systemFeaturesQueryOptions())
|
||||
const marketplaceAccess = systemFeatures.enable_marketplace
|
||||
const rbacEnabled = systemFeatures.rbac_enabled
|
||||
const { isCurrentWorkspaceManager, isCurrentWorkspaceOwner, workspacePermissionKeys } = useAppContext()
|
||||
const permissionQuery = usePluginPermissionSettings()
|
||||
const { data: permissions } = permissionQuery
|
||||
const legacyCanInstallPlugin = hasLegacyPluginPermissionAccess({
|
||||
isAdminOrOwner: isCurrentWorkspaceManager || isCurrentWorkspaceOwner,
|
||||
permission: permissions?.install_permission,
|
||||
rbacEnabled,
|
||||
})
|
||||
const { workspacePermissionKeys } = useAppContext()
|
||||
const canInstallPlugin = hasPermission(workspacePermissionKeys, 'plugin.install')
|
||||
const canInstallPlugin = hasPermission(workspacePermissionKeys, 'plugin.install') && legacyCanInstallPlugin
|
||||
|
||||
const canInstallPluginFromMarketplace = useMemo(() => {
|
||||
return Boolean(marketplaceAccess && canInstallPlugin)
|
||||
|
||||
27
web/app/components/plugins/plugin-permissions.ts
Normal file
27
web/app/components/plugins/plugin-permissions.ts
Normal file
@ -0,0 +1,27 @@
|
||||
import { PermissionType } from './types'
|
||||
|
||||
type LegacyPluginPermissionAccessOptions = {
|
||||
isAdminOrOwner: boolean
|
||||
permission?: PermissionType
|
||||
rbacEnabled?: boolean
|
||||
}
|
||||
|
||||
export const hasLegacyPluginPermissionAccess = ({
|
||||
isAdminOrOwner,
|
||||
permission,
|
||||
rbacEnabled,
|
||||
}: LegacyPluginPermissionAccessOptions) => {
|
||||
if (rbacEnabled !== false)
|
||||
return true
|
||||
|
||||
if (!permission)
|
||||
return false
|
||||
|
||||
if (permission === PermissionType.everyone)
|
||||
return true
|
||||
|
||||
if (permission === PermissionType.admin)
|
||||
return isAdminOrOwner
|
||||
|
||||
return false
|
||||
}
|
||||
@ -15,6 +15,10 @@ const { mockRouterPush } = vi.hoisted(() => ({
|
||||
mockRouterPush: vi.fn(),
|
||||
}))
|
||||
|
||||
const { mockCanInstallPlugin } = vi.hoisted(() => ({
|
||||
mockCanInstallPlugin: vi.fn(() => true),
|
||||
}))
|
||||
|
||||
const listRenderSpy = vi.fn()
|
||||
vi.mock('@/app/components/plugins/marketplace/list', () => ({
|
||||
default: (props: {
|
||||
@ -30,6 +34,12 @@ vi.mock('@/app/components/plugins/marketplace/list', () => ({
|
||||
},
|
||||
}))
|
||||
|
||||
vi.mock('@/app/components/plugins/plugin-page/use-reference-setting', () => ({
|
||||
usePluginSettingsAccess: () => ({
|
||||
canInstallPlugin: mockCanInstallPlugin(),
|
||||
}),
|
||||
}))
|
||||
|
||||
const mockUseMarketplaceCollectionsAndPlugins = vi.fn()
|
||||
const mockUseMarketplacePlugins = vi.fn()
|
||||
vi.mock('@/app/components/plugins/marketplace/hooks', () => ({
|
||||
@ -108,6 +118,7 @@ const createMarketplaceContext = (overrides: Partial<ReturnType<typeof useMarket
|
||||
describe('Marketplace', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks()
|
||||
mockCanInstallPlugin.mockReturnValue(true)
|
||||
})
|
||||
|
||||
// Rendering the marketplace panel based on loading and visibility state.
|
||||
@ -154,6 +165,28 @@ describe('Marketplace', () => {
|
||||
showInstallButton: true,
|
||||
}))
|
||||
})
|
||||
|
||||
it('should hide install actions when plugin install permission is missing', () => {
|
||||
mockCanInstallPlugin.mockReturnValue(false)
|
||||
const marketplaceContext = createMarketplaceContext({
|
||||
isLoading: false,
|
||||
plugins: [createPlugin()],
|
||||
})
|
||||
|
||||
render(
|
||||
<Marketplace
|
||||
searchPluginText=""
|
||||
filterPluginTags={[]}
|
||||
isMarketplaceArrowVisible={false}
|
||||
showMarketplacePanel={vi.fn()}
|
||||
marketplaceContext={marketplaceContext}
|
||||
/>,
|
||||
)
|
||||
|
||||
expect(listRenderSpy).toHaveBeenCalledWith(expect.objectContaining({
|
||||
showInstallButton: false,
|
||||
}))
|
||||
})
|
||||
})
|
||||
|
||||
// Prop-driven UI output such as links and action triggers.
|
||||
|
||||
@ -11,6 +11,7 @@ import { useTranslation } from 'react-i18next'
|
||||
import { useLocale } from '#i18n'
|
||||
import Loading from '@/app/components/base/loading'
|
||||
import List from '@/app/components/plugins/marketplace/list'
|
||||
import { usePluginSettingsAccess } from '@/app/components/plugins/plugin-page/use-reference-setting'
|
||||
import { useRouter } from '@/next/navigation'
|
||||
import { getMarketplaceUrl } from '@/utils/var'
|
||||
import { toolsContentInsetClassNames, toolsUnifiedContentFrameClassName } from '../content-inset'
|
||||
@ -35,6 +36,7 @@ const Marketplace = ({
|
||||
const { t } = useTranslation()
|
||||
const { theme } = useTheme()
|
||||
const router = useRouter()
|
||||
const { canInstallPlugin } = usePluginSettingsAccess()
|
||||
const {
|
||||
isLoading,
|
||||
marketplaceCollections,
|
||||
@ -127,7 +129,7 @@ const Marketplace = ({
|
||||
marketplaceCollections={marketplaceCollections || []}
|
||||
marketplaceCollectionPluginsMap={marketplaceCollectionPluginsMap || {}}
|
||||
plugins={plugins}
|
||||
showInstallButton
|
||||
showInstallButton={canInstallPlugin}
|
||||
cardContainerClassName={cardContainerClassName}
|
||||
onCollectionMoreClick={handleCollectionMoreClick}
|
||||
/>
|
||||
|
||||
@ -52,7 +52,7 @@ const LocaleLayout = async ({
|
||||
<ReactScanLoader />
|
||||
</head>
|
||||
<body
|
||||
className="h-full"
|
||||
className="h-full bg-background-body"
|
||||
{...datasetMap}
|
||||
>
|
||||
<div className="isolate h-full">
|
||||
|
||||
@ -46,6 +46,7 @@ pnpm test path/to/file.spec.tsx
|
||||
- **Semantic naming**: Use `should <behavior> when <condition>` and group related cases with `describe(<subject or scenario>)`.
|
||||
- **AAA / Given–When–Then**: Separate Arrange, Act, and Assert clearly with code blocks or comments.
|
||||
- **Minimal but sufficient assertions**: Keep only the expectations that express the essence of the behavior.
|
||||
- **Test product contracts, not cosmetic implementation**: Do not add or expand unit tests only to lock pure style classes, spacing, colors, backgrounds, or layout micro-adjustments. Cover visual-only fixes with browser/manual verification, screenshots, or E2E/visual checks when risk justifies it. Add unit tests only when the change affects user-observable behavior, accessibility semantics, state, data flow, routing, or a stable component API contract.
|
||||
- **Reusable test data**: Prefer test data builders or factories over hard-coded masses of data.
|
||||
- **De-flake**: Control time, randomness, network, concurrency, and ordering.
|
||||
- **Fast & stable**: Keep unit tests running in milliseconds; reserve integration tests for cross-module behavior with isolation.
|
||||
@ -179,7 +180,7 @@ Apply the following test scenarios based on component features:
|
||||
|
||||
### 2. Props Testing (REQUIRED - All Components)
|
||||
|
||||
Exercise the prop combinations that change observable behavior. Show how required props gate functionality, how optional props fall back to their defaults, and how invalid combinations surface through user-facing safeguards. Let TypeScript catch structural issues; keep runtime assertions focused on what the component renders or triggers.
|
||||
Exercise the prop combinations that change observable behavior. Show how required props gate functionality, how optional props fall back to their defaults, and how invalid combinations surface through user-facing safeguards. Let TypeScript catch structural issues; keep runtime assertions focused on what the component renders or triggers. Do not test pass-through styling props such as `className` unless they are an explicit, stable component API whose absence would break a real integration contract.
|
||||
|
||||
### 3. State Management
|
||||
|
||||
|
||||
@ -139,7 +139,7 @@ async function mountedStore() {
|
||||
},
|
||||
})
|
||||
store.set(queryClientAtom, queryClient)
|
||||
const unsubscribe = store.sub(state.createReleaseFormValuesAtom, () => undefined)
|
||||
const unsubscribe = store.sub(state.createReleaseFormIsSubmittingAtom, () => undefined)
|
||||
|
||||
return {
|
||||
state,
|
||||
|
||||
@ -126,7 +126,7 @@ async function mountedStore() {
|
||||
},
|
||||
})
|
||||
store.set(queryClientAtom, queryClient)
|
||||
const unsubscribe = store.sub(state.createReleaseFormValuesAtom, () => undefined)
|
||||
const unsubscribe = store.sub(state.createReleaseFormIsSubmittingAtom, () => undefined)
|
||||
|
||||
return {
|
||||
queryClient,
|
||||
@ -232,20 +232,6 @@ describe('create release state', () => {
|
||||
}
|
||||
})
|
||||
|
||||
it('should keep default form values before editing', async () => {
|
||||
const { state, store, unsubscribe } = await mountedStore()
|
||||
|
||||
expect(store.get(state.createReleaseFormValuesAtom)).toEqual({
|
||||
dslFile: undefined,
|
||||
releaseDescription: '',
|
||||
releaseName: '',
|
||||
releaseSourceMode: 'sourceApp',
|
||||
sourceApp: undefined,
|
||||
})
|
||||
|
||||
unsubscribe()
|
||||
})
|
||||
|
||||
it('should validate release name only when submitting', async () => {
|
||||
const { state, store, unsubscribe } = await mountedStore()
|
||||
|
||||
|
||||
@ -106,7 +106,6 @@ export const createReleaseFormAtom = atomWithForm({
|
||||
|
||||
const createReleaseFormAtoms = createFormAtoms(createReleaseFormAtom)
|
||||
|
||||
export const createReleaseFormValuesAtom = createReleaseFormAtoms.valuesAtom
|
||||
export const createReleaseFormIsSubmittingAtom = createReleaseFormAtoms.isSubmittingAtom
|
||||
export const createReleaseSourceModeFieldAtom = createReleaseFormAtoms.fieldAtom('releaseSourceMode')
|
||||
export const createReleaseSourceAppFieldAtom = createReleaseFormAtoms.fieldAtom('sourceApp')
|
||||
|
||||
@ -1,29 +1,14 @@
|
||||
{
|
||||
"agentDetail.access.actionUnavailable": "هذا الإجراء غير متاح بعد.",
|
||||
"agentDetail.access.actions.monitoring": "المراقبة",
|
||||
"agentDetail.access.copyAccessUrl": "نسخ رابط الوصول",
|
||||
"agentDetail.access.copyFailed": "فشل نسخ المرجع.",
|
||||
"agentDetail.access.copyReference": "نسخ المرجع لـ {{name}}",
|
||||
"agentDetail.access.copyServiceEndpoint": "نسخ نقطة نهاية API الخدمة",
|
||||
"agentDetail.access.description": "كل سطح يمكن الوصول إلى هذا الوكيل منه.",
|
||||
"agentDetail.access.empty": "لا توجد نقاط وصول مرتبطة",
|
||||
"agentDetail.access.emptyDescription": "هذا الوكيل في Roster ليس لديه بعد أي مراجع تطبيق أو سير عمل.",
|
||||
"agentDetail.access.entries.agentApp.description": "تطبيق الوكيل المرتبط بهذا الوكيل في Roster.",
|
||||
"agentDetail.access.entries.agentApp.name": "تطبيق الوكيل",
|
||||
"agentDetail.access.entries.workflow.description": "مرجع سير العمل والعقدة المرتبط بهذا الوكيل في Roster.",
|
||||
"agentDetail.access.entries.workflow.name": "عقدة سير العمل",
|
||||
"agentDetail.access.entryCount_one": "{{count}} إدخال",
|
||||
"agentDetail.access.entryCount_other": "{{count}} إدخالات",
|
||||
"agentDetail.access.groups.references.heading": "المراجع",
|
||||
"agentDetail.access.groups.references.label": "المراجع المرتبطة",
|
||||
"agentDetail.access.learnMore": "اعرف المزيد",
|
||||
"agentDetail.access.moreActions": "إجراءات أخرى لـ {{name}}",
|
||||
"agentDetail.access.serviceApi.actions.apiKey": "API Key",
|
||||
"agentDetail.access.serviceApi.actions.apiReference": "API Reference",
|
||||
"agentDetail.access.serviceApi.endpoint": "نقطة نهاية API الخدمة",
|
||||
"agentDetail.access.serviceApi.title": "API خدمة الواجهة الخلفية",
|
||||
"agentDetail.access.status.disabled": "معطل",
|
||||
"agentDetail.access.status.enabled": "ممكّن",
|
||||
"agentDetail.access.status.inService": "في الخدمة",
|
||||
"agentDetail.access.status.outOfService": "خارج الخدمة",
|
||||
"agentDetail.access.title": "نقطة الوصول",
|
||||
@ -151,7 +136,6 @@
|
||||
"agentDetail.configure.prompt.insert.tenders": "بدء العطاءات",
|
||||
"agentDetail.configure.prompt.label": "المطالبة",
|
||||
"agentDetail.configure.prompt.mention.davidHayes": "David Hayes",
|
||||
"agentDetail.configure.prompt.mention.label": "إشارة",
|
||||
"agentDetail.configure.prompt.mention.priyaRamanathan": "Priya Ramanathan",
|
||||
"agentDetail.configure.prompt.placeholder": "اكتب التعليمات هنا،",
|
||||
"agentDetail.configure.prompt.tip": "عرّف دور الوكيل وصف مهمته المعتادة. استخدم / للإشارة صراحةً إلى المهارات والملفات والأدوات واسترجاع المعرفة.",
|
||||
@ -183,7 +167,6 @@
|
||||
"agentDetail.configure.skills.add": "إضافة مهارة",
|
||||
"agentDetail.configure.skills.detail.contentRegion": "محتوى تفاصيل المهارة",
|
||||
"agentDetail.configure.skills.detail.fileCount": "{{count}} ملفات",
|
||||
"agentDetail.configure.skills.detail.fileTreeLabel": "ملفات المهارة",
|
||||
"agentDetail.configure.skills.detail.files": "الملفات",
|
||||
"agentDetail.configure.skills.empty.description": "تمنح المهارات الوكيل خبرة قابلة لإعادة الاستخدام يمكنه استدعاؤها أثناء العمل",
|
||||
"agentDetail.configure.skills.empty.title": "لا توجد مهارات بعد",
|
||||
@ -225,14 +208,11 @@
|
||||
"agentDetail.configure.tools.cliDialog.title": "إضافة أداة CLI",
|
||||
"agentDetail.configure.tools.cliTool": "أداة CLI",
|
||||
"agentDetail.configure.tools.credential.authOne": "Auth 1",
|
||||
"agentDetail.configure.tools.credential.endUserOAuth": "المستخدم النهائي · OAuth",
|
||||
"agentDetail.configure.tools.editAction": "تعديل {{name}}",
|
||||
"agentDetail.configure.tools.empty.description": "تتيح الأدوات للوكيل التصرف، مثل البحث على الويب أو استدعاء تطبيقاتك",
|
||||
"agentDetail.configure.tools.empty.title": "لا توجد أدوات بعد",
|
||||
"agentDetail.configure.tools.label": "الأدوات",
|
||||
"agentDetail.configure.tools.moreActions": "إجراءات أخرى لـ {{name}}",
|
||||
"agentDetail.configure.tools.pluginType": "مكون إضافي",
|
||||
"agentDetail.configure.tools.preAuthorize": "تفويض مسبق",
|
||||
"agentDetail.configure.tools.removeAction": "إزالة {{name}}",
|
||||
"agentDetail.configure.tools.removeProvider": "إزالة جميع الأدوات",
|
||||
"agentDetail.configure.tools.richTip": "زوّد وكيلك بإضافات Dify. راجع <pluginDocLink>الوثائق</pluginDocLink>. أشر إليها صراحةً باستخدام / في البرومبت.\nبدلاً من ذلك، يمكنك دائماً إخبار الوكيل بتثبيت أدوات أخرى والمصادقة عليها (مثل MCPs وأدوات CLI) عبر دردشة Build. لاحظ أن الأدوات التي يتم تكوينها عبر دردشات Build لن تظهر هنا، لكنها ستظل متاحة لوكيلك لاحقاً. راجع <buildDocLink>الوثائق</buildDocLink>.",
|
||||
@ -245,11 +225,9 @@
|
||||
"agentDetail.configure.tools.toolTabs.plugins": "المكونات الإضافية",
|
||||
"agentDetail.configure.tools.toolTabs.workflow": "Workflow",
|
||||
"agentDetail.documentTitle": "وكيل",
|
||||
"agentDetail.history": "السجل",
|
||||
"agentDetail.logs.description": "تسجل السجلات الكاملة حالة تشغيل التطبيق، بما في ذلك مدخلات المستخدم وردود الوكيل والتخطيط واستخدامات الأدوات.",
|
||||
"agentDetail.logs.empty": "لم يتم العثور على سجلات",
|
||||
"agentDetail.logs.filters.period.allTime": "كل الأوقات",
|
||||
"agentDetail.logs.filters.period.label": "فترة السجل",
|
||||
"agentDetail.logs.filters.period.last30days": "آخر 30 يوماً",
|
||||
"agentDetail.logs.filters.period.last7days": "آخر 7 أيام",
|
||||
"agentDetail.logs.filters.search.label": "البحث في السجلات",
|
||||
@ -267,7 +245,6 @@
|
||||
"agentDetail.logs.filters.source.workflow": "سير العمل",
|
||||
"agentDetail.logs.learnMore": "اعرف المزيد",
|
||||
"agentDetail.logs.loadFailed": "تعذر تحميل السجلات",
|
||||
"agentDetail.logs.loading": "جارٍ تحميل السجلات…",
|
||||
"agentDetail.logs.notAvailable": "غير متاح",
|
||||
"agentDetail.logs.table.createdTime": "وقت الإنشاء",
|
||||
"agentDetail.logs.table.endUser": "المستخدم النهائي",
|
||||
@ -288,19 +265,7 @@
|
||||
"agentDetail.memorySettings.notConfigured": "غير مكوّن",
|
||||
"agentDetail.memorySettings.scopeLabel": "نطاق الذاكرة",
|
||||
"agentDetail.memorySettings.title": "الذاكرة",
|
||||
"agentDetail.metadata.activeVersionLabel": "الإصدار النشط",
|
||||
"agentDetail.metadata.appIdLabel": "معرّف التطبيق",
|
||||
"agentDetail.metadata.description": "حقول Roster للقراءة فقط التي تعيدها الواجهة الخلفية للوكيل.",
|
||||
"agentDetail.metadata.emptyValue": "غير متاح",
|
||||
"agentDetail.metadata.scopeLabel": "النطاق",
|
||||
"agentDetail.metadata.scopes.roster": "Roster",
|
||||
"agentDetail.metadata.scopes.workflow_only": "سير العمل فقط",
|
||||
"agentDetail.metadata.sourceLabel": "المصدر",
|
||||
"agentDetail.metadata.statusLabel": "الحالة",
|
||||
"agentDetail.metadata.title": "البيانات الوصفية",
|
||||
"agentDetail.metadata.updatedAtLabel": "تاريخ التحديث",
|
||||
"agentDetail.metadata.workflowIdLabel": "معرّف سير العمل",
|
||||
"agentDetail.metadata.workflowNodeIdLabel": "معرّف عقدة سير العمل",
|
||||
"agentDetail.monitoring.change": "{{value}} عن الفترة السابقة",
|
||||
"agentDetail.monitoring.dateRangeLabel": "نطاق التاريخ",
|
||||
"agentDetail.monitoring.description": "تتبّع نشاط وتكلفة وجودة تفاعل الوكيل القابل لإعادة الاستخدام عبر سير العمل.",
|
||||
@ -334,15 +299,12 @@
|
||||
"agentDetail.monitoring.units.tokenPerSecond": "توكن/ث",
|
||||
"agentDetail.navigationLabel": "تنقّل الوكيل",
|
||||
"agentDetail.publish": "نشر",
|
||||
"agentDetail.publishSoon": "قريباً",
|
||||
"agentDetail.sections.access": "نقطة الوصول",
|
||||
"agentDetail.sections.configure": "تكوين",
|
||||
"agentDetail.sections.logs": "السجلات",
|
||||
"agentDetail.sections.monitoring": "المراقبة",
|
||||
"agentDetail.subtitle": "معرّف الوكيل: {{agentId}}",
|
||||
"agentDetail.title": "وكيل",
|
||||
"agentDetail.type": "وكيل",
|
||||
"agentDetail.versionHistory.active": "نشط",
|
||||
"agentDetail.versionHistory.empty": "لا توجد إصدارات بعد",
|
||||
"agentDetail.versionHistory.exitVersions": "الخروج من الإصدارات",
|
||||
"agentDetail.versionHistory.filter": "تصفية الإصدارات",
|
||||
@ -350,7 +312,6 @@
|
||||
"agentDetail.versionHistory.versionName": "الإصدار {{version}}",
|
||||
"agentDetail.versionHistory.viewOnly": "عرض فقط",
|
||||
"roster.createAgent": "إنشاء وكيل",
|
||||
"roster.createAgentOptions": "خيارات إنشاء الوكيل",
|
||||
"roster.createDialog.description": "أنشئ وكيلاً قابلاً لإعادة الاستخدام في Roster مساحة العمل هذه.",
|
||||
"roster.createDialog.title": "إنشاء وكيل",
|
||||
"roster.createForm.changeIcon": "تغيير أيقونة الوكيل",
|
||||
@ -377,9 +338,7 @@
|
||||
"roster.editDialog.title": "تعديل الوكيل",
|
||||
"roster.editInfo": "تعديل المعلومات",
|
||||
"roster.empty": "لا يوجد وكيل بعد",
|
||||
"roster.emptyDescription": "ستظهر الوكلاء المحفوظون في مساحة العمل هذه هنا.",
|
||||
"roster.emptySearch": "لا يوجد وكلاء مطابقون",
|
||||
"roster.emptySearchDescription": "جرّب اسم وكيل آخر.",
|
||||
"roster.filters.all": "الكل",
|
||||
"roster.filters.drafts": "مسودات",
|
||||
"roster.filters.label": "مرشحات الوكيل",
|
||||
@ -403,12 +362,6 @@
|
||||
"roster.saveToRosterSuccess": "Agent saved to roster.",
|
||||
"roster.searchLabel": "البحث عن الوكلاء",
|
||||
"roster.searchPlaceholder": "ابحث عن الوكلاء بالاسم…",
|
||||
"roster.sources.agent_app": "تطبيق الوكيل",
|
||||
"roster.sources.imported": "مستورد",
|
||||
"roster.sources.system": "النظام",
|
||||
"roster.sources.workflow": "سير العمل",
|
||||
"roster.status.active": "نشط",
|
||||
"roster.status.archived": "مؤرشف",
|
||||
"roster.tabs.agent": "وكيل",
|
||||
"roster.tabs.human": "إنسان",
|
||||
"roster.tabsLabel": "نوع Roster",
|
||||
|
||||
@ -5,24 +5,16 @@
|
||||
"addModal.queryName": "السؤال",
|
||||
"addModal.queryPlaceholder": "اكتب الاستعلام هنا",
|
||||
"addModal.title": "إضافة رد تعليق توضيحي",
|
||||
"batchAction.cancel": "إلغاء",
|
||||
"batchAction.delete": "حذف",
|
||||
"batchAction.selected": "المحدد",
|
||||
"batchModal.answer": "الإجابة",
|
||||
"batchModal.browse": "تصفح",
|
||||
"batchModal.cancel": "إلغاء",
|
||||
"batchModal.completed": "اكتمل الاستيراد",
|
||||
"batchModal.content": "المحتوى",
|
||||
"batchModal.contentTitle": "محتوى المقطع",
|
||||
"batchModal.csvUploadTitle": "اسحب وأفلت ملف CSV هنا، أو ",
|
||||
"batchModal.error": "خطأ في الاستيراد",
|
||||
"batchModal.ok": "موافق",
|
||||
"batchModal.processing": "جاري المعالجة",
|
||||
"batchModal.question": "السؤال",
|
||||
"batchModal.run": "تشغيل الدفعة",
|
||||
"batchModal.runError": "فشل تشغيل الدفعة",
|
||||
"batchModal.template": "تحميل القالب من هنا",
|
||||
"batchModal.tip": "يجب أن يتوافق ملف CSV مع الهيكل التالي:",
|
||||
"batchModal.title": "استيراد بالجملة",
|
||||
"editBy": "تم تعديل الإجابة بواسطة {{author}}",
|
||||
"editModal.answerName": "الراوي",
|
||||
|
||||
@ -11,62 +11,14 @@
|
||||
"apiKeyModal.lastUsed": "آخر استخدام",
|
||||
"apiKeyModal.secretKey": "المفتاح السري",
|
||||
"apiServer": "خادم API",
|
||||
"chatMode.blocking": "نوع الحظر، في انتظار اكتمال التنفيذ وإرجاع النتائج. (قد يتم قطع الطلبات إذا كانت العملية طويلة)",
|
||||
"chatMode.chatMsgHistoryApi": "الحصول على رسالة سجل الدردشة",
|
||||
"chatMode.chatMsgHistoryApiTip": "تُرجع الصفحة الأولى أحدث شريط `limit`، وهو بترتيب عكسي.",
|
||||
"chatMode.chatMsgHistoryConversationIdTip": "معرف المحادثة",
|
||||
"chatMode.chatMsgHistoryFirstId": "معرف سجل الدردشة الأول في الصفحة الحالية. الافتراضي هو لا شيء.",
|
||||
"chatMode.chatMsgHistoryLimit": "كم عدد المحادثات التي يتم إرجاعها في طلب واحد",
|
||||
"chatMode.conversationIdTip": "(اختياري) معرف المحادثة: اتركه فارغًا للمحادثة لأول مرة؛ مرر conversation_id من السياق لمتابعة الحوار.",
|
||||
"chatMode.conversationRenamingApi": "إعادة تسمية المحادثة",
|
||||
"chatMode.conversationRenamingApiTip": "إعادة تسمية المحادثات؛ يتم عرض الاسم في واجهات العملاء متعددة الجلسات.",
|
||||
"chatMode.conversationRenamingNameTip": "اسم جديد",
|
||||
"chatMode.conversationsListApi": "الحصول على قائمة المحادثات",
|
||||
"chatMode.conversationsListApiTip": "يحصل على قائمة الجلسات للمستخدم الحالي. بشكل افتراضي، يتم إرجاع آخر 20 جلسة.",
|
||||
"chatMode.conversationsListFirstIdTip": "معرف السجل الأخير في الصفحة الحالية، الافتراضي لا شيء.",
|
||||
"chatMode.conversationsListLimitTip": "كم عدد المحادثات التي يتم إرجاعها في طلب واحد",
|
||||
"chatMode.createChatApi": "إنشاء رسالة دردشة",
|
||||
"chatMode.createChatApiTip": "بناء رسالة محادثة جديدة أو استمرار حوار موجود.",
|
||||
"chatMode.info": "للتطبيقات المحادثة متعددة الاستخدامات باستخدام تنسيق Q&A، اتصل بـ API رسائل الدردشة لبدء الحوار. حافظ على المحادثات الجارية عن طريق تمرير conversation_id المرتجع. تعتمد معلمات الاستجابة والقوالب على إعدادات Dify Prompt Eng.",
|
||||
"chatMode.inputsTips": "(اختياري) توفير حقول إدخال المستخدم كأزواج مفتاح وقيمة، بما يتوافق مع المتغيرات في هندسة المطالبات. المفتاح هو اسم المتغير، والقيمة هي قيمة المعلمة. إذا كان نوع الحقل هو تحديد، فيجب أن تكون القيمة المرسلة واحدة من الخيارات المحددة مسبقًا.",
|
||||
"chatMode.messageFeedbackApi": "ملاحظات مستخدم محطة الرسالة، إعجاب",
|
||||
"chatMode.messageFeedbackApiTip": "قيم الرسائل المستلمة نيابة عن المستخدمين النهائيين بإعجاب أو عدم إعجاب. هذه البيانات مرئية في صفحة السجلات والتعليقات التوضيحية وتستخدم لضبط النموذج في المستقبل.",
|
||||
"chatMode.messageIDTip": "معرف الرسالة",
|
||||
"chatMode.parametersApi": "الحصول على معلومات حول معلمات التطبيق",
|
||||
"chatMode.parametersApiTip": "استرداد معلمات الإدخال المكونة، بما في ذلك أسماء المتغيرات وأسماء الحقول والأنواع والقيم الافتراضية. تستخدم عادة لعرض هذه الحقول في نموذج أو ملء القيم الافتراضية بعد تحميل العميل.",
|
||||
"chatMode.queryTips": "محتوى إدخال/سؤال المستخدم",
|
||||
"chatMode.ratingTip": "إعجاب أو عدم إعجاب، null للإلغاء",
|
||||
"chatMode.streaming": "عائدات التدفق. تنفيذ عائد التدفق بناءً على SSE (أحداث مرسلة من الخادم).",
|
||||
"chatMode.title": "API تطبيق الدردشة",
|
||||
"completionMode.blocking": "نوع الحظر، في انتظار اكتمال التنفيذ وإرجاع النتائج. (قد يتم قطع الطلبات إذا كانت العملية طويلة)",
|
||||
"completionMode.createCompletionApi": "إنشاء رسالة إكمال",
|
||||
"completionMode.createCompletionApiTip": "إنشاء رسالة إكمال لدعم وضع السؤال والجواب.",
|
||||
"completionMode.info": "لتوليد نصوص عالية الجودة، مثل المقالات والملخصات والترجمات، استخدم API رسائل الإكمال مع إدخال المستخدم. يعتمد توليد النص على معلمات النموذج وقوالب المطالبة المعينة في هندسة مطالبات Dify.",
|
||||
"completionMode.inputsTips": "(اختياري) توفير حقول إدخال المستخدم كأزواج مفتاح وقيمة، بما يتوافق مع المتغيرات في هندسة المطالبات. المفتاح هو اسم المتغير، والقيمة هي قيمة المعلمة. إذا كان نوع الحقل هو تحديد، فيجب أن تكون القيمة المرسلة واحدة من الخيارات المحددة مسبقًا.",
|
||||
"completionMode.messageFeedbackApi": "ملاحظات الرسالة (إعجاب)",
|
||||
"completionMode.messageFeedbackApiTip": "قيم الرسائل المستلمة نيابة عن المستخدمين النهائيين بإعجاب أو عدم إعجاب. هذه البيانات مرئية في صفحة السجلات والتعليقات التوضيحية وتستخدم لضبط النموذج في المستقبل.",
|
||||
"completionMode.messageIDTip": "معرف الرسالة",
|
||||
"completionMode.parametersApi": "الحصول على معلومات حول معلمات التطبيق",
|
||||
"completionMode.parametersApiTip": "استرداد معلمات الإدخال المكونة، بما في ذلك أسماء المتغيرات وأسماء الحقول والأنواع والقيم الافتراضية. تستخدم عادة لعرض هذه الحقول في نموذج أو ملء القيم الافتراضية بعد تحميل العميل.",
|
||||
"completionMode.queryTips": "محتوى نص إدخال المستخدم.",
|
||||
"completionMode.ratingTip": "إعجاب أو عدم إعجاب، null للإلغاء",
|
||||
"completionMode.streaming": "عائدات التدفق. تنفيذ عائد التدفق بناءً على SSE (أحداث مرسلة من الخادم).",
|
||||
"completionMode.title": "API تطبيق الإكمال",
|
||||
"copied": "تم النسخ",
|
||||
"copy": "نسخ",
|
||||
"develop.noContent": "لا يوجد محتوى",
|
||||
"develop.pathParams": "معلمات المسار (Path Params)",
|
||||
"develop.query": "استعلام (Query)",
|
||||
"develop.requestBody": "جسم الطلب (Request Body)",
|
||||
"develop.toc": "المحتويات",
|
||||
"disabled": "معطل",
|
||||
"loading": "جاري التحميل",
|
||||
"merMaid.rerender": "إعادة الرسم",
|
||||
"never": "أبدا",
|
||||
"ok": "في الخدمة",
|
||||
"pause": "إيقاف مؤقت",
|
||||
"play": "تشغيل",
|
||||
"playing": "جاري التشغيل",
|
||||
"regenerate": "إعادة إنشاء",
|
||||
"status": "الحالة"
|
||||
"playing": "جاري التشغيل"
|
||||
}
|
||||
|
||||
@ -1,24 +1,17 @@
|
||||
{
|
||||
"agentLog": "سجل الوكيل",
|
||||
"agentLogDetail.agentMode": "وضع الوكيل",
|
||||
"agentLogDetail.finalProcessing": "المعالجة النهائية",
|
||||
"agentLogDetail.iteration": "تكرار",
|
||||
"agentLogDetail.iterations": "التكرارات",
|
||||
"agentLogDetail.toolUsed": "الأداة المستخدمة",
|
||||
"dateFormat": "شهر/يوم/سنة",
|
||||
"dateTimeFormat": "MM/DD/YYYY hh:mm A",
|
||||
"description": "تسجل السجلات حالة تشغيل التطبيق، بما في ذلك مدخلات المستخدم واستجابات الذكاء الاصطناعي.",
|
||||
"detail.annotationTip": "تحسينات تم وضع علامة عليها بواسطة {{user}}",
|
||||
"detail.conversationId": "معرف المحادثة",
|
||||
"detail.loading": "جاري التحميل",
|
||||
"detail.modelParams": "معلمات النموذج",
|
||||
"detail.operation.addAnnotation": "إضافة تحسين",
|
||||
"detail.operation.annotationPlaceholder": "أدخل الإجابة المتوقعة التي تريد أن يرد بها الذكاء الاصطناعي، والتي يمكن استخدامها لضبط النموذج والتحسين المستمر لجودة توليد النص.",
|
||||
"detail.operation.dislike": "لم يعجبني",
|
||||
"detail.operation.editAnnotation": "تعديل التحسين",
|
||||
"detail.operation.like": "إعجاب",
|
||||
"detail.promptTemplate": "قالب المطالبة",
|
||||
"detail.promptTemplateBeforeChat": "قالب المطالبة قبل الدردشة · كرسالة نظام",
|
||||
"detail.second": "ثانية",
|
||||
"detail.time": "الوقت",
|
||||
"detail.timeConsuming": "",
|
||||
@ -43,7 +36,6 @@
|
||||
"filter.period.yearToDate": "السنة حتى الآن",
|
||||
"filter.sortBy": "رتب حسب:",
|
||||
"monitoring.description": "يسجل الرصد حالة تشغيل التطبيق، بما في ذلك الأداء ونشاط المستخدمين والتكاليف.",
|
||||
"promptLog": "سجل المطالبة",
|
||||
"runDetail.fileListDetail": "تفاصيل",
|
||||
"runDetail.fileListLabel": "تفاصيل الملف",
|
||||
"runDetail.testWithParams": "اختبار مع المعلمات",
|
||||
@ -68,9 +60,6 @@
|
||||
"table.header.updatedTime": "الوقت المحدث",
|
||||
"table.header.user": "المستخدم",
|
||||
"table.header.userRate": "معدل المستخدم",
|
||||
"table.header.version": "الإصدار",
|
||||
"table.pagination.next": "التالي",
|
||||
"table.pagination.previous": "السابق",
|
||||
"title": "السجلات",
|
||||
"triggerBy.appRun": "تشغيل التطبيق",
|
||||
"triggerBy.debugging": "تصحيح الأخطاء",
|
||||
@ -79,7 +68,6 @@
|
||||
"triggerBy.ragPipelineRun": "تشغيل خط أنابيب RAG",
|
||||
"triggerBy.schedule": "الجدول الزمني",
|
||||
"triggerBy.webhook": "Webhook",
|
||||
"viewLog": "عرض السجل",
|
||||
"workflowSubtitle": "سجل تفاصيل تشغيل سير العمل.",
|
||||
"workflowTitle": "سجلات سير العمل"
|
||||
}
|
||||
|
||||
@ -32,9 +32,6 @@
|
||||
"appSelector.noParams": "لا توجد معلمات مطلوبة",
|
||||
"appSelector.params": "معلمات التطبيق",
|
||||
"appSelector.placeholder": "اختر تطبيقًا...",
|
||||
"communityIntro": "ناقش مع أعضاء الفريق والمساهمين والمطورين على قنوات مختلفة.",
|
||||
"createApp": "إنشاء تطبيق",
|
||||
"createFromConfigFile": "إنشاء من ملف DSL",
|
||||
"deleteAppConfirmContent": "حذف التطبيق لا رجعة فيه. لن يتمكن المستخدمون من الوصول إلى تطبيقك بعد الآن، وسيتم حذف جميع تكوينات المطالبة والسجلات بشكل دائم.",
|
||||
"deleteAppConfirmInputLabel": "للتأكيد، اكتب <appName>{{appName}}</appName> في المربع أدناه:",
|
||||
"deleteAppConfirmInputPlaceholder": "أدخل اسم التطبيق…",
|
||||
@ -51,7 +48,6 @@
|
||||
"exportFailed": "فشل تصدير DSL.",
|
||||
"filterEmpty.noApps": "لا توجد تطبيقات هنا",
|
||||
"firstEmpty.blankDescription": "ابدأ بلوحة فارغة عندما تعرف ما تريد بناءه.",
|
||||
"firstEmpty.description": "حوّل فكرتك إلى تطبيق ذكاء اصطناعي يعمل — ابدأ من الصفر أو من قالب أو استورد تطبيقًا موجودًا.",
|
||||
"firstEmpty.importDescription": "استعد تطبيقًا من ملف تعريف Dify DSL.",
|
||||
"firstEmpty.learnDifyTitle": "تعلّم Dify",
|
||||
"firstEmpty.or": "أو",
|
||||
@ -60,34 +56,24 @@
|
||||
"gotoAnything.actions.accountDesc": "الانتقال إلى صفحة الحساب",
|
||||
"gotoAnything.actions.communityDesc": "فتح مجتمع Discord",
|
||||
"gotoAnything.actions.createCategoryDesc": "قم بإنشاء سير عمل أو سير دردشة تم إنشاؤه بواسطة الذكاء الاصطناعي",
|
||||
"gotoAnything.actions.createCategoryTitle": "إنشاء",
|
||||
"gotoAnything.actions.createChatflow": "تدفق الدردشة",
|
||||
"gotoAnything.actions.createChatflowDesc": "أنشئ تطبيق تدفق الدردشة (الدردشة المتقدمة) من الوصف",
|
||||
"gotoAnything.actions.createWorkflow": "سير العمل",
|
||||
"gotoAnything.actions.createWorkflowDesc": "قم بإنشاء تطبيق سير عمل من الوصف",
|
||||
"gotoAnything.actions.docDesc": "فتح وثائق المساعدة",
|
||||
"gotoAnything.actions.feedbackDesc": "فتح مناقشات ملاحظات المجتمع",
|
||||
"gotoAnything.actions.languageCategoryDesc": "تبديل لغة الواجهة",
|
||||
"gotoAnything.actions.languageCategoryTitle": "اللغة",
|
||||
"gotoAnything.actions.languageChangeDesc": "تغيير لغة واجهة المستخدم",
|
||||
"gotoAnything.actions.refineCategoryDesc": "قم بتحسين سير العمل الحالي أو الرسم البياني لتدفق الدردشة",
|
||||
"gotoAnything.actions.refineDesc": "قم بوصف التغيير الذي سيتم تطبيقه على المسودة الحالية",
|
||||
"gotoAnything.actions.refineTitle": "تحسين الرسم البياني الحالي",
|
||||
"gotoAnything.actions.runDesc": "تشغيل أوامر سريعة (السمة، اللغة، ...)",
|
||||
"gotoAnything.actions.runTitle": "أوامر",
|
||||
"gotoAnything.actions.searchApplications": "بحث في التطبيقات",
|
||||
"gotoAnything.actions.searchApplicationsDesc": "البحث والانتقال إلى تطبيقاتك",
|
||||
"gotoAnything.actions.searchKnowledgeBases": "بحث في قواعد المعرفة",
|
||||
"gotoAnything.actions.searchKnowledgeBasesDesc": "البحث والانتقال إلى قواعد المعرفة الخاصة بك",
|
||||
"gotoAnything.actions.searchPlugins": "بحث في الإضافات",
|
||||
"gotoAnything.actions.searchPluginsDesc": "البحث والانتقال إلى إضافاتك",
|
||||
"gotoAnything.actions.searchWorkflowNodes": "بحث في عقد سير العمل",
|
||||
"gotoAnything.actions.searchWorkflowNodesDesc": "البحث والانتقال إلى العقد في سير العمل الحالي بالاسم أو النوع",
|
||||
"gotoAnything.actions.searchWorkflowNodesHelp": "هذه الميزة تعمل فقط عند عرض سير العمل. انتقل إلى سير العمل أولاً.",
|
||||
"gotoAnything.actions.slashDesc": "تنفيذ الأوامر (اكتب / لرؤية جميع الأوامر المتاحة)",
|
||||
"gotoAnything.actions.slashTitle": "الأوامر",
|
||||
"gotoAnything.actions.themeCategoryDesc": "تبديل سمة التطبيق",
|
||||
"gotoAnything.actions.themeCategoryTitle": "السمة",
|
||||
"gotoAnything.actions.themeDark": "السمة الداكنة",
|
||||
"gotoAnything.actions.themeDarkDesc": "استخدم المظهر الداكن",
|
||||
"gotoAnything.actions.themeLight": "السمة الفاتحة",
|
||||
@ -140,8 +126,6 @@
|
||||
"importFromDSLFile": "من ملف DSL",
|
||||
"importFromDSLUrl": "من رابط",
|
||||
"importFromDSLUrlPlaceholder": "لصق رابط DSL هنا",
|
||||
"join": "انضم إلى المجتمع",
|
||||
"marketplace.template.categories": "الفئات",
|
||||
"marketplace.template.category.design": "التصميم",
|
||||
"marketplace.template.category.it": "تكنولوجيا المعلومات",
|
||||
"marketplace.template.category.knowledge": "المعرفة",
|
||||
@ -156,7 +140,6 @@
|
||||
"marketplace.template.overview": "نظرة عامة",
|
||||
"marketplace.template.publishedBy": "بواسطة",
|
||||
"marketplace.template.usageCount": "الاستخدام",
|
||||
"marketplace.template.viewOnMarketplace": "عرض على Marketplace",
|
||||
"maxActiveRequests": "أقصى عدد للطلبات المتزامنة",
|
||||
"maxActiveRequestsPlaceholder": "أدخل 0 لغير محدود",
|
||||
"maxActiveRequestsTip": "الحد الأقصى لعدد الطلبات النشطة المتزامنة لكل تطبيق (0 لغير محدود)",
|
||||
@ -167,7 +150,6 @@
|
||||
"newApp.Create": "إنشاء",
|
||||
"newApp.advancedShortDescription": "سير عمل محسن للمحادثات متعددة الأدوار",
|
||||
"newApp.advancedUserDescription": "سير عمل مع ميزات ذاكرة إضافية وواجهة روبوت دردشة.",
|
||||
"newApp.agentAssistant": "مساعد وكيل جديد",
|
||||
"newApp.agentShortDescription": "وكيل ذكي مع الاستدلال واستخدام الأدوات المستقل",
|
||||
"newApp.agentUserDescription": "وكيل ذكي قادر على الاستدلال التكراري واستخدام الأدوات بشكل مستقل لتحقيق أهداف المهمة.",
|
||||
"newApp.appCreateDSLErrorPart1": "تم اكتشاف اختلاف كبير في إصدارات DSL. قد يؤدي فرض الاستيراد إلى تعطل التطبيق.",
|
||||
@ -180,51 +162,34 @@
|
||||
"newApp.appCreated": "تم إنشاء التطبيق",
|
||||
"newApp.appDescriptionPlaceholder": "أدخل وصف التطبيق",
|
||||
"newApp.appNamePlaceholder": "أعط اسمًا لتطبيقك",
|
||||
"newApp.appTemplateNotSelected": "الرجاء تحديد قالب",
|
||||
"newApp.appTypeRequired": "الرجاء تحديد نوع التطبيق",
|
||||
"newApp.captionDescription": "الوصف",
|
||||
"newApp.captionName": "اسم التطبيق والأيقونة",
|
||||
"newApp.caution": "تحذير",
|
||||
"newApp.chatApp": "مساعد",
|
||||
"newApp.chatAppIntro": "أريد بناء تطبيق قائم على الدردشة. يستخدم هذا التطبيق تنسيق سؤال وجواب، مما يسمح بجولات متعددة من المحادثة المستمرة.",
|
||||
"newApp.chatbotShortDescription": "روبوت دردشة قائم على LLM مع إعداد بسيط",
|
||||
"newApp.chatbotUserDescription": "قم ببناء روبوت دردشة قائم على LLM بسرعة مع تكوين بسيط. يمكنك التبديل إلى Chatflow لاحقًا.",
|
||||
"newApp.chooseAppType": "اختر نوع التطبيق",
|
||||
"newApp.completeApp": "مولد نصوص",
|
||||
"newApp.completeAppIntro": "أريد إنشاء تطبيق يولد نصوصًا عالية الجودة بناءً على المطالبات، مثل إنشاء المقالات والملخصات والترجمات والمزيد.",
|
||||
"newApp.completionShortDescription": "مساعد AI لمهام توليد النصوص",
|
||||
"newApp.completionUserDescription": "قم ببناء مساعد AI لمهام توليد النصوص بسرعة مع تكوين بسيط.",
|
||||
"newApp.dropDSLToCreateApp": "أفلت ملف DSL هنا لإنشاء تطبيق",
|
||||
"newApp.forAdvanced": "للمستخدمين المتقدمين",
|
||||
"newApp.forBeginners": "أنواع تطبيقات أبسط",
|
||||
"newApp.foundResult": "{{count}} نتيجة",
|
||||
"newApp.foundResults": "{{count}} نتائج",
|
||||
"newApp.hideTemplates": "العودة إلى اختيار الوضع",
|
||||
"newApp.import": "استيراد",
|
||||
"newApp.learnMore": "اعرف المزيد",
|
||||
"newApp.nameNotEmpty": "لا يمكن أن يكون الاسم فارغًا",
|
||||
"newApp.noAppsFound": "لم يتم العثور على تطبيقات",
|
||||
"newApp.noIdeaTip": "لا توجد أفكار؟ تحقق من قوالبنا",
|
||||
"newApp.noTemplateFound": "لم يتم العثور على قوالب",
|
||||
"newApp.noTemplateFoundTip": "حاول البحث باستخدام كلمات مفتاحية مختلفة.",
|
||||
"newApp.optional": "اختياري",
|
||||
"newApp.previewDemo": "معاينة العرض التوضيحي",
|
||||
"newApp.showTemplates": "أريد الاختيار من قالب",
|
||||
"newApp.startFromBlank": "إنشاء من البداية",
|
||||
"newApp.startFromTemplate": "إنشاء من قالب",
|
||||
"newApp.useTemplate": "استخدم هذا القالب",
|
||||
"newApp.workflowShortDescription": "تدفق وكيل للأتمتة الذكية",
|
||||
"newApp.workflowUserDescription": "قم ببناء تدفقات عمل AI مستقلة بشكل مرئي مع بساطة السحب والإفلات.",
|
||||
"newApp.workflowWarning": "حاليا في النسخة التجريبية (beta)",
|
||||
"newAppFromTemplate.byCategories": "حسب الفئات",
|
||||
"newAppFromTemplate.searchAllTemplate": "بحث في كل القوالب...",
|
||||
"newAppFromTemplate.sidebar.Agent": "Agent",
|
||||
"newAppFromTemplate.sidebar.Assistant": "مساعد",
|
||||
"newAppFromTemplate.sidebar.HR": "الموارد البشرية",
|
||||
"newAppFromTemplate.sidebar.Programming": "برمجة",
|
||||
"newAppFromTemplate.sidebar.Recommended": "الكل",
|
||||
"newAppFromTemplate.sidebar.Workflow": "سير العمل",
|
||||
"newAppFromTemplate.sidebar.Writing": "كتابة",
|
||||
"noAccessPermission": "لا يوجد إذن للوصول إلى تطبيق الويب",
|
||||
"noAccessResourcePermission": "لا يوجد إذن للوصول إلى هذا المورد",
|
||||
"noUserInputNode": "عقدة إدخال المستخدم مفقودة",
|
||||
@ -234,8 +199,6 @@
|
||||
"publishApp.notSetDesc": "حاليا لا يمكن لأحد الوصول إلى تطبيق الويب. الرجاء تعيين الأذونات.",
|
||||
"publishApp.title": "من يمكنه الوصول إلى تطبيق الويب",
|
||||
"removeOriginal": "حذف التطبيق الأصلي",
|
||||
"roadmap": "شاهد خريطة الطريق",
|
||||
"showMyCreatedAppsOnly": "تم إنشاؤه بواسطتي",
|
||||
"structOutput.LLMResponse": "استجابة LLM",
|
||||
"structOutput.configure": "تكوين",
|
||||
"structOutput.modelNotSupported": "النموذج غير مدعوم",
|
||||
@ -246,8 +209,6 @@
|
||||
"structOutput.structured": "هيكلي",
|
||||
"structOutput.structuredTip": "المخرجات الهيكلية هي ميزة تضمن أن يولد النموذج دائمًا استجابات تلتزم بـ JSON Schema الذي قدمته",
|
||||
"studio.allApps": "كل التطبيقات",
|
||||
"studio.apps": "تطبيقات",
|
||||
"studio.filters.allCreators": "جميع المنشئين",
|
||||
"studio.filters.creators": "المنشئون",
|
||||
"studio.filters.reset": "إعادة تعيين",
|
||||
"studio.filters.searchCreators": "بحث عن المبدع...",
|
||||
@ -261,7 +222,6 @@
|
||||
"studio.starFailed": "فشل تحديث النجمة",
|
||||
"studio.starred": "المميزة بنجمة",
|
||||
"studio.unstarApp": "إزالة النجمة من التطبيق",
|
||||
"studio.viewSnippets": "عرض مقتطفات",
|
||||
"switch": "التبديل إلى Workflow Orchestrate",
|
||||
"switchLabel": "نسخة التطبيق التي سيتم إنشاؤها",
|
||||
"switchStart": "بدء التبديل",
|
||||
@ -274,7 +234,6 @@
|
||||
"tracing.aliyun.title": "Cloud Monitor",
|
||||
"tracing.arize.description": "مراقبة LLM على مستوى المؤسسة، والتقييم عبر الإنترنت وغير المتصل بالإنترنت، والمراقبة، والتجريب - بدعم من OpenTelemetry. مصمم خصيصًا لتطبيقات LLM والتطبيقات التي تعتمد على الوكيل.",
|
||||
"tracing.arize.title": "Arize",
|
||||
"tracing.collapse": "طي",
|
||||
"tracing.config": "تكوين",
|
||||
"tracing.configProvider.clientId": "معرف العميل (Client ID)",
|
||||
"tracing.configProvider.clientSecret": "سر العميل (Client Secret)",
|
||||
@ -297,11 +256,9 @@
|
||||
"tracing.configProviderTitle.notConfigured": "تكوين المزود لتمكين التتبع",
|
||||
"tracing.databricks.description": "توفر Databricks تدفق MLflow مدار بالكامل مع حوكمة وأمان قويين لتخزين بيانات التتبع.",
|
||||
"tracing.databricks.title": "Databricks",
|
||||
"tracing.description": "تكوين مزود LLMOps خارجي وتتبع أداء التطبيق.",
|
||||
"tracing.disabled": "معطل",
|
||||
"tracing.disabledTip": "الرجاء تكوين المزود أولاً",
|
||||
"tracing.enabled": "في الخدمة",
|
||||
"tracing.expand": "توسيع",
|
||||
"tracing.inUse": "قيد الاستخدام",
|
||||
"tracing.langfuse.description": "مراقبة LLM مفتوحة المصدر وتقييمها وإدارة المطالبات والمقاييس لتصحيح وتحسين تطبيق LLM الخاص بك.",
|
||||
"tracing.langfuse.title": "Langfuse",
|
||||
@ -330,9 +287,7 @@
|
||||
"types.advanced": "Chatflow",
|
||||
"types.agent": "Agent",
|
||||
"types.all": "الكل",
|
||||
"types.basic": "أساسي",
|
||||
"types.chatbot": "روبوت دردشة",
|
||||
"types.completion": "إكمال",
|
||||
"types.filter": "الأنواع",
|
||||
"types.workflow": "سير العمل (Workflow)"
|
||||
}
|
||||
|
||||
@ -10,7 +10,6 @@
|
||||
"account.appearanceLabel": "المظهر",
|
||||
"account.appearanceLight": "فاتح",
|
||||
"account.appearanceSystem": "النظام",
|
||||
"account.avatar": "الصورة الرمزية",
|
||||
"account.changeEmail.authTip": "بمجرد تغيير بريدك الإلكتروني، لن تتمكن حسابات Google أو GitHub المرتبطة ببريدك الإلكتروني القديم من تسجيل الدخول إلى هذا الحساب.",
|
||||
"account.changeEmail.changeTo": "تغيير إلى {{email}}",
|
||||
"account.changeEmail.codeLabel": "رمز التحقق",
|
||||
@ -63,7 +62,6 @@
|
||||
"account.showAppLength": "عرض {{length}} تطبيقات",
|
||||
"account.verificationLabel": "رمز التحقق",
|
||||
"account.verificationPlaceholder": "الصق الرمز المكون من 6 أرقام",
|
||||
"account.workspaceIcon": "رمز مساحة العمل",
|
||||
"account.workspaceName": "اسم مساحة العمل",
|
||||
"account.workspaceNamePlaceholder": "أدخل اسم مساحة العمل",
|
||||
"actionMsg.copySuccessfully": "تم النسخ بنجاح",
|
||||
@ -78,7 +76,6 @@
|
||||
"agentStrategyPage.description": "حدّد كيف يفكر AI Agent ويتخذ القرارات — بما في ذلك كيفية اختيار الأدوات ومعالجة النتائج وحل المشكلات ذاتيًا.",
|
||||
"api.actionFailed": "فشل الإجراء",
|
||||
"api.actionSuccess": "نجح الإجراء",
|
||||
"api.create": "تم الإنشاء",
|
||||
"api.remove": "تمت الإزالة",
|
||||
"api.saved": "تم الحفظ",
|
||||
"api.success": "نجاح",
|
||||
@ -105,8 +102,6 @@
|
||||
"appMenus.logs": "السجلات",
|
||||
"appMenus.overview": "المراقبة",
|
||||
"appMenus.promptEng": "تنسيق",
|
||||
"appModes.chatApp": "تطبيق الدردشة",
|
||||
"appModes.completionApp": "مولد النص",
|
||||
"avatar.deleteDescription": "هل أنت متأكد أنك تريد إزالة صورة ملفك الشخصي؟ سيستخدم حسابك الصورة الرمزية الأولية الافتراضية.",
|
||||
"avatar.deleteTitle": "إزالة الصورة الرمزية",
|
||||
"avatar.editAction": "تعديل الصورة الرمزية",
|
||||
@ -122,7 +117,6 @@
|
||||
"chat.inputDisabledPlaceholder": "معاينة فقط",
|
||||
"chat.inputPlaceholder": "تحدث إلى {{botName}}",
|
||||
"chat.renameConversation": "إعادة تسمية المحادثة",
|
||||
"chat.resend": "إعادة إرسال",
|
||||
"chat.thinking": "يفكر...",
|
||||
"chat.thought": "فكر",
|
||||
"compliance.gdpr": "GDPR DPA",
|
||||
@ -131,42 +125,21 @@
|
||||
"compliance.sandboxUpgradeTooltip": "متاح فقط مع خطة المحترفين أو الفريق.",
|
||||
"compliance.soc2Type1": "تقرير SOC 2 النوع الأول",
|
||||
"compliance.soc2Type2": "تقرير SOC 2 النوع الثاني",
|
||||
"dataSource.add": "إضافة مصدر بيانات",
|
||||
"dataSource.configure": "تكوين",
|
||||
"dataSource.connect": "اتصال",
|
||||
"dataSource.notion.addWorkspace": "إضافة مساحة عمل",
|
||||
"dataSource.notion.changeAuthorizedPages": "تغيير الصفحات المصرح بها",
|
||||
"dataSource.notion.connected": "متصل",
|
||||
"dataSource.notion.connectedWorkspace": "مساحة العمل المتصلة",
|
||||
"dataSource.notion.description": "استخدام Notion كمصدر بيانات للمعرفة.",
|
||||
"dataSource.notion.disconnected": "غير متصل",
|
||||
"dataSource.notion.integratedAlert": "تم دمج Notion عبر بيانات الاعتماد الداخلية، ولا حاجة لإعادة التفويض.",
|
||||
"dataSource.notion.pagesAuthorized": "الصفحات المصرح بها",
|
||||
"dataSource.notion.remove": "إزالة",
|
||||
"dataSource.notion.selector.addPages": "إضافة صفحات",
|
||||
"dataSource.notion.selector.configure": "تكوين Notion",
|
||||
"dataSource.notion.selector.docs": "وثائق Notion",
|
||||
"dataSource.notion.selector.headerTitle": "اختر صفحات Notion",
|
||||
"dataSource.notion.selector.noSearchResult": "لا توجد نتائج بحث",
|
||||
"dataSource.notion.selector.pageSelected": "الصفحات المحددة",
|
||||
"dataSource.notion.selector.preview": "معاينة",
|
||||
"dataSource.notion.selector.searchPages": "بحث في الصفحات...",
|
||||
"dataSource.notion.sync": "مزامنة",
|
||||
"dataSource.notion.title": "Notion",
|
||||
"dataSource.website.active": "نشط",
|
||||
"dataSource.website.configuredCrawlers": "الزواحف المكونة",
|
||||
"dataSource.website.description": "استيراد المحتوى من المواقع الإلكترونية باستخدام زحف الويب.",
|
||||
"dataSource.website.inactive": "غير نشط",
|
||||
"dataSource.website.title": "موقع الكتروني",
|
||||
"dataSource.website.with": "مع",
|
||||
"dataSourcePage.description": "اربط مصادر بيانات خارجية لاستخدامها في قاعدة المعرفة أو Knowledge Pipeline — واجلب المحتوى من Google Drive وNotion وGitHub والمزيد.",
|
||||
"dataSourcePage.installFirst": "يرجى تثبيت مصدر بيانات أولاً.",
|
||||
"dataSourcePage.notSetUp": "غير معدّ",
|
||||
"dataSourcePage.notSetUpTitle": "<highlight>مصدر البيانات</highlight> غير معدّ",
|
||||
"datasetMenus.documents": "المستندات",
|
||||
"datasetMenus.emptyTip": "لم يتم دمج هذه المعرفة في أي تطبيق. يرجى الرجوع إلى المستند للحصول على إرشادات.",
|
||||
"datasetMenus.hitTesting": "اختبار الاسترجاع",
|
||||
"datasetMenus.noRelatedApp": "لا توجد تطبيقات مرتبطة",
|
||||
"datasetMenus.pipeline": "خط الأنابيب",
|
||||
"datasetMenus.relatedApp": "التطبيقات المرتبطة",
|
||||
"datasetMenus.settings": "الإعدادات",
|
||||
@ -181,12 +154,10 @@
|
||||
"errorBoundary.componentStack": "مكدس المكون:",
|
||||
"errorBoundary.details": "تفاصيل الخطأ (التطوير فقط)",
|
||||
"errorBoundary.errorCount": "حدث هذا الخطأ {{count}} مرة",
|
||||
"errorBoundary.fallbackTitle": "عذراً! حدث خطأ ما",
|
||||
"errorBoundary.message": "حدث خطأ غير متوقع أثناء عرض هذا المكون.",
|
||||
"errorBoundary.reloadPage": "إعادة تحميل الصفحة",
|
||||
"errorBoundary.title": "حدث خطأ ما",
|
||||
"errorBoundary.tryAgain": "حاول مجدداً",
|
||||
"errorBoundary.tryAgainCompact": "حاول مجدداً",
|
||||
"errorMsg.fieldRequired": "{{field}} مطلوب",
|
||||
"errorMsg.urlError": "يجب أن يبدأ العنوان بـ http:// أو https://",
|
||||
"extensionPage.description": "ادمج الخدمات الخارجية في تطبيقاتك باستخدام HTTP Webhooks.",
|
||||
@ -217,14 +188,8 @@
|
||||
"imageUploader.uploadFromComputerReadError": "فشل قراءة الصورة، يرجى المحاولة مرة أخرى.",
|
||||
"imageUploader.uploadFromComputerUploadError": "فشل تحميل الصورة، يرجى التحميل مرة أخرى.",
|
||||
"integrations.connect": "اتصال",
|
||||
"integrations.connected": "متصل",
|
||||
"integrations.github": "GitHub",
|
||||
"integrations.githubAccount": "تسجيل الدخول بحساب GitHub",
|
||||
"integrations.google": "Google",
|
||||
"integrations.googleAccount": "تسجيل الدخول بحساب Google",
|
||||
"label.optional": "(اختياري)",
|
||||
"language.displayLanguage": "لغة العرض",
|
||||
"language.language": "اللغة",
|
||||
"language.timezone": "المنطقة الزمنية",
|
||||
"license.expiring": "تنتهي في يوم واحد",
|
||||
"license.expiring_plural": "تنتهي في {{count}} أيام",
|
||||
@ -247,17 +212,9 @@
|
||||
"mainNav.workspace.sort.createdTime": "Created time",
|
||||
"mainNav.workspace.sort.lastOpened": "Last opened",
|
||||
"mainNav.workspace.sort.openMenu": "Sort workspaces",
|
||||
"mainNav.workspace.switchWorkspace": "تبديل مساحة العمل",
|
||||
"mcpPage.description": "اتصل بخوادم MCP وأدرها لمنح تطبيقاتك إمكانية الوصول إلى الأدوات والخدمات الخارجية.",
|
||||
"members.adminTip": "يمكنه بناء التطبيقات وإدارة إعدادات الفريق",
|
||||
"members.alreadyInTeam": "موجود بالفعل في الفريق",
|
||||
"members.alreadyInTeamTip": "هؤلاء المستخدمون لديهم بالفعل إمكانية الوصول إلى مساحة العمل هذه.",
|
||||
"members.builder": "باني",
|
||||
"members.builderTip": "يمكنه بناء وتعديل تطبيقاته الخاصة",
|
||||
"members.datasetOperatorTip": "يمكنه إدارة قاعدة المعرفة فقط",
|
||||
"members.deleteMember": "حذف العضو",
|
||||
"members.disInvite": "إلغاء الدعوة",
|
||||
"members.editorTip": "يمكنه بناء وتعديل التطبيقات",
|
||||
"members.email": "البريد الإلكتروني",
|
||||
"members.emailInvalid": "تنسيق البريد الإلكتروني غير صالح",
|
||||
"members.emailNotSetup": "لم يتم إعداد خادم البريد الإلكتروني، لذا لا يمكن إرسال رسائل بريد إلكتروني للدعوة. يرجى إخطار المستخدمين برابط الدعوة الذي سيتم إصداره بعد الدعوة بدلاً من ذلك.",
|
||||
@ -273,18 +230,11 @@
|
||||
"members.lastActive": "آخر نشاط",
|
||||
"members.name": "الاسم",
|
||||
"members.noNewInvitationsSent": "لم يتم إرسال دعوات جديدة",
|
||||
"members.normalTip": "يمكنه استخدام التطبيقات فقط، ولا يمكنه بناء التطبيقات",
|
||||
"members.ok": "موافق",
|
||||
"members.pending": "قيد الانتظار...",
|
||||
"members.removeFromTeam": "إزالة من الفريق",
|
||||
"members.removeFromTeamTip": "سيتم إزالة وصول الفريق",
|
||||
"members.role": "الأدوار",
|
||||
"members.sendInvite": "إرسال دعوة",
|
||||
"members.setAdmin": "تعيين كمسؤول",
|
||||
"members.setBuilder": "تعيين كباني",
|
||||
"members.setEditor": "تعيين كمحرر",
|
||||
"members.setMember": "تعيين كعضو عادي",
|
||||
"members.team": "الفريق",
|
||||
"members.transferModal.codeLabel": "رمز التحقق",
|
||||
"members.transferModal.codePlaceholder": "الصق الرمز المكون من 6 أرقام",
|
||||
"members.transferModal.continue": "متابعة",
|
||||
@ -308,53 +258,19 @@
|
||||
"menus.appDetail": "تفاصيل التطبيق",
|
||||
"menus.apps": "الاستوديو",
|
||||
"menus.datasets": "المعرفة",
|
||||
"menus.datasetsTips": "قريباً: استيراد بيانات النص الخاصة بك أو كتابة البيانات في الوقت الفعلي عبر Webhook لتحسين سياق LLM.",
|
||||
"menus.deployments": "عمليات النشر",
|
||||
"menus.explore": "استكشاف",
|
||||
"menus.exploreMarketplace": "استكشاف السوق",
|
||||
"menus.newApp": "تطبيق جديد",
|
||||
"menus.newDataset": "إنشاء معرفة",
|
||||
"menus.plugins": "الإضافات",
|
||||
"menus.pluginsTips": "ادمج الإضافات الخارجية أو أنشئ إضافات AI متوافقة مع ChatGPT.",
|
||||
"menus.roster": "قائمة الوكلاء",
|
||||
"menus.status": "بيتا",
|
||||
"menus.tools": "الأدوات",
|
||||
"model.addMoreModel": "انتقل إلى الإعدادات لإضافة المزيد من النماذج",
|
||||
"model.capabilities": "قدرات متعددة الوسائط",
|
||||
"model.params.frequency_penalty": "عقوبة التردد",
|
||||
"model.params.frequency_penaltyTip": "مقدار معاقبة الرموز الجديدة بناءً على ترددها الحالي في النص حتى الآن.\nيقلل من احتمال تكرار النموذج لنفس السطر حرفيًا.",
|
||||
"model.params.maxTokenSettingTip": "إعداد الرموز القصوى الخاص بك مرتفع، مما قد يحد من المساحة للمطالبات والاستعلامات والبيانات. فكر في ضبطه أقل من 2/3.",
|
||||
"model.params.max_tokens": "أقصى رمز",
|
||||
"model.params.max_tokensTip": "يستخدم للحد من الطول الأقصى للرد، بالرموز. \nقد تحد القيم الأكبر من المساحة المتبقية للكلمات السريعة وسجلات الدردشة والمعرفة. \nيوصى بضبطه أقل من الثلثين\ngpt-4-1106-preview، gpt-4-vision-preview أقصى رمز (إدخال 128k إخراج 4k)",
|
||||
"model.params.presence_penalty": "عقوبة الحضور",
|
||||
"model.params.presence_penaltyTip": "مقدار معاقبة الرموز الجديدة بناءً على ما إذا كانت تظهر في النص حتى الآن.\nيزيد من احتمال تحدث النموذج عن مواضيع جديدة.",
|
||||
"model.params.setToCurrentModelMaxTokenTip": "يتم تحديث الحد الأقصى للرموز إلى 80٪ من الحد الأقصى لرموز النموذج الحالي {{maxToken}}.",
|
||||
"model.params.stop_sequences": "تسلسلات التوقف",
|
||||
"model.params.stop_sequencesPlaceholder": "أدخل التسلسل واضغط على Tab",
|
||||
"model.params.stop_sequencesTip": "ما يصل إلى أربعة تسلسلات حيث ستتوقف API عن توليد المزيد من الرموز. لن يحتوي النص المرتجع على تسلسل التوقف.",
|
||||
"model.params.temperature": "درجة الحرارة",
|
||||
"model.params.temperatureTip": "تتحكم في العشوائية: يؤدي التخفيض إلى إكمالات أقل عشوائية. مع اقتراب درجة الحرارة من الصفر، سيصبح النموذج حتميًا ومتكررًا.",
|
||||
"model.params.top_p": "أعلى P",
|
||||
"model.params.top_pTip": "تتحكم في التنوع عبر عينات النواة: 0.5 تعني أنه يتم النظر في نصف جميع الخيارات المرجحة للاحتمالية.",
|
||||
"model.settingsLink": "إعدادات مزود النموذج",
|
||||
"model.tone.Balanced": "متوازن",
|
||||
"model.tone.Creative": "إبداعي",
|
||||
"model.tone.Custom": "مخصص",
|
||||
"model.tone.Precise": "دقيق",
|
||||
"modelName.claude-2": "Claude-2",
|
||||
"modelName.claude-instant-1": "Claude-Instant",
|
||||
"modelName.gpt-3.5-turbo": "GPT-3.5-Turbo",
|
||||
"modelName.gpt-3.5-turbo-16k": "GPT-3.5-Turbo-16K",
|
||||
"modelName.gpt-4": "GPT-4",
|
||||
"modelName.gpt-4-32k": "GPT-4-32K",
|
||||
"modelName.text-davinci-003": "Text-Davinci-003",
|
||||
"modelName.text-embedding-ada-002": "Text-Embedding-Ada-002",
|
||||
"modelName.whisper-1": "Whisper-1",
|
||||
"modelProvider.addApiKey": "أضف مفتاح API الخاص بك",
|
||||
"modelProvider.addConfig": "إضافة تكوين",
|
||||
"modelProvider.addModel": "إضافة نموذج",
|
||||
"modelProvider.addMoreModelProvider": "أضف المزيد من مزودي النماذج",
|
||||
"modelProvider.apiKey": "مفتاح API",
|
||||
"modelProvider.apiKeyRateLimit": "تم الوصول إلى حد المعدل، متاح بعد {{seconds}} ثانية",
|
||||
"modelProvider.apiKeyStatusNormal": "حالة مفتاح API طبيعية",
|
||||
"modelProvider.auth.addApiKey": "إضافة مفتاح API",
|
||||
@ -363,7 +279,6 @@
|
||||
"modelProvider.auth.addModelCredential": "إضافة بيانات اعتماد النموذج",
|
||||
"modelProvider.auth.addNewModel": "إضافة نموذج جديد",
|
||||
"modelProvider.auth.addNewModelCredential": "إضافة بيانات اعتماد نموذج جديدة",
|
||||
"modelProvider.auth.apiKeyModal.addModel": "إضافة نموذج",
|
||||
"modelProvider.auth.apiKeyModal.desc": "بعد تكوين بيانات الاعتماد، يمكن لجميع الأعضاء داخل مساحة العمل استخدام هذا النموذج عند تنظيم التطبيقات.",
|
||||
"modelProvider.auth.apiKeyModal.title": "تكوين تفويض مفتاح API",
|
||||
"modelProvider.auth.apiKeys": "مفاتيح API",
|
||||
@ -384,17 +299,12 @@
|
||||
"modelProvider.auth.selectModelCredential": "تحديد بيانات اعتماد النموذج",
|
||||
"modelProvider.auth.specifyModelCredential": "تحديد بيانات اعتماد النموذج",
|
||||
"modelProvider.auth.specifyModelCredentialTip": "استخدم بيانات اعتماد نموذج مكونة.",
|
||||
"modelProvider.auth.unAuthorized": "غير مصرح به",
|
||||
"modelProvider.buyQuota": "شراء حصة",
|
||||
"modelProvider.callTimes": "أوقات الاتصال",
|
||||
"modelProvider.card.aiCreditsInUse": "أرصدة الذكاء الاصطناعي قيد الاستخدام",
|
||||
"modelProvider.card.aiCreditsOption": "أرصدة الذكاء الاصطناعي",
|
||||
"modelProvider.card.apiKeyOption": "مفتاح API",
|
||||
"modelProvider.card.apiKeyRequired": "مفتاح API مطلوب",
|
||||
"modelProvider.card.apiKeyUnavailableFallback": "مفتاح API غير متاح، يتم الآن استخدام أرصدة الذكاء الاصطناعي",
|
||||
"modelProvider.card.apiKeyUnavailableFallbackDescription": "تحقق من تكوين مفتاح API الخاص بك للتبديل مرة أخرى",
|
||||
"modelProvider.card.buyQuota": "شراء حصة",
|
||||
"modelProvider.card.callTimes": "أوقات الاتصال",
|
||||
"modelProvider.card.creditsExhaustedDescription": "يرجى <upgradeLink>ترقية خطتك</upgradeLink> أو تكوين مفتاح API",
|
||||
"modelProvider.card.creditsExhaustedFallback": "نفدت أرصدة الذكاء الاصطناعي، يتم الآن استخدام مفتاح API",
|
||||
"modelProvider.card.creditsExhaustedFallbackDescription": "<upgradeLink>قم بترقية خطتك</upgradeLink> لاستئناف أولوية أرصدة الذكاء الاصطناعي.",
|
||||
@ -406,32 +316,17 @@
|
||||
"modelProvider.card.noApiKeysFallback": "لا توجد مفاتيح API، يتم استخدام أرصدة الذكاء الاصطناعي بدلاً من ذلك",
|
||||
"modelProvider.card.noApiKeysTitle": "لم يتم تكوين أي مفاتيح API بعد",
|
||||
"modelProvider.card.noAvailableUsage": "لا يوجد استخدام متاح",
|
||||
"modelProvider.card.onTrial": "في التجربة",
|
||||
"modelProvider.card.paid": "مدفوع",
|
||||
"modelProvider.card.priorityUse": "أولوية الاستخدام",
|
||||
"modelProvider.card.quota": "حصة",
|
||||
"modelProvider.card.quotaExhausted": "نفدت الحصة",
|
||||
"modelProvider.card.removeKey": "إزالة مفتاح API",
|
||||
"modelProvider.card.tip": "تدعم أرصدة الرسائل نماذج من {{modelNames}}. ستعطى الأولوية للحصة المدفوعة. سيتم استخدام الحصة المجانية بعد نفاد الحصة المدفوعة.",
|
||||
"modelProvider.card.tokens": "رموز",
|
||||
"modelProvider.card.unavailable": "غير متاح",
|
||||
"modelProvider.card.upgradePlan": "ترقية خطتك",
|
||||
"modelProvider.card.usageLabel": "الاستخدام",
|
||||
"modelProvider.card.usagePriority": "أولوية الاستخدام",
|
||||
"modelProvider.card.usagePriorityTip": "تعيين المورد الذي يجب استخدامه أولاً عند تشغيل النماذج.",
|
||||
"modelProvider.collapse": "طي",
|
||||
"modelProvider.config": "تكوين",
|
||||
"modelProvider.configLoadBalancing": "تكوين موازنة التحميل",
|
||||
"modelProvider.configureTip": "قم بإعداد مفتاح api أو أضف نموذجًا للاستخدام",
|
||||
"modelProvider.configuredProviders": "Configured providers",
|
||||
"modelProvider.confirmDelete": "تأكيد الحذف؟",
|
||||
"modelProvider.credits": "أرصدة الرسائل",
|
||||
"modelProvider.creditsBackedProviders": "Available with Message Credits",
|
||||
"modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.",
|
||||
"modelProvider.defaultConfig": "التكوين الافتراضي",
|
||||
"modelProvider.deprecated": "مهمل",
|
||||
"modelProvider.discoverMore": "اكتشف المزيد في ",
|
||||
"modelProvider.editConfig": "تعديل التكوين",
|
||||
"modelProvider.embeddingModel.key": "نموذج التضمين",
|
||||
"modelProvider.embeddingModel.required": "نموذج التضمين مطلوب",
|
||||
"modelProvider.embeddingModel.tip": "تعيين النموذج الافتراضي لمعالجة تضمين المستندات للمعرفة، حيث يستخدم كل من استرجاع واستيراد المعرفة نموذج التضمين هذا لمعالجة التوجيه. سيؤدي التبديل إلى أن يكون البعد المتجه بين المعرفة المستوردة والسؤال غير متسق، مما يؤدي إلى فشل الاسترجاع. لتجنب فشل الاسترجاع، يرجى عدم تبديل هذا النموذج حسب الرغبة.",
|
||||
@ -441,43 +336,28 @@
|
||||
"modelProvider.encrypted.back": ".",
|
||||
"modelProvider.encrypted.front": "سيتم تشفير مفتاح API الخاص بك وتخزينه باستخدام تقنية",
|
||||
"modelProvider.featureSupported": "{{feature}} مدعوم",
|
||||
"modelProvider.freeQuota.howToEarn": "كيف تكسب",
|
||||
"modelProvider.getFreeTokens": "احصل على رموز مجانية",
|
||||
"modelProvider.installDataSource": "تثبيت مصدر بيانات",
|
||||
"modelProvider.installDataSourceProvider": "تثبيت مزودي مصادر البيانات",
|
||||
"modelProvider.installProvider": "تثبيت مزودي النماذج",
|
||||
"modelProvider.invalidApiKey": "مفتاح API غير صالح",
|
||||
"modelProvider.item.deleteDesc": "يتم استخدام {{modelName}} كنماذج تفكير النظام. لن تكون بعض الوظائف متاحة بعد الإزالة. يرجى التأكيد.",
|
||||
"modelProvider.item.freeQuota": "حصة مجانية",
|
||||
"modelProvider.learnMore": "Learn more",
|
||||
"modelProvider.loadBalancing": "موازنة التحميل",
|
||||
"modelProvider.loadBalancingDescription": "تكوين بيانات اعتماد متعددة للنموذج واستدعاؤها تلقائيًا. ",
|
||||
"modelProvider.loadBalancingHeadline": "موازنة التحميل",
|
||||
"modelProvider.loadBalancingInfo": "بشكل افتراضي، تستخدم موازنة التحميل استراتيجية Round-robin. إذا تم تشغيل تحديد المعدل، فسيتم تطبيق فترة تباطؤ مدتها دقيقة واحدة.",
|
||||
"modelProvider.loadBalancingLeastKeyWarning": "لتمكين موازنة التحميل، يجب تمكين مفتاحين على الأقل.",
|
||||
"modelProvider.loadPresets": "تحميل الإعدادات المسبقة",
|
||||
"modelProvider.model": "النموذج",
|
||||
"modelProvider.modelAndParameters": "النموذج والمعلمات",
|
||||
"modelProvider.modelHasBeenDeprecated": "تم إهمال هذا النموذج",
|
||||
"modelProvider.modelSettings": "إعدادات النموذج",
|
||||
"modelProvider.models": "النماذج",
|
||||
"modelProvider.modelsNum": "{{num}} نماذج",
|
||||
"modelProvider.noModelFound": "لم يتم العثور على نموذج لـ {{model}}",
|
||||
"modelProvider.noneConfigured": "قم بتكوين نموذج نظام افتراضي لتشغيل التطبيقات",
|
||||
"modelProvider.notConfigured": "لم يتم تكوين نموذج النظام بالكامل بعد",
|
||||
"modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.",
|
||||
"modelProvider.parameters": "المعلمات",
|
||||
"modelProvider.parametersInvalidRemoved": "بعض المعلمات غير صالحة وتمت إزالتها",
|
||||
"modelProvider.priorityUsing": "أولوية الاستخدام",
|
||||
"modelProvider.providerManaged": "مدار من قبل المزود",
|
||||
"modelProvider.providerManagedDescription": "استخدم مجموعة واحدة من بيانات الاعتماد المقدمة من مزود النموذج.",
|
||||
"modelProvider.quota": "حصة",
|
||||
"modelProvider.quotaLabel": "QUOTA",
|
||||
"modelProvider.quotaTip": "الرموز المجانية المتاحة المتبقية",
|
||||
"modelProvider.rerankModel.key": "نموذج إعادة الترتيب",
|
||||
"modelProvider.rerankModel.tip": "سيعيد نموذج إعادة الترتيب ترتيب قائمة المستندات المرشحة بناءً على المطابقة الدلالية مع استعلام المستخدم، مما يحسن نتائج الترتيب الدلالي",
|
||||
"modelProvider.resetDate": "إعادة التعيين في {{date}}",
|
||||
"modelProvider.searchModel": "نموذج البحث",
|
||||
"modelProvider.searchModels": "البحث في النماذج...",
|
||||
"modelProvider.selectModel": "اختر نموذجك",
|
||||
"modelProvider.selector.aiCredits": "أرصدة الذكاء الاصطناعي",
|
||||
@ -489,8 +369,6 @@
|
||||
"modelProvider.selector.creditsExhaustedTip": "نفدت أرصدة الذكاء الاصطناعي الخاصة بك. يرجى ترقية خطتك أو إضافة مفتاح API.",
|
||||
"modelProvider.selector.disabled": "معطل",
|
||||
"modelProvider.selector.discoverMoreInMarketplace": "اكتشف المزيد في السوق",
|
||||
"modelProvider.selector.emptySetting": "يرجى الانتقال إلى الإعدادات للتكوين",
|
||||
"modelProvider.selector.emptyTip": "لا توجد نماذج متاحة",
|
||||
"modelProvider.selector.fromMarketplace": "من السوق",
|
||||
"modelProvider.selector.incompatible": "غير متوافق",
|
||||
"modelProvider.selector.incompatibleTip": "هذا النموذج غير متاح في الإصدار الحالي. يرجى تحديد نموذج متاح آخر.",
|
||||
@ -500,11 +378,7 @@
|
||||
"modelProvider.selector.noProviderConfigured": "لم يتم تكوين أي مزود نموذج",
|
||||
"modelProvider.selector.noProviderConfiguredDesc": "تصفح السوق لتثبيت مزود، أو قم بتكوين المزودين في الإعدادات.",
|
||||
"modelProvider.selector.onlyCompatibleModelsShown": "يتم عرض النماذج المتوافقة فقط",
|
||||
"modelProvider.selector.rerankTip": "يرجى إعداد نموذج إعادة الترتيب",
|
||||
"modelProvider.selector.tip": "تمت إزالة هذا النموذج. يرجى إضافة نموذج أو تحديد نموذج آخر.",
|
||||
"modelProvider.setupModelFirst": "يرجى إعداد نموذجك أولاً",
|
||||
"modelProvider.showModels": "عرض النماذج",
|
||||
"modelProvider.showMoreModelProvider": "عرض المزيد من مزودي النماذج",
|
||||
"modelProvider.speechToTextModel.key": "نموذج تحويل الكلام إلى نص",
|
||||
"modelProvider.speechToTextModel.tip": "تعيين النموذج الافتراضي لإدخال تحويل الكلام إلى نص في المحادثة.",
|
||||
"modelProvider.systemModelSettings": "إعدادات نموذج النظام",
|
||||
@ -535,7 +409,6 @@
|
||||
"operation.create": "إنشاء",
|
||||
"operation.deSelectAll": "إلغاء تحديد الكل",
|
||||
"operation.delete": "حذف",
|
||||
"operation.deleteApp": "حذف التطبيق",
|
||||
"operation.deleteConfirmTitle": "حذف؟",
|
||||
"operation.download": "تنزيل",
|
||||
"operation.downloadFailed": "فشل التنزيل. يرجى المحاولة مرة أخرى لاحقًا.",
|
||||
@ -545,18 +418,15 @@
|
||||
"operation.exporting": "جارٍ التصدير",
|
||||
"operation.fill": "ملء تلقائي",
|
||||
"operation.format": "تنسيق",
|
||||
"operation.getForFree": "احصل عليه مجانا",
|
||||
"operation.imageCopied": "تم نسخ الصورة",
|
||||
"operation.imageDownloaded": "تم تنزيل الصورة",
|
||||
"operation.in": "في",
|
||||
"operation.learnMore": "تعرف على المزيد",
|
||||
"operation.lineBreak": "فاصل أسطر",
|
||||
"operation.log": "سجل",
|
||||
"operation.more": "المزيد",
|
||||
"operation.no": "لا",
|
||||
"operation.noSearchCount": "0 {{content}}",
|
||||
"operation.noSearchResults": "لم يتم العثور على {{content}}",
|
||||
"operation.now": "الآن",
|
||||
"operation.ok": "موافق",
|
||||
"operation.openInNewTab": "فتح في علامة تبويب جديدة",
|
||||
"operation.params": "معلمات",
|
||||
@ -564,7 +434,6 @@
|
||||
"operation.play": "تشغيل",
|
||||
"operation.refresh": "إعادة تشغيل",
|
||||
"operation.regenerate": "إعادة إنشاء",
|
||||
"operation.reload": "إعادة تحميل",
|
||||
"operation.remove": "إزالة",
|
||||
"operation.rename": "إعادة تسمية",
|
||||
"operation.reset": "إعادة تعيين",
|
||||
@ -580,7 +449,6 @@
|
||||
"operation.selectCount": "تم تحديد {{count}}",
|
||||
"operation.send": "إرسال",
|
||||
"operation.settings": "الإعدادات",
|
||||
"operation.setup": "إعداد",
|
||||
"operation.skip": "تخطي",
|
||||
"operation.submit": "إرسال",
|
||||
"operation.sure": "أنا متأكد",
|
||||
@ -601,93 +469,37 @@
|
||||
"placeholder.input": "يرجى الإدخال",
|
||||
"placeholder.search": "بحث...",
|
||||
"placeholder.select": "يرجى التحديد",
|
||||
"promptEditor.context.item.desc": "إدراج قالب السياق",
|
||||
"promptEditor.context.item.title": "السياق",
|
||||
"promptEditor.context.modal.add": "إضافة سياق ",
|
||||
"promptEditor.context.modal.footer": "يمكنك إدارة السياقات في قسم السياق أدناه.",
|
||||
"promptEditor.context.modal.title": "{{num}} معرفة في السياق",
|
||||
"promptEditor.existed": "موجود بالفعل في المطالبة",
|
||||
"promptEditor.history.item.desc": "إدراج قالب الرسالة التاريخية",
|
||||
"promptEditor.history.item.title": "سجل المحادثة",
|
||||
"promptEditor.history.modal.assistant": "مرحبًا! كيف يمكنني مساعدتك اليوم؟",
|
||||
"promptEditor.history.modal.edit": "تعديل أسماء أدوار المحادثة",
|
||||
"promptEditor.history.modal.title": "مثال",
|
||||
"promptEditor.history.modal.user": "مرحبًا",
|
||||
"promptEditor.placeholder": "اكتب كلمة المطالبة هنا، أدخل '{' لإدراج متغير، أدخل '/' لإدراج كتلة محتوى مطالبة",
|
||||
"promptEditor.query.item.desc": "إدراج قالب استعلام المستخدم",
|
||||
"promptEditor.query.item.title": "استعلام",
|
||||
"promptEditor.requestURL.item.desc": "إدراج عنوان URL للطلب",
|
||||
"promptEditor.requestURL.item.title": "عنوان URL للطلب",
|
||||
"promptEditor.variable.item.desc": "إدراج المتغيرات والأدوات الخارجية",
|
||||
"promptEditor.variable.item.title": "المتغيرات والأدوات الخارجية",
|
||||
"promptEditor.variable.modal.add": "متغير جديد",
|
||||
"promptEditor.variable.modal.addTool": "أداة جديدة",
|
||||
"promptEditor.variable.outputToolDisabledItem.desc": "إدراج المتغيرات",
|
||||
"promptEditor.variable.outputToolDisabledItem.title": "المتغيرات",
|
||||
"provider.addKey": "إضافة مفتاح",
|
||||
"provider.anthropic.enableTip": "لتمكين نموذج Anthropic، تحتاج إلى الارتباط بـ OpenAI أو خدمة Azure OpenAI أولاً.",
|
||||
"provider.anthropic.keyFrom": "احصل على مفتاح API الخاص بك من Anthropic",
|
||||
"provider.anthropic.notEnabled": "غير ممكن",
|
||||
"provider.anthropic.using": "قدرة التضمين تستخدم",
|
||||
"provider.anthropicHosted.anthropicHosted": "Anthropic Claude",
|
||||
"provider.anthropicHosted.callTimes": "أوقات الاتصال",
|
||||
"provider.anthropicHosted.close": "إغلاق",
|
||||
"provider.anthropicHosted.desc": "نموذج قوي يتفوق في مجموعة واسعة من المهام من الحوار المعقد وإنشاء المحتوى الإبداعي إلى التعليمات التفصيلية.",
|
||||
"provider.anthropicHosted.exhausted": "نفدت الحصة",
|
||||
"provider.anthropicHosted.onTrial": "في التجربة",
|
||||
"provider.anthropicHosted.trialQuotaTip": "ستنتهي حصة التجربة الخاصة بك في Anthropic في 2025/03/17 ولن تكون متاحة بعد ذلك. يرجى الاستفادة منها في الوقت المحدد.",
|
||||
"provider.anthropicHosted.useYourModel": "تستخدم حاليًا مزود النموذج الخاص بك.",
|
||||
"provider.anthropicHosted.usedUp": "نفدت حصة التجربة. أضف مزود النموذج الخاص بك.",
|
||||
"provider.apiKey": "مفتاح API",
|
||||
"provider.apiKeyExceedBill": "لا يحتوي مفتاح API هذا على حصة متاحة، يرجى القراءة",
|
||||
"provider.azure.apiBase": "قاعدة API",
|
||||
"provider.azure.apiBasePlaceholder": "عنوان URL لقاعدة API لنقطة نهاية Azure OpenAI الخاصة بك.",
|
||||
"provider.azure.apiKey": "مفتاح API",
|
||||
"provider.azure.apiKeyPlaceholder": "أدخل مفتاح API الخاص بك هنا",
|
||||
"provider.azure.helpTip": "تعلم خدمة Azure OpenAI",
|
||||
"provider.comingSoon": "قريباً",
|
||||
"provider.editKey": "تعديل",
|
||||
"provider.encrypted.back": ".",
|
||||
"provider.encrypted.front": "سيتم تشفير مفتاح API الخاص بك وتخزينه باستخدام تقنية",
|
||||
"provider.enterYourKey": "أدخل مفتاح API الخاص بك هنا",
|
||||
"provider.invalidApiKey": "مفتاح API غير صالح",
|
||||
"provider.invalidKey": "مفتاح OpenAI API غير صالح",
|
||||
"provider.openaiHosted.callTimes": "أوقات الاتصال",
|
||||
"provider.openaiHosted.close": "إغلاق",
|
||||
"provider.openaiHosted.desc": "تسمح لك خدمة استضافة OpenAI المقدمة من Dify باستخدام نماذج مثل GPT-3.5. قبل نفاد حصة التجربة الخاصة بك، تحتاج إلى إعداد موفري نماذج آخرين.",
|
||||
"provider.openaiHosted.exhausted": "نفدت الحصة",
|
||||
"provider.openaiHosted.onTrial": "في التجربة",
|
||||
"provider.openaiHosted.openaiHosted": "OpenAI المستضافة",
|
||||
"provider.openaiHosted.useYourModel": "تستخدم حاليًا مزود النموذج الخاص بك.",
|
||||
"provider.openaiHosted.usedUp": "نفدت حصة التجربة. أضف مزود النموذج الخاص بك.",
|
||||
"provider.saveFailed": "فشل حفظ مفتاح api",
|
||||
"provider.validatedError": "فشل التحقق: ",
|
||||
"provider.validating": "جارٍ التحقق من المفتاح...",
|
||||
"settings.account": "حسابي",
|
||||
"settings.accountGroup": "عام",
|
||||
"settings.agentStrategy": "Agent strategy",
|
||||
"settings.billing": "الفوترة",
|
||||
"settings.collapse": "Collapse",
|
||||
"settings.customEndpoint": "نقطة نهاية مخصصة",
|
||||
"settings.customTool": "Custom Tool",
|
||||
"settings.dataSource": "مصدر البيانات",
|
||||
"settings.discoverMoreIntegrationsInMarketplace": "اكتشف المزيد من التكاملات في السوق",
|
||||
"settings.expand": "Expand",
|
||||
"settings.extension": "Extension",
|
||||
"settings.filter": "Filter",
|
||||
"settings.generalGroup": "عام",
|
||||
"settings.integrations": "التكاملات",
|
||||
"settings.language": "اللغة",
|
||||
"settings.members": "الأعضاء",
|
||||
"settings.plugin": "الإضافات",
|
||||
"settings.preferences": "Preferences",
|
||||
"settings.provider": "مزود النموذج",
|
||||
"settings.settings": "Settings",
|
||||
"settings.swaggerAPIAsTool": "Swagger API as Tool",
|
||||
"settings.trigger": "Trigger",
|
||||
"settings.workplaceGroup": "مساحة العمل",
|
||||
"settings.workspace": "WORKSPACE",
|
||||
"settings.workspaceSettings": "إعدادات مساحة العمل",
|
||||
"swaggerAPIAsToolPage.description": "استورد أي API كأداة باستخدام مواصفات OpenAPI/Swagger. اضبطها مرة واحدة وأعد استخدامها عبر workflows.",
|
||||
"tag.addNew": "إضافة علامة جديدة",
|
||||
"tag.addTag": "إضافة علامات",
|
||||
@ -695,11 +507,9 @@
|
||||
"tag.created": "تم إنشاء العلامة بنجاح",
|
||||
"tag.delete": "حذف العلامة",
|
||||
"tag.deleteTip": "العلامة قيد الاستخدام، هل تريد حذفها؟",
|
||||
"tag.editTag": "تعديل العلامات",
|
||||
"tag.failed": "فشل إنشاء العلامة",
|
||||
"tag.manageTags": "إدارة العلامات",
|
||||
"tag.noTag": "لا توجد علامات",
|
||||
"tag.noTagYet": "لا توجد علامات بعد",
|
||||
"tag.placeholder": "العلامات",
|
||||
"tag.selectorPlaceholder": "اكتب للبحث أو الإنشاء",
|
||||
"tag.tags": "العلامات",
|
||||
@ -715,7 +525,6 @@
|
||||
"userProfile.community": "المجتمع",
|
||||
"userProfile.compliance": "الامتثال",
|
||||
"userProfile.contactUs": "اتصل بنا",
|
||||
"userProfile.createWorkspace": "إنشاء مساحة عمل",
|
||||
"userProfile.emailSupport": "دعم البريد الإلكتروني",
|
||||
"userProfile.forum": "المنتدى",
|
||||
"userProfile.github": "GitHub",
|
||||
@ -723,7 +532,6 @@
|
||||
"userProfile.logout": "تسجيل الخروج",
|
||||
"userProfile.roadmap": "خارطة الطريق",
|
||||
"userProfile.settings": "الإعدادات",
|
||||
"userProfile.support": "دعم",
|
||||
"userProfile.workspace": "مساحة العمل",
|
||||
"voice.language.arTN": "العربية التونسية",
|
||||
"voice.language.deDE": "الألمانية",
|
||||
|
||||
@ -1,6 +1,4 @@
|
||||
{
|
||||
"app.changeLogoTip": "تنسيق SVG أو PNG بحجم أدنى 80x80px",
|
||||
"app.title": "تخصيص العلامة التجارية لرأس التطبيق",
|
||||
"apply": "تطبيق",
|
||||
"change": "تغيير",
|
||||
"custom": "تخصيص",
|
||||
@ -9,14 +7,11 @@
|
||||
"customize.suffix": "للترقية إلى إصدار Enterprise.",
|
||||
"restore": "استعادة الافتراضيات",
|
||||
"upgradeTip.des": "قم بترقية خطتك لتخصيص علامتك التجارية",
|
||||
"upgradeTip.prefix": "قم بترقية خطتك لـ",
|
||||
"upgradeTip.suffix": "تخصيص علامتك التجارية.",
|
||||
"upgradeTip.title": "تحديث خطتك",
|
||||
"upload": "تحميل",
|
||||
"uploadedFail": "فشل تحميل الصورة، يرجى إعادة التحميل.",
|
||||
"uploading": "جاري التحميل",
|
||||
"webapp.changeLogo": "تغيير صورة Powered by Brand",
|
||||
"webapp.changeLogoTip": "تنسيق SVG أو PNG بحجم أدنى 40x40px",
|
||||
"webapp.removeBrand": "إزالة Powered by Dify",
|
||||
"webapp.title": "تخصيص العلامة التجارية لتطبيق الويب"
|
||||
"webapp.removeBrand": "إزالة Powered by Dify"
|
||||
}
|
||||
|
||||
@ -1,16 +1,6 @@
|
||||
{
|
||||
"error.unavailable": "هذه المعرفة غير متاحة",
|
||||
"firecrawl.apiKeyPlaceholder": "مفتاح API من firecrawl.dev",
|
||||
"firecrawl.configFirecrawl": "تكوين 🔥Firecrawl",
|
||||
"firecrawl.getApiKeyLinkText": "احصل على مفتاح API الخاص بك من firecrawl.dev",
|
||||
"jinaReader.apiKeyPlaceholder": "مفتاح API من jina.ai",
|
||||
"jinaReader.configJinaReader": "تكوين Jina Reader",
|
||||
"jinaReader.getApiKeyLinkText": "احصل على مفتاح API المجاني الخاص بك في jina.ai",
|
||||
"otherDataSource.description": "حاليًا، تحتوي قاعدة معرفة Dify فقط على مصادر بيانات محدودة. تعد المساهمة بمصدر بيانات في قاعدة معرفة Dify طريقة رائعة للمساعدة في تعزيز مرونة النظام الأساسي وقوته لجميع المستخدمين. دليل المساهمة الخاص بنا يسهل البدء. يرجى النقر على الرابط أدناه لمعرفة المزيد.",
|
||||
"otherDataSource.learnMore": "تعرف على المزيد",
|
||||
"otherDataSource.title": "الاتصال بمصادر بيانات أخرى؟",
|
||||
"stepOne.button": "التالي",
|
||||
"stepOne.cancel": "إلغاء",
|
||||
"stepOne.connect": "الذهاب للاتصال",
|
||||
"stepOne.dataSourceType.file": "استيراد من ملف",
|
||||
"stepOne.dataSourceType.notion": "مزامنة من Notion",
|
||||
@ -32,7 +22,6 @@
|
||||
"stepOne.uploader.browse": "تصفح",
|
||||
"stepOne.uploader.button": "اسحب وأفلت الملف أو المجلد، أو",
|
||||
"stepOne.uploader.buttonSingleFile": "اسحب وأفلت الملف، أو",
|
||||
"stepOne.uploader.cancel": "إلغاء",
|
||||
"stepOne.uploader.change": "تغيير",
|
||||
"stepOne.uploader.failed": "فشل التحميل",
|
||||
"stepOne.uploader.tip": "يدعم {{supportTypes}}. بحد أقصى {{batchCount}} في الدفعة الواحدة و {{size}} ميجابايت لكل منها.",
|
||||
@ -57,7 +46,6 @@
|
||||
"stepOne.website.firecrawlTitle": "استخراج محتوى الويب باستخدام 🔥Firecrawl",
|
||||
"stepOne.website.includeOnlyPaths": "تضمين المسارات فقط",
|
||||
"stepOne.website.jinaReaderDoc": "تعرف على المزيد حول Jina Reader",
|
||||
"stepOne.website.jinaReaderDocLink": "https://jina.ai/reader",
|
||||
"stepOne.website.jinaReaderNotConfigured": "Jina Reader غير مكون",
|
||||
"stepOne.website.jinaReaderNotConfiguredDescription": "قم بإعداد Jina Reader عن طريق إدخال مفتاح API المجاني للوصول.",
|
||||
"stepOne.website.jinaReaderTitle": "تحويل الموقع بالكامل إلى Markdown",
|
||||
@ -85,34 +73,15 @@
|
||||
"stepThree.creationContent": "قمنا بتسمية المعرفة تلقائيًا، يمكنك تعديلها في أي وقت.",
|
||||
"stepThree.creationTitle": "🎉 تم إنشاء المعرفة",
|
||||
"stepThree.label": "اسم المعرفة",
|
||||
"stepThree.modelButtonCancel": "إلغاء",
|
||||
"stepThree.modelButtonConfirm": "تأكيد",
|
||||
"stepThree.modelContent": "إذا كنت بحاجة إلى استئناف المعالجة لاحقًا، فستستمر من حيث توقفت.",
|
||||
"stepThree.modelTitle": "هل أنت متأكد من إيقاف التضمين؟",
|
||||
"stepThree.navTo": "الذهاب إلى المستند",
|
||||
"stepThree.resume": "استئناف المعالجة",
|
||||
"stepThree.sideTipContent": "بعد الانتهاء من فهرسة المستندات، يمكنك إدارة المستندات وتعديلها، وتشغيل اختبارات الاسترجاع، وتعديل إعدادات المعرفة. يمكن بعد ذلك دمج المعرفة في تطبيقك كسياق، لذا تأكد من ضبط إعداد الاسترجاع لضمان الأداء الأمثل.",
|
||||
"stepThree.sideTipTitle": "ما التالي",
|
||||
"stepThree.stop": "إيقاف المعالجة",
|
||||
"stepTwo.QALanguage": "التقسيم باستخدام",
|
||||
"stepTwo.QATip": "سيؤدي تمكين هذا الخيار إلى استهلاك المزيد من الرموز",
|
||||
"stepTwo.QATitle": "التقسيم بتنسيق سؤال وجواب",
|
||||
"stepTwo.auto": "تلقائي",
|
||||
"stepTwo.autoDescription": "تحديد القواعد والتقطيع والمعالجة المسبقة تلقائيًا. يوصى به للمستخدمين غير المألوفين.",
|
||||
"stepTwo.calculating": "جارٍ الحساب...",
|
||||
"stepTwo.cancel": "إلغاء",
|
||||
"stepTwo.characters": "أحرف",
|
||||
"stepTwo.childChunkForRetrieval": "القطعة الفرعية للاسترجاع",
|
||||
"stepTwo.click": "الذهاب إلى الإعدادات",
|
||||
"stepTwo.custom": "مخصص",
|
||||
"stepTwo.customDescription": "تخصيص قواعد القطع وطول القطع وقواعد المعالجة المسبقة، إلخ.",
|
||||
"stepTwo.datasetSettingLink": "إعدادات المعرفة.",
|
||||
"stepTwo.economical": "اقتصادي",
|
||||
"stepTwo.economicalTip": "استخدام 10 كلمات رئيسية لكل قطعة للاسترجاع، لا يتم استهلاك أي رموز على حساب تقليل دقة الاسترجاع.",
|
||||
"stepTwo.estimateCost": "تقدير",
|
||||
"stepTwo.estimateSegment": "القطع المقدرة",
|
||||
"stepTwo.fileSource": "معالجة المستندات مسبقًا",
|
||||
"stepTwo.fileUnit": " ملفات",
|
||||
"stepTwo.fullDoc": "مستند كامل",
|
||||
"stepTwo.fullDocTip": "يتم استخدام المستند بأكمله كقطعة أصلية ويتم استرجاعه مباشرة. يرجى ملاحظة أنه لأسباب تتعلق بالأداء، سيتم اقتطاع النص الذي يتجاوز 10000 رمز تلقائيًا.",
|
||||
"stepTwo.general": "عام",
|
||||
@ -125,9 +94,6 @@
|
||||
"stepTwo.nextStep": "حفظ ومعالجة",
|
||||
"stepTwo.notAvailableForParentChild": "غير متاح لفهرس الأصل والطفل",
|
||||
"stepTwo.notAvailableForQA": "غير متاح لفهرس الأسئلة والأجوبة",
|
||||
"stepTwo.notionSource": "معالجة الصفحات مسبقًا",
|
||||
"stepTwo.notionUnit": " صفحات",
|
||||
"stepTwo.other": "وغيرها ",
|
||||
"stepTwo.overlap": "تداخل القطعة",
|
||||
"stepTwo.overlapCheck": "يجب ألا يكون تداخل القطعة أكبر من أقصى طول للقطعة",
|
||||
"stepTwo.overlapTip": "يمكن أن يؤدي تعيين تداخل القطعة إلى الحفاظ على الصلة الدلالية بينها، مما يعزز تأثير الاسترجاع. يوصى بتعيين 10٪ -25٪ من الحد الأقصى لحجم القطعة.",
|
||||
@ -139,14 +105,9 @@
|
||||
"stepTwo.parentChildTip": "عند استخدام وضع الأصل والطفل، يتم استخدام القطعة الفرعية للاسترجاع ويتم استخدام القطعة الأصلية للاستدعاء كسياق.",
|
||||
"stepTwo.parentChunkForContext": "القطعة الأصلية للسياق",
|
||||
"stepTwo.preview": "معاينة",
|
||||
"stepTwo.previewButton": "التبديل إلى تنسيق سؤال وجواب",
|
||||
"stepTwo.previewChunk": "معاينة القطعة",
|
||||
"stepTwo.previewChunkCount": "{{count}} قطعة مقدرة",
|
||||
"stepTwo.previewChunkTip": "انقر فوق زر \"معاينة القطعة\" على اليسار لتحميل المعاينة",
|
||||
"stepTwo.previewSwitchTipEnd": " استهلاك رموز إضافية",
|
||||
"stepTwo.previewSwitchTipStart": "معاينة القطعة الحالية بتنسيق نصي، وسيؤدي التبديل إلى معاينة تنسيق سؤال وجواب إلى",
|
||||
"stepTwo.previewTitle": "معاينة",
|
||||
"stepTwo.previewTitleButton": "معاينة",
|
||||
"stepTwo.previousStep": "الخطوة السابقة",
|
||||
"stepTwo.qaSwitchHighQualityTipContent": "حاليا، تدعم طريقة الفهرسة عالية الجودة فقط تقطيع تنسيق سؤال وجواب. هل ترغب في التبديل إلى وضع الجودة العالية؟",
|
||||
"stepTwo.qaSwitchHighQualityTipTitle": "يتطلب تنسيق سؤال وجواب طريقة فهرسة عالية الجودة",
|
||||
@ -158,29 +119,16 @@
|
||||
"stepTwo.removeStopwords": "إزالة كلمات التوقف مثل \"a\", \"an\", \"the\"",
|
||||
"stepTwo.removeUrlEmails": "حذف جميع عناوين URL وعناوين البريد الإلكتروني",
|
||||
"stepTwo.reset": "إعادة تعيين",
|
||||
"stepTwo.retrievalSettingTip": "لتغيير إعداد الاسترجاع، يرجى الانتقال إلى ",
|
||||
"stepTwo.rules": "قواعد المعالجة المسبقة للنص",
|
||||
"stepTwo.save": "حفظ ومعالجة",
|
||||
"stepTwo.segmentCount": "قطع",
|
||||
"stepTwo.segmentation": "إعدادات القطعة",
|
||||
"stepTwo.separator": "محدد",
|
||||
"stepTwo.separatorPlaceholder": "\\n\\n للفقرات؛ \\n للأسطر",
|
||||
"stepTwo.separatorTip": "المحدد هو الحرف المستخدم لفصل النص. \\n\\n و \\n هي محددات شائعة الاستخدام لفصل الفقرات والأسطر. جنبًا إلى جنب مع الفواصل (\\n\\n,\\n)، سيتم تقسيم الفقرات حسب الأسطر عند تجاوز الحد الأقصى لطول القطعة. يمكنك أيضًا استخدام محددات خاصة محددة بنفسك (مثل ***).",
|
||||
"stepTwo.sideTipP1": "عند معالجة البيانات النصية، يعد التقطيع والتنظيف خطوتين مهمتين للمعالجة المسبقة.",
|
||||
"stepTwo.sideTipP2": "يقسم التقسيم النص الطويل إلى فقرات حتى تتمكن النماذج من فهمه بشكل أفضل. هذا يحسن جودة وصلة نتائج النموذج.",
|
||||
"stepTwo.sideTipP3": "يزيل التنظيف الأحرف والتنسيقات غير الضرورية، مما يجعل المعرفة أنظف وأسهل في التحليل.",
|
||||
"stepTwo.sideTipP4": "يؤدي التقطيع والتنظيف السليمتان إلى تحسين أداء النموذج، مما يوفر نتائج أكثر دقة وقيمة.",
|
||||
"stepTwo.sideTipTitle": "لماذا التقطيع والمعالجة المسبقة؟",
|
||||
"stepTwo.switch": "تبديل",
|
||||
"stepTwo.useQALanguage": "تقطيع بتنسيق سؤال وجواب في",
|
||||
"stepTwo.warning": "يرجى إعداد مفتاح API لمزود النموذج أولاً.",
|
||||
"stepTwo.webpageUnit": " صفحات",
|
||||
"stepTwo.websiteSource": "معالجة الموقع مسبقًا",
|
||||
"steps.header.fallbackRoute": "المعرفة",
|
||||
"steps.one": "مصدر البيانات",
|
||||
"steps.three": "التنفيذ والانتهاء",
|
||||
"steps.two": "معالجة المستندات",
|
||||
"watercrawl.apiKeyPlaceholder": "مفتاح API من watercrawl.dev",
|
||||
"watercrawl.configWatercrawl": "تكوين Watercrawl",
|
||||
"watercrawl.getApiKeyLinkText": "احصل على مفتاح API الخاص بك من watercrawl.dev"
|
||||
"steps.two": "معالجة المستندات"
|
||||
}
|
||||
|
||||
@ -1,27 +1,19 @@
|
||||
{
|
||||
"embedding.automatic": "تلقائي",
|
||||
"embedding.childMaxTokens": "الطفل",
|
||||
"embedding.completed": "اكتمل التضمين",
|
||||
"embedding.custom": "مخصص",
|
||||
"embedding.docName": "مستند المعالجة المسبقة",
|
||||
"embedding.economy": "الوضع الاقتصادي",
|
||||
"embedding.error": "خطأ في التضمين",
|
||||
"embedding.estimate": "الاستهلاك المقدر",
|
||||
"embedding.hierarchical": "الأصل والطفل",
|
||||
"embedding.highQuality": "وضع عالي الجودة",
|
||||
"embedding.mode": "إعداد التقطيع",
|
||||
"embedding.parentMaxTokens": "الأصل",
|
||||
"embedding.pause": "إيقاف مؤقت",
|
||||
"embedding.paused": "تم إيقاف التضمين مؤقتًا",
|
||||
"embedding.previewTip": "ستتوفر معاينة الفقرة بعد اكتمال التضمين",
|
||||
"embedding.processing": "معالجة التضمين...",
|
||||
"embedding.resume": "استئناف",
|
||||
"embedding.segmentLength": "أقصى طول للقطعة",
|
||||
"embedding.segments": "الفقرات",
|
||||
"embedding.stop": "إيقاف المعالجة",
|
||||
"embedding.textCleaning": "قواعد المعالجة المسبقة للنص",
|
||||
"embedding.waiting": "انتظار التضمين...",
|
||||
"list.action.add": "إضافة قطعة",
|
||||
"list.action.addButton": "إضافة قطعة",
|
||||
"list.action.archive": "أرشيف",
|
||||
"list.action.batchAdd": "إضافة دفعة",
|
||||
@ -34,7 +26,6 @@
|
||||
"list.action.summary": "إنشاء ملخص",
|
||||
"list.action.sync": "مزامنة",
|
||||
"list.action.unarchive": "إلغاء الأرشفة",
|
||||
"list.action.uploadFile": "تحميل ملف جديد",
|
||||
"list.addFile": "إضافة ملف",
|
||||
"list.addPages": "إضافة صفحات",
|
||||
"list.addUrl": "إضافة عنوان URL",
|
||||
@ -52,7 +43,6 @@
|
||||
"list.batchModal.run": "تشغيل الدفعة",
|
||||
"list.batchModal.runError": "فشل تشغيل الدفعة",
|
||||
"list.batchModal.template": "قم بتنزيل القالب هنا",
|
||||
"list.batchModal.tip": "يجب أن يتوافق ملف CSV مع الهيكل التالي:",
|
||||
"list.batchModal.title": "إضافة قطع دفعة واحدة",
|
||||
"list.delete.content": "إذا كنت بحاجة إلى استئناف المعالجة لاحقًا، فستستمر من حيث توقفت",
|
||||
"list.delete.title": "هل أنت متأكد من الحذف؟",
|
||||
@ -61,10 +51,6 @@
|
||||
"list.empty.title": "لا يوجد وثائق بعد",
|
||||
"list.empty.upload.tip": "يمكنك تحميل الملفات، والمزامنة من الموقع، أو من تطبيقات الويب مثل Notion و GitHub، إلخ.",
|
||||
"list.index.all": "الكل",
|
||||
"list.index.disable": "تعطيل",
|
||||
"list.index.disableTip": "لا يمكن فهرسة الملف",
|
||||
"list.index.enable": "تمكين",
|
||||
"list.index.enableTip": "يمكن فهرسة الملف",
|
||||
"list.learnMore": "تعرف على المزيد",
|
||||
"list.sort.hitCount": "عدد الاسترجاع",
|
||||
"list.sort.uploadTime": "وقت التحميل",
|
||||
@ -78,7 +64,6 @@
|
||||
"list.status.queuing": "في الانتظار",
|
||||
"list.summary.generating": "جارٍ الإنشاء...",
|
||||
"list.summary.generatingSummary": "جارٍ إنشاء الملخص",
|
||||
"list.summary.ready": "الملخص جاهز",
|
||||
"list.table.header.action": "إجراء",
|
||||
"list.table.header.chunkingMode": "وضع التقطيع",
|
||||
"list.table.header.fileName": "الاسم",
|
||||
@ -89,61 +74,7 @@
|
||||
"list.table.name": "الاسم",
|
||||
"list.table.rename": "إعادة تسمية",
|
||||
"list.title": "المستندات",
|
||||
"metadata.categoryMap.book.art": "فن",
|
||||
"metadata.categoryMap.book.biography": "سيرة شخصية",
|
||||
"metadata.categoryMap.book.businessEconomics": "أعمال واقتصاد",
|
||||
"metadata.categoryMap.book.childrenYoungAdults": "أطفال وشباب",
|
||||
"metadata.categoryMap.book.comicsGraphicNovels": "قصص مصورة وروايات مصورة",
|
||||
"metadata.categoryMap.book.cooking": "طبخ",
|
||||
"metadata.categoryMap.book.drama": "دراما",
|
||||
"metadata.categoryMap.book.education": "تعليم",
|
||||
"metadata.categoryMap.book.fiction": "خيال",
|
||||
"metadata.categoryMap.book.health": "صحة",
|
||||
"metadata.categoryMap.book.history": "تاريخ",
|
||||
"metadata.categoryMap.book.other": "أخرى",
|
||||
"metadata.categoryMap.book.philosophy": "فلسفة",
|
||||
"metadata.categoryMap.book.poetry": "شعر",
|
||||
"metadata.categoryMap.book.religion": "دين",
|
||||
"metadata.categoryMap.book.science": "علوم",
|
||||
"metadata.categoryMap.book.selfHelp": "تطوير الذات",
|
||||
"metadata.categoryMap.book.socialSciences": "علوم اجتماعية",
|
||||
"metadata.categoryMap.book.technology": "تكنولوجيا",
|
||||
"metadata.categoryMap.book.travel": "سفر",
|
||||
"metadata.categoryMap.businessDoc.contractsAgreements": "العقود والاتفاقيات",
|
||||
"metadata.categoryMap.businessDoc.designDocument": "وثيقة التصميم",
|
||||
"metadata.categoryMap.businessDoc.emailCorrespondence": "مراسلات البريد الإلكتروني",
|
||||
"metadata.categoryMap.businessDoc.employeeHandbook": "دليل الموظف",
|
||||
"metadata.categoryMap.businessDoc.financialReport": "تقرير مالي",
|
||||
"metadata.categoryMap.businessDoc.marketAnalysis": "تحليل السوق",
|
||||
"metadata.categoryMap.businessDoc.meetingMinutes": "محضر اجتماع",
|
||||
"metadata.categoryMap.businessDoc.other": "أخرى",
|
||||
"metadata.categoryMap.businessDoc.policiesProcedures": "السياسات والإجراءات",
|
||||
"metadata.categoryMap.businessDoc.productSpecification": "مواصفات المنتج",
|
||||
"metadata.categoryMap.businessDoc.projectPlan": "خطة المشروع",
|
||||
"metadata.categoryMap.businessDoc.proposal": "اقتراح",
|
||||
"metadata.categoryMap.businessDoc.requirementsDocument": "وثيقة المتطلبات",
|
||||
"metadata.categoryMap.businessDoc.researchReport": "تقرير بحث",
|
||||
"metadata.categoryMap.businessDoc.teamStructure": "هيكل الفريق",
|
||||
"metadata.categoryMap.businessDoc.trainingMaterials": "مواد تدريبية",
|
||||
"metadata.categoryMap.personalDoc.blogDraft": "مسودة مدونة",
|
||||
"metadata.categoryMap.personalDoc.bookExcerpt": "مقتطف من كتاب",
|
||||
"metadata.categoryMap.personalDoc.codeSnippet": "مقتطف كود",
|
||||
"metadata.categoryMap.personalDoc.creativeWriting": "كتابة إبداعية",
|
||||
"metadata.categoryMap.personalDoc.designDraft": "مسودة تصميم",
|
||||
"metadata.categoryMap.personalDoc.diary": "مذكرات",
|
||||
"metadata.categoryMap.personalDoc.list": "قائمة",
|
||||
"metadata.categoryMap.personalDoc.notes": "ملاحظات",
|
||||
"metadata.categoryMap.personalDoc.other": "أخرى",
|
||||
"metadata.categoryMap.personalDoc.personalResume": "سيرة ذاتية شخصية",
|
||||
"metadata.categoryMap.personalDoc.photoCollection": "مجموعة صور",
|
||||
"metadata.categoryMap.personalDoc.projectOverview": "نظرة عامة على المشروع",
|
||||
"metadata.categoryMap.personalDoc.researchReport": "تقرير بحث",
|
||||
"metadata.categoryMap.personalDoc.schedule": "جدول",
|
||||
"metadata.dateTimeFormat": "MMMM D, YYYY hh:mm A",
|
||||
"metadata.desc": "يسمح تصنيف البيانات الوصفية للمستندات للذكاء الاصطناعي بالوصول إليها في الوقت المناسب ويكشف مصدر المراجع للمستخدمين.",
|
||||
"metadata.docTypeChangeTitle": "تغيير نوع المستند",
|
||||
"metadata.docTypeSelectTitle": "يرجى تحديد نوع المستند",
|
||||
"metadata.docTypeSelectWarning": "إذا تم تغيير نوع المستند، فلن يتم الاحتفاظ بالبيانات الوصفية المملوءة الآن",
|
||||
"metadata.field.IMChat.chatPartiesGroupName": "أطراف الدردشة/اسم المجموعة",
|
||||
"metadata.field.IMChat.chatPlatform": "منصة الدردشة",
|
||||
"metadata.field.IMChat.endDate": "تاريخ الانتهاء",
|
||||
@ -202,10 +133,6 @@
|
||||
"metadata.field.personalDocument.lastModifiedDate": "تاريخ آخر تعديل",
|
||||
"metadata.field.personalDocument.tagsCategory": "العلامات/الفئة",
|
||||
"metadata.field.personalDocument.title": "العنوان",
|
||||
"metadata.field.processRule.processClean": "تنظيف عملية النص",
|
||||
"metadata.field.processRule.processDoc": "معالجة المستند",
|
||||
"metadata.field.processRule.segmentLength": "طول القطع",
|
||||
"metadata.field.processRule.segmentRule": "قاعدة القطع",
|
||||
"metadata.field.socialMediaPost.authorUsername": "المؤلف/اسم المستخدم",
|
||||
"metadata.field.socialMediaPost.platform": "المنصة",
|
||||
"metadata.field.socialMediaPost.postURL": "عنوان URL للمنشور",
|
||||
@ -231,7 +158,6 @@
|
||||
"metadata.field.wikipediaEntry.summaryIntroduction": "الملخص/المقدمة",
|
||||
"metadata.field.wikipediaEntry.title": "العنوان",
|
||||
"metadata.field.wikipediaEntry.webpageURL": "عنوان URL لصفحة الويب",
|
||||
"metadata.firstMetaAction": "هيا بنا",
|
||||
"metadata.languageMap.ar": "عربي",
|
||||
"metadata.languageMap.cs": "تشيكي",
|
||||
"metadata.languageMap.da": "دنماركي",
|
||||
@ -304,7 +230,6 @@
|
||||
"segment.delete": "حذف هذه القطعة؟",
|
||||
"segment.editChildChunk": "تعديل القطعة الفرعية",
|
||||
"segment.editChunk": "تعديل القطعة",
|
||||
"segment.editParentChunk": "تعديل القطعة الأصلية",
|
||||
"segment.edited": "معدل",
|
||||
"segment.editedAt": "تم التعديل في",
|
||||
"segment.empty": "لم يتم العثور على أي قطعة",
|
||||
@ -316,9 +241,6 @@
|
||||
"segment.keywords": "كلمات رئيسية",
|
||||
"segment.newChildChunk": "قطعة فرعية جديدة",
|
||||
"segment.newChunk": "قطعة جديدة",
|
||||
"segment.newQaSegment": "قطعة سؤال وجواب جديدة",
|
||||
"segment.newTextSegment": "قطعة نصية جديدة",
|
||||
"segment.paragraphs": "الفقرات",
|
||||
"segment.parentChunk": "قطعة أصلية",
|
||||
"segment.parentChunks_one": "قطعة أصلية",
|
||||
"segment.parentChunks_other": "قطع أصلية",
|
||||
@ -334,6 +256,5 @@
|
||||
"segment.searchResults_other": "نتائج",
|
||||
"segment.searchResults_zero": "نتيجة",
|
||||
"segment.summary": "ملخص",
|
||||
"segment.summaryPlaceholder": "اكتب ملخصًا موجزًا لاسترجاع أفضل…",
|
||||
"segment.vectorHash": "تجزئة المتجه: "
|
||||
"segment.summaryPlaceholder": "اكتب ملخصًا موجزًا لاسترجاع أفضل…"
|
||||
}
|
||||
|
||||
@ -10,7 +10,6 @@
|
||||
"imageUploader.tip": "قم بتحميل الصور أو إسقاطها (الحد الأقصى {{batchCount}}، {{size}} ميغابايت لكل صورة)",
|
||||
"imageUploader.tooltip": "رفع الصور (الحد الأقصى {{batchCount}}، {{size}} ميغابايت لكل صورة)",
|
||||
"input.countWarning": "ما يصل إلى 200 حرف.",
|
||||
"input.indexWarning": "معرفة عالية الجودة فقط.",
|
||||
"input.placeholder": "يرجى إدخال نص، ويوصى بجملة تعريفية قصيرة.",
|
||||
"input.testing": "اختبار",
|
||||
"input.title": "النص المصدر",
|
||||
@ -22,7 +21,5 @@
|
||||
"table.header.queryContent": "محتوى الاستعلام",
|
||||
"table.header.source": "المصدر",
|
||||
"table.header.time": "وقت",
|
||||
"title": "اختبار الاسترجاع",
|
||||
"viewChart": "عرض مخطط VECTOR",
|
||||
"viewDetail": "عرض التفاصيل"
|
||||
"title": "اختبار الاسترجاع"
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
{
|
||||
"addDocuments.backToDataSource": "مصدر البيانات",
|
||||
"addDocuments.characters": "أحرف",
|
||||
"addDocuments.selectOnlineDocumentTip": "معالجة ما يصل إلى {{count}} صفحة",
|
||||
"addDocuments.selectOnlineDriveTip": "معالجة ما يصل إلى {{count}} ملف، بحد أقصى {{fileSize}} ميجابايت لكل منها",
|
||||
@ -24,7 +23,6 @@
|
||||
"creation.caution": "تنبيه",
|
||||
"creation.createFromScratch.description": "إنشاء سير عمل مخصص من الصفر مع التحكم الكامل في معالجة البيانات وهيكلها.",
|
||||
"creation.createFromScratch.title": "سير عمل معرفة فارغ",
|
||||
"creation.createKnowledge": "إنشاء المعرفة",
|
||||
"creation.errorTip": "فشل إنشاء قاعدة المعرفة",
|
||||
"creation.importDSL": "استيراد من ملف DSL",
|
||||
"creation.successTip": "تم إنشاء قاعدة المعرفة بنجاح",
|
||||
@ -52,9 +50,7 @@
|
||||
"inputFieldPanel.uniqueInputs.tooltip": "المدخلات الفريدة يمكن الوصول إليها فقط لمصدر البيانات المحدد وعقده النهائية. لن يحتاج المستخدمون إلى تعبئتها عند اختيار مصادر بيانات أخرى. ستظهر فقط حقول الإدخال المشار إليها بواسطة متغيرات مصدر البيانات في الخطوة الأولى (مصدر البيانات). ستظهر جميع الحقول الأخرى في الخطوة الثانية (معالجة المستندات).",
|
||||
"knowledgeDescription": "وصف المعرفة",
|
||||
"knowledgeDescriptionPlaceholder": "صف ما يوجد في قاعدة المعرفة هذه. يسمح الوصف التفصيلي للذكاء الاصطناعي بالوصول إلى محتوى مجموعة البيانات بشكل أكثر دقة. إذا كان فارغًا، فسيستخدم Dify استراتيجية المطابقة الافتراضية. (اختياري)",
|
||||
"knowledgeNameAndIcon": "اسم وأيقونة المعرفة",
|
||||
"knowledgeNameAndIconPlaceholder": "يرجى إدخال اسم قاعدة المعرفة",
|
||||
"knowledgePermissions": "أذونات",
|
||||
"onlineDocument.pageSelectorTitle": "{{name}} صفحات",
|
||||
"onlineDrive.breadcrumbs.allBuckets": "جميع حاويات التخزين السحابية",
|
||||
"onlineDrive.breadcrumbs.allFiles": "جميع الملفات",
|
||||
@ -62,8 +58,6 @@
|
||||
"onlineDrive.breadcrumbs.searchResult": "العثور على {{searchResultsLength}} عناصر في مجلد \"{{folderName}}\"",
|
||||
"onlineDrive.emptyFolder": "هذا المجلد فارغ",
|
||||
"onlineDrive.emptySearchResult": "لم يتم العثور على أي عناصر",
|
||||
"onlineDrive.notConnected": "{{name}} غير متصل",
|
||||
"onlineDrive.notConnectedTip": "للمزامنة مع {{name}}، يجب إنشاء اتصال بـ {{name}} أولاً.",
|
||||
"onlineDrive.notSupportedFileType": "نوع الملف هذا غير مدعوم",
|
||||
"onlineDrive.resetKeywords": "إعادة تعيين الكلمات الرئيسية",
|
||||
"operations.backToDataSource": "العودة إلى مصدر البيانات",
|
||||
@ -86,9 +80,6 @@
|
||||
"publishTemplate.success.message": "تم نشر قالب سير العمل",
|
||||
"publishTemplate.success.tip": "يمكنك استخدام هذا القالب في صفحة الإنشاء.",
|
||||
"templates.customized": "مخصص",
|
||||
"testRun.dataSource.localFiles": "الملفات المحلية",
|
||||
"testRun.notion.docTitle": "مستندات Notion",
|
||||
"testRun.notion.title": "اختر صفحات Notion",
|
||||
"testRun.steps.dataSource": "مصدر البيانات",
|
||||
"testRun.steps.documentProcessing": "معالجة المستندات",
|
||||
"testRun.title": "تشغيل اختباري",
|
||||
|
||||
@ -4,20 +4,16 @@
|
||||
"form.chunkStructure.learnMore": "تعرف على المزيد",
|
||||
"form.chunkStructure.title": "هيكل القطعة",
|
||||
"form.desc": "الوصف",
|
||||
"form.descInfo": "يرجى كتابة وصف نصي واضح لتوضيح محتوى المعرفة. سيتم استخدام هذا الوصف كأساس للمطابقة عند الاختيار من بين معارف متعددة للاستنتاج.",
|
||||
"form.descPlaceholder": "صف ما يوجد في مجموعة البيانات هذه. يسمح الوصف التفصيلي للذكاء الاصطناعي بالوصول إلى محتوى مجموعة البيانات في الوقت المناسب. إذا كان فارغًا، فسيستخدم Dify استراتيجية المطابقة الافتراضية.",
|
||||
"form.descWrite": "تعرف على كيفية كتابة وصف جيد للمعرفة.",
|
||||
"form.embeddingModel": "نموذج التضمين",
|
||||
"form.embeddingModelTip": "لتغيير النموذج المضمن، يرجى الانتقال إلى ",
|
||||
"form.embeddingModelTipLink": "الإعدادات",
|
||||
"form.externalKnowledgeAPI": "واجهة برمجة تطبيقات المعرفة الخارجية",
|
||||
"form.externalKnowledgeID": "معرف المعرفة الخارجية",
|
||||
"form.helpText": "تعرف على كيفية كتابة وصف جيد لمجموعة البيانات.",
|
||||
"form.indexMethod": "طريقة الفهرسة",
|
||||
"form.indexMethodChangeToEconomyDisabledTip": "غير متوفر للرجوع من الجودة العالية إلى الوضع الاقتصادي",
|
||||
"form.indexMethodEconomy": "اقتصادي",
|
||||
"form.indexMethodEconomyTip": "استخدام {{count}} كلمات رئيسية لكل قطعة للاسترجاع، لا يتم استهلاك أي رموز على حساب دقة الاسترجاع المنخفضة.",
|
||||
"form.indexMethodHighQuality": "جودة عالية",
|
||||
"form.indexMethodHighQualityTip": "يساعد استدعاء نموذج التضمين لمعالجة المستندات من أجل استرجاع أكثر دقة LLM على إنشاء إجابات عالية الجودة.",
|
||||
"form.me": "(أنت)",
|
||||
"form.name": "اسم المعرفة",
|
||||
@ -36,7 +32,6 @@
|
||||
"form.retrievalSetting.method": "طريقة الاسترجاع",
|
||||
"form.retrievalSetting.multiModalTip": "عندما يدعم نموذج التضمين متعدد الوسائط، يرجى اختيار نموذج إعادة ترتيب متعدد الوسائط للحصول على أداء أفضل.",
|
||||
"form.retrievalSetting.title": "إعداد الاسترجاع",
|
||||
"form.retrievalSettings": "إعدادات الاسترجاع",
|
||||
"form.save": "حفظ",
|
||||
"form.searchModel": "نموذج البحث",
|
||||
"form.summaryAutoGen": "إنشاء الملخص التلقائي",
|
||||
|
||||
@ -28,16 +28,10 @@
|
||||
"connectHelper.helper5": " بعناية قبل استخدام هذه الميزة.",
|
||||
"cornerLabel.pipeline": "خط أنابيب",
|
||||
"cornerLabel.unavailable": "غير متاح",
|
||||
"createDataset": "إنشاء المعرفة",
|
||||
"createDatasetIntro": "استيراد بيانات النص الخاصة بك أو كتابة البيانات في الوقت الفعلي عبر Webhook لتحسين سياق LLM.",
|
||||
"createExternalAPI": "إضافة واجهة برمجة تطبيقات معرفة خارجية",
|
||||
"createFromPipeline": "إنشاء من سير عمل المعرفة",
|
||||
"createNewExternalAPI": "إنشاء واجهة برمجة تطبيقات معرفة خارجية جديدة",
|
||||
"datasetDeleteFailed": "فشل حذف المعرفة",
|
||||
"datasetDeleted": "تم حذف المعرفة",
|
||||
"datasetUsedByApp": "يتم استخدام المعرفة بواسطة بعض التطبيقات. لن تتمكن التطبيقات بعد الآن من استخدام هذه المعرفة، وسيتم حذف جميع تكوينات الموجه والسجلات بشكل دائم.",
|
||||
"datasets": "المعرفة",
|
||||
"datasetsApi": "الوصول إلى API",
|
||||
"defaultRetrievalTip": "يستخدم الاسترجاع متعدد المسارات افتراضيًا. يتم استرجاع المعرفة من قواعد معرفة متعددة ثم إعادة ترتيبها.",
|
||||
"deleteDatasetConfirmContent": "حذف المعرفة لا رجعة فيه. لن يتمكن المستخدمون بعد الآن من الوصول إلى معرفتك، وسيتم حذف جميع تكوينات الموجه والسجلات بشكل دائم.",
|
||||
"deleteDatasetConfirmTitle": "حذف هذه المعرفة؟",
|
||||
@ -46,11 +40,9 @@
|
||||
"deleteExternalAPIConfirmWarningContent.noConnectionContent": "هل أنت متأكد من حذف واجهة برمجة التطبيقات هذه؟",
|
||||
"deleteExternalAPIConfirmWarningContent.title.end": "؟",
|
||||
"deleteExternalAPIConfirmWarningContent.title.front": "حذف",
|
||||
"didYouKnow": "هل تعلم؟",
|
||||
"docAllEnabled_one": "{{count}} مستند ممكن",
|
||||
"docAllEnabled_other": "تم تمكين جميع المستندات البالغ عددها {{count}}",
|
||||
"docsFailedNotice": "فشل فهرسة المستندات",
|
||||
"documentCount": " مستندات",
|
||||
"documentsDisabled": "{{num}} مستندات معطلة - غير نشطة لأكثر من 30 يومًا",
|
||||
"editExternalAPIConfirmWarningContent.end": "معرفة خارجية، وسيتم تطبيق هذا التعديل عليها جميعًا. هل أنت متأكد أنك تريد حفظ هذا التغيير؟",
|
||||
"editExternalAPIConfirmWarningContent.front": "ترتبط واجهة برمجة تطبيقات المعرفة الخارجية هذه بـ",
|
||||
@ -60,14 +52,9 @@
|
||||
"editExternalAPITooltipTitle": "المعرفة المرتبطة",
|
||||
"embeddingModelNotAvailable": "نموذج التضمين غير متوفر.",
|
||||
"enable": "تمكين",
|
||||
"externalAPI": "واجهة برمجة تطبيقات خارجية",
|
||||
"externalAPIForm.apiKey": "مفتاح API",
|
||||
"externalAPIForm.cancel": "إلغاء",
|
||||
"externalAPIForm.edit": "تعديل",
|
||||
"externalAPIForm.encrypted.end": "تقنية.",
|
||||
"externalAPIForm.encrypted.front": "سيتم تشفير رمز API الخاص بك وتخزينه باستخدام",
|
||||
"externalAPIForm.endpoint": "نقطة نهاية API",
|
||||
"externalAPIForm.name": "الاسم",
|
||||
"externalAPIForm.save": "حفظ",
|
||||
"externalAPIPanelDescription": "تُستخدم واجهة برمجة تطبيقات المعرفة الخارجية للاتصال بقاعدة معرفة خارج Dify واسترجاع المعرفة من قاعدة المعرفة تلك.",
|
||||
"externalAPIPanelDocumentation": "تعرف على كيفية إنشاء واجهة برمجة تطبيقات المعرفة الخارجية",
|
||||
@ -89,7 +76,6 @@
|
||||
"firstEmpty.createDescription": "أسرع طريقة للبدء. يمكنك التبديل إلى التخصيص في أي وقت.",
|
||||
"firstEmpty.createTitle": "إنشاء قاعدة معرفة جاهزة للاستخدام",
|
||||
"firstEmpty.or": "أو",
|
||||
"firstEmpty.pickHint": "لست متأكدا مما تختار؟ ابدأ بـ إنشاء معرفة - يمكنك دائما التبديل لاحقا.",
|
||||
"firstEmpty.pipelineDescription": "عرّف تدفق التقسيم والتنظيف والفهرسة الخاص بك للبيانات المتخصصة.",
|
||||
"firstEmpty.pipelineTitle": "إنشاء قاعدة معرفة مخصصة",
|
||||
"firstEmpty.recommended": "موصى به",
|
||||
@ -106,15 +92,7 @@
|
||||
"indexingMethod.semantic_search": "VECTOR",
|
||||
"indexingTechnique.economy": "ECO",
|
||||
"indexingTechnique.high_quality": "HQ",
|
||||
"intro1": "يمكن دمج المعرفة في تطبيق Dify ",
|
||||
"intro2": "كسياق",
|
||||
"intro3": "،",
|
||||
"intro4": "أو ",
|
||||
"intro5": "يمكن نشرها",
|
||||
"intro6": " كخدمة مستقلة.",
|
||||
"knowledge": "المعرفة",
|
||||
"learnHowToWriteGoodKnowledgeDescription": "تعرف على كيفية كتابة وصف جيد للمعرفة",
|
||||
"localDocs": "مستندات محلية",
|
||||
"metadata.addMetadata": "إضافة بيانات وصفية",
|
||||
"metadata.batchEditMetadata.applyToAllSelectDocument": "تطبيق على جميع المستندات المحددة",
|
||||
"metadata.batchEditMetadata.applyToAllSelectDocumentTip": "إنشاء جميع البيانات الوصفية المعدلة والجديدة أعلاه تلقائيًا لجميع المستندات المحددة، وإلا فإن تعديل البيانات الوصفية سينطبق فقط على المستندات التي تحتوي عليها.",
|
||||
@ -152,9 +130,6 @@
|
||||
"mixtureHighQualityAndEconomicTip": "مطلوب نموذج إعادة الترتيب لخلط قواعد المعرفة عالية الجودة والاقتصادية.",
|
||||
"mixtureInternalAndExternalTip": "مطلوب نموذج إعادة الترتيب لخلط المعرفة الداخلية والخارجية.",
|
||||
"multimodal": "متعدد الوسائط",
|
||||
"nTo1RetrievalLegacy": "سيتم إيقاف الاسترجاع من N إلى 1 رسميًا اعتبارًا من سبتمبر. يوصى باستخدام أحدث استرجاع متعدد المسارات للحصول على نتائج أفضل. ",
|
||||
"nTo1RetrievalLegacyLink": "تعرف على المزيد",
|
||||
"nTo1RetrievalLegacyLinkText": " سيتم إيقاف الاسترجاع من N إلى 1 رسميًا في سبتمبر.",
|
||||
"noExternalKnowledge": "لا توجد واجهة برمجة تطبيقات معرفة خارجية حتى الآن، انقر هنا لإنشاء",
|
||||
"parentMode.fullDoc": "مستند كامل",
|
||||
"parentMode.paragraph": "فقرة",
|
||||
@ -162,14 +137,10 @@
|
||||
"partialEnabled_other": "إجمالي {{count}} مستندات، {{num}} متاح",
|
||||
"preprocessDocument": "{{num}} معالجة المستندات مسبقًا",
|
||||
"rerankSettings": "إعداد إعادة الترتيب",
|
||||
"retrieval.change": "تغيير",
|
||||
"retrieval.changeRetrievalMethod": "تغيير طريقة الاسترجاع",
|
||||
"retrieval.full_text_search.description": "فهرسة جميع المصطلحات في المستند، مما يسمح للمستخدمين بالبحث عن أي مصطلح واسترجاع قطعة نصية ذات صلة تحتوي على تلك المصطلحات.",
|
||||
"retrieval.full_text_search.title": "بحث النص الكامل",
|
||||
"retrieval.hybrid_search.description": "تنفيذ البحث بالنص الكامل والبحث المتجه في وقت واحد، وإعادة الترتيب لتحديد أفضل تطابق لاستعلام المستخدم. يمكن للمستخدمين اختيار تعيين الأوزان أو التكوين لنموذج إعادة الترتيب.",
|
||||
"retrieval.hybrid_search.recommend": "نوصي",
|
||||
"retrieval.hybrid_search.title": "بحث هجين",
|
||||
"retrieval.invertedIndex.description": "الفهرس المقلوب هو هيكل يُستخدم للاسترجاع الفعال. منظم حسب المصطلحات، كل مصطلح يشير إلى المستندات أو صفحات الويب التي تحتوي عليه.",
|
||||
"retrieval.invertedIndex.title": "الفهرس المعكوس",
|
||||
"retrieval.keyword_search.description": "الفهرس المعكوس هو هيكل يستخدم للاسترجاع الفعال. منظم حسب المصطلحات، يشير كل مصطلح إلى المستندات أو صفحات الويب التي تحتوي عليه.",
|
||||
"retrieval.keyword_search.title": "فهرس معكوس",
|
||||
@ -188,12 +159,8 @@
|
||||
"unavailable": "غير متاح",
|
||||
"unknownError": "خطأ غير معروف",
|
||||
"updated": "محدث",
|
||||
"weightedScore.customized": "مخصص",
|
||||
"weightedScore.description": "من خلال تعديل الأوزان المخصصة، تحدد استراتيجية إعادة الترتيب هذه ما إذا كانت الأولوية للمطابقة الدلالية أو الكلمات الرئيسية.",
|
||||
"weightedScore.keyword": "كلمة رئيسية",
|
||||
"weightedScore.keywordFirst": "الكلمة الرئيسية أولاً",
|
||||
"weightedScore.semantic": "دلالي",
|
||||
"weightedScore.semanticFirst": "الدلالي أولاً",
|
||||
"weightedScore.title": "الدرجة المرجحة",
|
||||
"wordCount": " ألف كلمة"
|
||||
"weightedScore.title": "الدرجة المرجحة"
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
{
|
||||
"access.api.backendTitle": "واجهة برمجة تطبيقات الخدمة الخلفية",
|
||||
"access.api.copyCurlExample": "نسخ مثال cURL",
|
||||
"access.api.createFailed": "فشل في إنشاء رمز API.",
|
||||
"access.api.createKey": "إنشاء رمز API",
|
||||
@ -9,7 +8,6 @@
|
||||
"access.api.developerTitle": "واجهة API للمطورين",
|
||||
"access.api.disabled": "الوصول إلى API معطل لهذا النشر.",
|
||||
"access.api.disabledHint": "قم بتمكين الوصول إلى API لإنشاء رموز مخصصة للبيئة.",
|
||||
"access.api.dismissToken": "إخفاء رمز API",
|
||||
"access.api.docs": "وثائق API",
|
||||
"access.api.docsClose": "إغلاق وثائق API",
|
||||
"access.api.docsDescription": "عرض مرجع Workflow API لهذا النشر.",
|
||||
@ -17,7 +15,6 @@
|
||||
"access.api.empty": "قم بالنشر إلى بيئة أولاً لبدء إصدار رموز API.",
|
||||
"access.api.emptyTitle": "لا توجد بيئات منشورة",
|
||||
"access.api.endpoint": "عنوان URL للطلب",
|
||||
"access.api.envPrefix": "env: {{env}}",
|
||||
"access.api.keyList": "قائمة رموز API",
|
||||
"access.api.nameLabel": "اسم رمز API",
|
||||
"access.api.namePlaceholder": "أدخل اسم رمز API",
|
||||
@ -36,14 +33,8 @@
|
||||
"access.api.table.environment": "البيئة",
|
||||
"access.api.table.key": "رمز API",
|
||||
"access.api.table.name": "الاسم",
|
||||
"access.api.title": "API",
|
||||
"access.channels.col.channel": "القناة",
|
||||
"access.channels.col.endpoint": "نقطة الدخول",
|
||||
"access.channels.col.status": "الحالة",
|
||||
"access.channels.description": "تستخدم نقاط دخول WebApp وCLI أذونات الوصول الواردة أعلاه.",
|
||||
"access.channels.disabled": "قنوات الوصول معطلة لهذا النشر.",
|
||||
"access.channels.disabledHint": "قم بتمكين قنوات الوصول لعرض نقاط دخول WebApp وCLI.",
|
||||
"access.channels.followPermission": "يتبع الأذونات",
|
||||
"access.channels.title": "قنوات الوصول",
|
||||
"access.cli.description": "استدعِ من الطرفية باستخدام difyctl، مناسب للسكربتات أو سير العمل الآلي أو تكاملات الوكلاء.",
|
||||
"access.cli.docs": "دليل الاستخدام",
|
||||
@ -51,103 +42,57 @@
|
||||
"access.cli.empty": "لم يتم تكوين نقطة نهاية CLI.",
|
||||
"access.cli.install": "تثبيت CLI",
|
||||
"access.cli.title": "CLI",
|
||||
"access.copied": "تم النسخ",
|
||||
"access.copy": "نسخ",
|
||||
"access.copyFailed": "فشل النسخ",
|
||||
"access.copyToast": "تم النسخ إلى الحافظة",
|
||||
"access.hide": "إخفاء",
|
||||
"access.members.clearAll": "مسح الكل",
|
||||
"access.members.empty": "لا توجد نتائج مطابقة.",
|
||||
"access.members.groupCount_one": "{{count}} مجموعة",
|
||||
"access.members.groupCount_other": "{{count}} مجموعات",
|
||||
"access.members.groups": "المجموعات",
|
||||
"access.members.individuals": "الأعضاء",
|
||||
"access.members.memberCount_one": "{{count}} عضو",
|
||||
"access.members.memberCount_other": "{{count}} أعضاء",
|
||||
"access.members.pickPlaceholder": "اختر المجموعات أو الأعضاء",
|
||||
"access.members.searchPlaceholder": "بحث عن المجموعات والأعضاء",
|
||||
"access.members.selectedLabel": "المحدد",
|
||||
"access.permission.anyone": "أي شخص لديه الرابط",
|
||||
"access.permission.anyoneDesc": "يمكن لأي شخص الوصول إلى هذا النشر دون تسجيل الدخول.",
|
||||
"access.permission.memberCount_one": "{{count}} عضو",
|
||||
"access.permission.memberCount_other": "{{count}} أعضاء",
|
||||
"access.permission.organization": "جميع الأعضاء في المنصة",
|
||||
"access.permission.organizationDesc": "جميع الأعضاء في المنصة",
|
||||
"access.permission.specific": "أعضاء محددون في المنصة",
|
||||
"access.permission.specificDesc": "اختر مجموعات أو أعضاء محددين",
|
||||
"access.permission.specificUnavailable": "تحديد الأعضاء المحددين معطل حتى يتم ربط الأعضاء والمجموعات الفعليين في المنصة.",
|
||||
"access.permission.updateFailed": "فشل في تحديث سياسة الوصول.",
|
||||
"access.permissions.col.environment": "البيئة",
|
||||
"access.permissions.col.permission": "الوصول",
|
||||
"access.permissions.description": "اضبط أذونات الوصول لنقاط دخول WebApp وCLI في كل بيئة.",
|
||||
"access.permissions.editAriaLabel": "تكوين الوصول لـ {{environment}}",
|
||||
"access.permissions.editDescription": "اضبط أذونات الوصول لنقاط دخول WebApp وCLI.",
|
||||
"access.permissions.editTitle": "أذونات الوصول",
|
||||
"access.permissions.title": "أذونات الوصول",
|
||||
"access.revoke": "إبطال",
|
||||
"access.runAccess.description": "إدارة كيفية تشغيل المستخدمين لهذا النشر ومن المسموح له بالوصول إليه في كل بيئة.",
|
||||
"access.runAccess.disabled": "وصول التشغيل معطل لهذا النشر.",
|
||||
"access.runAccess.mcp": "MCP",
|
||||
"access.runAccess.mcpDesc": "اعرض هذا النشر كخادم Model Context Protocol.",
|
||||
"access.runAccess.mcpEmpty": "لم يتم تكوين نقطة نهاية MCP.",
|
||||
"access.runAccess.noEnvs": "قم بالنشر إلى بيئة لتكوين أذونات الوصول.",
|
||||
"access.runAccess.noEnvsTitle": "لا توجد بيئات منشورة",
|
||||
"access.runAccess.openWebapp": "فتح WebApp",
|
||||
"access.runAccess.permissions": "أذونات الوصول",
|
||||
"access.runAccess.permissionsDesc": "من يمكنه الوصول إلى هذا النشر في كل بيئة.",
|
||||
"access.runAccess.title": "وصول التشغيل",
|
||||
"access.runAccess.urlLabel": "URL",
|
||||
"access.runAccess.webapp": "WebApp",
|
||||
"access.runAccess.webappDesc": "صفحة ويب مستضافة للمستخدمين النهائيين.",
|
||||
"access.runAccess.webappEmpty": "قريبًا.",
|
||||
"access.show": "إظهار",
|
||||
"backend.RUNTIME_BACKEND_EXTERNAL": "خارجي",
|
||||
"backend.RUNTIME_BACKEND_K8S": "K8S",
|
||||
"backend.RUNTIME_BACKEND_UNSPECIFIED": "غير معروف",
|
||||
"card.access.api": "رموز API",
|
||||
"card.access.apiShort": "API",
|
||||
"card.access.cli": "CLI",
|
||||
"card.access.cliShort": "CLI",
|
||||
"card.access.none": "لا يوجد وصول",
|
||||
"card.access.webApp": "WebApp",
|
||||
"card.access.webAppShort": "Web",
|
||||
"card.createFirstRelease": "إنشاء أول إصدار",
|
||||
"card.deploy": "نشر",
|
||||
"card.deploying": "{{count}} قيد النشر",
|
||||
"card.envOverflow": "+ {{count}}",
|
||||
"card.failed": "{{count}} فشل",
|
||||
"card.fromApp": "من {{name}}",
|
||||
"card.lastDeployed": "آخر نشر {{time}}",
|
||||
"card.menu.delete": "حذف النشر",
|
||||
"card.menu.deleteDisabled": "حذف النشر غير متاح بعد لعمليات النشر المُدارة من الخلفية.",
|
||||
"card.menu.deploy": "النشر إلى البيئة",
|
||||
"card.menu.editInfo": "تعديل المعلومات",
|
||||
"card.menu.viewDetail": "عرض تفاصيل النشر",
|
||||
"card.moreActions": "المزيد من الإجراءات",
|
||||
"card.neverDeployed": "لم يتم النشر بعد",
|
||||
"card.noDescription": "لم يتم تقديم وصف.",
|
||||
"card.notDeployed": "غير منشور",
|
||||
"card.ready": "{{count}} قيد التشغيل",
|
||||
"card.tooltip.createdAt": "تم الإنشاء",
|
||||
"card.tooltip.deployed": "تم النشر",
|
||||
"card.tooltip.deploymentStatus": "النشر",
|
||||
"card.tooltip.notDeployed": "لم يتم نشر هذا النشر إلى أي بيئة بعد.",
|
||||
"card.tooltip.notDeployedShort": "غير منشور",
|
||||
"card.tooltip.release": "الإصدار",
|
||||
"card.tooltip.releaseName": "اسم الإصدار",
|
||||
"card.tooltip.source": "المصدر",
|
||||
"common.loadFailed": "فشل التحميل. حاول مرة أخرى لاحقًا.",
|
||||
"common.loading": "جاري التحميل...",
|
||||
"createGuide.actions.back": "رجوع",
|
||||
"createGuide.actions.cancel": "إلغاء",
|
||||
"createGuide.actions.continue": "متابعة",
|
||||
"createGuide.actions.createAndDeploy": "إنشاء ونشر",
|
||||
"createGuide.actions.creating": "جاري الإنشاء...",
|
||||
"createGuide.actions.deploy": "نشر",
|
||||
"createGuide.actions.deploying": "جاري الإنشاء والنشر...",
|
||||
"createGuide.actions.next": "التالي",
|
||||
"createGuide.actions.skipDeploy": "تخطي، النشر لاحقًا",
|
||||
"createGuide.description": "أنشئ نشرًا من مصدر إصدار ومعلومات أساسية وبيئة مستهدفة.",
|
||||
"createGuide.dsl.defaultAppName": "تطبيق DSL المستورد",
|
||||
"createGuide.dsl.description": "قم بتحميل حزمة Workflow DSL لإنشاء النشر والإصدار الأول ونشر البيئة الاختياري.",
|
||||
"createGuide.dsl.dropDescription": "قم بتحميل حزمة Workflow YAML DSL. يتم تحديد خيارات النشر من هذا الملف قبل النشر.",
|
||||
@ -163,7 +108,6 @@
|
||||
"createGuide.methods.bindApp.title": "ربط تطبيق Workflow موجود",
|
||||
"createGuide.methods.importDsl.description": "قم بتحميل حزمة Workflow YAML DSL ومتابعة عبر واجهة النشر.",
|
||||
"createGuide.methods.importDsl.title": "استيراد DSL",
|
||||
"createGuide.methods.mocked": "محاكاة",
|
||||
"createGuide.nav.back": "عمليات النشر",
|
||||
"createGuide.release.defaultName": "الإصدار الأولي",
|
||||
"createGuide.release.deployInfo": "معلومات النشر",
|
||||
@ -176,10 +120,7 @@
|
||||
"createGuide.release.releaseDescription": "وصف الإصدار",
|
||||
"createGuide.release.releaseDescriptionPlaceholder": "صف هذا الإصدار",
|
||||
"createGuide.release.releaseName": "اسم الإصدار",
|
||||
"createGuide.release.releaseNote": "وصف الإصدار",
|
||||
"createGuide.release.title": "المعلومات الأساسية",
|
||||
"createGuide.source.availableApps_one": "{{count}} تطبيق",
|
||||
"createGuide.source.availableApps_other": "{{count}} تطبيقات",
|
||||
"createGuide.source.clearSearch": "مسح بحث التطبيقات",
|
||||
"createGuide.source.description": "اختر المصدر المستخدم لإنشاء الإصدار الأول.",
|
||||
"createGuide.source.empty": "لم يتم العثور على تطبيقات Workflow.",
|
||||
@ -194,8 +135,6 @@
|
||||
"createGuide.target.bindingCount_other": "{{count}} روابط",
|
||||
"createGuide.target.bindingHint": "اختر بيانات الاعتماد التي يستخدمها هذا الإصدار.",
|
||||
"createGuide.target.bindings": "بيانات الاعتماد",
|
||||
"createGuide.target.deferredBindingHint": "ستُحَل بيانات الاعتماد من خطة النشر الفعلية أثناء إجراء النشر النهائي.",
|
||||
"createGuide.target.deferredEnvironmentHint": "تتم مطابقة الاسم مع البيئات الفعلية بعد إنشاء النشر والإصدار.",
|
||||
"createGuide.target.description": "اختر بيئة مستهدفة وقدم إعدادات وقت التشغيل التي يحتاجها هذا الإصدار هناك. يمكن تخطي هذه الخطوة.",
|
||||
"createGuide.target.envVarCount_one": "{{count}} متغير",
|
||||
"createGuide.target.envVarCount_other": "{{count}} متغيرات",
|
||||
@ -210,15 +149,12 @@
|
||||
"createGuide.target.envVarType.string": "نص",
|
||||
"createGuide.target.envVars": "متغيرات البيئة",
|
||||
"createGuide.target.environment": "البيئة المستهدفة",
|
||||
"createGuide.target.environmentName": "اسم البيئة",
|
||||
"createGuide.target.environmentNamePlaceholder": "Production",
|
||||
"createGuide.target.loadBindingsFailed": "فشل في تحميل بيانات الاعتماد.",
|
||||
"createGuide.target.loadEnvironmentsFailed": "فشل في تحميل بيئات النشر.",
|
||||
"createGuide.target.missingRequiredBinding": "اختر بيانات اعتماد لهذا الربط المطلوب.",
|
||||
"createGuide.target.noBindingRequired": "لا يلزم بيانات اعتماد.",
|
||||
"createGuide.target.noCredentialCandidates": "لا توجد بيانات اعتماد متاحة.",
|
||||
"createGuide.target.noEnvironmentOptions": "لا توجد بيئات نشر متاحة.",
|
||||
"createGuide.target.required": "مطلوب",
|
||||
"createGuide.target.selectCredential": "اختر بيانات اعتماد",
|
||||
"createGuide.target.title": "النشر إلى البيئة",
|
||||
"createGuide.title": "نشر جديد",
|
||||
@ -226,31 +162,15 @@
|
||||
"createModal.appSearchEmpty": "لا توجد تطبيقات Workflow مطابقة",
|
||||
"createModal.appSearchPlaceholder": "بحث عن تطبيقات Workflow…",
|
||||
"createModal.cancel": "إلغاء",
|
||||
"createModal.create": "إنشاء",
|
||||
"createModal.createFailed": "فشل في إنشاء النشر.",
|
||||
"createModal.description": "اختر تطبيق Workflow وأنشئ نشرًا.",
|
||||
"createModal.descriptionLabel": "الوصف",
|
||||
"createModal.descriptionPlaceholder": "صف الغرض من استخدام هذا النشر",
|
||||
"createModal.loadMoreApps": "تحميل المزيد من التطبيقات",
|
||||
"createModal.loadingApps": "جاري تحميل التطبيقات…",
|
||||
"createModal.nameLabel": "اسم النشر",
|
||||
"createModal.namePlaceholder": "اسم النشر",
|
||||
"createModal.noApps": "لم يتم العثور على تطبيقات Workflow في مساحة العمل هذه. أنشئ واحدًا في Studio أولاً.",
|
||||
"createModal.selected": "المحدد",
|
||||
"createModal.sourceApp": "تطبيق Workflow (مطلوب)",
|
||||
"createModal.title": "نشر جديد",
|
||||
"deployDrawer.bindingCount_one": "{{count}} ربط",
|
||||
"deployDrawer.bindingCount_other": "{{count}} روابط",
|
||||
"deployDrawer.bindingOptionsFailed": "فشل في تحميل خيارات بيانات الاعتماد.",
|
||||
"deployDrawer.bindingSelectionHint": "اختر بيانات الاعتماد التي يستخدمها هذا النشر.",
|
||||
"deployDrawer.bindingsDisabled": "تم حلها من معاينة الإصدار. التحرير غير متاح بعد.",
|
||||
"deployDrawer.cancel": "إلغاء",
|
||||
"deployDrawer.close": "إغلاق درج النشر",
|
||||
"deployDrawer.defaultSelect": "اختر...",
|
||||
"deployDrawer.deploy": "النشر إلى البيئة",
|
||||
"deployDrawer.deployExistingRelease": "النشر إلى البيئة",
|
||||
"deployDrawer.deployExistingReleaseDescription": "اختر إصدارًا وبيئة مستهدفة للنشر.",
|
||||
"deployDrawer.deployExistingReleaseTitle": "النشر إلى البيئة",
|
||||
"deployDrawer.deployFailed": "فشل في بدء النشر.",
|
||||
"deployDrawer.deploying": "جاري النشر...",
|
||||
"deployDrawer.description": "اختر إصدارًا وبيئة مستهدفة للنشر.",
|
||||
@ -267,95 +187,41 @@
|
||||
"deployDrawer.envVarType.string": "نص",
|
||||
"deployDrawer.envVars": "متغيرات البيئة",
|
||||
"deployDrawer.existingReleaseHint": "سيتم نشر هذا الإصدار كما هو. لن يتم إنشاء إصدار جديد.",
|
||||
"deployDrawer.loadingBindings": "جاري الحل...",
|
||||
"deployDrawer.lockedHint": "مقفل على البيئة الحالية",
|
||||
"deployDrawer.missingRequiredBinding": "اختر بيانات اعتماد لهذا الربط المطلوب.",
|
||||
"deployDrawer.missingRequiredEnvVar": "أدخل قيمة لمتغير البيئة المطلوب هذا.",
|
||||
"deployDrawer.modelCreds": "بيانات اعتماد النموذج",
|
||||
"deployDrawer.needsValidation": " (يحتاج إلى التحقق)",
|
||||
"deployDrawer.newReleaseHint": "سيتم إنشاء إصدار جديد من YAML تطبيق Workflow المحدد.",
|
||||
"deployDrawer.noBindingRequired": "غير مطلوب",
|
||||
"deployDrawer.noCredentialCandidates": "لا توجد بيانات اعتماد متاحة.",
|
||||
"deployDrawer.noNewEnvironmentAvailable": "جميع البيئات المتاحة لديها بالفعل نشر.",
|
||||
"deployDrawer.noOtherReleaseAvailable": "لا توجد إصدارات أخرى متاحة لهذه البيئة.",
|
||||
"deployDrawer.noReleaseAvailable": "أنشئ إصدارًا قبل النشر إلى بيئة.",
|
||||
"deployDrawer.notFound": "لم يتم العثور على النشر.",
|
||||
"deployDrawer.noteLabel": "وصف الإصدار (اختياري)",
|
||||
"deployDrawer.notePlaceholder": "مثال: تعديل نسخة الإعداد",
|
||||
"deployDrawer.pluginCreds": "بيانات اعتماد الإضافة",
|
||||
"deployDrawer.promote": "نشر",
|
||||
"deployDrawer.promoteDescription": "اختر إصدارًا وبيئة مستهدفة للنشر.",
|
||||
"deployDrawer.promoteTitle": "النشر إلى البيئة",
|
||||
"deployDrawer.readOnly": "للقراءة فقط",
|
||||
"deployDrawer.redeploy": "النشر إلى البيئة",
|
||||
"deployDrawer.redeployDescription": "اختر إصدارًا وبيئة مستهدفة للنشر.",
|
||||
"deployDrawer.redeployExistingReleaseHint": "سيتم إعادة نشر الإصدار الحالي كما هو. لن يتم إنشاء إصدار جديد.",
|
||||
"deployDrawer.redeployTitle": "النشر إلى البيئة",
|
||||
"deployDrawer.releaseLabel": "الإصدار",
|
||||
"deployDrawer.requiredBinding": "مطلوب",
|
||||
"deployDrawer.rollback": "نشر",
|
||||
"deployDrawer.rollbackDescription": "اختر إصدارًا وبيئة مستهدفة للنشر.",
|
||||
"deployDrawer.rollbackTitle": "النشر إلى البيئة",
|
||||
"deployDrawer.runtimeCredentials": "بيانات الاعتماد",
|
||||
"deployDrawer.secretPlaceholder": "سر",
|
||||
"deployDrawer.selectCredential": "اختر بيانات اعتماد",
|
||||
"deployDrawer.selectEnv": "اختر بيئة",
|
||||
"deployDrawer.selectProviderCred": "اختر بيانات اعتماد {{provider}}",
|
||||
"deployDrawer.selectProviderKey": "اختر مفتاح {{provider}}",
|
||||
"deployDrawer.selectRelease": "اختر إصدارًا",
|
||||
"deployDrawer.targetEnv": "البيئة المستهدفة",
|
||||
"deployDrawer.title": "النشر إلى البيئة",
|
||||
"deployDrawer.valuePlaceholder": "القيمة",
|
||||
"deployTab.cancelDeployment": "إلغاء النشر",
|
||||
"deployTab.closeError": "إغلاق",
|
||||
"deployTab.col.actions": "الإجراءات",
|
||||
"deployTab.col.currentRelease": "الإصدار الحالي",
|
||||
"deployTab.col.environment": "البيئة",
|
||||
"deployTab.col.status": "الحالة",
|
||||
"deployTab.col.updated": "تم التحديث",
|
||||
"deployTab.collapseDetails": "طي تفاصيل النشر",
|
||||
"deployTab.confirmUndeploy": "إلغاء النشر",
|
||||
"deployTab.deployOtherVersion": "نشر إصدار آخر",
|
||||
"deployTab.deployToEnv": "النشر إلى {{name}}",
|
||||
"deployTab.deployToNewEnv": "النشر إلى بيئة جديدة...",
|
||||
"deployTab.empty": "لا توجد مثيلات بعد. انشر إلى بيئة جديدة للبدء.",
|
||||
"deployTab.emptyDescription": "اختر إصدارًا وبيئة مستهدفة لجعل هذا النشر متاحًا للمستخدمين.",
|
||||
"deployTab.emptyTitle": "لا توجد بيئات قيد التشغيل بعد",
|
||||
"deployTab.envCount": "البيئات",
|
||||
"deployTab.errorCode": "الكود",
|
||||
"deployTab.errorDialogDesc": "راجع آخر نشر فاشل قبل إعادة المحاولة أو نشر إصدار آخر.",
|
||||
"deployTab.errorDialogTitle": "خطأ في النشر في {{name}}",
|
||||
"deployTab.errorMessage": "الرسالة",
|
||||
"deployTab.errorPhase": "المرحلة",
|
||||
"deployTab.expandDetails": "توسيع تفاصيل النشر",
|
||||
"deployTab.moreActions": "المزيد من الإجراءات",
|
||||
"deployTab.newDeployment": "النشر إلى بيئة جديدة",
|
||||
"deployTab.panel.commit": "معرف Commit",
|
||||
"deployTab.panel.deploymentId": "معرف النشر",
|
||||
"deployTab.panel.endpoints": "نقاط النهاية",
|
||||
"deployTab.panel.envVars": "متغيرات البيئة",
|
||||
"deployTab.panel.error": "الخطأ",
|
||||
"deployTab.panel.failedRelease": "الإصدار الفاشل",
|
||||
"deployTab.panel.health": "الصحة",
|
||||
"deployTab.panel.instanceInfo": "معلومات المثيل",
|
||||
"deployTab.panel.modelCreds": "بيانات اعتماد النموذج",
|
||||
"deployTab.panel.pluginCreds": "بيانات اعتماد الإضافة",
|
||||
"deployTab.panel.release": "الإصدار",
|
||||
"deployTab.panel.releaseCreatedAt": "تم إنشاء الإصدار في",
|
||||
"deployTab.panel.releaseInfo": "معلومات الإصدار",
|
||||
"deployTab.panel.replicas": "النسخ المتماثلة",
|
||||
"deployTab.panel.run": "تشغيل",
|
||||
"deployTab.panel.runtimeBindings": "بيانات الاعتماد",
|
||||
"deployTab.panel.runtimeInfo": "معلومات وقت التشغيل",
|
||||
"deployTab.panel.runtimeMode": "وضع وقت التشغيل",
|
||||
"deployTab.panel.runtimeNote": "ملاحظة وقت التشغيل",
|
||||
"deployTab.panel.targetRelease": "الإصدار المستهدف",
|
||||
"deployTab.panel.unknownError": "فشل النشر.",
|
||||
"deployTab.promote": "نشر",
|
||||
"deployTab.redeploy": "إعادة النشر",
|
||||
"deployTab.releaseCreatedAt": "تم إنشاء الإصدار {{time}}",
|
||||
"deployTab.retry": "إعادة المحاولة",
|
||||
"deployTab.shortcut": "اختصار",
|
||||
"deployTab.status.deployFailed": "فشل النشر",
|
||||
"deployTab.status.deployingRelease": "جاري النشر ({{release}})",
|
||||
"deployTab.status.runningOutOfSync": "قيد التشغيل (المزامنة معلقة)",
|
||||
@ -363,26 +229,13 @@
|
||||
"deployTab.undeploy": "إلغاء النشر",
|
||||
"deployTab.undeployConfirmDesc": "سيتوقف وصول المستخدم النهائي فورًا. يمكن إعادة نشر الإصدار لاحقًا.",
|
||||
"deployTab.undeployConfirmTitle": "إلغاء النشر من {{name}}؟",
|
||||
"deployTab.undeployFrom": "إلغاء النشر من {{name}}",
|
||||
"deployTab.undeployImpactTitle": "المثيل المتأثر",
|
||||
"deployTab.viewError": "عرض الخطأ",
|
||||
"deployTab.viewLogs": "عرض السجلات",
|
||||
"deployTab.viewProgress": "عرض التقدم",
|
||||
"detail.backToInstances": "العودة إلى عمليات النشر",
|
||||
"detail.deployingCount": "{{count}} قيد النشر",
|
||||
"detail.envCount_one": "{{count}} بيئة",
|
||||
"detail.envCount_other": "{{count}} بيئات",
|
||||
"detail.failedCount": "{{count}} فشل",
|
||||
"detail.mobileTabs": "أقسام النشر",
|
||||
"detail.notFound": "لم يتم العثور على النشر",
|
||||
"detail.openSourceApp": "فتح مصدر {{name}}",
|
||||
"detail.sourceApp": "المصدر",
|
||||
"detail.sourceAppLink": "المصدر",
|
||||
"documentTitle.create": "نشر جديد · عمليات النشر",
|
||||
"documentTitle.detail": "النشر · عمليات النشر",
|
||||
"documentTitle.list": "عمليات النشر",
|
||||
"filter.allEnvs": "جميع البيئات",
|
||||
"filter.notDeployed": "غير منشور",
|
||||
"filter.searchPlaceholder": "بحث عن عمليات النشر",
|
||||
"health.ENVIRONMENT_STATUS_ADMISSION": "القبول",
|
||||
"health.ENVIRONMENT_STATUS_BOOTSTRAPPING": "التمهيد",
|
||||
@ -393,7 +246,6 @@
|
||||
"list.clearFilters": "مسح الفلاتر",
|
||||
"list.clearSearch": "مسح بحث النشر",
|
||||
"list.createDeployment": "جديد",
|
||||
"list.empty": "لم يتم العثور على عمليات نشر.",
|
||||
"list.emptyDescription": "أنشئ نشرًا من تطبيق Workflow أو حزمة Workflow DSL لإدارة الإصدارات والبيئات والوصول.",
|
||||
"list.emptyFilteredDescription": "لا يوجد نشر يطابق البحث الحالي أو فلتر البيئة.",
|
||||
"list.emptyFilteredTitle": "لا توجد عمليات نشر مطابقة",
|
||||
@ -401,11 +253,6 @@
|
||||
"mode.ENVIRONMENT_MODE_ISOLATED": "معزول",
|
||||
"mode.ENVIRONMENT_MODE_SHARED": "مشترك",
|
||||
"mode.ENVIRONMENT_MODE_UNSPECIFIED": "غير معروف",
|
||||
"newInstance.comingSoon": "قريبًا",
|
||||
"newInstance.fromStudio": "اختر من Studio",
|
||||
"newInstance.importDSL": "استيراد DSL",
|
||||
"newInstance.title": "نشر جديد",
|
||||
"overview.accessEndpoints": "نقاط نهاية الوصول",
|
||||
"overview.accessMeta.apiTokens": "إدارة رموز API",
|
||||
"overview.accessMeta.cli": "عرض وصول CLI",
|
||||
"overview.accessMeta.webApp": "إدارة وصول WebApp",
|
||||
@ -415,8 +262,6 @@
|
||||
"overview.apiKeysCount_other": "{{count}} رموز API",
|
||||
"overview.apiTokenSummary.environments_one": "{{count}} بيئة منشورة",
|
||||
"overview.apiTokenSummary.environments_other": "{{count}} بيئات منشورة",
|
||||
"overview.availableForDeployment": "متاح للنشر",
|
||||
"overview.basicInfo": "المعلومات الأساسية",
|
||||
"overview.cardAction.deployLatest": "نشر أحدث إصدار",
|
||||
"overview.cardAction.redeploy": "إعادة النشر",
|
||||
"overview.cardAction.viewProgress": "عرض النشر",
|
||||
@ -436,79 +281,27 @@
|
||||
"overview.chip.olderRelease": "أقدم",
|
||||
"overview.chip.olderReleaseTooltip": "هذه البيئة تشغل إصدارًا أقدم.",
|
||||
"overview.chip.openInDeployTab": "عرض تقدم النشر",
|
||||
"overview.cli": "CLI",
|
||||
"overview.configured": "تم التكوين",
|
||||
"overview.createRelease": "إنشاء إصدار",
|
||||
"overview.created": "تم الإنشاء",
|
||||
"overview.deploy": "نشر",
|
||||
"overview.deployedEnvironments": "منشور",
|
||||
"overview.deploymentOverview": "نظرة عامة على النشر",
|
||||
"overview.deploymentStatus": "حالة النشر",
|
||||
"overview.description": "الوصف",
|
||||
"overview.developerApi": "واجهة API للمطورين",
|
||||
"overview.disabled": "معطل",
|
||||
"overview.emptyValue": "غير محدد",
|
||||
"overview.enabled": "ممكّن",
|
||||
"overview.enabledChannels": "تم تمكين الوصول",
|
||||
"overview.endUserAccess": "وصول المستخدم النهائي",
|
||||
"overview.environments": "البيئات",
|
||||
"overview.hero.byName": "بواسطة {{name}}",
|
||||
"overview.hero.empty": "لا توجد إصدارات بعد",
|
||||
"overview.hero.emptyDescription": "أنشئ إصدارًا من المصدر الحالي قبل النشر.",
|
||||
"overview.hero.propagation_one": "تم النشر إلى {{count}}/{{total}} بيئة",
|
||||
"overview.hero.propagation_other": "تم النشر إلى {{count}}/{{total}} بيئات",
|
||||
"overview.hero.untargeted": "لم يتم تكوين بيئات بعد",
|
||||
"overview.instanceDetails": "تفاصيل النشر",
|
||||
"overview.instanceId": "معرف النشر",
|
||||
"overview.latestRelease.releaseCount_one": "{{count}} إصدار",
|
||||
"overview.latestRelease.releaseCount_other": "{{count}} إصدارات",
|
||||
"overview.latestReleaseTitle": "أحدث إصدار",
|
||||
"overview.manageDeployments": "إدارة عمليات النشر",
|
||||
"overview.name": "الاسم",
|
||||
"overview.noAccessConfig": "لا يوجد تكوين للوصول.",
|
||||
"overview.noReleaseYet": "أنشئ إصدارًا قبل النشر إلى بيئة.",
|
||||
"overview.notConfigured": "لم يتم التكوين",
|
||||
"overview.previousReleases.empty": "لا توجد إصدارات سابقة بعد.",
|
||||
"overview.previousReleases.retired": "غير منشور حاليًا",
|
||||
"overview.previousReleases.title": "الإصدارات السابقة",
|
||||
"overview.previousReleases.viewAll": "عرض الكل",
|
||||
"overview.ready": "قابل للنشر",
|
||||
"overview.recentReleases": "الإصدارات الأخيرة",
|
||||
"overview.releaseDeployedTitle": "{{release}} منشور",
|
||||
"overview.releaseReadyTitle": "{{release}} جاهز للنشر",
|
||||
"overview.serviceMap": "خريطة الخدمة",
|
||||
"overview.servingRelease": "يخدم {{release}}",
|
||||
"overview.servingReleaseDescription": "هذا النشر منشور إلى {{count}}/{{total}} بيئات.",
|
||||
"overview.strip.deployToNewEnvironment": "النشر إلى بيئة جديدة",
|
||||
"overview.strip.empty": "لم يتم تكوين بيئات.",
|
||||
"overview.strip.emptyDeployableDescription": "انشر أحدث إصدار إلى بيئة عندما تكون جاهزًا.",
|
||||
"overview.strip.emptyDeployed": "لا توجد مثيلات بعد.",
|
||||
"overview.strip.emptyDescription": "أنشئ إصدارًا قبل النشر إلى بيئة.",
|
||||
"overview.strip.emptyTitle": "لا توجد مثيلات بعد",
|
||||
"overview.strip.summary_one": "1 من {{total}} على أحدث إصدار",
|
||||
"overview.strip.summary_other": "{{count}} من {{total}} على أحدث إصدار",
|
||||
"overview.strip.title": "المثيلات",
|
||||
"overview.switchSourceApp": "تبديل المصدر",
|
||||
"overview.switchSourceAppDescription": "اختر تطبيق Workflow المستخدم كمصدر للإصدارات المستقبلية.",
|
||||
"overview.switchSourceAppHint": "بعد التبديل، تستخدم الإصدارات المنشأة حديثًا فقط المصدر الجديد. لا تتغير الإصدارات التاريخية وعمليات النشر الحالية.",
|
||||
"overview.targetRelease": "الإصدار المستهدف",
|
||||
"overview.webapp": "WebApp",
|
||||
"settings.danger": "منطقة الخطر",
|
||||
"settings.dangerDesc": "احذف هذا النشر نهائيًا وأوقف أي مثيلات قيد التشغيل. لا يمكن التراجع عن ذلك.",
|
||||
"settings.delete": "حذف النشر",
|
||||
"settings.deleteConfirmDesc": "هل تريد حذف {{name}}؟ سيتوقف كل مثيل عن العمل وستتم إزالته من جميع البيئات. لا يمكن التراجع عن ذلك.",
|
||||
"settings.deleteConfirmTitle": "حذف النشر",
|
||||
"settings.deleteFailed": "فشل في حذف النشر.",
|
||||
"settings.deleteImpact": "التأثير",
|
||||
"settings.deleteImpactInstance": "النشر",
|
||||
"settings.deleteImpactTitle": "النشر المتأثر",
|
||||
"settings.deleteImpactValue": "تتم إزالة النشر من قائمة عمليات النشر.",
|
||||
"settings.deleted": "تم حذف النشر",
|
||||
"settings.description": "الوصف",
|
||||
"settings.descriptionHelp": "إدارة اسم هذا النشر ووصفه والإعدادات الأخرى.",
|
||||
"settings.general": "عام",
|
||||
"settings.name": "اسم النشر",
|
||||
"settings.reset": "إعادة تعيين",
|
||||
"settings.save": "حفظ التغييرات",
|
||||
"settings.updateFailed": "فشل في تحديث النشر.",
|
||||
"settings.updated": "تم تحديث النشر",
|
||||
@ -520,7 +313,6 @@
|
||||
"status.RUNTIME_INSTANCE_STATUS_UNDEPLOYED": "غير منشور",
|
||||
"status.RUNTIME_INSTANCE_STATUS_UNDEPLOYING": "جاري إلغاء النشر",
|
||||
"status.RUNTIME_INSTANCE_STATUS_UNSPECIFIED": "غير معروف",
|
||||
"subtitle": "إدارة عمليات النشر عبر البيئات.",
|
||||
"tabs.access.description": "إدارة قنوات الوصول وأذونات الوصول.",
|
||||
"tabs.access.name": "الوصول",
|
||||
"tabs.api-tokens.description": "إدارة رموز API واستدعاء المثيلات عبر HTTP.",
|
||||
@ -531,9 +323,6 @@
|
||||
"tabs.overview.name": "نظرة عامة",
|
||||
"tabs.releases.description": "إنشاء ونشر وإدارة الإصدارات.",
|
||||
"tabs.releases.name": "الإصدارات",
|
||||
"tabs.settings.description": "إدارة اسم هذا النشر ووصفه والإعدادات الأخرى.",
|
||||
"tabs.settings.name": "الإعدادات",
|
||||
"title": "عمليات النشر",
|
||||
"unsupportedDslNodes.description": "يحتوي هذا الإصدار على عقد لا يدعمها وقت تشغيل النشر بعد. قم بإزالتها أو استبدالها في Studio، ثم حاول مرة أخرى.",
|
||||
"unsupportedDslNodes.descriptionWithTypes": "يحتوي هذا الإصدار على عقد لا يدعمها وقت تشغيل النشر بعد: {{nodeTypes}}. قم بإزالتها أو استبدالها في Studio، ثم حاول مرة أخرى.",
|
||||
"unsupportedDslNodes.title": "عقد غير مدعومة",
|
||||
@ -544,7 +333,6 @@
|
||||
"versions.checkingReleaseContent": "جاري التحقق من محتوى الإصدار...",
|
||||
"versions.col.action": "الإجراء",
|
||||
"versions.col.author": "أنشئ بواسطة",
|
||||
"versions.col.commit": "Commit",
|
||||
"versions.col.createdAt": "تم الإنشاء في",
|
||||
"versions.col.deployedTo": "تم النشر إلى",
|
||||
"versions.col.release": "الإصدار",
|
||||
@ -554,20 +342,14 @@
|
||||
"versions.createFailed": "فشل في إنشاء الإصدار.",
|
||||
"versions.createRelease": "إنشاء إصدار",
|
||||
"versions.createReleaseDescription": "أنشئ إصدارًا قابلاً للنشر من تطبيق Workflow أو ملف Workflow DSL.",
|
||||
"versions.createReleaseHint": "يمكن نشر الإصدارات الجديدة إلى أي بيئة.",
|
||||
"versions.createSuccess": "تم إنشاء الإصدار \"{{name}}\".",
|
||||
"versions.creating": "جاري الإنشاء...",
|
||||
"versions.currentOn": "الإصدار الحالي على {{name}}",
|
||||
"versions.deleteConfirmDesc": "سيتم حذف الإصدار \"{{name}}\" نهائيًا. لا يمكن التراجع عن ذلك.",
|
||||
"versions.deleteConfirmTitle": "حذف الإصدار؟",
|
||||
"versions.deleteFailed": "فشل في حذف الإصدار.",
|
||||
"versions.deleteImpactDeployment": "حالة النشر",
|
||||
"versions.deleteImpactNotDeployed": "غير منشور حاليًا",
|
||||
"versions.deleteImpactRelease": "الإصدار",
|
||||
"versions.deleteImpactTitle": "تأثير الحذف",
|
||||
"versions.deleteRelease": "حذف الإصدار",
|
||||
"versions.deleteSuccess": "تم حذف الإصدار \"{{name}}\".",
|
||||
"versions.deploy": "نشر",
|
||||
"versions.deployTo": "النشر إلى {{name}}",
|
||||
"versions.deployedStatus.RUNTIME_INSTANCE_STATUS_DEPLOYING": "جاري النشر",
|
||||
"versions.deployedStatus.RUNTIME_INSTANCE_STATUS_DRIFTED": "المزامنة معلقة",
|
||||
@ -582,7 +364,6 @@
|
||||
"versions.disabledReason.checkingDeployments": "جاري التحقق من استخدام النشر",
|
||||
"versions.disabledReason.current": "هذا الإصدار يعمل بالفعل على {{name}}",
|
||||
"versions.disabledReason.deploying": "انتظر حتى ينتهي النشر النشط",
|
||||
"versions.disabledReason.envDisabled": "هذه البيئة غير قابلة للنشر",
|
||||
"versions.disabledReason.releaseInUse_one": "ألغِ نشر هذا الإصدار من {{count}} بيئة قبل حذفه",
|
||||
"versions.disabledReason.releaseInUse_other": "ألغِ نشر هذا الإصدار من {{count}} بيئات قبل حذفه",
|
||||
"versions.dslReadFailed": "فشل في قراءة ملف DSL. اختر ملفًا آخر وحاول مرة أخرى.",
|
||||
@ -592,27 +373,21 @@
|
||||
"versions.editRelease": "تعديل الإصدار",
|
||||
"versions.editReleaseDescription": "تحديث اسم ووصف هذا الإصدار.",
|
||||
"versions.editSuccess": "تم تحديث الإصدار \"{{name}}\".",
|
||||
"versions.empty": "لا توجد إصدارات متاحة بعد.",
|
||||
"versions.emptyDescription": "أنشئ الإصدار الأول قبل النشر إلى بيئة.",
|
||||
"versions.emptyTitle": "لا توجد إصدارات بعد",
|
||||
"versions.emptyWithCreate": "لا توجد إصدارات بعد. أنشئ أول إصدار قابل للنشر قبل النشر.",
|
||||
"versions.exportDsl": "تصدير DSL",
|
||||
"versions.exportDslFailed": "فشل في تصدير DSL.",
|
||||
"versions.exportingDsl": "جاري التصدير...",
|
||||
"versions.groupHeader.deploy": "نشر",
|
||||
"versions.groupHeader.promote": "نشر",
|
||||
"versions.groupHeader.rollback": "نشر الإصدار السابق",
|
||||
"versions.groupHeader.unavailable": "غير متاح",
|
||||
"versions.manualDslOption": "تحميل DSL",
|
||||
"versions.moreActions": "المزيد من الإجراءات",
|
||||
"versions.optional": "اختياري",
|
||||
"versions.promote": "نشر",
|
||||
"versions.promoteTo": "النشر إلى {{name}}",
|
||||
"versions.releaseAlreadyExists": "يوجد بالفعل إصدار بنفس المحتوى: {{name}}.",
|
||||
"versions.releaseContentCheckFailed": "فشل في التحقق من محتوى الإصدار.",
|
||||
"versions.releaseDescriptionLabel": "الوصف",
|
||||
"versions.releaseDescriptionPlaceholder": "صف هذا الإصدار",
|
||||
"versions.releaseHistory": "سجل الإصدارات",
|
||||
"versions.releaseNameConflict": "يوجد بالفعل إصدار بهذا الاسم. اختر اسمًا آخر.",
|
||||
"versions.releaseNameLabel": "اسم الإصدار",
|
||||
"versions.releaseNamePlaceholder": "اسم الإصدار",
|
||||
|
||||
@ -1,21 +1,10 @@
|
||||
{
|
||||
"applied.activeSubscription.description": "لديك اشتراك نشط. يمكنك استخدام الخصم التعليمي بعد انتهاء صلاحية اشتراكك. تأكيد اشتراكك في <stripeLink>Stripe</stripeLink>.",
|
||||
"applied.description": "تهانينا! لقد قدمت بنجاح طلباً للحصول على الخصم التعليمي.",
|
||||
"applied.noPaymentPermission.description": "ليس لديك صلاحية الدفع في هذه مساحة العمل. يرجى التبديل إلى مساحة عمل حيث يمكنك إدارة الفوترة لاستخدام الخصم التعليمي.",
|
||||
"applied.noPaymentPermission.returnHome": "العودة إلى Dify",
|
||||
"applied.step1.description": "لقد قدمت بنجاح طلباً للحصول على الخصم التعليمي.",
|
||||
"applied.step1.title": "الخطوة 1",
|
||||
"applied.step2.description": "اختر مساحة العمل التي تريد استخدامها مع الخصم التعليمي.",
|
||||
"applied.step2.title": "الخطوة 2",
|
||||
"applied.tabs.activeSubscription": "في الاشتراك",
|
||||
"applied.tabs.eligible": "يمكن الشراء",
|
||||
"applied.tabs.noPaymentPermission": "لا توجد صلاحية دفع",
|
||||
"applied.title": "تم تطبيق الخصم التعليمي",
|
||||
"applied.workspace.plan": "خطة مدفوعة",
|
||||
"applied.workspace.title": "مساحة العمل الحالية",
|
||||
"currentSigned": "تم تسجيل الدخول حاليًا باسم",
|
||||
"educationPricingConfirm.billingPeriod.monthly": "شهري",
|
||||
"educationPricingConfirm.billingPeriod.yearly": "سنوي",
|
||||
"educationPricingConfirm.cancel": "الاحتفاظ بالخطة الحالية",
|
||||
"educationPricingConfirm.continue": "التبديل إلى Professional السنوية",
|
||||
"educationPricingConfirm.description": "ينطبق الخصم التعليمي على خطة Professional السنوية فقط. الاحتفاظ بخطتك الحالية لن يتضمن الخصم.",
|
||||
@ -56,8 +45,6 @@
|
||||
"rejectTitle": "تم رفض التحقق التعليمي الخاص بك في Dify",
|
||||
"submit": "إرسال",
|
||||
"submitError": "فشل إرسال النموذج. يرجى المحاولة مرة أخرى لاحقًا.",
|
||||
"successContent": "لقد أصدرنا كوبون خصم 100٪ لخطة Dify Professional لحسابك. الكوبون ساري لمدة عام واحد، يرجى استخدامه خلال فترة الصلاحية.",
|
||||
"successTitle": "لقد حصلت على التحقق التعليمي من Dify",
|
||||
"toVerified": "احصل على التحقق التعليمي",
|
||||
"toVerifiedTip.coupon": "كوبون حصري 100٪",
|
||||
"toVerifiedTip.end": "لخطة Dify الاحترافية.",
|
||||
|
||||
@ -1,9 +1,4 @@
|
||||
{
|
||||
"acceptPP": "لقد قرأت وأوافق على سياسة الخصوصية",
|
||||
"accountAlreadyInited": "تمت تهيئة الحساب بالفعل",
|
||||
"activated": "سجل الدخول الآن",
|
||||
"activatedTipEnd": "فريق",
|
||||
"activatedTipStart": "لقد انضممت إلى",
|
||||
"adminInitPassword": "كلمة مرور تهيئة المسؤول",
|
||||
"back": "عودة",
|
||||
"backToLogin": "العودة لتسجيل الدخول",
|
||||
@ -17,16 +12,12 @@
|
||||
"checkCode.invalidCode": "رمز غير صالح",
|
||||
"checkCode.resend": "إعادة الإرسال",
|
||||
"checkCode.tipsPrefix": "نرسل رمز التحقق إلى ",
|
||||
"checkCode.useAnotherMethod": "استخدام طريقة أخرى",
|
||||
"checkCode.validTime": "ضع في اعتبارك أن الرمز صالح لمدة 5 دقائق",
|
||||
"checkCode.verificationCode": "رمز التحقق",
|
||||
"checkCode.verificationCodePlaceholder": "أدخل رمزًا مكونًا من 6 أرقام",
|
||||
"checkCode.verify": "تحقق",
|
||||
"checkEmailForResetLink": "يرجى التحقق من بريدك الإلكتروني للحصول على رابط لإعادة تعيين كلمة المرور الخاصة بك. إذا لم يظهر في غضون بضع دقائق، فتأكد من التحقق من مجلد الرسائل غير المرغوب فيها.",
|
||||
"confirmPassword": "تأكيد كلمة المرور",
|
||||
"confirmPasswordPlaceholder": "تأكيد كلمة المرور الجديدة",
|
||||
"continueWithCode": "المتابعة مع الرمز",
|
||||
"createAndSignIn": "إنشاء وتسجيل الدخول",
|
||||
"createSample": "بناءً على هذه المعلومات، سنقوم بإنشاء تطبيق تجريبي لك",
|
||||
"dontHave": "ليس لديك؟",
|
||||
"email": "عنوان البريد الإلكتروني",
|
||||
@ -40,7 +31,6 @@
|
||||
"error.nameEmpty": "الاسم مطلوب",
|
||||
"error.passwordEmpty": "كلمة المرور مطلوبة",
|
||||
"error.passwordInvalid": "يجب أن تحتوي كلمة المرور على أحرف وأرقام، ويجب أن يكون الطول أكبر من 8",
|
||||
"error.passwordLengthInValid": "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل",
|
||||
"error.redirectUrlMissing": "رابط إعادة التوجيه مفقود",
|
||||
"error.registrationNotAllowed": "الحساب غير موجود. يرجى الاتصال بمسؤول النظام للتسجيل.",
|
||||
"explore": "استكشاف Dify",
|
||||
@ -54,7 +44,6 @@
|
||||
"interfaceLanguage": "لغة الواجهة",
|
||||
"invalid": "انتهت صلاحية الرابط",
|
||||
"invalidInvitationCode": "رمز دعوة غير صالح",
|
||||
"invalidToken": "رمز غير صالح أو منتهي الصلاحية",
|
||||
"invitationCode": "رمز الدعوة",
|
||||
"invitationCodePlaceholder": "رمز الدعوة الخاص بك",
|
||||
"join": "انضم ",
|
||||
@ -81,12 +70,9 @@
|
||||
"passwordChangedTip": "تم تغيير كلمة المرور الخاصة بك بنجاح",
|
||||
"passwordPlaceholder": "كلمة المرور الخاصة بك",
|
||||
"pp": "سياسة الخصوصية",
|
||||
"reset": "يرجى تشغيل الأمر التالي لإعادة تعيين كلمة المرور الخاصة بك",
|
||||
"resetLinkSent": "تم إرسال رابط إعادة التعيين",
|
||||
"resetPassword": "إعادة تعيين كلمة المرور",
|
||||
"resetPasswordDesc": "اكتب البريد الإلكتروني الذي استخدمته للتسجيل في Dify وسنرسل لك بريدًا إلكترونيًا لإعادة تعيين كلمة المرور.",
|
||||
"rightDesc": "بناء تطبيقات الذكاء الاصطناعي الجذابة بصريًا والقابلة للتشغيل والقابلة للتحسين بسهولة.",
|
||||
"rightTitle": "أطلق العنان للإمكانات الكاملة لـ LLM",
|
||||
"sendResetLink": "إرسال رابط إعادة التعيين",
|
||||
"sendUsMail": "أرسل لنا مقدمتك عبر البريد الإلكتروني، وسنتعامل مع طلب الدعوة.",
|
||||
"sendVerificationCode": "إرسال رمز التحقق",
|
||||
@ -110,8 +96,6 @@
|
||||
"validate": "تحقق",
|
||||
"webapp.disabled": "مصادقة Webapp معطلة. يرجى الاتصال بمسؤول النظام لتمكينها. يمكنك محاولة استخدام التطبيق مباشرة.",
|
||||
"webapp.login": "تسجيل الدخول",
|
||||
"webapp.noLoginMethod": "طريقة المصادقة غير مكونة لتطبيق الويب",
|
||||
"webapp.noLoginMethodTip": "يرجى الاتصال بمسؤول النظام لإضافة طريقة مصادقة.",
|
||||
"welcome": "👋 مرحبًا! يرجى تسجيل الدخول للبدء.",
|
||||
"withGitHub": "المتابعة مع GitHub",
|
||||
"withGoogle": "المتابعة مع Google",
|
||||
|
||||
@ -21,14 +21,11 @@
|
||||
"accessRule.expandSection": "توسيع {{title}}",
|
||||
"accessRule.individualPermissionSettings": "إعدادات الأذونات الفردية",
|
||||
"accessRule.individualPermissionSettingsTip": "عيّن استثناءات الأذونات لمتعاونين أو مجموعات محددة. تتجاوز هذه الإعدادات مستوى الوصول الافتراضي.",
|
||||
"accessRule.lockedSummary_one": "· {{count}} مقفل",
|
||||
"accessRule.lockedSummary_other": "· {{count}} مقفل",
|
||||
"accessRule.maintainer": "مشرف الصيانة",
|
||||
"accessRule.member": "عضو",
|
||||
"accessRule.newPermissionSet": "مجموعة أذونات جديدة",
|
||||
"accessRule.noAvailableMembers": "لا يوجد أعضاء متاحون للإضافة",
|
||||
"accessRule.noDescription": "لا يوجد وصف",
|
||||
"accessRule.noRoles": "لا توجد أدوار",
|
||||
"accessRule.noRules": "لا توجد قواعد وصول",
|
||||
"accessRule.noUserAccessSettings": "لا توجد إعدادات أذونات فردية",
|
||||
"accessRule.permission": "الإذن",
|
||||
|
||||
@ -1,60 +1,33 @@
|
||||
{
|
||||
"events.actionNum": "{{num}} {{event}} متضمن",
|
||||
"events.description": "الأحداث التي يمكن لمكون المشغل الإضافي هذا الاشتراك فيها",
|
||||
"events.empty": "لا توجد أحداث متاحة",
|
||||
"events.event": "حدث",
|
||||
"events.events": "أحداث",
|
||||
"events.item.noParameters": "لا توجد معلمات",
|
||||
"events.item.parameters": "{{count}} معلمات",
|
||||
"events.output": "إخراج",
|
||||
"events.title": "الأحداث المتاحة",
|
||||
"modal.apiKey.configuration.description": "إعداد معلمات الاشتراك الخاصة بك",
|
||||
"modal.apiKey.configuration.title": "تكوين الاشتراك",
|
||||
"modal.apiKey.title": "إنشاء باستخدام مفتاح API",
|
||||
"modal.apiKey.verify.description": "يرجى تقديم بيانات اعتماد واجهة برمجة التطبيقات الخاصة بك للتحقق من الوصول",
|
||||
"modal.apiKey.verify.error": "فشل التحقق من بيانات الاعتماد. يرجى التحقق من مفتاح API الخاص بك.",
|
||||
"modal.apiKey.verify.success": "تم التحقق من بيانات الاعتماد بنجاح",
|
||||
"modal.apiKey.verify.title": "التحقق من بيانات الاعتماد",
|
||||
"modal.common.authorize": "تفويض",
|
||||
"modal.common.authorizing": "جارٍ التفويض...",
|
||||
"modal.common.back": "رجوع",
|
||||
"modal.common.cancel": "إلغاء",
|
||||
"modal.common.create": "إنشاء",
|
||||
"modal.common.creating": "جارٍ الإنشاء...",
|
||||
"modal.common.next": "التالي",
|
||||
"modal.common.verify": "تحقق",
|
||||
"modal.common.verifying": "جارٍ التحقق...",
|
||||
"modal.errors.authFailed": "فشل التفويض",
|
||||
"modal.errors.createFailed": "فشل إنشاء الاشتراك",
|
||||
"modal.errors.networkError": "خطأ في الشبكة، يرجى المحاولة مرة أخرى",
|
||||
"modal.errors.updateFailed": "فشل في تحديث الاشتراك",
|
||||
"modal.errors.verifyFailed": "فشل التحقق من بيانات الاعتماد",
|
||||
"modal.form.callbackUrl.description": "سيتلقى عنوان URL هذا أحداث web hook",
|
||||
"modal.form.callbackUrl.label": "عنوان URL لرد الاتصال",
|
||||
"modal.form.callbackUrl.placeholder": "جارٍ الإنشاء...",
|
||||
"modal.form.callbackUrl.privateAddressWarning": "يبدو أن عنوان URL هذا هو عنوان داخلي، مما قد يتسبب في فشل طلبات web hook. يمكنك تغيير TRIGGER_URL إلى عنوان عام.",
|
||||
"modal.form.callbackUrl.tooltip": "توفير نقطة نهاية يمكن الوصول إليها بشكل عام يمكنها استلام طلبات رد الاتصال من مزود المشغل.",
|
||||
"modal.form.subscriptionName.label": "اسم الاشتراك",
|
||||
"modal.form.subscriptionName.placeholder": "أدخل اسم الاشتراك",
|
||||
"modal.form.subscriptionName.required": "اسم الاشتراك مطلوب",
|
||||
"modal.manual.description": "تكوين اشتراك web hook الخاص بك يدويًا",
|
||||
"modal.manual.logs.loading": "في انتظار الطلب من {{pluginName}}...",
|
||||
"modal.manual.logs.request": "طلب",
|
||||
"modal.manual.logs.title": "سجلات الطلب",
|
||||
"modal.manual.title": "الإعداد اليدوي",
|
||||
"modal.oauth.authorization.authFailed": "فشل الحصول على معلومات تفويض OAuth",
|
||||
"modal.oauth.authorization.authSuccess": "تم التفويض بنجاح",
|
||||
"modal.oauth.authorization.authorizeButton": "تفويض مع {{provider}}",
|
||||
"modal.oauth.authorization.description": "تفويض Dify للوصول إلى حسابك",
|
||||
"modal.oauth.authorization.redirectUrl": "عنوان URL لإعادة التوجيه",
|
||||
"modal.oauth.authorization.redirectUrlHelp": "استخدم عنوان URL هذا في تكوين تطبيق OAuth الخاص بك",
|
||||
"modal.oauth.authorization.title": "تفويض OAuth",
|
||||
"modal.oauth.authorization.waitingAuth": "في انتظار التفويض...",
|
||||
"modal.oauth.authorization.waitingJump": "تم التفويض، في انتظار الانتقال",
|
||||
"modal.oauth.configuration.description": "إعداد معلمات الاشتراك الخاصة بك بعد التفويض",
|
||||
"modal.oauth.configuration.failed": "فشل تكوين OAuth",
|
||||
"modal.oauth.configuration.success": "تم تكوين OAuth بنجاح",
|
||||
"modal.oauth.configuration.title": "تكوين الاشتراك",
|
||||
"modal.oauth.remove.failed": "فشل إزالة OAuth",
|
||||
"modal.oauth.remove.success": "تمت إزالة OAuth بنجاح",
|
||||
"modal.oauth.save.success": "تم حفظ تكوين OAuth بنجاح",
|
||||
@ -63,29 +36,22 @@
|
||||
"modal.steps.configuration": "تكوين",
|
||||
"modal.steps.verify": "تحقق",
|
||||
"node.status.warning": "قطع الاتصال",
|
||||
"subscription.addType.description": "اختر الطريقة التي تريد بها إنشاء اشتراك المشغل الخاص بك",
|
||||
"subscription.addType.options.apikey.description": "إنشاء اشتراك تلقائيًا باستخدام بيانات اعتماد API",
|
||||
"subscription.addType.options.apikey.title": "إنشاء باستخدام مفتاح API",
|
||||
"subscription.addType.options.manual.description": "الصق عنوان URL لإنشاء اشتراك جديد",
|
||||
"subscription.addType.options.manual.tip": "تكوين عنوان URL على منصة تابعة لجهة خارجية يدويًا",
|
||||
"subscription.addType.options.manual.title": "الإعداد اليدوي",
|
||||
"subscription.addType.options.oauth.clientSettings": "إعدادات عميل OAuth",
|
||||
"subscription.addType.options.oauth.clientTitle": "عميل OAuth",
|
||||
"subscription.addType.options.oauth.custom": "مخصص",
|
||||
"subscription.addType.options.oauth.default": "افتراضي",
|
||||
"subscription.addType.options.oauth.description": "التفويض مع منصة تابعة لجهة خارجية لإنشاء اشتراك",
|
||||
"subscription.addType.options.oauth.title": "إنشاء باستخدام OAuth",
|
||||
"subscription.addType.title": "إضافة اشتراك",
|
||||
"subscription.createButton.apiKey": "اشتراك جديد باستخدام مفتاح API",
|
||||
"subscription.createButton.manual": "الصق عنوان URL لإنشاء اشتراك جديد",
|
||||
"subscription.createButton.oauth": "اشتراك جديد باستخدام OAuth",
|
||||
"subscription.createFailed": "فشل إنشاء الاشتراك",
|
||||
"subscription.createSuccess": "تم إنشاء الاشتراك بنجاح",
|
||||
"subscription.empty.button": "اشتراك جديد",
|
||||
"subscription.empty.title": "لا توجد اشتراكات",
|
||||
"subscription.list.addButton": "إضافة",
|
||||
"subscription.list.item.actions.delete": "حذف",
|
||||
"subscription.list.item.actions.deleteConfirm.cancel": "إلغاء",
|
||||
"subscription.list.item.actions.deleteConfirm.confirm": "تأكيد الحذف",
|
||||
"subscription.list.item.actions.deleteConfirm.confirmInputPlaceholder": "أدخل \"{{name}}\" للتأكيد.",
|
||||
"subscription.list.item.actions.deleteConfirm.confirmInputTip": "يرجى إدخال \"{{name}}\" للتأكيد.",
|
||||
@ -98,21 +64,12 @@
|
||||
"subscription.list.item.actions.edit.error": "فشل في تحديث الاشتراك",
|
||||
"subscription.list.item.actions.edit.success": "تم تحديث الاشتراك بنجاح",
|
||||
"subscription.list.item.actions.edit.title": "تعديل الاشتراك",
|
||||
"subscription.list.item.credentialType.api_key": "مفتاح API",
|
||||
"subscription.list.item.credentialType.oauth2": "OAuth",
|
||||
"subscription.list.item.credentialType.unauthorized": "يدوي",
|
||||
"subscription.list.item.disabled": "معطل",
|
||||
"subscription.list.item.enabled": "ممكن",
|
||||
"subscription.list.item.noUsed": "لا يوجد سير عمل مستخدم",
|
||||
"subscription.list.item.status.active": "نشط",
|
||||
"subscription.list.item.status.inactive": "غير نشط",
|
||||
"subscription.list.item.usedByNum": "تستخدم من قبل {{num}} سير عمل",
|
||||
"subscription.list.tip": "استلام الأحداث عبر الاشتراك",
|
||||
"subscription.list.title": "الاشتراكات",
|
||||
"subscription.listNum": "{{num}} اشتراكات",
|
||||
"subscription.maxCount": "الحد الأقصى {{num}} اشتراكات",
|
||||
"subscription.noSubscriptionSelected": "لم يتم تحديد أي اشتراك",
|
||||
"subscription.selectPlaceholder": "حدد اشتراكًا",
|
||||
"subscription.subscriptionRemoved": "تمت إزالة الاشتراك",
|
||||
"subscription.title": "الاشتراكات"
|
||||
"subscription.subscriptionRemoved": "تمت إزالة الاشتراك"
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
{
|
||||
"actionLogs": "سجلات العمل",
|
||||
"circularInvocationTip": "يوجد استدعاء دائري للأدوات/العقد في سير العمل الحالي.",
|
||||
"detail": "تفاصيل",
|
||||
"input": "إدخال",
|
||||
@ -10,7 +9,6 @@
|
||||
"meta.time": "الوقت المستغرق",
|
||||
"meta.title": "البيانات الوصفية",
|
||||
"meta.tokens": "إجمالي الرموز",
|
||||
"meta.version": "الإصدار",
|
||||
"result": "نتيجة",
|
||||
"resultEmpty.link": "لوحة التفاصيل",
|
||||
"resultEmpty.tipLeft": "يرجى الذهاب إلى ",
|
||||
|
||||
@ -2,8 +2,6 @@
|
||||
"chat.chatFormTip": "لا يمكن تعديل إعدادات الدردشة بعد بدء الدردشة.",
|
||||
"chat.chatSettingsTitle": "إعداد الدردشة الجديدة",
|
||||
"chat.collapse": "طي",
|
||||
"chat.configDisabled": "تم استخدام إعدادات الجلسة السابقة لهذه الجلسة.",
|
||||
"chat.configStatusDes": "قبل البدء، يمكنك تعديل إعدادات المحادثة",
|
||||
"chat.deleteConversation.content": "هل أنت متأكد أنك تريد حذف هذه المحادثة؟",
|
||||
"chat.deleteConversation.title": "حذف المحادثة",
|
||||
"chat.expand": "توسيع",
|
||||
@ -12,27 +10,18 @@
|
||||
"chat.newChatTip": "موجود بالفعل في دردشة جديدة",
|
||||
"chat.pinnedTitle": "مثبت",
|
||||
"chat.poweredBy": "مشغل بواسطة",
|
||||
"chat.privacyPolicyLeft": "يرجى قراءة ",
|
||||
"chat.privacyPolicyMiddle": "سياسة الخصوصية",
|
||||
"chat.privacyPolicyRight": " المقدمة من مطور التطبيق.",
|
||||
"chat.privatePromptConfigTitle": "إعدادات المحادثة",
|
||||
"chat.prompt": "مطالبة",
|
||||
"chat.publicPromptConfigTitle": "المطالبة الأولية",
|
||||
"chat.resetChat": "إعادة تعيين المحادثة",
|
||||
"chat.startChat": "بدء الدردشة",
|
||||
"chat.temporarySystemIssue": "عذرًا، مشكلة مؤقتة في النظام.",
|
||||
"chat.tryToSolve": "حاول الحل",
|
||||
"chat.unpinnedTitle": "الأخيرة",
|
||||
"chat.viewChatSettings": "عرض إعدادات الدردشة",
|
||||
"common.appUnavailable": "التطبيق غير متوفر",
|
||||
"common.appUnknownError": "التطبيق غير متوفر",
|
||||
"common.welcome": "",
|
||||
"generation.batchFailed.info": "{{num}} عمليات تنفيذ فاشلة",
|
||||
"generation.batchFailed.outputPlaceholder": "لا يوجد محتوى إخراج",
|
||||
"generation.batchFailed.retry": "إعادة المحاولة",
|
||||
"generation.browse": "تصفح",
|
||||
"generation.completionResult": "نتيجة الإكمال",
|
||||
"generation.copy": "نسخ",
|
||||
"generation.csvStructureTitle": "يجب أن يتوافق ملف CSV مع الهيكل التالي:",
|
||||
"generation.csvUploadTitle": "اسحب وأفلت ملف CSV هنا، أو ",
|
||||
"generation.downloadTemplate": "تنزيل النموذج هنا",
|
||||
@ -46,9 +35,6 @@
|
||||
"generation.executions": "{{num}} عمليات تشغيل",
|
||||
"generation.field": "حقل",
|
||||
"generation.noData": "سيعطيك الذكاء الاصطناعي ما تريد هنا.",
|
||||
"generation.queryPlaceholder": "اكتب محتوى الاستعلام الخاص بك...",
|
||||
"generation.queryTitle": "محتوى الاستعلام",
|
||||
"generation.resultTitle": "إكمال الذكاء الاصطناعي",
|
||||
"generation.run": "تنفيذ",
|
||||
"generation.savedNoData.description": "ابدأ في إنشاء المحتوى، وابحث عن نتائجك المحفوظة هنا.",
|
||||
"generation.savedNoData.startCreateContent": "ابدأ في إنشاء المحتوى",
|
||||
|
||||
@ -1,12 +1,10 @@
|
||||
{
|
||||
"cancel": "إلغاء",
|
||||
"continueEditing": "متابعة التحرير",
|
||||
"create": "إنشاء مقتطف",
|
||||
"createFailed": "فشل إنشاء المقتطف",
|
||||
"createFrom": "إنشاء من",
|
||||
"createFromBlank": "إنشاء من الفراغ",
|
||||
"currentDSLVersion": "إصدار DSL المدعوم من النظام: ",
|
||||
"defaultName": "مقطع بدون عنوان",
|
||||
"deleteConfirmContent": "لا يمكن التراجع عن هذا. لن تتأثر عمليات سير العمل التي تستخدم هذا المقتطف.",
|
||||
"deleteConfirmTitle": "هل تريد حذف المقتطف؟",
|
||||
"deleteFailed": "فشل حذف المقتطف",
|
||||
@ -16,7 +14,6 @@
|
||||
"discardChangesTitle": "هل تريد تجاهل مسودة التغييرات؟",
|
||||
"discardDraft": "تجاهل المسودة",
|
||||
"doNotSave": "اترك كمسودة",
|
||||
"draft": "مسودة",
|
||||
"dslVersionMismatchDescription": "تم اكتشاف اختلاف كبير في إصدارات DSL. قد يؤدي فرض الاستيراد إلى حدوث خلل في المقتطف.",
|
||||
"dslVersionMismatchQuestion": "هل تريد الاستمرار؟",
|
||||
"dslVersionMismatchTitle": "عدم توافق الإصدار",
|
||||
@ -30,40 +27,25 @@
|
||||
"exportFailed": "فشل تصدير المقتطف.",
|
||||
"importDSLFile": "استيراد ملف دي اس ال",
|
||||
"importDialogTitle": "استيراد مقتطف",
|
||||
"importFailed": "فشل استيراد مقتطف DSL",
|
||||
"importFromDSLFile": "من ملف DSL",
|
||||
"importFromDSLUrl": "من URL",
|
||||
"importFromDSLUrlPlaceholder": "الصق رابط DSL هنا",
|
||||
"importSuccess": "تم استيراد المقتطف",
|
||||
"importedDSLVersion": "إصدار DSL المقتطف الحالي: ",
|
||||
"inputFieldButton": "حقل الإدخال",
|
||||
"inputVariables": "متغيرات الإدخال",
|
||||
"management": "إدارة المقتطفات",
|
||||
"menu.deleteSnippet": "حذف",
|
||||
"menu.editInfo": "تحرير المعلومات",
|
||||
"menu.exportSnippet": "تصدير مقتطف",
|
||||
"notFoundDescription": "لم يتم العثور على نموذج المقتطف المطلوب.",
|
||||
"notFoundTitle": "لم يتم العثور على المقتطف",
|
||||
"panelDescription": "يحدد حقول الإدخال التي تسمح للمقتطف بتلقي البيانات من العقد الأخرى.",
|
||||
"panelPrimaryGroup": "المدخلات الأساسية",
|
||||
"panelSecondaryGroup": "المدخلات الاختيارية",
|
||||
"panelTitle": "حقل الإدخال",
|
||||
"publishButton": "نشر",
|
||||
"publishFailed": "فشل نشر المقتطف",
|
||||
"publishMenuCurrentDraft": "المسودة الحالية غير منشورة",
|
||||
"publishSuccess": "تم نشر المقتطف",
|
||||
"save": "حفظ",
|
||||
"saveAndExit": "حفظ والخروج",
|
||||
"saveBeforeLeavingDescription": "احفظ لجعل هذا الإصدار متاحًا للاستخدام في مهام سير العمل. أو احتفظ بتعديلاتك كمسودة في الوقت الحالي.",
|
||||
"saveBeforeLeavingTitle": "هل تريد حفظ التغييرات قبل المغادرة؟",
|
||||
"saveSuccess": "تم حفظ المقتطف",
|
||||
"sectionOrchestrate": "نسق",
|
||||
"testRunButton": "تشغيل تجريبي",
|
||||
"typeLabel": "مقتطف",
|
||||
"unknownUser": "المستخدم",
|
||||
"unsavedChanges": "لا يتم حفظ التغييرات الحالية.",
|
||||
"updatedBy": "{{name}} تم التحديث {{time}}",
|
||||
"usageCount": "تم الاستخدام {{count}} مرات",
|
||||
"variableInspect": "فحص متغير",
|
||||
"viewOnly": "عرض فقط"
|
||||
}
|
||||
|
||||
@ -1,9 +1,6 @@
|
||||
{
|
||||
"dateFormats.display": "MMMM D, YYYY",
|
||||
"dateFormats.displayWithTime": "MMMM D, YYYY hh:mm A",
|
||||
"dateFormats.input": "YYYY-MM-DD",
|
||||
"dateFormats.output": "YYYY-MM-DD",
|
||||
"dateFormats.outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ",
|
||||
"daysInWeek.Fri": "الجمعة",
|
||||
"daysInWeek.Mon": "الاثنين",
|
||||
"daysInWeek.Sat": "السبت",
|
||||
|
||||
@ -7,12 +7,10 @@
|
||||
"addToolModal.all.title": "لا توجد أدوات متاحة",
|
||||
"addToolModal.built-in.tip": "",
|
||||
"addToolModal.built-in.title": "لا توجد أداة مضمنة متاحة",
|
||||
"addToolModal.category": "فئة",
|
||||
"addToolModal.custom.tip": "إنشاء أداة مخصصة",
|
||||
"addToolModal.custom.title": "لا توجد أداة مخصصة متاحة",
|
||||
"addToolModal.mcp.tip": "إضافة خادم MCP",
|
||||
"addToolModal.mcp.title": "لا توجد أداة MCP متاحة",
|
||||
"addToolModal.type": "نوع",
|
||||
"addToolModal.workflow.tip": "نشر سير العمل كأدوات في الاستوديو",
|
||||
"addToolModal.workflow.title": "لا يوجد أداة سير عمل متاحة",
|
||||
"allMCP": "كل MCP",
|
||||
@ -27,11 +25,7 @@
|
||||
"auth.unauthorized": "غير مصرح",
|
||||
"author": "بواسطة",
|
||||
"builtInPromptTitle": "موجه",
|
||||
"contribute.line1": "أنا مهتم بـ ",
|
||||
"contribute.line2": "المساهمة بأدوات في Dify.",
|
||||
"contribute.viewGuide": "عرض الدليل",
|
||||
"copyToolName": "نسخ الاسم",
|
||||
"createCustomTool": "إنشاء أداة مخصصة",
|
||||
"createSwaggerAPIAsTool": "Create a Swagger API as Tool",
|
||||
"createTool.authHeaderPrefix.title": "نوع المصادقة",
|
||||
"createTool.authHeaderPrefix.types.basic": "أساسي",
|
||||
@ -97,13 +91,11 @@
|
||||
"createTool.toolInput.title": "إدخال الأداة",
|
||||
"createTool.toolNamePlaceHolder": "أدخل اسم الأداة",
|
||||
"createTool.toolOutput.description": "الوصف",
|
||||
"createTool.toolOutput.name": "الاسم",
|
||||
"createTool.toolOutput.reserved": "محجوز",
|
||||
"createTool.toolOutput.reservedParameterDuplicateTip": "text و json و files هي متغيرات محجوزة. لا يمكن أن تظهر المتغيرات بهذه الأسماء في مخطط الإخراج.",
|
||||
"createTool.toolOutput.title": "إخراج الأداة",
|
||||
"createTool.urlError": "يرجى إدخال عنوان URL صالح",
|
||||
"createTool.viewSchemaSpec": "عرض مواصفات OpenAPI-Swagger",
|
||||
"customToolTip": "تعرف على المزيد حول أدوات Dify المخصصة",
|
||||
"howToGet": "كيفية الحصول على",
|
||||
"includeToolNum": "{{num}} {{action}} متضمن",
|
||||
"mcp.authorize": "تفويض",
|
||||
@ -183,25 +175,16 @@
|
||||
"mcp.update": "تحديث",
|
||||
"mcp.updateTime": "محدث",
|
||||
"mcp.updateTools": "جارٍ تحديث الأدوات...",
|
||||
"mcp.updating": "جارٍ التحديث",
|
||||
"noCustomTool.content": "أضف وأدر أدواتك المخصصة هنا لبناء تطبيقات الذكاء الاصطناعي.",
|
||||
"noCustomTool.createTool": "إنشاء أداة",
|
||||
"noCustomTool.title": "لا توجد أدوات مخصصة!",
|
||||
"noSearchRes.content": "لم نتمكن من العثور على أي أدوات تطابق بحثك.",
|
||||
"noSearchRes.reset": "إعادة تعيين البحث",
|
||||
"noSearchRes.title": "عذرًا، لا توجد نتائج!",
|
||||
"noTools": "لم يتم العثور على أدوات",
|
||||
"notAuthorized": "غير مفوض",
|
||||
"openInStudio": "فتح في الاستوديو",
|
||||
"setBuiltInTools.file": "ملف",
|
||||
"setBuiltInTools.info": "معلومات",
|
||||
"setBuiltInTools.infoAndSetting": "المعلومات والإعدادات",
|
||||
"setBuiltInTools.number": "رقم",
|
||||
"setBuiltInTools.parameters": "معلمات",
|
||||
"setBuiltInTools.required": "مطلوب",
|
||||
"setBuiltInTools.setting": "إعداد",
|
||||
"setBuiltInTools.string": "سلسلة",
|
||||
"setBuiltInTools.toolDescription": "وصف الأداة",
|
||||
"swaggerAPIAsToolTip": "Learn more about Swagger API as Tool",
|
||||
"test.parameters": "المعلمات",
|
||||
"test.parametersValue": "المعلمات والقيمة",
|
||||
@ -213,7 +196,6 @@
|
||||
"thought.responseTitle": "استجابة",
|
||||
"thought.used": "مستخدم",
|
||||
"thought.using": "يستخدم",
|
||||
"title": "أدوات",
|
||||
"toolNameUsageTip": "اسم استدعاء الأداة لمنطق الوكيل والتحفيز",
|
||||
"toolRemoved": "تمت إزالة الأداة",
|
||||
"type.builtIn": "أدوات",
|
||||
|
||||
@ -1,29 +1,14 @@
|
||||
{
|
||||
"agentDetail.access.actionUnavailable": "Diese Aktion ist noch nicht verfügbar.",
|
||||
"agentDetail.access.actions.monitoring": "Monitoring",
|
||||
"agentDetail.access.copyAccessUrl": "Zugriffs-URL kopieren",
|
||||
"agentDetail.access.copyFailed": "Referenz konnte nicht kopiert werden.",
|
||||
"agentDetail.access.copyReference": "Referenz für {{name}} kopieren",
|
||||
"agentDetail.access.copyServiceEndpoint": "Service-API-Endpunkt kopieren",
|
||||
"agentDetail.access.description": "Alle Oberflächen, über die dieser Agent erreichbar ist.",
|
||||
"agentDetail.access.empty": "Keine verknüpften Zugangspunkte",
|
||||
"agentDetail.access.emptyDescription": "Dieser Roster-Agent hat noch keine App- oder Workflow-Referenzen.",
|
||||
"agentDetail.access.entries.agentApp.description": "Mit diesem Roster-Agent verknüpfte Agent-App.",
|
||||
"agentDetail.access.entries.agentApp.name": "Agent-App",
|
||||
"agentDetail.access.entries.workflow.description": "Mit diesem Roster-Agent verknüpfte Workflow- und Knotenreferenz.",
|
||||
"agentDetail.access.entries.workflow.name": "Workflow-Knoten",
|
||||
"agentDetail.access.entryCount_one": "{{count}} Eintrag",
|
||||
"agentDetail.access.entryCount_other": "{{count}} Einträge",
|
||||
"agentDetail.access.groups.references.heading": "Referenzen",
|
||||
"agentDetail.access.groups.references.label": "Verknüpfte Referenzen",
|
||||
"agentDetail.access.learnMore": "Mehr erfahren",
|
||||
"agentDetail.access.moreActions": "Weitere Aktionen für {{name}}",
|
||||
"agentDetail.access.serviceApi.actions.apiKey": "API Key",
|
||||
"agentDetail.access.serviceApi.actions.apiReference": "API Reference",
|
||||
"agentDetail.access.serviceApi.endpoint": "Service-API-Endpunkt",
|
||||
"agentDetail.access.serviceApi.title": "Backend-Service-API",
|
||||
"agentDetail.access.status.disabled": "Deaktiviert",
|
||||
"agentDetail.access.status.enabled": "Aktiviert",
|
||||
"agentDetail.access.status.inService": "In Betrieb",
|
||||
"agentDetail.access.status.outOfService": "Außer Betrieb",
|
||||
"agentDetail.access.title": "Zugangspunkt",
|
||||
@ -151,7 +136,6 @@
|
||||
"agentDetail.configure.prompt.insert.tenders": "Ausschreibungen starten",
|
||||
"agentDetail.configure.prompt.label": "Prompt",
|
||||
"agentDetail.configure.prompt.mention.davidHayes": "David Hayes",
|
||||
"agentDetail.configure.prompt.mention.label": "Erwähnen",
|
||||
"agentDetail.configure.prompt.mention.priyaRamanathan": "Priya Ramanathan",
|
||||
"agentDetail.configure.prompt.placeholder": "Anweisungen hier eintragen,",
|
||||
"agentDetail.configure.prompt.tip": "Definieren Sie die Rolle des Agenten und beschreiben Sie seine typische Aufgabe. Verwenden Sie /, um explizit auf Skills, Dateien, Tools und Wissensabrufe zu verweisen.",
|
||||
@ -183,7 +167,6 @@
|
||||
"agentDetail.configure.skills.add": "Skill hinzufügen",
|
||||
"agentDetail.configure.skills.detail.contentRegion": "Skill-Detailinhalt",
|
||||
"agentDetail.configure.skills.detail.fileCount": "{{count}} DATEIEN",
|
||||
"agentDetail.configure.skills.detail.fileTreeLabel": "Skill-Dateien",
|
||||
"agentDetail.configure.skills.detail.files": "Dateien",
|
||||
"agentDetail.configure.skills.empty.description": "Skills geben dem Agenten wiederverwendbare Fachkenntnisse, die er bei der Arbeit nutzen kann",
|
||||
"agentDetail.configure.skills.empty.title": "Noch keine Skills",
|
||||
@ -225,14 +208,11 @@
|
||||
"agentDetail.configure.tools.cliDialog.title": "CLI-Tool hinzufügen",
|
||||
"agentDetail.configure.tools.cliTool": "CLI-Tool",
|
||||
"agentDetail.configure.tools.credential.authOne": "Auth 1",
|
||||
"agentDetail.configure.tools.credential.endUserOAuth": "Endbenutzer · OAuth",
|
||||
"agentDetail.configure.tools.editAction": "{{name}} bearbeiten",
|
||||
"agentDetail.configure.tools.empty.description": "Tools ermöglichen es dem Agenten zu handeln, z. B. das Web zu durchsuchen oder Ihre Apps aufzurufen",
|
||||
"agentDetail.configure.tools.empty.title": "Noch keine Tools",
|
||||
"agentDetail.configure.tools.label": "Tools",
|
||||
"agentDetail.configure.tools.moreActions": "Weitere Aktionen für {{name}}",
|
||||
"agentDetail.configure.tools.pluginType": "Plugin",
|
||||
"agentDetail.configure.tools.preAuthorize": "Vorab autorisieren",
|
||||
"agentDetail.configure.tools.removeAction": "{{name}} entfernen",
|
||||
"agentDetail.configure.tools.removeProvider": "Alle Tools entfernen",
|
||||
"agentDetail.configure.tools.richTip": "Statten Sie Ihren Agenten mit Dify-Plugins aus. Siehe <pluginDocLink>Dokumentation</pluginDocLink>. Verweisen Sie im Prompt explizit mit / darauf.\nAlternativ können Sie den Agenten jederzeit über einen Build-Chat anweisen, andere Tools (z. B. MCPs und CLI-Tools) zu installieren und zu authentifizieren. Beachten Sie, dass über Build-Chats konfigurierte Tools hier NICHT angezeigt werden, Ihrem Agenten künftig aber weiterhin zur Verfügung stehen. Siehe <buildDocLink>Dokumentation</buildDocLink>.",
|
||||
@ -245,11 +225,9 @@
|
||||
"agentDetail.configure.tools.toolTabs.plugins": "Plugins",
|
||||
"agentDetail.configure.tools.toolTabs.workflow": "Workflow",
|
||||
"agentDetail.documentTitle": "Agent",
|
||||
"agentDetail.history": "Verlauf",
|
||||
"agentDetail.logs.description": "Vollständige Logs zeichnen den Laufzeitstatus der Anwendung auf, einschließlich Benutzereingaben, Agentenantworten, Planung und Tool-Nutzung.",
|
||||
"agentDetail.logs.empty": "Keine Logs gefunden",
|
||||
"agentDetail.logs.filters.period.allTime": "Gesamter Zeitraum",
|
||||
"agentDetail.logs.filters.period.label": "Log-Zeitraum",
|
||||
"agentDetail.logs.filters.period.last30days": "Letzte 30 Tage",
|
||||
"agentDetail.logs.filters.period.last7days": "Letzte 7 Tage",
|
||||
"agentDetail.logs.filters.search.label": "Logs durchsuchen",
|
||||
@ -267,7 +245,6 @@
|
||||
"agentDetail.logs.filters.source.workflow": "Workflow",
|
||||
"agentDetail.logs.learnMore": "Mehr erfahren",
|
||||
"agentDetail.logs.loadFailed": "Logs konnten nicht geladen werden",
|
||||
"agentDetail.logs.loading": "Logs werden geladen…",
|
||||
"agentDetail.logs.notAvailable": "Nicht verfügbar",
|
||||
"agentDetail.logs.table.createdTime": "Erstellungszeit",
|
||||
"agentDetail.logs.table.endUser": "Endbenutzer",
|
||||
@ -288,19 +265,7 @@
|
||||
"agentDetail.memorySettings.notConfigured": "Nicht konfiguriert",
|
||||
"agentDetail.memorySettings.scopeLabel": "Speicherbereich",
|
||||
"agentDetail.memorySettings.title": "Speicher",
|
||||
"agentDetail.metadata.activeVersionLabel": "Aktive Version",
|
||||
"agentDetail.metadata.appIdLabel": "App-ID",
|
||||
"agentDetail.metadata.description": "Schreibgeschützte Roster-Felder, die vom Agenten-Backend zurückgegeben werden.",
|
||||
"agentDetail.metadata.emptyValue": "Nicht verfügbar",
|
||||
"agentDetail.metadata.scopeLabel": "Geltungsbereich",
|
||||
"agentDetail.metadata.scopes.roster": "Roster",
|
||||
"agentDetail.metadata.scopes.workflow_only": "Nur Workflow",
|
||||
"agentDetail.metadata.sourceLabel": "Quelle",
|
||||
"agentDetail.metadata.statusLabel": "Status",
|
||||
"agentDetail.metadata.title": "Metadaten",
|
||||
"agentDetail.metadata.updatedAtLabel": "Aktualisiert am",
|
||||
"agentDetail.metadata.workflowIdLabel": "Workflow-ID",
|
||||
"agentDetail.metadata.workflowNodeIdLabel": "Workflow-Knoten-ID",
|
||||
"agentDetail.monitoring.change": "{{value}} im Vergleich zum Vorzeitraum",
|
||||
"agentDetail.monitoring.dateRangeLabel": "Datumsbereich",
|
||||
"agentDetail.monitoring.description": "Verfolgen Sie Aktivität, Kosten und Interaktionsqualität des wiederverwendbaren Agenten über Workflows hinweg.",
|
||||
@ -334,15 +299,12 @@
|
||||
"agentDetail.monitoring.units.tokenPerSecond": "Token/s",
|
||||
"agentDetail.navigationLabel": "Agenten-Navigation",
|
||||
"agentDetail.publish": "Veröffentlichen",
|
||||
"agentDetail.publishSoon": "Demnächst",
|
||||
"agentDetail.sections.access": "Zugangspunkt",
|
||||
"agentDetail.sections.configure": "Konfigurieren",
|
||||
"agentDetail.sections.logs": "Logs",
|
||||
"agentDetail.sections.monitoring": "Monitoring",
|
||||
"agentDetail.subtitle": "Agent-ID: {{agentId}}",
|
||||
"agentDetail.title": "Agent",
|
||||
"agentDetail.type": "AGENT",
|
||||
"agentDetail.versionHistory.active": "Aktiv",
|
||||
"agentDetail.versionHistory.empty": "Noch keine Versionen",
|
||||
"agentDetail.versionHistory.exitVersions": "Versionen verlassen",
|
||||
"agentDetail.versionHistory.filter": "Versionen filtern",
|
||||
@ -350,7 +312,6 @@
|
||||
"agentDetail.versionHistory.versionName": "Version {{version}}",
|
||||
"agentDetail.versionHistory.viewOnly": "Nur anzeigen",
|
||||
"roster.createAgent": "Agent erstellen",
|
||||
"roster.createAgentOptions": "Optionen zum Erstellen eines Agenten",
|
||||
"roster.createDialog.description": "Erstellen Sie einen wiederverwendbaren Agenten im Roster dieses Workspaces.",
|
||||
"roster.createDialog.title": "Agent erstellen",
|
||||
"roster.createForm.changeIcon": "Agenten-Symbol ändern",
|
||||
@ -377,9 +338,7 @@
|
||||
"roster.editDialog.title": "Agent bearbeiten",
|
||||
"roster.editInfo": "Info bearbeiten",
|
||||
"roster.empty": "Noch kein Agent",
|
||||
"roster.emptyDescription": "In diesem Workspace gespeicherte Agenten erscheinen hier.",
|
||||
"roster.emptySearch": "Keine passenden Agenten",
|
||||
"roster.emptySearchDescription": "Versuchen Sie einen anderen Agentennamen.",
|
||||
"roster.filters.all": "Alle",
|
||||
"roster.filters.drafts": "Entwürfe",
|
||||
"roster.filters.label": "Agentenfilter",
|
||||
@ -403,12 +362,6 @@
|
||||
"roster.saveToRosterSuccess": "Agent saved to roster.",
|
||||
"roster.searchLabel": "Agenten suchen",
|
||||
"roster.searchPlaceholder": "Agenten nach Namen suchen…",
|
||||
"roster.sources.agent_app": "Agent-App",
|
||||
"roster.sources.imported": "Importiert",
|
||||
"roster.sources.system": "System",
|
||||
"roster.sources.workflow": "Workflow",
|
||||
"roster.status.active": "Aktiv",
|
||||
"roster.status.archived": "Archiviert",
|
||||
"roster.tabs.agent": "Agent",
|
||||
"roster.tabs.human": "Mensch",
|
||||
"roster.tabsLabel": "Roster-Typ",
|
||||
|
||||
@ -5,24 +5,16 @@
|
||||
"addModal.queryName": "Frage",
|
||||
"addModal.queryPlaceholder": "Anfrage hier eingeben",
|
||||
"addModal.title": "Antwort Anmerkung hinzufügen",
|
||||
"batchAction.cancel": "Abbrechen",
|
||||
"batchAction.delete": "Löschen",
|
||||
"batchAction.selected": "Ausgewählt",
|
||||
"batchModal.answer": "Antwort",
|
||||
"batchModal.browse": "durchsuchen",
|
||||
"batchModal.cancel": "Abbrechen",
|
||||
"batchModal.completed": "Import abgeschlossen",
|
||||
"batchModal.content": "Inhalt",
|
||||
"batchModal.contentTitle": "Inhaltsabschnitt",
|
||||
"batchModal.csvUploadTitle": "Ziehen Sie Ihre CSV-Datei hierher oder ",
|
||||
"batchModal.error": "Importfehler",
|
||||
"batchModal.ok": "OK",
|
||||
"batchModal.processing": "In Batch-Verarbeitung",
|
||||
"batchModal.question": "Frage",
|
||||
"batchModal.run": "Batch ausführen",
|
||||
"batchModal.runError": "Batch-Ausführung fehlgeschlagen",
|
||||
"batchModal.template": "Laden Sie die Vorlage hier herunter",
|
||||
"batchModal.tip": "Die CSV-Datei muss der folgenden Struktur entsprechen:",
|
||||
"batchModal.title": "Massenimport",
|
||||
"editBy": "Antwort bearbeitet von {{author}}",
|
||||
"editModal.answerName": "Geschichtenerzähler Bot",
|
||||
|
||||
@ -11,62 +11,14 @@
|
||||
"apiKeyModal.lastUsed": "ZULETZT VERWENDET",
|
||||
"apiKeyModal.secretKey": "Geheimschlüssel",
|
||||
"apiServer": "API Server",
|
||||
"chatMode.blocking": "Blockierender Typ, wartet auf die Fertigstellung der Ausführung und gibt Ergebnisse zurück. (Anfragen können unterbrochen werden, wenn der Prozess lang ist)",
|
||||
"chatMode.chatMsgHistoryApi": "Chatverlaufsnachricht abrufen",
|
||||
"chatMode.chatMsgHistoryApiTip": "Die erste Seite gibt die neuesten `limit` Einträge in umgekehrter Reihenfolge zurück.",
|
||||
"chatMode.chatMsgHistoryConversationIdTip": "Konversations-ID",
|
||||
"chatMode.chatMsgHistoryFirstId": "ID des ersten Chat-Datensatzes auf der aktuellen Seite. Standardmäßig keiner.",
|
||||
"chatMode.chatMsgHistoryLimit": "Wie viele Chats in einer Anfrage zurückgegeben werden",
|
||||
"chatMode.conversationIdTip": "(Optional) Konversations-ID: für erstmalige Konversation leer lassen; conversation_id aus dem Kontext übergeben, um den Dialog fortzusetzen.",
|
||||
"chatMode.conversationRenamingApi": "Konversation umbenennen",
|
||||
"chatMode.conversationRenamingApiTip": "Konversationen umbenennen; der Name wird in Mehrsitzungs-Client-Schnittstellen angezeigt.",
|
||||
"chatMode.conversationRenamingNameTip": "Neuer Name",
|
||||
"chatMode.conversationsListApi": "Konversationsliste abrufen",
|
||||
"chatMode.conversationsListApiTip": "Ruft die Sitzungsliste des aktuellen Benutzers ab. Standardmäßig werden die letzten 20 Sitzungen zurückgegeben.",
|
||||
"chatMode.conversationsListFirstIdTip": "Die ID des letzten Datensatzes auf der aktuellen Seite, standardmäßig keine.",
|
||||
"chatMode.conversationsListLimitTip": "Wie viele Chats in einer Anfrage zurückgegeben werden",
|
||||
"chatMode.createChatApi": "Chatnachricht erstellen",
|
||||
"chatMode.createChatApiTip": "Eine neue Konversationsnachricht erstellen oder einen bestehenden Dialog fortsetzen.",
|
||||
"chatMode.info": "Für vielseitige Gesprächsanwendungen im Q&A-Format rufen Sie die chat-messages API auf, um einen Dialog zu initiieren. Führen Sie laufende Gespräche fort, indem Sie die zurückgegebene conversation_id übergeben. Antwortparameter und -vorlagen hängen von den Einstellungen in Dify Prompt Eng. ab.",
|
||||
"chatMode.inputsTips": "(Optional) Geben Sie Benutzereingabefelder als Schlüssel-Wert-Paare an, die Variablen in Prompt Eng. entsprechen. Schlüssel ist der Variablenname, Wert ist der Parameterwert. Wenn der Feldtyp Select ist, muss der übermittelte Wert eine der voreingestellten Optionen sein.",
|
||||
"chatMode.messageFeedbackApi": "Nachrichtenfeedback des Endbenutzers, like",
|
||||
"chatMode.messageFeedbackApiTip": "Bewerten Sie empfangene Nachrichten im Namen der Endbenutzer mit Likes oder Dislikes. Diese Daten sind auf der Seite Logs & Annotations sichtbar und werden für zukünftige Modellanpassungen verwendet.",
|
||||
"chatMode.messageIDTip": "Nachrichten-ID",
|
||||
"chatMode.parametersApi": "Anwendungsparameterinformationen abrufen",
|
||||
"chatMode.parametersApiTip": "Abrufen konfigurierter Eingabeparameter, einschließlich Variablennamen, Feldnamen, Typen und Standardwerten. Typischerweise verwendet, um diese Felder in einem Formular anzuzeigen oder Standardwerte nach dem Laden des Clients auszufüllen.",
|
||||
"chatMode.queryTips": "Inhalt der Benutzereingabe/Frage",
|
||||
"chatMode.ratingTip": "like oder dislike, null ist rückgängig machen",
|
||||
"chatMode.streaming": "Streaming Rückgaben. Implementierung der Streaming-Rückgabe basierend auf SSE (Server-Sent Events).",
|
||||
"chatMode.title": "Chat App API",
|
||||
"completionMode.blocking": "Blockierender Typ, wartet auf die Fertigstellung der Ausführung und gibt Ergebnisse zurück. (Anfragen können unterbrochen werden, wenn der Prozess lang ist)",
|
||||
"completionMode.createCompletionApi": "Completion Nachricht erstellen",
|
||||
"completionMode.createCompletionApiTip": "Erstellen Sie eine Completion Nachricht, um den Frage-Antwort-Modus zu unterstützen.",
|
||||
"completionMode.info": "Für die Erzeugung von hochwertigem Text, wie z.B. Artikel, Zusammenfassungen und Übersetzungen, verwenden Sie die Completion-Messages API mit Benutzereingaben. Die Texterzeugung basiert auf den Modellparametern und Vorlagen für Aufforderungen in Dify Prompt Engineering.",
|
||||
"completionMode.inputsTips": "(Optional) Geben Sie Benutzereingabefelder als Schlüssel-Wert-Paare an, die Variablen in Prompt Eng. entsprechen. Schlüssel ist der Variablenname, Wert ist der Parameterwert. Wenn der Feldtyp Select ist, muss der übermittelte Wert eine der voreingestellten Optionen sein.",
|
||||
"completionMode.messageFeedbackApi": "Nachrichtenfeedback (Like)",
|
||||
"completionMode.messageFeedbackApiTip": "Bewerten Sie empfangene Nachrichten im Namen der Endbenutzer mit Likes oder Dislikes. Diese Daten sind auf der Seite Logs & Annotations sichtbar und werden für zukünftige Modellanpassungen verwendet.",
|
||||
"completionMode.messageIDTip": "Nachrichten-ID",
|
||||
"completionMode.parametersApi": "Anwendungsparameterinformationen abrufen",
|
||||
"completionMode.parametersApiTip": "Abrufen konfigurierter Eingabeparameter, einschließlich Variablennamen, Feldnamen, Typen und Standardwerten. Typischerweise verwendet, um diese Felder in einem Formular anzuzeigen oder Standardwerte nach dem Laden des Clients auszufüllen.",
|
||||
"completionMode.queryTips": "Textinhalt der Benutzereingabe.",
|
||||
"completionMode.ratingTip": "like oder dislike, null ist rückgängig machen",
|
||||
"completionMode.streaming": "Streaming Rückgaben. Implementierung der Streaming-Rückgabe basierend auf SSE (Server-Sent Events).",
|
||||
"completionMode.title": "Completion App API",
|
||||
"copied": "Kopiert",
|
||||
"copy": "Kopieren",
|
||||
"develop.noContent": "Kein Inhalt",
|
||||
"develop.pathParams": "Pfadparameter",
|
||||
"develop.query": "Anfrage",
|
||||
"develop.requestBody": "Anfragekörper",
|
||||
"develop.toc": "Inhalt",
|
||||
"disabled": "Deaktiviert",
|
||||
"loading": "Laden",
|
||||
"merMaid.rerender": "Neu rendern",
|
||||
"never": "Nie",
|
||||
"ok": "In Betrieb",
|
||||
"pause": "Pause",
|
||||
"play": "Abspielen",
|
||||
"playing": "Wiedergabe",
|
||||
"regenerate": "Erneuern",
|
||||
"status": "Status"
|
||||
"playing": "Wiedergabe"
|
||||
}
|
||||
|
||||
@ -1,24 +1,17 @@
|
||||
{
|
||||
"agentLog": "Agentenprotokoll",
|
||||
"agentLogDetail.agentMode": "Agentenmodus",
|
||||
"agentLogDetail.finalProcessing": "Endverarbeitung",
|
||||
"agentLogDetail.iteration": "Iteration",
|
||||
"agentLogDetail.iterations": "Iterationen",
|
||||
"agentLogDetail.toolUsed": "Verwendetes Werkzeug",
|
||||
"dateFormat": "MM/DD/YYYY",
|
||||
"dateTimeFormat": "MM/DD/YYYY hh:mm:ss A",
|
||||
"description": "Die Protokolle zeichnen den Betriebsstatus der Anwendung auf, einschließlich Benutzereingaben und KI-Antworten.",
|
||||
"detail.annotationTip": "Verbesserungen markiert von {{user}}",
|
||||
"detail.conversationId": "Konversations-ID",
|
||||
"detail.loading": "lädt",
|
||||
"detail.modelParams": "Modellparameter",
|
||||
"detail.operation.addAnnotation": "Verbesserung hinzufügen",
|
||||
"detail.operation.annotationPlaceholder": "Geben Sie die erwartete Antwort ein, die Sie möchten, dass die KI antwortet, welche für die Feinabstimmung des Modells und die kontinuierliche Verbesserung der Qualität der Textgenerierung in Zukunft verwendet werden kann.",
|
||||
"detail.operation.dislike": "gefällt mir nicht",
|
||||
"detail.operation.editAnnotation": "Verbesserung bearbeiten",
|
||||
"detail.operation.like": "gefällt mir",
|
||||
"detail.promptTemplate": "Prompt-Vorlage",
|
||||
"detail.promptTemplateBeforeChat": "Prompt-Vorlage vor dem Chat · Als Systemnachricht",
|
||||
"detail.second": "s",
|
||||
"detail.time": "Zeit",
|
||||
"detail.timeConsuming": "",
|
||||
@ -43,7 +36,6 @@
|
||||
"filter.period.yearToDate": "Jahr bis heute",
|
||||
"filter.sortBy": "Sortieren nach:",
|
||||
"monitoring.description": "Das Monitoring zeichnet den Betriebsstatus der Anwendung auf, einschließlich Leistung, Nutzeraktivität und Kosten.",
|
||||
"promptLog": "Prompt-Protokoll",
|
||||
"runDetail.fileListDetail": "Detail",
|
||||
"runDetail.fileListLabel": "Details zur Datei",
|
||||
"runDetail.testWithParams": "Test mit Parametern",
|
||||
@ -68,9 +60,6 @@
|
||||
"table.header.updatedTime": "Aktualisierungszeit",
|
||||
"table.header.user": "Endbenutzer oder Konto",
|
||||
"table.header.userRate": "Benutzerbewertung",
|
||||
"table.header.version": "VERSION",
|
||||
"table.pagination.next": "Nächste",
|
||||
"table.pagination.previous": "Vorherige",
|
||||
"title": "Protokolle",
|
||||
"triggerBy.appRun": "Webanwendung",
|
||||
"triggerBy.debugging": "Fehlerbehebung",
|
||||
@ -79,7 +68,6 @@
|
||||
"triggerBy.ragPipelineRun": "RAG-Pipeline",
|
||||
"triggerBy.schedule": "Zeitplan",
|
||||
"triggerBy.webhook": "Webhook",
|
||||
"viewLog": "Protokoll anzeigen",
|
||||
"workflowSubtitle": "Das Protokoll hat den Vorgang von Automate aufgezeichnet.",
|
||||
"workflowTitle": "Workflow-Protokolle"
|
||||
}
|
||||
|
||||
@ -32,9 +32,6 @@
|
||||
"appSelector.noParams": "Keine Parameter erforderlich",
|
||||
"appSelector.params": "APP-PARAMETER",
|
||||
"appSelector.placeholder": "Wählen Sie eine App aus...",
|
||||
"communityIntro": "Diskutieren Sie mit Teammitgliedern, Mitwirkenden und Entwicklern auf verschiedenen Kanälen.",
|
||||
"createApp": "Neue App erstellen",
|
||||
"createFromConfigFile": "App aus Konfigurationsdatei erstellen",
|
||||
"deleteAppConfirmContent": "Das Löschen der App ist unwiderruflich. Nutzer werden keinen Zugang mehr zu Ihrer App haben, und alle Prompt-Konfigurationen und Logs werden dauerhaft gelöscht.",
|
||||
"deleteAppConfirmInputLabel": "Geben Sie zur Bestätigung <appName>{{appName}}</appName> in das Feld unten ein:",
|
||||
"deleteAppConfirmInputPlaceholder": "App-Namen eingeben…",
|
||||
@ -51,7 +48,6 @@
|
||||
"exportFailed": "Fehler beim Exportieren von DSL.",
|
||||
"filterEmpty.noApps": "Hier gibt es keine Apps",
|
||||
"firstEmpty.blankDescription": "Beginne mit einer leeren Arbeitsfläche, wenn du weißt, was du bauen möchtest.",
|
||||
"firstEmpty.description": "Verwandle eine Idee in eine funktionierende KI-App — starte leer, mit einer Vorlage oder importiere eine bestehende App.",
|
||||
"firstEmpty.importDescription": "Stelle eine App aus einer Dify-DSL-Definitionsdatei wieder her.",
|
||||
"firstEmpty.learnDifyTitle": "Dify lernen",
|
||||
"firstEmpty.or": "Oder",
|
||||
@ -60,34 +56,24 @@
|
||||
"gotoAnything.actions.accountDesc": "Gehe zur Kontoseite",
|
||||
"gotoAnything.actions.communityDesc": "Offene Discord-Community",
|
||||
"gotoAnything.actions.createCategoryDesc": "Erstellen Sie einen KI-generierten Workflow oder Chatflow",
|
||||
"gotoAnything.actions.createCategoryTitle": "Erstellen",
|
||||
"gotoAnything.actions.createChatflow": "Chatfluss",
|
||||
"gotoAnything.actions.createChatflowDesc": "Generieren Sie eine Chatflow-App (erweiterter Chat) aus einer Beschreibung",
|
||||
"gotoAnything.actions.createWorkflow": "Arbeitsablauf",
|
||||
"gotoAnything.actions.createWorkflowDesc": "Generieren Sie eine Workflow-App aus einer Beschreibung",
|
||||
"gotoAnything.actions.docDesc": "Öffnen Sie die Hilfedokumentation",
|
||||
"gotoAnything.actions.feedbackDesc": "Offene Diskussionen zum Feedback der Gemeinschaft",
|
||||
"gotoAnything.actions.languageCategoryDesc": "Wechseln Sie die Schnittstellensprache",
|
||||
"gotoAnything.actions.languageCategoryTitle": "Sprache",
|
||||
"gotoAnything.actions.languageChangeDesc": "UI-Sprache ändern",
|
||||
"gotoAnything.actions.refineCategoryDesc": "Verfeinern Sie den aktuellen Workflow oder das Chatflow-Diagramm",
|
||||
"gotoAnything.actions.refineDesc": "Beschreiben Sie eine Änderung, die auf den aktuellen Entwurf angewendet werden soll",
|
||||
"gotoAnything.actions.refineTitle": "Aktuelles Diagramm verfeinern",
|
||||
"gotoAnything.actions.runDesc": "Führen Sie schnelle Befehle aus (Thema, Sprache, ...)",
|
||||
"gotoAnything.actions.runTitle": "Befehle",
|
||||
"gotoAnything.actions.searchApplications": "Anwendungen durchsuchen",
|
||||
"gotoAnything.actions.searchApplicationsDesc": "Suchen und navigieren Sie zu Ihren Anwendungen",
|
||||
"gotoAnything.actions.searchKnowledgeBases": "Wissensdatenbanken durchsuchen",
|
||||
"gotoAnything.actions.searchKnowledgeBasesDesc": "Suchen und navigieren Sie zu Ihren Wissensdatenbanken",
|
||||
"gotoAnything.actions.searchPlugins": "Integrationen durchsuchen",
|
||||
"gotoAnything.actions.searchPluginsDesc": "Suchen und navigieren Sie zu Ihren Integrationen",
|
||||
"gotoAnything.actions.searchWorkflowNodes": "Workflow-Knoten durchsuchen",
|
||||
"gotoAnything.actions.searchWorkflowNodesDesc": "Suchen und Springen zu Knoten im aktuellen Workflow nach Name oder Typ",
|
||||
"gotoAnything.actions.searchWorkflowNodesHelp": "Diese Funktion funktioniert nur, wenn ein Workflow angezeigt wird. Navigieren Sie zuerst zu einem Workflow.",
|
||||
"gotoAnything.actions.slashDesc": "Führen Sie Befehle wie /theme, /lang aus",
|
||||
"gotoAnything.actions.slashTitle": "Befehle",
|
||||
"gotoAnything.actions.themeCategoryDesc": "Anwendungsthema wechseln",
|
||||
"gotoAnything.actions.themeCategoryTitle": "Thema",
|
||||
"gotoAnything.actions.themeDark": "Dunkles Thema",
|
||||
"gotoAnything.actions.themeDarkDesc": "Verwenden Sie das dunkle Erscheinungsbild",
|
||||
"gotoAnything.actions.themeLight": "Helles Design",
|
||||
@ -140,8 +126,6 @@
|
||||
"importFromDSLFile": "Aus DSL-Datei",
|
||||
"importFromDSLUrl": "Von URL",
|
||||
"importFromDSLUrlPlaceholder": "DSL-Link hier einfügen",
|
||||
"join": "Treten Sie der Gemeinschaft bei",
|
||||
"marketplace.template.categories": "Kategorien",
|
||||
"marketplace.template.category.design": "Design",
|
||||
"marketplace.template.category.it": "IT",
|
||||
"marketplace.template.category.knowledge": "Wissen",
|
||||
@ -156,7 +140,6 @@
|
||||
"marketplace.template.overview": "Übersicht",
|
||||
"marketplace.template.publishedBy": "Von",
|
||||
"marketplace.template.usageCount": "Nutzung",
|
||||
"marketplace.template.viewOnMarketplace": "Im Marketplace ansehen",
|
||||
"maxActiveRequests": "Maximale gleichzeitige Anfragen",
|
||||
"maxActiveRequestsPlaceholder": "Geben Sie 0 für unbegrenzt ein",
|
||||
"maxActiveRequestsTip": "Maximale Anzahl gleichzeitiger aktiver Anfragen pro App (0 für unbegrenzt)",
|
||||
@ -167,7 +150,6 @@
|
||||
"newApp.Create": "Erstellen",
|
||||
"newApp.advancedShortDescription": "Workflow optimiert für mehrstufige Chats",
|
||||
"newApp.advancedUserDescription": "Workflow mit Speicherfunktionen und Chatbot-Oberfläche.",
|
||||
"newApp.agentAssistant": "Neuer Agentenassistent",
|
||||
"newApp.agentShortDescription": "Intelligenter Agent mit logischem Denken und autonomer Werkzeugnutzung",
|
||||
"newApp.agentUserDescription": "Ein intelligenter Agent, der in der Lage ist, iteratives Denken zu führen und autonome Werkzeuge zu verwenden, um Aufgabenziele zu erreichen.",
|
||||
"newApp.appCreateDSLErrorPart1": "Es wurde ein signifikanter Unterschied bei den DSL-Versionen festgestellt. Das Erzwingen des Imports kann zu Fehlfunktionen der Anwendung führen.",
|
||||
@ -180,51 +162,34 @@
|
||||
"newApp.appCreated": "App erstellt",
|
||||
"newApp.appDescriptionPlaceholder": "Geben Sie die Beschreibung der App ein",
|
||||
"newApp.appNamePlaceholder": "Geben Sie Ihrer App einen Namen",
|
||||
"newApp.appTemplateNotSelected": "Bitte wählen Sie eine Vorlage",
|
||||
"newApp.appTypeRequired": "Bitte wählen Sie einen App-Typ",
|
||||
"newApp.captionDescription": "Beschreibung",
|
||||
"newApp.captionName": "App-Symbol & Name",
|
||||
"newApp.caution": "Vorsicht",
|
||||
"newApp.chatApp": "Assistent",
|
||||
"newApp.chatAppIntro": "Ich möchte eine Chat-basierte Anwendung bauen. Diese App verwendet ein Frage-Antwort-Format und ermöglicht mehrere Runden kontinuierlicher Konversation.",
|
||||
"newApp.chatbotShortDescription": "LLM-basierter Chatbot mit einfacher Einrichtung",
|
||||
"newApp.chatbotUserDescription": "Erstellen Sie schnell einen LLM-basierten Chatbot mit einfacher Konfiguration. Sie können später zu Chatflow wechseln.",
|
||||
"newApp.chooseAppType": "App-Typ auswählen",
|
||||
"newApp.completeApp": "Textgenerator",
|
||||
"newApp.completeAppIntro": "Ich möchte eine Anwendung erstellen, die hochwertigen Text basierend auf Aufforderungen generiert, wie z.B. das Erstellen von Artikeln, Zusammenfassungen, Übersetzungen und mehr.",
|
||||
"newApp.completionShortDescription": "KI-Assistent für Textgenerierungsaufgaben",
|
||||
"newApp.completionUserDescription": "Erstellen Sie schnell einen KI-Assistenten für Textgenerierungsaufgaben mit einfacher Konfiguration.",
|
||||
"newApp.dropDSLToCreateApp": "Ziehen Sie die DSL-Datei hierher, um die App zu erstellen",
|
||||
"newApp.forAdvanced": "FÜR FORTGESCHRITTENE",
|
||||
"newApp.forBeginners": "Einfachere App-Typen",
|
||||
"newApp.foundResult": "{{count}} Ergebnis",
|
||||
"newApp.foundResults": "{{count}} Befund",
|
||||
"newApp.hideTemplates": "Zurück zur Modusauswahl",
|
||||
"newApp.import": "Importieren",
|
||||
"newApp.learnMore": "Weitere Informationen",
|
||||
"newApp.nameNotEmpty": "Name darf nicht leer sein",
|
||||
"newApp.noAppsFound": "Keine Apps gefunden",
|
||||
"newApp.noIdeaTip": "Keine Ideen? Schauen Sie sich unsere Vorlagen an",
|
||||
"newApp.noTemplateFound": "Keine Vorlagen gefunden",
|
||||
"newApp.noTemplateFoundTip": "Versuchen Sie, mit verschiedenen Schlüsselwörtern zu suchen.",
|
||||
"newApp.optional": "Wahlfrei",
|
||||
"newApp.previewDemo": "Vorschau-Demo",
|
||||
"newApp.showTemplates": "Ich möchte aus einer Vorlage wählen",
|
||||
"newApp.startFromBlank": "Aus Leer erstellen",
|
||||
"newApp.startFromTemplate": "Aus Vorlage erstellen",
|
||||
"newApp.useTemplate": "Diese Vorlage verwenden",
|
||||
"newApp.workflowShortDescription": "Agentischer Ablauf für intelligente Automatisierungen",
|
||||
"newApp.workflowUserDescription": "Autonome KI-Arbeitsabläufe visuell per Drag-and-Drop erstellen.",
|
||||
"newApp.workflowWarning": "Derzeit in der Beta-Phase",
|
||||
"newAppFromTemplate.byCategories": "NACH KATEGORIEN",
|
||||
"newAppFromTemplate.searchAllTemplate": "Alle Vorlagen durchsuchen...",
|
||||
"newAppFromTemplate.sidebar.Agent": "Agent",
|
||||
"newAppFromTemplate.sidebar.Assistant": "Assistent",
|
||||
"newAppFromTemplate.sidebar.HR": "HR",
|
||||
"newAppFromTemplate.sidebar.Programming": "Programmieren",
|
||||
"newAppFromTemplate.sidebar.Recommended": "Alle",
|
||||
"newAppFromTemplate.sidebar.Workflow": "Arbeitsablauf",
|
||||
"newAppFromTemplate.sidebar.Writing": "Schrift",
|
||||
"noAccessPermission": "Keine Berechtigung zum Zugriff auf die Webanwendung",
|
||||
"noAccessResourcePermission": "Keine Berechtigung zum Zugriff auf diese Ressource",
|
||||
"noUserInputNode": "Fehlender Benutzereingabeknoten",
|
||||
@ -234,8 +199,6 @@
|
||||
"publishApp.notSetDesc": "Derzeit kann niemand auf die Webanwendung zugreifen. Bitte setzen Sie die Berechtigungen.",
|
||||
"publishApp.title": "Wer kann auf die Webanwendung zugreifen?",
|
||||
"removeOriginal": "Ursprüngliche App löschen",
|
||||
"roadmap": "Sehen Sie unseren Fahrplan",
|
||||
"showMyCreatedAppsOnly": "Nur meine erstellten Apps anzeigen",
|
||||
"structOutput.LLMResponse": "LLM-Antwort",
|
||||
"structOutput.configure": "Konfigurieren",
|
||||
"structOutput.modelNotSupported": "Modell nicht unterstützt",
|
||||
@ -246,8 +209,6 @@
|
||||
"structOutput.structured": "Strukturiert",
|
||||
"structOutput.structuredTip": "Strukturierte Ausgaben ist eine Funktion, die sicherstellt, dass das Modell immer Antworten generiert, die Ihrem bereitgestellten JSON-Schema entsprechen.",
|
||||
"studio.allApps": "Alle Apps",
|
||||
"studio.apps": "Anwendungen",
|
||||
"studio.filters.allCreators": "Alle Ersteller",
|
||||
"studio.filters.creators": "Ersteller",
|
||||
"studio.filters.reset": "Zurücksetzen",
|
||||
"studio.filters.searchCreators": "Suchersteller...",
|
||||
@ -261,7 +222,6 @@
|
||||
"studio.starFailed": "Stern konnte nicht aktualisiert werden",
|
||||
"studio.starred": "Markiert",
|
||||
"studio.unstarApp": "Markierung der App entfernen",
|
||||
"studio.viewSnippets": "Snippets ansehen",
|
||||
"switch": "Zu Workflow-Orchestrierung wechseln",
|
||||
"switchLabel": "Die zu erstellende App-Kopie",
|
||||
"switchStart": "Wechsel starten",
|
||||
@ -274,7 +234,6 @@
|
||||
"tracing.aliyun.title": "Cloud-Monitor",
|
||||
"tracing.arize.description": "Unternehmensgerechte LLM-Observierbarkeit, Online- und Offline-Bewertung, Überwachung und Experimentierung—unterstützt durch OpenTelemetry. Speziell für LLM- und agentenbasierte Anwendungen entwickelt.",
|
||||
"tracing.arize.title": "Arize",
|
||||
"tracing.collapse": "Einklappen",
|
||||
"tracing.config": "Konfigurieren",
|
||||
"tracing.configProvider.clientId": "OAuth-Client-ID",
|
||||
"tracing.configProvider.clientSecret": "OAuth-Client-Geheimnis",
|
||||
@ -297,11 +256,9 @@
|
||||
"tracing.configProviderTitle.notConfigured": "Anbieter konfigurieren, um Nachverfolgung zu aktivieren",
|
||||
"tracing.databricks.description": "Databricks bietet vollständig verwaltetes MLflow mit starker Governance und Sicherheit für die Speicherung von Trace-Daten.",
|
||||
"tracing.databricks.title": "Databricks",
|
||||
"tracing.description": "Konfiguration eines Drittanbieter-LLMOps-Anbieters und Nachverfolgung der Anwendungsleistung.",
|
||||
"tracing.disabled": "Deaktiviert",
|
||||
"tracing.disabledTip": "Bitte zuerst den Anbieter konfigurieren",
|
||||
"tracing.enabled": "In Betrieb",
|
||||
"tracing.expand": "Ausklappen",
|
||||
"tracing.inUse": "In Verwendung",
|
||||
"tracing.langfuse.description": "Traces, Bewertungen, Prompt-Management und Metriken zum Debuggen und Verbessern Ihrer LLM-Anwendung.",
|
||||
"tracing.langfuse.title": "Langfuse",
|
||||
@ -330,9 +287,7 @@
|
||||
"types.advanced": "Chatflow",
|
||||
"types.agent": "Agent",
|
||||
"types.all": "Alle",
|
||||
"types.basic": "Grundlegend",
|
||||
"types.chatbot": "Chatbot",
|
||||
"types.completion": "Vervollständigung",
|
||||
"types.filter": "Typen",
|
||||
"types.workflow": "Arbeitsablauf"
|
||||
}
|
||||
|
||||
@ -10,7 +10,6 @@
|
||||
"account.appearanceLabel": "Darstellung",
|
||||
"account.appearanceLight": "Hell",
|
||||
"account.appearanceSystem": "System",
|
||||
"account.avatar": "Avatar",
|
||||
"account.changeEmail.authTip": "Sobald Ihre E-Mail geändert wurde, können Google- oder GitHub-Konten, die mit Ihrer alten E-Mail verknüpft sind, nicht mehr auf dieses Konto zugreifen.",
|
||||
"account.changeEmail.changeTo": "Ändern zu {{email}}",
|
||||
"account.changeEmail.codeLabel": "Bestätigungscode",
|
||||
@ -63,7 +62,6 @@
|
||||
"account.showAppLength": "{{length}} Apps anzeigen",
|
||||
"account.verificationLabel": "Verifizierungs-Code",
|
||||
"account.verificationPlaceholder": "Fügen Sie den 6-stelligen Code ein",
|
||||
"account.workspaceIcon": "Arbeitsbereichssymbol",
|
||||
"account.workspaceName": "Arbeitsbereichsname",
|
||||
"account.workspaceNamePlaceholder": "Arbeitsbereichnamen eingeben",
|
||||
"actionMsg.copySuccessfully": "Erfolgreich kopiert",
|
||||
@ -78,7 +76,6 @@
|
||||
"agentStrategyPage.description": "Lege fest, wie dein AI Agent denkt und Entscheidungen trifft — einschließlich Tool-Auswahl, Ergebnisverarbeitung und autonomer Problemlösung.",
|
||||
"api.actionFailed": "Aktion fehlgeschlagen",
|
||||
"api.actionSuccess": "Aktion erfolgreich",
|
||||
"api.create": "Erstellt",
|
||||
"api.remove": "Entfernt",
|
||||
"api.saved": "Gespeichert",
|
||||
"api.success": "Erfolg",
|
||||
@ -105,8 +102,6 @@
|
||||
"appMenus.logs": "Baumstämme",
|
||||
"appMenus.overview": "Übersicht",
|
||||
"appMenus.promptEng": "Orchestrieren",
|
||||
"appModes.chatApp": "Chat-App",
|
||||
"appModes.completionApp": "Textgenerator",
|
||||
"avatar.deleteDescription": "Bist du sicher, dass du dein Profilbild entfernen möchtest? Dein Konto wird das standardmäßige Anfangs-Avatar verwenden.",
|
||||
"avatar.deleteTitle": "Avatar entfernen",
|
||||
"avatar.editAction": "Avatar bearbeiten",
|
||||
@ -122,7 +117,6 @@
|
||||
"chat.inputDisabledPlaceholder": "Nur Vorschau",
|
||||
"chat.inputPlaceholder": "Sprechen Sie mit dem {{botName}}",
|
||||
"chat.renameConversation": "Konversation umbenennen",
|
||||
"chat.resend": "Erneut senden",
|
||||
"chat.thinking": "Denken...",
|
||||
"chat.thought": "Gedanke",
|
||||
"compliance.gdpr": "DSGVO DPA",
|
||||
@ -131,42 +125,21 @@
|
||||
"compliance.sandboxUpgradeTooltip": "Nur verfügbar mit einem Professional- oder Teamplan.",
|
||||
"compliance.soc2Type1": "SOC 2 Typ I Bericht",
|
||||
"compliance.soc2Type2": "SOC 2 Typ II Bericht",
|
||||
"dataSource.add": "Eine Datenquelle hinzufügen",
|
||||
"dataSource.configure": "Konfigurieren",
|
||||
"dataSource.connect": "Verbinden",
|
||||
"dataSource.notion.addWorkspace": "Arbeitsbereich hinzufügen",
|
||||
"dataSource.notion.changeAuthorizedPages": "Autorisierte Seiten ändern",
|
||||
"dataSource.notion.connected": "Verbunden",
|
||||
"dataSource.notion.connectedWorkspace": "Verbundener Arbeitsbereich",
|
||||
"dataSource.notion.description": "Notion als Datenquelle für das Wissen verwenden.",
|
||||
"dataSource.notion.disconnected": "Getrennt",
|
||||
"dataSource.notion.integratedAlert": "Notion ist über interne Anmeldeinformationen integriert, es ist keine erneute Autorisierung erforderlich.",
|
||||
"dataSource.notion.pagesAuthorized": "Autorisierte Seiten",
|
||||
"dataSource.notion.remove": "Entfernen",
|
||||
"dataSource.notion.selector.addPages": "Seiten hinzufügen",
|
||||
"dataSource.notion.selector.configure": "Notion konfigurieren",
|
||||
"dataSource.notion.selector.docs": "Notion-Dokumentation",
|
||||
"dataSource.notion.selector.headerTitle": "Notion-Seiten auswählen",
|
||||
"dataSource.notion.selector.noSearchResult": "Keine Suchergebnisse",
|
||||
"dataSource.notion.selector.pageSelected": "Ausgewählte Seiten",
|
||||
"dataSource.notion.selector.preview": "VORSCHAU",
|
||||
"dataSource.notion.selector.searchPages": "Seiten suchen...",
|
||||
"dataSource.notion.sync": "Synchronisieren",
|
||||
"dataSource.notion.title": "Notion",
|
||||
"dataSource.website.active": "Aktiv",
|
||||
"dataSource.website.configuredCrawlers": "Konfigurierte Crawler",
|
||||
"dataSource.website.description": "Importieren Sie Inhalte von Websites mit dem Webcrawler.",
|
||||
"dataSource.website.inactive": "Inaktiv",
|
||||
"dataSource.website.title": "Website",
|
||||
"dataSource.website.with": "Mit",
|
||||
"dataSourcePage.description": "Verbinde externe Datenquellen für Wissensdatenbank oder Knowledge Pipeline — importiere Inhalte aus Google Drive, Notion, GitHub und mehr.",
|
||||
"dataSourcePage.installFirst": "Bitte installieren Sie zuerst eine Datenquelle.",
|
||||
"dataSourcePage.notSetUp": "nicht eingerichtet",
|
||||
"dataSourcePage.notSetUpTitle": "<highlight>Datenquelle</highlight> nicht eingerichtet",
|
||||
"datasetMenus.documents": "Dokumente",
|
||||
"datasetMenus.emptyTip": "Das Wissen wurde nicht zugeordnet, bitte gehen Sie zur Anwendung oder zum Plug-in, um die Zuordnung abzuschließen.",
|
||||
"datasetMenus.hitTesting": "Wiederherstellungstest",
|
||||
"datasetMenus.noRelatedApp": "Keine verknüpften Apps",
|
||||
"datasetMenus.pipeline": "Rohrleitung",
|
||||
"datasetMenus.relatedApp": "verbundene Apps",
|
||||
"datasetMenus.settings": "Einstellungen",
|
||||
@ -181,12 +154,10 @@
|
||||
"errorBoundary.componentStack": "Komponenten-Stack:",
|
||||
"errorBoundary.details": "Fehlerdetails (Nur Entwicklung)",
|
||||
"errorBoundary.errorCount": "Dieser Fehler ist {{count}} Mal aufgetreten",
|
||||
"errorBoundary.fallbackTitle": "Hoppla! Etwas ist schiefgelaufen",
|
||||
"errorBoundary.message": "Beim Rendern dieser Komponente ist ein unerwarteter Fehler aufgetreten.",
|
||||
"errorBoundary.reloadPage": "Seite neu laden",
|
||||
"errorBoundary.title": "Etwas ist schiefgelaufen",
|
||||
"errorBoundary.tryAgain": "Erneut versuchen",
|
||||
"errorBoundary.tryAgainCompact": "Erneut versuchen",
|
||||
"errorMsg.fieldRequired": "{{field}} ist erforderlich",
|
||||
"errorMsg.urlError": "Die URL sollte mit http:// oder https:// beginnen",
|
||||
"extensionPage.description": "Integriere externe Dienste über HTTP Webhooks in deine Apps.",
|
||||
@ -217,14 +188,8 @@
|
||||
"imageUploader.uploadFromComputerReadError": "Bildlesung fehlgeschlagen, bitte versuchen Sie es erneut.",
|
||||
"imageUploader.uploadFromComputerUploadError": "Bildupload fehlgeschlagen, bitte erneut hochladen.",
|
||||
"integrations.connect": "Verbinden",
|
||||
"integrations.connected": "Verbunden",
|
||||
"integrations.github": "GitHub",
|
||||
"integrations.githubAccount": "Mit GitHub-Konto anmelden",
|
||||
"integrations.google": "Google",
|
||||
"integrations.googleAccount": "Mit Google-Konto anmelden",
|
||||
"label.optional": "(fakultativ)",
|
||||
"language.displayLanguage": "Anzeigesprache",
|
||||
"language.language": "Sprache",
|
||||
"language.timezone": "Zeitzone",
|
||||
"license.expiring": "Läuft an einem Tag ab",
|
||||
"license.expiring_plural": "Läuft in {{count}} Tagen ab",
|
||||
@ -247,17 +212,9 @@
|
||||
"mainNav.workspace.sort.createdTime": "Created time",
|
||||
"mainNav.workspace.sort.lastOpened": "Last opened",
|
||||
"mainNav.workspace.sort.openMenu": "Sort workspaces",
|
||||
"mainNav.workspace.switchWorkspace": "Workspace wechseln",
|
||||
"mcpPage.description": "Verbinde und verwalte MCP-Server, damit deine Apps auf externe Tools und Dienste zugreifen können.",
|
||||
"members.adminTip": "Kann Apps erstellen & Team-Einstellungen verwalten",
|
||||
"members.alreadyInTeam": "Bereits im Team",
|
||||
"members.alreadyInTeamTip": "Diese Benutzer haben bereits Zugriff auf diesen Arbeitsbereich.",
|
||||
"members.builder": "Bauherr",
|
||||
"members.builderTip": "Kann eigene Apps erstellen und bearbeiten",
|
||||
"members.datasetOperatorTip": "Kann die Wissensdatenbank nur verwalten",
|
||||
"members.deleteMember": "Mitglied löschen",
|
||||
"members.disInvite": "Einladung widerrufen",
|
||||
"members.editorTip": "Kann Apps erstellen & bearbeiten",
|
||||
"members.email": "E-Mail",
|
||||
"members.emailInvalid": "Ungültiges E-Mail-Format",
|
||||
"members.emailNotSetup": "E-Mail-Server ist nicht eingerichtet, daher können keine Einladungs-E-Mails versendet werden. Bitte informieren Sie die Benutzer über den Einladungslink, der nach der Einladung ausgestellt wird.",
|
||||
@ -273,18 +230,11 @@
|
||||
"members.lastActive": "ZULETZT AKTIV",
|
||||
"members.name": "NAME",
|
||||
"members.noNewInvitationsSent": "Keine neuen Einladungen gesendet",
|
||||
"members.normalTip": "Kann nur Apps verwenden, kann keine Apps erstellen",
|
||||
"members.ok": "OK",
|
||||
"members.pending": "Ausstehend...",
|
||||
"members.removeFromTeam": "Vom Team entfernen",
|
||||
"members.removeFromTeamTip": "Wird den Teamzugang entfernen",
|
||||
"members.role": "ROLLEN",
|
||||
"members.sendInvite": "Einladung senden",
|
||||
"members.setAdmin": "Als Administrator einstellen",
|
||||
"members.setBuilder": "Als Builder festlegen",
|
||||
"members.setEditor": "Als Editor einstellen",
|
||||
"members.setMember": "Als normales Mitglied einstellen",
|
||||
"members.team": "Team",
|
||||
"members.transferModal.codeLabel": "Bestätigungscode",
|
||||
"members.transferModal.codePlaceholder": "Geben Sie den 6-stelligen Code ein",
|
||||
"members.transferModal.continue": "Fortsetzen",
|
||||
@ -308,53 +258,19 @@
|
||||
"menus.appDetail": "App-Details",
|
||||
"menus.apps": "Studio",
|
||||
"menus.datasets": "Wissen",
|
||||
"menus.datasetsTips": "BALD VERFÜGBAR: Importieren Sie Ihre eigenen Textdaten oder schreiben Sie Daten in Echtzeit über Webhook, um den LLM-Kontext zu verbessern.",
|
||||
"menus.deployments": "Bereitstellungen",
|
||||
"menus.explore": "Erkunden",
|
||||
"menus.exploreMarketplace": "Marketplace erkunden",
|
||||
"menus.newApp": "Neue App",
|
||||
"menus.newDataset": "Wissen erstellen",
|
||||
"menus.plugins": "Integrationen",
|
||||
"menus.pluginsTips": "Integrieren Sie Integrationen von Drittanbietern oder erstellen Sie ChatGPT-kompatible KI-Integrationen.",
|
||||
"menus.roster": "Agent-Verzeichnis",
|
||||
"menus.status": "Beta",
|
||||
"menus.tools": "Werkzeuge",
|
||||
"model.addMoreModel": "Gehen Sie zu den Einstellungen, um mehr Modelle hinzuzufügen",
|
||||
"model.capabilities": "Multimodale Fähigkeiten",
|
||||
"model.params.frequency_penalty": "Häufigkeitsstrafe",
|
||||
"model.params.frequency_penaltyTip": "Wie stark neue Tokens basierend auf ihrer bisherigen Häufigkeit im Text bestraft werden.\nVerringert die Wahrscheinlichkeit des Modells, denselben Satz wortwörtlich zu wiederholen.",
|
||||
"model.params.maxTokenSettingTip": "Ihre Einstellung für maximale Token ist hoch, was den Platz für Eingabeaufforderungen, Abfragen und Daten potenziell begrenzen kann. Erwägen Sie, dies unter 2/3 zu setzen.",
|
||||
"model.params.max_tokens": "Maximale Token",
|
||||
"model.params.max_tokensTip": "Begrenzt die maximale Länge der Antwort in Token. \nGrößere Werte können den Platz für Eingabeaufforderungen, Chat-Logs und Wissen begrenzen. \nEs wird empfohlen, dies unter zwei Dritteln zu setzen\ngpt-4-1106-Vorschau, gpt-4-vision-Vorschau maximale Token (Eingabe 128k Ausgabe 4k)",
|
||||
"model.params.presence_penalty": "Präsenz-Strafe",
|
||||
"model.params.presence_penaltyTip": "Wie stark neue Tokens basierend darauf bestraft werden, ob sie bereits im Text erschienen sind.\nErhöht die Wahrscheinlichkeit des Modells, über neue Themen zu sprechen.",
|
||||
"model.params.setToCurrentModelMaxTokenTip": "Maximale Token auf 80 % der maximalen Token des aktuellen Modells {{maxToken}} aktualisiert.",
|
||||
"model.params.stop_sequences": "Stop-Sequenzen",
|
||||
"model.params.stop_sequencesPlaceholder": "Sequenz eingeben und Tab drücken",
|
||||
"model.params.stop_sequencesTip": "Bis zu vier Sequenzen, bei denen die API die Generierung weiterer Token stoppt. Der zurückgegebene Text wird die Stop-Sequenz nicht enthalten.",
|
||||
"model.params.temperature": "Temperatur",
|
||||
"model.params.temperatureTip": "Kontrolliert Zufälligkeit: Eine niedrigere Temperatur führt zu weniger zufälligen Ergebnissen. Nähert sich die Temperatur null, wird das Modell deterministisch und repetitiv.",
|
||||
"model.params.top_p": "Top P",
|
||||
"model.params.top_pTip": "Kontrolliert Diversität über Nukleus-Sampling: 0,5 bedeutet, dass die Hälfte aller wahrscheinlichkeitsgewichteten Optionen berücksichtigt wird.",
|
||||
"model.settingsLink": "Einstellungen für Modellanbieter",
|
||||
"model.tone.Balanced": "Ausgewogen",
|
||||
"model.tone.Creative": "Kreativ",
|
||||
"model.tone.Custom": "Benutzerdefiniert",
|
||||
"model.tone.Precise": "Präzise",
|
||||
"modelName.claude-2": "Claude-2",
|
||||
"modelName.claude-instant-1": "Claude-Instant",
|
||||
"modelName.gpt-3.5-turbo": "GPT-3.5-Turbo",
|
||||
"modelName.gpt-3.5-turbo-16k": "GPT-3.5-Turbo-16K",
|
||||
"modelName.gpt-4": "GPT-4",
|
||||
"modelName.gpt-4-32k": "GPT-4-32K",
|
||||
"modelName.text-davinci-003": "Text-Davinci-003",
|
||||
"modelName.text-embedding-ada-002": "Text-Embedding-Ada-002",
|
||||
"modelName.whisper-1": "Flüstern-1",
|
||||
"modelProvider.addApiKey": "Fügen Sie Ihren API-Schlüssel hinzu",
|
||||
"modelProvider.addConfig": "Konfiguration hinzufügen",
|
||||
"modelProvider.addModel": "Modell hinzufügen",
|
||||
"modelProvider.addMoreModelProvider": "MEHR MODELLANBIETER HINZUFÜGEN",
|
||||
"modelProvider.apiKey": "API-SCHLÜSSEL",
|
||||
"modelProvider.apiKeyRateLimit": "Ratenlimit wurde erreicht, verfügbar nach {{seconds}}s",
|
||||
"modelProvider.apiKeyStatusNormal": "APIKey-Status ist normal",
|
||||
"modelProvider.auth.addApiKey": "API-Schlüssel hinzufügen",
|
||||
@ -363,7 +279,6 @@
|
||||
"modelProvider.auth.addModelCredential": "Modellberechtigungen hinzufügen",
|
||||
"modelProvider.auth.addNewModel": "Neues Modell hinzufügen",
|
||||
"modelProvider.auth.addNewModelCredential": "Hinzufügen neuer Modellanmeldeinformationen",
|
||||
"modelProvider.auth.apiKeyModal.addModel": "Modell hinzufügen",
|
||||
"modelProvider.auth.apiKeyModal.desc": "Nachdem die Anmeldeinformationen konfiguriert wurden, können alle Mitglieder des Arbeitsbereichs dieses Modell beim Orchestrieren von Anwendungen verwenden.",
|
||||
"modelProvider.auth.apiKeyModal.title": "API-Schlüssel-Autorisierungskonfiguration",
|
||||
"modelProvider.auth.apiKeys": "API-Schlüssel",
|
||||
@ -384,17 +299,12 @@
|
||||
"modelProvider.auth.selectModelCredential": "Wählen Sie eine Modellberechtigung aus",
|
||||
"modelProvider.auth.specifyModelCredential": "Angeben von Modellanmeldeinformationen",
|
||||
"modelProvider.auth.specifyModelCredentialTip": "Verwenden Sie ein konfiguriertes Modellzugang.",
|
||||
"modelProvider.auth.unAuthorized": "Unbefugt",
|
||||
"modelProvider.buyQuota": "Kontingent kaufen",
|
||||
"modelProvider.callTimes": "Anrufzeiten",
|
||||
"modelProvider.card.aiCreditsInUse": "AI Credits werden verwendet",
|
||||
"modelProvider.card.aiCreditsOption": "AI Credits",
|
||||
"modelProvider.card.apiKeyOption": "API Key",
|
||||
"modelProvider.card.apiKeyRequired": "API Key erforderlich",
|
||||
"modelProvider.card.apiKeyUnavailableFallback": "API Key nicht verfügbar, AI Credits werden verwendet",
|
||||
"modelProvider.card.apiKeyUnavailableFallbackDescription": "Überprüfen Sie Ihre API-Key-Konfiguration, um zurückzuwechseln",
|
||||
"modelProvider.card.buyQuota": "Kontingent kaufen",
|
||||
"modelProvider.card.callTimes": "Anrufzeiten",
|
||||
"modelProvider.card.creditsExhaustedDescription": "Bitte <upgradeLink>upgraden Sie Ihren Plan</upgradeLink> oder konfigurieren Sie einen API Key",
|
||||
"modelProvider.card.creditsExhaustedFallback": "AI Credits aufgebraucht, API Key wird verwendet",
|
||||
"modelProvider.card.creditsExhaustedFallbackDescription": "<upgradeLink>Upgraden Sie Ihren Plan</upgradeLink>, um die AI-Credit-Priorität wiederherzustellen.",
|
||||
@ -406,32 +316,17 @@
|
||||
"modelProvider.card.noApiKeysFallback": "Keine API Keys, AI Credits werden verwendet",
|
||||
"modelProvider.card.noApiKeysTitle": "Noch keine API Keys konfiguriert",
|
||||
"modelProvider.card.noAvailableUsage": "Kein verfügbares Guthaben",
|
||||
"modelProvider.card.onTrial": "In Probe",
|
||||
"modelProvider.card.paid": "Bezahlt",
|
||||
"modelProvider.card.priorityUse": "Priorisierte Nutzung",
|
||||
"modelProvider.card.quota": "KONTINGENT",
|
||||
"modelProvider.card.quotaExhausted": "Kontingent erschöpft",
|
||||
"modelProvider.card.removeKey": "API-Schlüssel entfernen",
|
||||
"modelProvider.card.tip": "Nachrichtenguthaben unterstützen Modelle von {{modelNames}}. Der bezahlten Kontingent wird Vorrang gegeben. Das kostenlose Kontingent wird nach dem Verbrauch des bezahlten Kontingents verwendet.",
|
||||
"modelProvider.card.tokens": "Token",
|
||||
"modelProvider.card.unavailable": "Nicht verfügbar",
|
||||
"modelProvider.card.upgradePlan": "Plan upgraden",
|
||||
"modelProvider.card.usageLabel": "Verbrauch",
|
||||
"modelProvider.card.usagePriority": "Nutzungspriorität",
|
||||
"modelProvider.card.usagePriorityTip": "Legen Sie fest, welche Ressource beim Ausführen von Modellen zuerst verwendet wird.",
|
||||
"modelProvider.collapse": "Einklappen",
|
||||
"modelProvider.config": "Konfigurieren",
|
||||
"modelProvider.configLoadBalancing": "Lastenausgleich für die Konfiguration",
|
||||
"modelProvider.configureTip": "Einrichten des API-Schlüssels oder Hinzufügen des zu verwendenden Modells",
|
||||
"modelProvider.configuredProviders": "Configured providers",
|
||||
"modelProvider.confirmDelete": "Löschung bestätigen?",
|
||||
"modelProvider.credits": "Nachrichtenguthaben",
|
||||
"modelProvider.creditsBackedProviders": "Available with Message Credits",
|
||||
"modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.",
|
||||
"modelProvider.defaultConfig": "Standardkonfiguration",
|
||||
"modelProvider.deprecated": "Veraltet",
|
||||
"modelProvider.discoverMore": "Erfahren Sie mehr in",
|
||||
"modelProvider.editConfig": "Konfiguration bearbeiten",
|
||||
"modelProvider.embeddingModel.key": "Einbettungsmodell",
|
||||
"modelProvider.embeddingModel.required": "Einbettungsmodell ist erforderlich",
|
||||
"modelProvider.embeddingModel.tip": "Legen Sie das Standardmodell für die Dokumenteneinbettungsverarbeitung des Wissens fest, sowohl die Wiederherstellung als auch der Import des Wissens verwenden dieses Einbettungsmodell für die Vektorisierungsverarbeitung. Ein Wechsel wird dazu führen, dass die Vektordimension zwischen dem importierten Wissen und der Frage inkonsistent ist, was zu einem Wiederherstellungsfehler führt. Um einen Wiederherstellungsfehler zu vermeiden, wechseln Sie dieses Modell bitte nicht willkürlich.",
|
||||
@ -441,43 +336,28 @@
|
||||
"modelProvider.encrypted.back": " Technologie gespeichert.",
|
||||
"modelProvider.encrypted.front": "Ihr API-SCHLÜSSEL wird verschlüsselt und mit",
|
||||
"modelProvider.featureSupported": "{{feature}} unterstützt",
|
||||
"modelProvider.freeQuota.howToEarn": "Wie zu verdienen",
|
||||
"modelProvider.getFreeTokens": "Kostenlose Token erhalten",
|
||||
"modelProvider.installDataSource": "Datenquelle installieren",
|
||||
"modelProvider.installDataSourceProvider": "Datenquellenanbieter installieren",
|
||||
"modelProvider.installProvider": "Installieren von Modellanbietern",
|
||||
"modelProvider.invalidApiKey": "Ungültiger API-Schlüssel",
|
||||
"modelProvider.item.deleteDesc": "{{modelName}} werden als System-Reasoning-Modelle verwendet. Einige Funktionen stehen nach der Entfernung nicht zur Verfügung. Bitte bestätigen.",
|
||||
"modelProvider.item.freeQuota": "KOSTENLOSES KONTINGENT",
|
||||
"modelProvider.learnMore": "Learn more",
|
||||
"modelProvider.loadBalancing": "Lastenausgleich",
|
||||
"modelProvider.loadBalancingDescription": "Reduzieren Sie den Druck mit mehreren Sätzen von Anmeldeinformationen.",
|
||||
"modelProvider.loadBalancingHeadline": "Lastenausgleich",
|
||||
"modelProvider.loadBalancingInfo": "Standardmäßig wird für den Lastenausgleich die Round-Robin-Strategie verwendet. Wenn die Ratenbegrenzung ausgelöst wird, wird eine Abklingzeit von 1 Minute angewendet.",
|
||||
"modelProvider.loadBalancingLeastKeyWarning": "Um den Lastausgleich zu aktivieren, müssen mindestens 2 Schlüssel aktiviert sein.",
|
||||
"modelProvider.loadPresets": "Voreinstellungen laden",
|
||||
"modelProvider.model": "Modell",
|
||||
"modelProvider.modelAndParameters": "Modell und Parameter",
|
||||
"modelProvider.modelHasBeenDeprecated": "Dieses Modell ist veraltet",
|
||||
"modelProvider.modelSettings": "Modelleinstellungen",
|
||||
"modelProvider.models": "Modelle",
|
||||
"modelProvider.modelsNum": "{{num}} Modelle",
|
||||
"modelProvider.noModelFound": "Kein Modell für {{model}} gefunden",
|
||||
"modelProvider.noneConfigured": "Konfigurieren Sie ein Standard-Systemmodell, um Anwendungen auszuführen",
|
||||
"modelProvider.notConfigured": "Das Systemmodell wurde noch nicht vollständig konfiguriert, und einige Funktionen sind möglicherweise nicht verfügbar.",
|
||||
"modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.",
|
||||
"modelProvider.parameters": "PARAMETER",
|
||||
"modelProvider.parametersInvalidRemoved": "Einige Parameter sind ungültig und wurden entfernt.",
|
||||
"modelProvider.priorityUsing": "Bevorzugte Nutzung",
|
||||
"modelProvider.providerManaged": "Vom Anbieter verwaltet",
|
||||
"modelProvider.providerManagedDescription": "Verwenden Sie den einzelnen Satz von Anmeldeinformationen, der vom Modellanbieter bereitgestellt wird.",
|
||||
"modelProvider.quota": "Kontingent",
|
||||
"modelProvider.quotaLabel": "QUOTA",
|
||||
"modelProvider.quotaTip": "Verbleibende verfügbare kostenlose Token",
|
||||
"modelProvider.rerankModel.key": "Rerank-Modell",
|
||||
"modelProvider.rerankModel.tip": "Rerank-Modell wird die Kandidatendokumentenliste basierend auf der semantischen Übereinstimmung mit der Benutzeranfrage neu ordnen und die Ergebnisse der semantischen Rangordnung verbessern",
|
||||
"modelProvider.resetDate": "Zurücksetzen am {{date}}",
|
||||
"modelProvider.searchModel": "Suchmodell",
|
||||
"modelProvider.searchModels": "Modelle suchen...",
|
||||
"modelProvider.selectModel": "Wählen Sie Ihr Modell",
|
||||
"modelProvider.selector.aiCredits": "AI Credits",
|
||||
@ -489,8 +369,6 @@
|
||||
"modelProvider.selector.creditsExhaustedTip": "Ihre AI Credits wurden aufgebraucht. Bitte upgraden Sie Ihren Plan oder fügen Sie einen API Key hinzu.",
|
||||
"modelProvider.selector.disabled": "Deaktiviert",
|
||||
"modelProvider.selector.discoverMoreInMarketplace": "Mehr im Marketplace entdecken",
|
||||
"modelProvider.selector.emptySetting": "Bitte gehen Sie zu den Einstellungen, um zu konfigurieren",
|
||||
"modelProvider.selector.emptyTip": "Keine verfügbaren Modelle",
|
||||
"modelProvider.selector.fromMarketplace": "Vom Marketplace",
|
||||
"modelProvider.selector.incompatible": "Inkompatibel",
|
||||
"modelProvider.selector.incompatibleTip": "Dieses Modell ist in der aktuellen Version nicht verfügbar. Bitte wählen Sie ein anderes verfügbares Modell.",
|
||||
@ -500,11 +378,7 @@
|
||||
"modelProvider.selector.noProviderConfigured": "Kein Modellanbieter konfiguriert",
|
||||
"modelProvider.selector.noProviderConfiguredDesc": "Durchsuchen Sie den Marketplace, um einen zu installieren, oder konfigurieren Sie Anbieter in den Einstellungen.",
|
||||
"modelProvider.selector.onlyCompatibleModelsShown": "Es werden nur kompatible Modelle angezeigt",
|
||||
"modelProvider.selector.rerankTip": "Bitte richten Sie das Rerank-Modell ein",
|
||||
"modelProvider.selector.tip": "Dieses Modell wurde entfernt. Bitte fügen Sie ein Modell hinzu oder wählen Sie ein anderes Modell.",
|
||||
"modelProvider.setupModelFirst": "Bitte richten Sie zuerst Ihr Modell ein",
|
||||
"modelProvider.showModels": "Modelle anzeigen",
|
||||
"modelProvider.showMoreModelProvider": "Zeige mehr Modellanbieter",
|
||||
"modelProvider.speechToTextModel.key": "Sprach-zu-Text-Modell",
|
||||
"modelProvider.speechToTextModel.tip": "Legen Sie das Standardmodell für die Spracheingabe in Konversationen fest.",
|
||||
"modelProvider.systemModelSettings": "Systemmodell-Einstellungen",
|
||||
@ -535,7 +409,6 @@
|
||||
"operation.create": "Erstellen",
|
||||
"operation.deSelectAll": "Alle abwählen",
|
||||
"operation.delete": "Löschen",
|
||||
"operation.deleteApp": "App löschen",
|
||||
"operation.deleteConfirmTitle": "Löschen?",
|
||||
"operation.download": "Herunterladen",
|
||||
"operation.downloadFailed": "Download fehlgeschlagen. Bitte versuchen Sie es später erneut.",
|
||||
@ -545,18 +418,15 @@
|
||||
"operation.exporting": "Exportiere",
|
||||
"operation.fill": "Automatisch ausfüllen",
|
||||
"operation.format": "Format",
|
||||
"operation.getForFree": "Kostenlos erhalten",
|
||||
"operation.imageCopied": "Kopiertes Bild",
|
||||
"operation.imageDownloaded": "Bild heruntergeladen",
|
||||
"operation.in": "in",
|
||||
"operation.learnMore": "Mehr erfahren",
|
||||
"operation.lineBreak": "Zeilenumbruch",
|
||||
"operation.log": "Protokoll",
|
||||
"operation.more": "Mehr",
|
||||
"operation.no": "Nein",
|
||||
"operation.noSearchCount": "0 {{content}}",
|
||||
"operation.noSearchResults": "Es wurden keine {{content}} gefunden",
|
||||
"operation.now": "Jetzt",
|
||||
"operation.ok": "OK",
|
||||
"operation.openInNewTab": "In neuem Tab öffnen",
|
||||
"operation.params": "Parameter",
|
||||
@ -564,7 +434,6 @@
|
||||
"operation.play": "Abspielen",
|
||||
"operation.refresh": "Neustart",
|
||||
"operation.regenerate": "Erneuern",
|
||||
"operation.reload": "Neu laden",
|
||||
"operation.remove": "Entfernen",
|
||||
"operation.rename": "Umbenennen",
|
||||
"operation.reset": "Zurücksetzen",
|
||||
@ -580,7 +449,6 @@
|
||||
"operation.selectCount": "{{count}} Ausgewählt",
|
||||
"operation.send": "Senden",
|
||||
"operation.settings": "Einstellungen",
|
||||
"operation.setup": "Einrichten",
|
||||
"operation.skip": "Schiff",
|
||||
"operation.submit": "Senden",
|
||||
"operation.sure": "Ich bin sicher",
|
||||
@ -601,93 +469,37 @@
|
||||
"placeholder.input": "Bitte eingeben",
|
||||
"placeholder.search": "Suchen...",
|
||||
"placeholder.select": "Bitte auswählen",
|
||||
"promptEditor.context.item.desc": "Kontextvorlage einfügen",
|
||||
"promptEditor.context.item.title": "Kontext",
|
||||
"promptEditor.context.modal.add": "Kontext hinzufügen",
|
||||
"promptEditor.context.modal.footer": "Sie können Kontexte im unten stehenden Kontextabschnitt verwalten.",
|
||||
"promptEditor.context.modal.title": "{{num}} Wissen im Kontext",
|
||||
"promptEditor.existed": "Bereits im Aufforderungstext vorhanden",
|
||||
"promptEditor.history.item.desc": "Vorlage für historische Nachricht einfügen",
|
||||
"promptEditor.history.item.title": "Konversationsgeschichte",
|
||||
"promptEditor.history.modal.assistant": "Hallo! Wie kann ich Ihnen heute helfen?",
|
||||
"promptEditor.history.modal.edit": "Konversationsrollennamen bearbeiten",
|
||||
"promptEditor.history.modal.title": "BEISPIEL",
|
||||
"promptEditor.history.modal.user": "Hallo",
|
||||
"promptEditor.placeholder": "Schreiben Sie hier Ihr Aufforderungswort, geben Sie '{' ein, um eine Variable einzufügen, geben Sie '/' ein, um einen Aufforderungs-Inhaltsblock einzufügen",
|
||||
"promptEditor.query.item.desc": "Benutzerabfragevorlage einfügen",
|
||||
"promptEditor.query.item.title": "Abfrage",
|
||||
"promptEditor.requestURL.item.desc": "Anfrage-URL einfügen",
|
||||
"promptEditor.requestURL.item.title": "Anfrage-URL",
|
||||
"promptEditor.variable.item.desc": "Variablen & Externe Werkzeuge einfügen",
|
||||
"promptEditor.variable.item.title": "Variablen & Externe Werkzeuge",
|
||||
"promptEditor.variable.modal.add": "Neue Variable",
|
||||
"promptEditor.variable.modal.addTool": "Neues Werkzeug",
|
||||
"promptEditor.variable.outputToolDisabledItem.desc": "Variablen einfügen",
|
||||
"promptEditor.variable.outputToolDisabledItem.title": "Variablen",
|
||||
"provider.addKey": "Schlüssel hinzufügen",
|
||||
"provider.anthropic.enableTip": "Um das Anthropische Modell zu aktivieren, müssen Sie sich zuerst mit OpenAI oder Azure OpenAI Service verbinden.",
|
||||
"provider.anthropic.keyFrom": "Holen Sie Ihren API-Schlüssel von Anthropic",
|
||||
"provider.anthropic.notEnabled": "Nicht aktiviert",
|
||||
"provider.anthropic.using": "Die Einbettungsfähigkeit verwendet",
|
||||
"provider.anthropicHosted.anthropicHosted": "Anthropic Claude",
|
||||
"provider.anthropicHosted.callTimes": "Anrufzeiten",
|
||||
"provider.anthropicHosted.close": "Schließen",
|
||||
"provider.anthropicHosted.desc": "Leistungsstarkes Modell, das bei einer Vielzahl von Aufgaben von anspruchsvollen Dialogen und kreativer Inhalteerstellung bis hin zu detaillierten Anweisungen hervorragend ist.",
|
||||
"provider.anthropicHosted.exhausted": "KONTINGENT ERSCHÖPFT",
|
||||
"provider.anthropicHosted.onTrial": "IN PROBE",
|
||||
"provider.anthropicHosted.trialQuotaTip": "Ihr Anthropic-Testkontingent läuft am 11.03.2025 ab und steht danach nicht mehr zur Verfügung. Bitte machen Sie rechtzeitig davon Gebrauch.",
|
||||
"provider.anthropicHosted.useYourModel": "Derzeit wird eigener Modellanbieter verwendet.",
|
||||
"provider.anthropicHosted.usedUp": "Testkontingent aufgebraucht. Eigenen Modellanbieter hinzufügen.",
|
||||
"provider.apiKey": "API-Schlüssel",
|
||||
"provider.apiKeyExceedBill": "Dieser API-SCHLÜSSEL verfügt über kein verfügbares Kontingent, bitte lesen",
|
||||
"provider.azure.apiBase": "API-Basis",
|
||||
"provider.azure.apiBasePlaceholder": "Die API-Basis-URL Ihres Azure OpenAI-Endpunkts.",
|
||||
"provider.azure.apiKey": "API-Schlüssel",
|
||||
"provider.azure.apiKeyPlaceholder": "Geben Sie hier Ihren API-Schlüssel ein",
|
||||
"provider.azure.helpTip": "Azure OpenAI Service kennenlernen",
|
||||
"provider.comingSoon": "Demnächst verfügbar",
|
||||
"provider.editKey": "Bearbeiten",
|
||||
"provider.encrypted.back": " Technologie gespeichert.",
|
||||
"provider.encrypted.front": "Ihr API-SCHLÜSSEL wird verschlüsselt und mit",
|
||||
"provider.enterYourKey": "Geben Sie hier Ihren API-Schlüssel ein",
|
||||
"provider.invalidApiKey": "Ungültiger API-Schlüssel",
|
||||
"provider.invalidKey": "Ungültiger OpenAI API-Schlüssel",
|
||||
"provider.openaiHosted.callTimes": "Anrufzeiten",
|
||||
"provider.openaiHosted.close": "Schließen",
|
||||
"provider.openaiHosted.desc": "Der OpenAI-Hostingdienst von Dify ermöglicht es Ihnen, Modelle wie GPT-3.5 zu verwenden. Bevor Ihr Probe-Kontingent aufgebraucht ist, müssen Sie andere Modellanbieter einrichten.",
|
||||
"provider.openaiHosted.exhausted": "KONTINGENT ERSCHÖPFT",
|
||||
"provider.openaiHosted.onTrial": "IN PROBE",
|
||||
"provider.openaiHosted.openaiHosted": "Gehostetes OpenAI",
|
||||
"provider.openaiHosted.useYourModel": "Derzeit wird eigener Modellanbieter verwendet.",
|
||||
"provider.openaiHosted.usedUp": "Probe-Kontingent aufgebraucht. Eigenen Modellanbieter hinzufügen.",
|
||||
"provider.saveFailed": "API-Schlüssel speichern fehlgeschlagen",
|
||||
"provider.validatedError": "Validierung fehlgeschlagen: ",
|
||||
"provider.validating": "Schlüssel wird validiert...",
|
||||
"settings.account": "Mein Konto",
|
||||
"settings.accountGroup": "KONTO",
|
||||
"settings.agentStrategy": "Agent strategy",
|
||||
"settings.billing": "Abrechnung",
|
||||
"settings.collapse": "Collapse",
|
||||
"settings.customEndpoint": "Benutzerdefinierter Endpunkt",
|
||||
"settings.customTool": "Custom Tool",
|
||||
"settings.dataSource": "Datenquelle",
|
||||
"settings.discoverMoreIntegrationsInMarketplace": "Entdecke weitere Integrationen im Marktplatz",
|
||||
"settings.expand": "Expand",
|
||||
"settings.extension": "Extension",
|
||||
"settings.filter": "Filter",
|
||||
"settings.generalGroup": "ALLGEMEIN",
|
||||
"settings.integrations": "Integrationen",
|
||||
"settings.language": "Sprache",
|
||||
"settings.members": "Mitglieder",
|
||||
"settings.plugin": "Integrationen",
|
||||
"settings.preferences": "Preferences",
|
||||
"settings.provider": "Modellanbieter",
|
||||
"settings.settings": "Settings",
|
||||
"settings.swaggerAPIAsTool": "Swagger API as Tool",
|
||||
"settings.trigger": "Trigger",
|
||||
"settings.workplaceGroup": "ARBEITSBEREICH",
|
||||
"settings.workspace": "WORKSPACE",
|
||||
"settings.workspaceSettings": "Arbeitsbereich-Einstellungen",
|
||||
"swaggerAPIAsToolPage.description": "Importiere jede API mithilfe von OpenAPI/Swagger-Spezifikationen als Tool. Einmal konfigurieren und in Workflows wiederverwenden.",
|
||||
"tag.addNew": "Neues Tag hinzufügen",
|
||||
"tag.addTag": "Tags hinzufügen",
|
||||
@ -695,11 +507,9 @@
|
||||
"tag.created": "Tag erfolgreich erstellt",
|
||||
"tag.delete": "Tag löschen",
|
||||
"tag.deleteTip": "Das Tag wird verwendet, löschen?",
|
||||
"tag.editTag": "Tags bearbeiten",
|
||||
"tag.failed": "Tag-Erstellung fehlgeschlagen",
|
||||
"tag.manageTags": "Tags verwalten",
|
||||
"tag.noTag": "Keine Tags",
|
||||
"tag.noTagYet": "Noch keine Tags",
|
||||
"tag.placeholder": "Tags",
|
||||
"tag.selectorPlaceholder": "Typ zum Suchen oder Erstellen",
|
||||
"tag.tags": "Tags",
|
||||
@ -715,7 +525,6 @@
|
||||
"userProfile.community": "Gemeinschaft",
|
||||
"userProfile.compliance": "Einhaltung",
|
||||
"userProfile.contactUs": "Kontaktieren Sie uns",
|
||||
"userProfile.createWorkspace": "Arbeitsbereich erstellen",
|
||||
"userProfile.emailSupport": "E-Mail-Support",
|
||||
"userProfile.forum": "Forum",
|
||||
"userProfile.github": "GitHub",
|
||||
@ -723,7 +532,6 @@
|
||||
"userProfile.logout": "Abmelden",
|
||||
"userProfile.roadmap": "Fahrplan",
|
||||
"userProfile.settings": "Einstellungen",
|
||||
"userProfile.support": "Unterstützung",
|
||||
"userProfile.workspace": "Arbeitsbereich",
|
||||
"voice.language.arTN": "Tunesisches Arabisch",
|
||||
"voice.language.deDE": "Deutsch",
|
||||
|
||||
@ -1,6 +1,4 @@
|
||||
{
|
||||
"app.changeLogoTip": "SVG oder PNG Format mit einer Mindestgröße von 80x80px",
|
||||
"app.title": "App Kopfzeilen Marke anpassen",
|
||||
"apply": "Anwenden",
|
||||
"change": "Ändern",
|
||||
"custom": "Anpassung",
|
||||
@ -9,14 +7,11 @@
|
||||
"customize.suffix": "um auf die Enterprise-Edition zu upgraden.",
|
||||
"restore": "Standardeinstellungen wiederherstellen",
|
||||
"upgradeTip.des": "Upgrade deinen Plan, um deine Marke anzupassen.",
|
||||
"upgradeTip.prefix": "Erweitere deinen Plan auf",
|
||||
"upgradeTip.suffix": "um deine Marke anzupassen.",
|
||||
"upgradeTip.title": "Upgrade deinen Plan",
|
||||
"upload": "Hochladen",
|
||||
"uploadedFail": "Bild-Upload fehlgeschlagen, bitte erneut hochladen.",
|
||||
"uploading": "Lade hoch",
|
||||
"webapp.changeLogo": "Ändere Powered by Markenbild",
|
||||
"webapp.changeLogoTip": "SVG oder PNG Format mit einer Mindestgröße von 40x40px",
|
||||
"webapp.removeBrand": "Entferne Powered by Dify",
|
||||
"webapp.title": "web app Marke anpassen"
|
||||
"webapp.removeBrand": "Entferne Powered by Dify"
|
||||
}
|
||||
|
||||
@ -1,16 +1,6 @@
|
||||
{
|
||||
"error.unavailable": "Dieses Wissen ist nicht verfügbar",
|
||||
"firecrawl.apiKeyPlaceholder": "API-Schlüssel von firecrawl.dev",
|
||||
"firecrawl.configFirecrawl": "Konfigurieren von 🔥Firecrawl",
|
||||
"firecrawl.getApiKeyLinkText": "Holen Sie sich Ihren API-Schlüssel von firecrawl.dev",
|
||||
"jinaReader.apiKeyPlaceholder": "API-Schlüssel von jina.ai",
|
||||
"jinaReader.configJinaReader": "Jina Reader konfigurieren",
|
||||
"jinaReader.getApiKeyLinkText": "Holen Sie sich Ihren kostenlosen API-Schlüssel bei jina.ai",
|
||||
"otherDataSource.description": "Derzeit verfügt die Wissensdatenbank von Dify nur über begrenzte Datenquellen. Das Beitragen einer Datenquelle zur Dify-Wissensdatenbank ist eine fantastische Möglichkeit, die Flexibilität und Leistungsfähigkeit der Plattform für alle Benutzer zu verbessern. Unser Beitragsleitfaden erleichtert Ihnen den Einstieg. Bitte klicken Sie auf den untenstehenden Link, um mehr zu erfahren.",
|
||||
"otherDataSource.learnMore": "Weitere Informationen",
|
||||
"otherDataSource.title": "Verbinden Sie sich mit anderen Datenquellen?",
|
||||
"stepOne.button": "weiter",
|
||||
"stepOne.cancel": "Abbrechen",
|
||||
"stepOne.connect": "Verbinden gehen",
|
||||
"stepOne.dataSourceType.file": "Import aus Textdatei",
|
||||
"stepOne.dataSourceType.notion": "Synchronisation aus Notion",
|
||||
@ -32,7 +22,6 @@
|
||||
"stepOne.uploader.browse": "Durchsuchen",
|
||||
"stepOne.uploader.button": "Dateien und Ordner hierher ziehen oder klicken",
|
||||
"stepOne.uploader.buttonSingleFile": "Datei hierher ziehen oder klicken",
|
||||
"stepOne.uploader.cancel": "Abbrechen",
|
||||
"stepOne.uploader.change": "Ändern",
|
||||
"stepOne.uploader.failed": "Hochladen fehlgeschlagen",
|
||||
"stepOne.uploader.tip": "Unterstützt {{supportTypes}}. Maximal {{batchCount}} Dateien pro Batch und {{size}} MB pro Datei.",
|
||||
@ -57,7 +46,6 @@
|
||||
"stepOne.website.firecrawlTitle": "Extrahieren von Webinhalten mit 🔥Firecrawl",
|
||||
"stepOne.website.includeOnlyPaths": "Nur Pfade einschließen",
|
||||
"stepOne.website.jinaReaderDoc": "Erfahre mehr über Jina Reader",
|
||||
"stepOne.website.jinaReaderDocLink": "https://jina.ai/reader",
|
||||
"stepOne.website.jinaReaderNotConfigured": "Jina Reader ist nicht konfiguriert",
|
||||
"stepOne.website.jinaReaderNotConfiguredDescription": "Richten Sie Jina Reader ein, indem Sie Ihren kostenlosen API-Schlüssel für den Zugriff eingeben.",
|
||||
"stepOne.website.jinaReaderTitle": "Konvertieren Sie die gesamte Website in Markdown",
|
||||
@ -85,34 +73,15 @@
|
||||
"stepThree.creationContent": "Wir haben das Wissen automatisch benannt, Sie können es jederzeit ändern",
|
||||
"stepThree.creationTitle": "🎉 Wissen erstellt",
|
||||
"stepThree.label": "Wissensname",
|
||||
"stepThree.modelButtonCancel": "Abbrechen",
|
||||
"stepThree.modelButtonConfirm": "Bestätigen",
|
||||
"stepThree.modelContent": "Wenn Sie die Verarbeitung später fortsetzen möchten, werden Sie dort weitermachen, wo Sie aufgehört haben.",
|
||||
"stepThree.modelTitle": "Sind Sie sicher, dass Sie die Einbettung stoppen möchten?",
|
||||
"stepThree.navTo": "Zum Dokument gehen",
|
||||
"stepThree.resume": "Verarbeitung fortsetzen",
|
||||
"stepThree.sideTipContent": "Nachdem das Dokument indiziert wurde, kann das Wissen in die Anwendung als Kontext integriert werden, Sie finden die Kontexteinstellung auf der Seite zur Eingabeaufforderungen-Orchestrierung. Sie können es auch als unabhängiges ChatGPT-Indexierungsplugin zur Veröffentlichung erstellen.",
|
||||
"stepThree.sideTipTitle": "Was kommt als Nächstes",
|
||||
"stepThree.stop": "Verarbeitung stoppen",
|
||||
"stepTwo.QALanguage": "Segmentierung verwenden",
|
||||
"stepTwo.QATip": "Diese Option zu aktivieren, wird mehr Tokens verbrauchen",
|
||||
"stepTwo.QATitle": "Segmentierung im Frage-und-Antwort-Format",
|
||||
"stepTwo.auto": "Automatisch",
|
||||
"stepTwo.autoDescription": "Stellt Chunk- und Vorverarbeitungsregeln automatisch ein. Unbekannten Benutzern wird dies empfohlen.",
|
||||
"stepTwo.calculating": "Berechnung...",
|
||||
"stepTwo.cancel": "Abbrechen",
|
||||
"stepTwo.characters": "Zeichen",
|
||||
"stepTwo.childChunkForRetrieval": "Child-Chunk zum Abrufen",
|
||||
"stepTwo.click": "Zu den Einstellungen gehen",
|
||||
"stepTwo.custom": "Benutzerdefiniert",
|
||||
"stepTwo.customDescription": "Chunk-Regeln, Chunk-Länge und Vorverarbeitungsregeln usw. anpassen.",
|
||||
"stepTwo.datasetSettingLink": "Wissenseinstellungen.",
|
||||
"stepTwo.economical": "Ökonomisch",
|
||||
"stepTwo.economicalTip": "Verwendet Offline-Vektor-Engines, Schlagwortindizes usw., um die Genauigkeit ohne Tokenverbrauch zu reduzieren",
|
||||
"stepTwo.estimateCost": "Schätzung",
|
||||
"stepTwo.estimateSegment": "Geschätzte Chunks",
|
||||
"stepTwo.fileSource": "Dokumente vorverarbeiten",
|
||||
"stepTwo.fileUnit": " Dateien",
|
||||
"stepTwo.fullDoc": "Vollständiges Dokument",
|
||||
"stepTwo.fullDocTip": "Das gesamte Dokument wird als übergeordneter Block verwendet und direkt abgerufen. Bitte beachten Sie, dass aus Leistungsgründen Texte, die 10000 Token überschreiten, automatisch abgeschnitten werden.",
|
||||
"stepTwo.general": "Allgemein",
|
||||
@ -125,9 +94,6 @@
|
||||
"stepTwo.nextStep": "Speichern & Verarbeiten",
|
||||
"stepTwo.notAvailableForParentChild": "Nicht verfügbar für den Parent-Child-Index",
|
||||
"stepTwo.notAvailableForQA": "Nicht verfügbar für Q&A Index",
|
||||
"stepTwo.notionSource": "Seiten vorverarbeiten",
|
||||
"stepTwo.notionUnit": " Seiten",
|
||||
"stepTwo.other": "und weitere ",
|
||||
"stepTwo.overlap": "Chunk-Überlappung",
|
||||
"stepTwo.overlapCheck": "Chunk-Überlappung sollte nicht größer als maximale Chunk-Länge sein",
|
||||
"stepTwo.overlapTip": "Die Einstellung der Chunk-Überlappung kann die semantische Relevanz zwischen ihnen aufrechterhalten und so die Abrufeffekt verbessern. Es wird empfohlen, 10%-25% der maximalen Chunk-Größe einzustellen.",
|
||||
@ -139,14 +105,9 @@
|
||||
"stepTwo.parentChildTip": "Wenn Sie den Parent-Child-Modus verwenden, wird der Child-Chunk für den Abruf und der Parent-Chunk für den Abruf als Kontext verwendet.",
|
||||
"stepTwo.parentChunkForContext": "Parent-chunk für Context",
|
||||
"stepTwo.preview": "Bestätigen & Vorschau",
|
||||
"stepTwo.previewButton": "Umschalten zum Frage-und-Antwort-Format",
|
||||
"stepTwo.previewChunk": "Vorschau Chunk",
|
||||
"stepTwo.previewChunkCount": "{{count}} Geschätzte Chunks",
|
||||
"stepTwo.previewChunkTip": "Klicken Sie auf die Schaltfläche \"Preview Chunk\" auf der linken Seite, um die Vorschau zu laden",
|
||||
"stepTwo.previewSwitchTipEnd": " zusätzliche Tokens verbrauchen",
|
||||
"stepTwo.previewSwitchTipStart": "Die aktuelle Chunk-Vorschau ist im Textformat, ein Wechsel zur Vorschau im Frage-und-Antwort-Format wird",
|
||||
"stepTwo.previewTitle": "Vorschau",
|
||||
"stepTwo.previewTitleButton": "Vorschau",
|
||||
"stepTwo.previousStep": "Vorheriger Schritt",
|
||||
"stepTwo.qaSwitchHighQualityTipContent": "Derzeit unterstützt nur eine hochwertige Indexmethode das Q&A-Format-Chunking. Möchten Sie in den High-Quality-Modus wechseln?",
|
||||
"stepTwo.qaSwitchHighQualityTipTitle": "Das Q&A-Format erfordert eine qualitativ hochwertige Indizierungsmethode",
|
||||
@ -158,29 +119,16 @@
|
||||
"stepTwo.removeStopwords": "Stopwörter wie \"ein\", \"eine\", \"der\" entfernen",
|
||||
"stepTwo.removeUrlEmails": "Alle URLs und E-Mail-Adressen löschen",
|
||||
"stepTwo.reset": "Zurücksetzen",
|
||||
"stepTwo.retrievalSettingTip": "Um die Indexmethode zu ändern, bitte gehen Sie zu den ",
|
||||
"stepTwo.rules": "Textvorverarbeitungsregeln",
|
||||
"stepTwo.save": "Speichern & Verarbeiten",
|
||||
"stepTwo.segmentCount": "Chunks",
|
||||
"stepTwo.segmentation": "Chunk-Einstellungen",
|
||||
"stepTwo.separator": "Segmentidentifikator",
|
||||
"stepTwo.separatorPlaceholder": "Zum Beispiel Neuer Absatz (\\\\n) oder spezieller Separator (wie \"***\")",
|
||||
"stepTwo.separatorTip": "Ein Trennzeichen ist das Zeichen, das zum Trennen von Text verwendet wird. \\n\\n und \\n sind häufig verwendete Trennzeichen zum Trennen von Absätzen und Zeilen. In Kombination mit Kommas (\\n\\n,\\n) werden Absätze nach Zeilen segmentiert, wenn die maximale Blocklänge überschritten wird. Sie können auch spezielle, von Ihnen selbst definierte Trennzeichen verwenden (z. B. ***).",
|
||||
"stepTwo.sideTipP1": "Bei der Verarbeitung von Textdaten sind Segmentierung und Bereinigung zwei wichtige Vorverarbeitungsschritte.",
|
||||
"stepTwo.sideTipP2": "Segmentierung teilt langen Text in Absätze, damit Modelle ihn besser verstehen können. Dies verbessert die Qualität und Relevanz der Modellergebnisse.",
|
||||
"stepTwo.sideTipP3": "Bereinigung entfernt unnötige Zeichen und Formate, macht das Wissen sauberer und leichter zu parsen.",
|
||||
"stepTwo.sideTipP4": "Richtige Segmentierung und Bereinigung verbessern die Modellleistung und liefern genauere und wertvollere Ergebnisse.",
|
||||
"stepTwo.sideTipTitle": "Warum segmentieren und vorverarbeiten?",
|
||||
"stepTwo.switch": "Schalter",
|
||||
"stepTwo.useQALanguage": "Chunk im Q&A-Format in",
|
||||
"stepTwo.warning": "Bitte zuerst den API-Schlüssel des Modellanbieters einrichten.",
|
||||
"stepTwo.webpageUnit": "Seiten",
|
||||
"stepTwo.websiteSource": "Preprocess-Website",
|
||||
"steps.header.fallbackRoute": "Wissen",
|
||||
"steps.one": "Datenquelle wählen",
|
||||
"steps.three": "Ausführen und beenden",
|
||||
"steps.two": "Textvorverarbeitung und Bereinigung",
|
||||
"watercrawl.apiKeyPlaceholder": "API-Schlüssel von watercrawl.dev",
|
||||
"watercrawl.configWatercrawl": "Wasserkrabbe konfigurieren",
|
||||
"watercrawl.getApiKeyLinkText": "Holen Sie sich Ihren API-Schlüssel von watercrawl.dev"
|
||||
"steps.two": "Textvorverarbeitung und Bereinigung"
|
||||
}
|
||||
|
||||
@ -1,27 +1,19 @@
|
||||
{
|
||||
"embedding.automatic": "Automatisch",
|
||||
"embedding.childMaxTokens": "Kind",
|
||||
"embedding.completed": "Einbettung abgeschlossen",
|
||||
"embedding.custom": "Benutzerdefiniert",
|
||||
"embedding.docName": "Dokument vorbereiten",
|
||||
"embedding.economy": "Wirtschaftlicher Modus",
|
||||
"embedding.error": "Einbettungsfehler",
|
||||
"embedding.estimate": "Geschätzter Verbrauch",
|
||||
"embedding.hierarchical": "Eltern-Kind",
|
||||
"embedding.highQuality": "Hochwertiger Modus",
|
||||
"embedding.mode": "Segmentierungsregel",
|
||||
"embedding.parentMaxTokens": "Elternteil",
|
||||
"embedding.pause": "Pause",
|
||||
"embedding.paused": "Einbettung pausiert",
|
||||
"embedding.previewTip": "Absatzvorschau ist nach Abschluss der Einbettung verfügbar",
|
||||
"embedding.processing": "Einbettungsverarbeitung...",
|
||||
"embedding.resume": "Verarbeitung fortsetzen",
|
||||
"embedding.segmentLength": "Chunk-Länge",
|
||||
"embedding.segments": "Absätze",
|
||||
"embedding.stop": "Verarbeitung stoppen",
|
||||
"embedding.textCleaning": "Textvordefinition und -bereinigung",
|
||||
"embedding.waiting": "Einbettung wartet...",
|
||||
"list.action.add": "Einen Chunk hinzufügen",
|
||||
"list.action.addButton": "Chunk hinzufügen",
|
||||
"list.action.archive": "Archivieren",
|
||||
"list.action.batchAdd": "Batch hinzufügen",
|
||||
@ -34,7 +26,6 @@
|
||||
"list.action.summary": "Zusammenfassung generieren",
|
||||
"list.action.sync": "Synchronisieren",
|
||||
"list.action.unarchive": "Archivierung aufheben",
|
||||
"list.action.uploadFile": "Neue Datei hochladen",
|
||||
"list.addFile": "Datei hinzufügen",
|
||||
"list.addPages": "Seiten hinzufügen",
|
||||
"list.addUrl": "URL hinzufügen",
|
||||
@ -52,7 +43,6 @@
|
||||
"list.batchModal.run": "Batch ausführen",
|
||||
"list.batchModal.runError": "Batch-Ausführung fehlgeschlagen",
|
||||
"list.batchModal.template": "Laden Sie die Vorlage hier herunter",
|
||||
"list.batchModal.tip": "Die CSV-Datei muss der folgenden Struktur entsprechen:",
|
||||
"list.batchModal.title": "Chunks in Batch hinzufügen",
|
||||
"list.delete.content": "Wenn Sie die Verarbeitung später fortsetzen müssen, werden Sie dort weitermachen, wo Sie aufgehört haben",
|
||||
"list.delete.title": "Sind Sie sicher, dass Sie löschen möchten?",
|
||||
@ -61,10 +51,6 @@
|
||||
"list.empty.title": "Es gibt noch keine Dokumentation",
|
||||
"list.empty.upload.tip": "Sie können Dateien hochladen, von der Website oder von Web-Apps wie Notion, GitHub usw. synchronisieren.",
|
||||
"list.index.all": "Alle",
|
||||
"list.index.disable": "Deaktivieren",
|
||||
"list.index.disableTip": "Die Datei kann nicht indiziert werden",
|
||||
"list.index.enable": "Aktivieren",
|
||||
"list.index.enableTip": "Die Datei kann indiziert werden",
|
||||
"list.learnMore": "Weitere Informationen",
|
||||
"list.sort.hitCount": "Abrufanzahl",
|
||||
"list.sort.uploadTime": "Upload-Zeit",
|
||||
@ -78,7 +64,6 @@
|
||||
"list.status.queuing": "In Warteschlange",
|
||||
"list.summary.generating": "Wird generiert...",
|
||||
"list.summary.generatingSummary": "Zusammenfassung wird generiert",
|
||||
"list.summary.ready": "Zusammenfassung bereit",
|
||||
"list.table.header.action": "AKTION",
|
||||
"list.table.header.chunkingMode": "CHUNKING-MODUS",
|
||||
"list.table.header.fileName": "DATEINAME",
|
||||
@ -89,61 +74,7 @@
|
||||
"list.table.name": "Name",
|
||||
"list.table.rename": "Umbenennen",
|
||||
"list.title": "Dokumente",
|
||||
"metadata.categoryMap.book.art": "Kunst",
|
||||
"metadata.categoryMap.book.biography": "Biografie",
|
||||
"metadata.categoryMap.book.businessEconomics": "Wirtschaft",
|
||||
"metadata.categoryMap.book.childrenYoungAdults": "Kinder & Jugendliche",
|
||||
"metadata.categoryMap.book.comicsGraphicNovels": "Comics & Grafische Romane",
|
||||
"metadata.categoryMap.book.cooking": "Kochen",
|
||||
"metadata.categoryMap.book.drama": "Drama",
|
||||
"metadata.categoryMap.book.education": "Bildung",
|
||||
"metadata.categoryMap.book.fiction": "Fiktion",
|
||||
"metadata.categoryMap.book.health": "Gesundheit",
|
||||
"metadata.categoryMap.book.history": "Geschichte",
|
||||
"metadata.categoryMap.book.other": "Andere",
|
||||
"metadata.categoryMap.book.philosophy": "Philosophie",
|
||||
"metadata.categoryMap.book.poetry": "Poesie",
|
||||
"metadata.categoryMap.book.religion": "Religion",
|
||||
"metadata.categoryMap.book.science": "Wissenschaft",
|
||||
"metadata.categoryMap.book.selfHelp": "Selbsthilfe",
|
||||
"metadata.categoryMap.book.socialSciences": "Sozialwissenschaften",
|
||||
"metadata.categoryMap.book.technology": "Technologie",
|
||||
"metadata.categoryMap.book.travel": "Reisen",
|
||||
"metadata.categoryMap.businessDoc.contractsAgreements": "Verträge & Vereinbarungen",
|
||||
"metadata.categoryMap.businessDoc.designDocument": "Design-Dokument",
|
||||
"metadata.categoryMap.businessDoc.emailCorrespondence": "E-Mail-Korrespondenz",
|
||||
"metadata.categoryMap.businessDoc.employeeHandbook": "Mitarbeiterhandbuch",
|
||||
"metadata.categoryMap.businessDoc.financialReport": "Finanzbericht",
|
||||
"metadata.categoryMap.businessDoc.marketAnalysis": "Marktanalyse",
|
||||
"metadata.categoryMap.businessDoc.meetingMinutes": "Protokolle",
|
||||
"metadata.categoryMap.businessDoc.other": "Andere",
|
||||
"metadata.categoryMap.businessDoc.policiesProcedures": "Richtlinien & Verfahren",
|
||||
"metadata.categoryMap.businessDoc.productSpecification": "Produktspezifikation",
|
||||
"metadata.categoryMap.businessDoc.projectPlan": "Projektplan",
|
||||
"metadata.categoryMap.businessDoc.proposal": "Vorschlag",
|
||||
"metadata.categoryMap.businessDoc.requirementsDocument": "Anforderungsdokumentation",
|
||||
"metadata.categoryMap.businessDoc.researchReport": "Forschungsbericht",
|
||||
"metadata.categoryMap.businessDoc.teamStructure": "Teamstruktur",
|
||||
"metadata.categoryMap.businessDoc.trainingMaterials": "Schulungsmaterialien",
|
||||
"metadata.categoryMap.personalDoc.blogDraft": "Blog-Entwurf",
|
||||
"metadata.categoryMap.personalDoc.bookExcerpt": "Buchauszug",
|
||||
"metadata.categoryMap.personalDoc.codeSnippet": "Code-Snippet",
|
||||
"metadata.categoryMap.personalDoc.creativeWriting": "Kreatives Schreiben",
|
||||
"metadata.categoryMap.personalDoc.designDraft": "Design-Entwurf",
|
||||
"metadata.categoryMap.personalDoc.diary": "Tagebuch",
|
||||
"metadata.categoryMap.personalDoc.list": "Liste",
|
||||
"metadata.categoryMap.personalDoc.notes": "Notizen",
|
||||
"metadata.categoryMap.personalDoc.other": "Andere",
|
||||
"metadata.categoryMap.personalDoc.personalResume": "Persönlicher Lebenslauf",
|
||||
"metadata.categoryMap.personalDoc.photoCollection": "Fotosammlung",
|
||||
"metadata.categoryMap.personalDoc.projectOverview": "Projektübersicht",
|
||||
"metadata.categoryMap.personalDoc.researchReport": "Forschungsbericht",
|
||||
"metadata.categoryMap.personalDoc.schedule": "Zeitplan",
|
||||
"metadata.dateTimeFormat": "MMMM D, YYYY hh:mm A",
|
||||
"metadata.desc": "Das Kennzeichnen von Metadaten für Dokumente ermöglicht es der KI, sie rechtzeitig zu erreichen und die Quelle der Referenzen für die Benutzer offenzulegen.",
|
||||
"metadata.docTypeChangeTitle": "Dokumenttyp ändern",
|
||||
"metadata.docTypeSelectTitle": "Bitte wählen Sie einen Dokumenttyp",
|
||||
"metadata.docTypeSelectWarning": "Wenn der Dokumenttyp geändert wird, werden die jetzt ausgefüllten Metadaten nicht mehr erhalten bleiben",
|
||||
"metadata.field.IMChat.chatPartiesGroupName": "Chat-Parteien/Gruppenname",
|
||||
"metadata.field.IMChat.chatPlatform": "Chat-Plattform",
|
||||
"metadata.field.IMChat.endDate": "Enddatum",
|
||||
@ -202,10 +133,6 @@
|
||||
"metadata.field.personalDocument.lastModifiedDate": "Letztes Änderungsdatum",
|
||||
"metadata.field.personalDocument.tagsCategory": "Tags/Kategorie",
|
||||
"metadata.field.personalDocument.title": "Titel",
|
||||
"metadata.field.processRule.processClean": "Textverarbeitung bereinigen",
|
||||
"metadata.field.processRule.processDoc": "Dokument verarbeiten",
|
||||
"metadata.field.processRule.segmentLength": "Chunk-Länge",
|
||||
"metadata.field.processRule.segmentRule": "Chunk-Regel",
|
||||
"metadata.field.socialMediaPost.authorUsername": "Autor/Benutzername",
|
||||
"metadata.field.socialMediaPost.platform": "Plattform",
|
||||
"metadata.field.socialMediaPost.postURL": "Beitrags-URL",
|
||||
@ -231,7 +158,6 @@
|
||||
"metadata.field.wikipediaEntry.summaryIntroduction": "Zusammenfassung/Einführung",
|
||||
"metadata.field.wikipediaEntry.title": "Titel",
|
||||
"metadata.field.wikipediaEntry.webpageURL": "Webseiten-URL",
|
||||
"metadata.firstMetaAction": "Los geht's",
|
||||
"metadata.languageMap.ar": "Arabisch",
|
||||
"metadata.languageMap.cs": "Tschechisch",
|
||||
"metadata.languageMap.da": "Dänisch",
|
||||
@ -304,7 +230,6 @@
|
||||
"segment.delete": "Diesen Chunk löschen?",
|
||||
"segment.editChildChunk": "Untergeordneten Block bearbeiten",
|
||||
"segment.editChunk": "Chunk bearbeiten",
|
||||
"segment.editParentChunk": "Übergeordneter Block bearbeiten",
|
||||
"segment.edited": "BEARBEITETE",
|
||||
"segment.editedAt": "Bearbeitet am",
|
||||
"segment.empty": "Kein Chunk gefunden",
|
||||
@ -316,9 +241,6 @@
|
||||
"segment.keywords": "Schlüsselwörter",
|
||||
"segment.newChildChunk": "Neuer untergeordneter Block",
|
||||
"segment.newChunk": "Neuer Brocken",
|
||||
"segment.newQaSegment": "Neues Q&A-Segment",
|
||||
"segment.newTextSegment": "Neues Textsegment",
|
||||
"segment.paragraphs": "Absätze",
|
||||
"segment.parentChunk": "Übergeordneter Chunk",
|
||||
"segment.parentChunks_one": "ÜBERGEORDNETER CHUNK",
|
||||
"segment.parentChunks_other": "ÜBERGEORDNETE BLÖCKE",
|
||||
@ -334,6 +256,5 @@
|
||||
"segment.searchResults_other": "BEFUND",
|
||||
"segment.searchResults_zero": "ERGEBNIS",
|
||||
"segment.summary": "ZUSAMMENFASSUNG",
|
||||
"segment.summaryPlaceholder": "Schreiben Sie eine kurze Zusammenfassung für bessere Abrufbarkeit…",
|
||||
"segment.vectorHash": "Vektor-Hash: "
|
||||
"segment.summaryPlaceholder": "Schreiben Sie eine kurze Zusammenfassung für bessere Abrufbarkeit…"
|
||||
}
|
||||
|
||||
@ -10,7 +10,6 @@
|
||||
"imageUploader.tip": "Bilder hochladen oder ablegen (Max. {{batchCount}}, {{size}} MB pro Bild)",
|
||||
"imageUploader.tooltip": "Bilder hochladen (Max. {{batchCount}}, jeweils {{size}} MB)",
|
||||
"input.countWarning": "Bis zu 200 Zeichen.",
|
||||
"input.indexWarning": "Nur Wissen hoher Qualität.",
|
||||
"input.placeholder": "Bitte geben Sie einen Text ein, ein kurzer aussagekräftiger Satz wird empfohlen.",
|
||||
"input.testing": "Testen",
|
||||
"input.title": "Quelltext",
|
||||
@ -22,7 +21,5 @@
|
||||
"table.header.queryContent": "Inhaltsabfrage",
|
||||
"table.header.source": "Quelle",
|
||||
"table.header.time": "Zeit",
|
||||
"title": "Abruf-Test",
|
||||
"viewChart": "VEKTORDIAGRAMM ansehen",
|
||||
"viewDetail": "Im Detail sehen"
|
||||
"title": "Abruf-Test"
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
{
|
||||
"addDocuments.backToDataSource": "Datenquelle",
|
||||
"addDocuments.characters": "Zeichen",
|
||||
"addDocuments.selectOnlineDocumentTip": "Bis zu {{count}} Seiten verarbeiten",
|
||||
"addDocuments.selectOnlineDriveTip": "Verarbeiten Sie bis zu {{count}} Dateien, maximal {{fileSize}} MB pro Datei",
|
||||
@ -24,7 +23,6 @@
|
||||
"creation.caution": "Vorsicht",
|
||||
"creation.createFromScratch.description": "Erstellen Sie eine benutzerdefinierte Pipeline von Grund auf neu mit vollständiger Kontrolle über die Datenverarbeitung und -struktur.",
|
||||
"creation.createFromScratch.title": "Leere Wissenspipeline",
|
||||
"creation.createKnowledge": "Wissen schaffen",
|
||||
"creation.errorTip": "Fehler beim Erstellen einer Wissensdatenbank",
|
||||
"creation.importDSL": "Importieren aus einer DSL-Datei",
|
||||
"creation.successTip": "Erfolgreich eine Wissensdatenbank erstellt",
|
||||
@ -52,9 +50,7 @@
|
||||
"inputFieldPanel.uniqueInputs.tooltip": "Eindeutige Eingaben sind nur für die ausgewählte Datenquelle und ihre Downstream-Knoten zugänglich. Benutzer müssen sie nicht ausfüllen, wenn sie andere Datenquellen auswählen. Im ersten Schritt (Datenquelle) werden nur Eingabefelder angezeigt, auf die von Datenquellenvariablen verwiesen wird. Alle anderen Felder werden im zweiten Schritt (Dokumente bearbeiten) angezeigt.",
|
||||
"knowledgeDescription": "Beschreibung des Wissens",
|
||||
"knowledgeDescriptionPlaceholder": "Beschreiben Sie, was in dieser Wissensdatenbank enthalten ist. Eine detaillierte Beschreibung ermöglicht es der KI, genauer auf den Inhalt des Datensatzes zuzugreifen. Wenn das Feld leer ist, verwendet Dify die Standard-Trefferstrategie. (Fakultativ)",
|
||||
"knowledgeNameAndIcon": "Name und Symbol des Wissens",
|
||||
"knowledgeNameAndIconPlaceholder": "Bitte geben Sie den Namen der Knowledge Base ein.",
|
||||
"knowledgePermissions": "Erlaubnisse",
|
||||
"onlineDocument.pageSelectorTitle": "{{name}} Seiten",
|
||||
"onlineDrive.breadcrumbs.allBuckets": "Alle Cloud Storage-Buckets",
|
||||
"onlineDrive.breadcrumbs.allFiles": "Alle Dateien",
|
||||
@ -62,8 +58,6 @@
|
||||
"onlineDrive.breadcrumbs.searchResult": "{{searchResultsLength}} Elemente im Ordner \"{{folderName}}\" finden",
|
||||
"onlineDrive.emptyFolder": "Dieser Ordner ist leer",
|
||||
"onlineDrive.emptySearchResult": "Es wurden keine Gegenstände gefunden",
|
||||
"onlineDrive.notConnected": "{{name}} ist nicht verbunden",
|
||||
"onlineDrive.notConnectedTip": "Um mit {{name}} zu synchronisieren, muss zuerst eine Verbindung zu {{name}} hergestellt werden.",
|
||||
"onlineDrive.notSupportedFileType": "Dieser Dateityp wird nicht unterstützt",
|
||||
"onlineDrive.resetKeywords": "Schlüsselwörter zurücksetzen",
|
||||
"operations.backToDataSource": "Zurück zur Datenquelle",
|
||||
@ -86,9 +80,6 @@
|
||||
"publishTemplate.success.message": "Pipeline-Vorlage veröffentlicht",
|
||||
"publishTemplate.success.tip": "Sie können diese Vorlage auf der Erstellungsseite verwenden.",
|
||||
"templates.customized": "Angepasst",
|
||||
"testRun.dataSource.localFiles": "Lokale Dateien",
|
||||
"testRun.notion.docTitle": "Notion docs",
|
||||
"testRun.notion.title": "Wählen Sie Notion Pages",
|
||||
"testRun.steps.dataSource": "Datenquelle",
|
||||
"testRun.steps.documentProcessing": "Verarbeitung von Dokumenten",
|
||||
"testRun.title": "Testlauf",
|
||||
|
||||
@ -4,20 +4,16 @@
|
||||
"form.chunkStructure.learnMore": "Weitere Informationen",
|
||||
"form.chunkStructure.title": "Chunk-Struktur",
|
||||
"form.desc": "Wissensbeschreibung",
|
||||
"form.descInfo": "Bitte schreiben Sie eine klare textuelle Beschreibung, um den Inhalt des Wissens zu umreißen. Diese Beschreibung wird als Grundlage für die Auswahl aus mehreren Wissensdatenbanken zur Inferenz verwendet.",
|
||||
"form.descPlaceholder": "Beschreiben Sie, was in diesem Wissen enthalten ist. Eine detaillierte Beschreibung ermöglicht es der KI, zeitnah auf den Inhalt des Wissens zuzugreifen. Wenn leer, verwendet Dify die Standard-Treffstrategie.",
|
||||
"form.descWrite": "Erfahren Sie, wie man eine gute Wissensbeschreibung schreibt.",
|
||||
"form.embeddingModel": "Einbettungsmodell",
|
||||
"form.embeddingModelTip": "Ändern Sie das eingebettete Modell, bitte gehen Sie zu ",
|
||||
"form.embeddingModelTipLink": "Einstellungen",
|
||||
"form.externalKnowledgeAPI": "API für externes Wissen",
|
||||
"form.externalKnowledgeID": "ID für externes Wissen",
|
||||
"form.helpText": "Erfahren Sie, wie Sie eine gute Datensatzbeschreibung schreiben.",
|
||||
"form.indexMethod": "Indexierungsmethode",
|
||||
"form.indexMethodChangeToEconomyDisabledTip": "Nicht verfügbar für ein Downgrade von HQ auf ECO",
|
||||
"form.indexMethodEconomy": "Ökonomisch",
|
||||
"form.indexMethodEconomyTip": "Verwendet {{count}} Schlüsselwörter pro Chunk für den Abruf, ohne Tokenverbrauch, auf Kosten geringerer Genauigkeit.",
|
||||
"form.indexMethodHighQuality": "Hohe Qualität",
|
||||
"form.indexMethodHighQualityTip": "Den Embedding-Modell zur Verarbeitung aufrufen, um bei Benutzeranfragen eine höhere Genauigkeit zu bieten.",
|
||||
"form.me": "(Sie)",
|
||||
"form.name": "Wissensname",
|
||||
@ -36,7 +32,6 @@
|
||||
"form.retrievalSetting.method": "Abrufmethode",
|
||||
"form.retrievalSetting.multiModalTip": "Wenn das Embedding-Modell multimodal unterstützt, wählen Sie bitte ein multimodales Reranking-Modell für eine bessere Leistung.",
|
||||
"form.retrievalSetting.title": "Abrufeinstellung",
|
||||
"form.retrievalSettings": "Einstellungen für den Abruf",
|
||||
"form.save": "Speichern",
|
||||
"form.searchModel": "Modell suchen",
|
||||
"form.summaryAutoGen": "Automatische Zusammenfassungserstellung",
|
||||
|
||||
@ -28,16 +28,10 @@
|
||||
"connectHelper.helper5": "bevor Sie diese Funktion verwenden.",
|
||||
"cornerLabel.pipeline": "Pipeline",
|
||||
"cornerLabel.unavailable": "Nicht verfügbar",
|
||||
"createDataset": "Wissen erstellen",
|
||||
"createDatasetIntro": "Importiere deine eigenen Textdaten oder schreibe Daten in Echtzeit über Webhook für die LLM-Kontextverbesserung.",
|
||||
"createExternalAPI": "Hinzufügen einer externen Knowledge-API",
|
||||
"createFromPipeline": "Aus Wissenspipeline erstellen",
|
||||
"createNewExternalAPI": "Erstellen einer neuen API für externes Wissen",
|
||||
"datasetDeleteFailed": "Löschen des Wissens fehlgeschlagen",
|
||||
"datasetDeleted": "Wissen gelöscht",
|
||||
"datasetUsedByApp": "Das Wissen wird von einigen Apps verwendet. Apps werden dieses Wissen nicht mehr nutzen können, und alle Prompt-Konfigurationen und Protokolle werden dauerhaft gelöscht.",
|
||||
"datasets": "WISSEN",
|
||||
"datasetsApi": "API",
|
||||
"defaultRetrievalTip": "Standardmäßig wird der Multi-Path-Abruf verwendet. Das Wissen wird aus mehreren Wissensdatenbanken abgerufen und dann neu eingestuft.",
|
||||
"deleteDatasetConfirmContent": "Das Löschen des Wissens ist unwiderruflich. Benutzer werden nicht mehr auf Ihr Wissen zugreifen können und alle Eingabeaufforderungen, Konfigurationen und Protokolle werden dauerhaft gelöscht.",
|
||||
"deleteDatasetConfirmTitle": "Dieses Wissen löschen?",
|
||||
@ -46,11 +40,9 @@
|
||||
"deleteExternalAPIConfirmWarningContent.noConnectionContent": "Sind Sie sicher, dass Sie diese API löschen möchten?",
|
||||
"deleteExternalAPIConfirmWarningContent.title.end": "?",
|
||||
"deleteExternalAPIConfirmWarningContent.title.front": "Löschen",
|
||||
"didYouKnow": "Wusstest du schon?",
|
||||
"docAllEnabled_one": "{{count}} Dokument aktiviert",
|
||||
"docAllEnabled_other": "Alle {{count}} Dokumente aktiviert",
|
||||
"docsFailedNotice": "Dokumente konnten nicht indiziert werden",
|
||||
"documentCount": " Dokumente",
|
||||
"documentsDisabled": "{{num}} Dokumente deaktiviert - seit über 30 Tagen inaktiv",
|
||||
"editExternalAPIConfirmWarningContent.end": "externes Wissen, und diese Modifikation wird auf alle angewendet. Sind Sie sicher, dass Sie diese Änderung speichern möchten?",
|
||||
"editExternalAPIConfirmWarningContent.front": "Diese External Knowledge API ist verknüpft mit",
|
||||
@ -60,14 +52,9 @@
|
||||
"editExternalAPITooltipTitle": "VERKNÜPFTES WISSEN",
|
||||
"embeddingModelNotAvailable": "Das Einbettungsmodell ist nicht verfügbar.",
|
||||
"enable": "Ermöglichen",
|
||||
"externalAPI": "Externe API",
|
||||
"externalAPIForm.apiKey": "API-Schlüssel",
|
||||
"externalAPIForm.cancel": "Abbrechen",
|
||||
"externalAPIForm.edit": "Redigieren",
|
||||
"externalAPIForm.encrypted.end": "Technologie.",
|
||||
"externalAPIForm.encrypted.front": "Ihr API-Token wird verschlüsselt und gespeichert mit",
|
||||
"externalAPIForm.endpoint": "API-Endpunkt",
|
||||
"externalAPIForm.name": "Name",
|
||||
"externalAPIForm.save": "Retten",
|
||||
"externalAPIPanelDescription": "Die API für externes Wissen wird verwendet, um eine Verbindung zu einer Wissensdatenbank außerhalb von Dify herzustellen und Wissen aus dieser Wissensdatenbank abzurufen.",
|
||||
"externalAPIPanelDocumentation": "Erfahren Sie, wie Sie eine API für externes Wissen erstellen",
|
||||
@ -89,7 +76,6 @@
|
||||
"firstEmpty.createDescription": "Der schnellste Einstieg. Du kannst jederzeit zu benutzerdefiniert wechseln.",
|
||||
"firstEmpty.createTitle": "Einsatzbereite Wissensdatenbank erstellen",
|
||||
"firstEmpty.or": "Oder",
|
||||
"firstEmpty.pickHint": "Nicht sicher, was du wählen sollst? Starte mit Wissen erstellen - du kannst später jederzeit wechseln.",
|
||||
"firstEmpty.pipelineDescription": "Definiere eigene Chunking-, Bereinigungs- und Indexierungsabläufe für spezialisierte Daten.",
|
||||
"firstEmpty.pipelineTitle": "Benutzerdefinierte Wissensdatenbank erstellen",
|
||||
"firstEmpty.recommended": "Empfohlen",
|
||||
@ -106,15 +92,7 @@
|
||||
"indexingMethod.semantic_search": "VEKTOR",
|
||||
"indexingTechnique.economy": "ECO",
|
||||
"indexingTechnique.high_quality": "HQ",
|
||||
"intro1": "Das Wissen kann in die Dify-Anwendung ",
|
||||
"intro2": "als Kontext",
|
||||
"intro3": ",",
|
||||
"intro4": "oder es ",
|
||||
"intro5": "kann erstellt werden",
|
||||
"intro6": " als ein eigenständiges ChatGPT-Index-Plugin zum Veröffentlichen",
|
||||
"knowledge": "Wissen",
|
||||
"learnHowToWriteGoodKnowledgeDescription": "Erfahren Sie, wie Sie eine gute Wissensbeschreibung schreiben",
|
||||
"localDocs": "Lokale Dokumente",
|
||||
"metadata.addMetadata": "Metadaten hinzufügen",
|
||||
"metadata.batchEditMetadata.applyToAllSelectDocument": "Auf alle ausgewählten Dokumente anwenden",
|
||||
"metadata.batchEditMetadata.applyToAllSelectDocumentTip": "Erstellen Sie automatisch alle oben bearbeiteten und neuen Metadaten für alle ausgewählten Dokumente, andernfalls wird die Bearbeitung der Metadaten nur auf Dokumente angewendet, die bereits Metadaten enthalten.",
|
||||
@ -152,9 +130,6 @@
|
||||
"mixtureHighQualityAndEconomicTip": "Für die Mischung von hochwertigen und wirtschaftlichen Wissensbasen ist das Rerank-Modell erforderlich.",
|
||||
"mixtureInternalAndExternalTip": "Das Rerank-Modell ist für die Mischung von internem und externem Wissen erforderlich.",
|
||||
"multimodal": "Multimodal",
|
||||
"nTo1RetrievalLegacy": "N-zu-1-Abruf wird ab September offiziell eingestellt. Es wird empfohlen, den neuesten Multi-Pfad-Abruf zu verwenden, um bessere Ergebnisse zu erzielen.",
|
||||
"nTo1RetrievalLegacyLink": "Mehr erfahren",
|
||||
"nTo1RetrievalLegacyLinkText": "N-zu-1-Abruf wird im September offiziell eingestellt.",
|
||||
"noExternalKnowledge": "Es gibt noch keine External Knowledge API, klicken Sie hier, um zu erstellen",
|
||||
"parentMode.fullDoc": "Vollständiges Dokument",
|
||||
"parentMode.paragraph": "Absatz",
|
||||
@ -162,14 +137,10 @@
|
||||
"partialEnabled_other": "Insgesamt {{count}} Dokumente, {{num}} verfügbar",
|
||||
"preprocessDocument": "{{num}} Vorverarbeiten von Dokumenten",
|
||||
"rerankSettings": "Rerank-Einstellungen",
|
||||
"retrieval.change": "Ändern",
|
||||
"retrieval.changeRetrievalMethod": "Abfragemethode ändern",
|
||||
"retrieval.full_text_search.description": "Indiziere alle Begriffe im Dokument, sodass Benutzer jeden Begriff suchen und den relevanten Textabschnitt finden können, der diese Begriffe enthält.",
|
||||
"retrieval.full_text_search.title": "Volltextsuche",
|
||||
"retrieval.hybrid_search.description": "Führe Volltextsuche und Vektorsuchen gleichzeitig aus, ordne neu, um die beste Übereinstimmung für die Abfrage des Benutzers auszuwählen. Konfiguration des Rerank-Modell-APIs ist notwendig.",
|
||||
"retrieval.hybrid_search.recommend": "Empfehlen",
|
||||
"retrieval.hybrid_search.title": "Hybridsuche",
|
||||
"retrieval.invertedIndex.description": "Ein invertierter Index ist eine Struktur, die für eine effiziente Abrufung verwendet wird. Nach Begriffen organisiert, verweist jeder Begriff auf Dokumente oder Webseiten, die ihn enthalten.",
|
||||
"retrieval.invertedIndex.title": "Invertierter Index",
|
||||
"retrieval.keyword_search.description": "Der invertierte Index ist eine Struktur, die für einen effizienten Abruf verwendet wird. Jeder Begriff ist nach Begriffen geordnet und verweist auf Dokumente oder Webseiten, die ihn enthalten.",
|
||||
"retrieval.keyword_search.title": "Invertierter Index",
|
||||
@ -188,12 +159,8 @@
|
||||
"unavailable": "Nicht verfügbar",
|
||||
"unknownError": "Unbekannter Fehler",
|
||||
"updated": "Aktualisierte",
|
||||
"weightedScore.customized": "Angepasst",
|
||||
"weightedScore.description": "Durch Anpassung der zugewiesenen Gewichte bestimmt diese Rerank-Strategie, ob semantische oder Schlüsselwort-Übereinstimmung priorisiert werden soll.",
|
||||
"weightedScore.keyword": "Schlüsselwort",
|
||||
"weightedScore.keywordFirst": "Schlüsselwort zuerst",
|
||||
"weightedScore.semantic": "Semantisch",
|
||||
"weightedScore.semanticFirst": "Semantik zuerst",
|
||||
"weightedScore.title": "Gewichtete Bewertung",
|
||||
"wordCount": " k Wörter"
|
||||
"weightedScore.title": "Gewichtete Bewertung"
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
{
|
||||
"access.api.backendTitle": "Backend-Dienst-API",
|
||||
"access.api.copyCurlExample": "cURL-Beispiel kopieren",
|
||||
"access.api.createFailed": "API-Token konnte nicht generiert werden.",
|
||||
"access.api.createKey": "API-Token generieren",
|
||||
@ -9,7 +8,6 @@
|
||||
"access.api.developerTitle": "Entwickler-API",
|
||||
"access.api.disabled": "Der API-Zugriff ist für diese Bereitstellung deaktiviert.",
|
||||
"access.api.disabledHint": "Aktivieren Sie den API-Zugriff, um umgebungsspezifische Token zu generieren.",
|
||||
"access.api.dismissToken": "API-Token schließen",
|
||||
"access.api.docs": "API-Dokumentation",
|
||||
"access.api.docsClose": "API-Dokumentation schließen",
|
||||
"access.api.docsDescription": "Workflow-API-Referenz für diese Bereitstellung anzeigen.",
|
||||
@ -17,7 +15,6 @@
|
||||
"access.api.empty": "Stellen Sie zuerst in einer Umgebung bereit, um API-Token auszustellen.",
|
||||
"access.api.emptyTitle": "Keine bereitgestellten Umgebungen",
|
||||
"access.api.endpoint": "Anforderungs-URL",
|
||||
"access.api.envPrefix": "env: {{env}}",
|
||||
"access.api.keyList": "API-Token-Liste",
|
||||
"access.api.nameLabel": "Name des API-Tokens",
|
||||
"access.api.namePlaceholder": "Geben Sie einen Namen für den API-Token ein",
|
||||
@ -36,14 +33,8 @@
|
||||
"access.api.table.environment": "Umgebung",
|
||||
"access.api.table.key": "API-Token",
|
||||
"access.api.table.name": "Name",
|
||||
"access.api.title": "API",
|
||||
"access.channels.col.channel": "Kanal",
|
||||
"access.channels.col.endpoint": "Einstiegspunkt",
|
||||
"access.channels.col.status": "Status",
|
||||
"access.channels.description": "WebApp- und CLI-Einstiegspunkte verwenden die oben festgelegten Zugriffsberechtigungen.",
|
||||
"access.channels.disabled": "Zugriffskanäle sind für diese Bereitstellung deaktiviert.",
|
||||
"access.channels.disabledHint": "Aktivieren Sie Zugriffskanäle, um WebApp- und CLI-Einstiegspunkte verfügbar zu machen.",
|
||||
"access.channels.followPermission": "Folgt Berechtigungen",
|
||||
"access.channels.title": "Zugriffskanäle",
|
||||
"access.cli.description": "Über das Terminal mit difyctl aufrufen, geeignet für Skripte, automatisierte Workflows oder Agent-Integrationen.",
|
||||
"access.cli.docs": "Anwendungsleitfaden",
|
||||
@ -51,103 +42,57 @@
|
||||
"access.cli.empty": "CLI-Endpunkt nicht konfiguriert.",
|
||||
"access.cli.install": "CLI installieren",
|
||||
"access.cli.title": "CLI",
|
||||
"access.copied": "Kopiert",
|
||||
"access.copy": "Kopieren",
|
||||
"access.copyFailed": "Kopieren fehlgeschlagen",
|
||||
"access.copyToast": "In die Zwischenablage kopiert",
|
||||
"access.hide": "Ausblenden",
|
||||
"access.members.clearAll": "Alle löschen",
|
||||
"access.members.empty": "Keine Treffer gefunden.",
|
||||
"access.members.groupCount_one": "{{count}} Gruppe",
|
||||
"access.members.groupCount_other": "{{count}} Gruppen",
|
||||
"access.members.groups": "Gruppen",
|
||||
"access.members.individuals": "Mitglieder",
|
||||
"access.members.memberCount_one": "{{count}} Mitglied",
|
||||
"access.members.memberCount_other": "{{count}} Mitglieder",
|
||||
"access.members.pickPlaceholder": "Gruppen oder Mitglieder auswählen",
|
||||
"access.members.searchPlaceholder": "Gruppen und Mitglieder suchen",
|
||||
"access.members.selectedLabel": "Ausgewählt",
|
||||
"access.permission.anyone": "Jeder mit dem Link",
|
||||
"access.permission.anyoneDesc": "Jeder kann ohne Anmeldung auf diese Bereitstellung zugreifen.",
|
||||
"access.permission.memberCount_one": "{{count}} Mitglied",
|
||||
"access.permission.memberCount_other": "{{count}} Mitglieder",
|
||||
"access.permission.organization": "Alle Mitglieder innerhalb der Plattform",
|
||||
"access.permission.organizationDesc": "Alle Mitglieder innerhalb der Plattform",
|
||||
"access.permission.specific": "Bestimmte Mitglieder innerhalb der Plattform",
|
||||
"access.permission.specificDesc": "Bestimmte Gruppen oder Mitglieder auswählen",
|
||||
"access.permission.specificUnavailable": "Die Auswahl bestimmter Mitglieder ist deaktiviert, bis echte Plattformmitglieder und -gruppen verbunden sind.",
|
||||
"access.permission.updateFailed": "Zugriffsrichtlinie konnte nicht aktualisiert werden.",
|
||||
"access.permissions.col.environment": "Umgebung",
|
||||
"access.permissions.col.permission": "Zugriff",
|
||||
"access.permissions.description": "Legen Sie Zugriffsberechtigungen für WebApp- und CLI-Einstiegspunkte in jeder Umgebung fest.",
|
||||
"access.permissions.editAriaLabel": "Zugriff für {{environment}} konfigurieren",
|
||||
"access.permissions.editDescription": "Legen Sie Zugriffsberechtigungen für WebApp- und CLI-Einstiegspunkte fest.",
|
||||
"access.permissions.editTitle": "Zugriffsberechtigungen",
|
||||
"access.permissions.title": "Zugriffsberechtigungen",
|
||||
"access.revoke": "Widerrufen",
|
||||
"access.runAccess.description": "Verwalten Sie, wie Benutzer diese Bereitstellung ausführen können und wer pro Umgebung darauf zugreifen darf.",
|
||||
"access.runAccess.disabled": "Der Ausführungszugriff ist für diese Bereitstellung deaktiviert.",
|
||||
"access.runAccess.mcp": "MCP",
|
||||
"access.runAccess.mcpDesc": "Diese Bereitstellung als Model-Context-Protocol-Server bereitstellen.",
|
||||
"access.runAccess.mcpEmpty": "MCP-Endpunkt nicht konfiguriert.",
|
||||
"access.runAccess.noEnvs": "Stellen Sie in einer Umgebung bereit, um Zugriffsberechtigungen zu konfigurieren.",
|
||||
"access.runAccess.noEnvsTitle": "Keine bereitgestellten Umgebungen",
|
||||
"access.runAccess.openWebapp": "WebApp öffnen",
|
||||
"access.runAccess.permissions": "Zugriffsberechtigungen",
|
||||
"access.runAccess.permissionsDesc": "Wer in jeder Umgebung auf diese Bereitstellung zugreifen kann.",
|
||||
"access.runAccess.title": "Ausführungszugriff",
|
||||
"access.runAccess.urlLabel": "URL",
|
||||
"access.runAccess.webapp": "WebApp",
|
||||
"access.runAccess.webappDesc": "Gehostete Webseite für Endbenutzer.",
|
||||
"access.runAccess.webappEmpty": "Demnächst verfügbar.",
|
||||
"access.show": "Anzeigen",
|
||||
"backend.RUNTIME_BACKEND_EXTERNAL": "Extern",
|
||||
"backend.RUNTIME_BACKEND_K8S": "K8S",
|
||||
"backend.RUNTIME_BACKEND_UNSPECIFIED": "Unbekannt",
|
||||
"card.access.api": "API-Token",
|
||||
"card.access.apiShort": "API",
|
||||
"card.access.cli": "CLI",
|
||||
"card.access.cliShort": "CLI",
|
||||
"card.access.none": "Kein Zugriff",
|
||||
"card.access.webApp": "WebApp",
|
||||
"card.access.webAppShort": "Web",
|
||||
"card.createFirstRelease": "Erstes Release erstellen",
|
||||
"card.deploy": "Bereitstellen",
|
||||
"card.deploying": "{{count}} werden bereitgestellt",
|
||||
"card.envOverflow": "+ {{count}}",
|
||||
"card.failed": "{{count}} fehlgeschlagen",
|
||||
"card.fromApp": "Von {{name}}",
|
||||
"card.lastDeployed": "Zuletzt bereitgestellt {{time}}",
|
||||
"card.menu.delete": "Bereitstellung löschen",
|
||||
"card.menu.deleteDisabled": "Das Löschen von Bereitstellungen ist für backendverwaltete Bereitstellungen noch nicht verfügbar.",
|
||||
"card.menu.deploy": "In Umgebung bereitstellen",
|
||||
"card.menu.editInfo": "Informationen bearbeiten",
|
||||
"card.menu.viewDetail": "Bereitstellungsdetails anzeigen",
|
||||
"card.moreActions": "Weitere Aktionen",
|
||||
"card.neverDeployed": "Noch nicht bereitgestellt",
|
||||
"card.noDescription": "Keine Beschreibung angegeben.",
|
||||
"card.notDeployed": "Nicht bereitgestellt",
|
||||
"card.ready": "{{count}} laufen",
|
||||
"card.tooltip.createdAt": "Erstellt",
|
||||
"card.tooltip.deployed": "Bereitgestellt",
|
||||
"card.tooltip.deploymentStatus": "Bereitstellung",
|
||||
"card.tooltip.notDeployed": "Diese Bereitstellung wurde noch in keiner Umgebung bereitgestellt.",
|
||||
"card.tooltip.notDeployedShort": "Nicht bereitgestellt",
|
||||
"card.tooltip.release": "Release",
|
||||
"card.tooltip.releaseName": "Release-Name",
|
||||
"card.tooltip.source": "Quelle",
|
||||
"common.loadFailed": "Laden fehlgeschlagen. Versuchen Sie es später erneut.",
|
||||
"common.loading": "Wird geladen...",
|
||||
"createGuide.actions.back": "Zurück",
|
||||
"createGuide.actions.cancel": "Abbrechen",
|
||||
"createGuide.actions.continue": "Weiter",
|
||||
"createGuide.actions.createAndDeploy": "Erstellen und bereitstellen",
|
||||
"createGuide.actions.creating": "Wird erstellt...",
|
||||
"createGuide.actions.deploy": "Bereitstellen",
|
||||
"createGuide.actions.deploying": "Wird erstellt und bereitgestellt...",
|
||||
"createGuide.actions.next": "Weiter",
|
||||
"createGuide.actions.skipDeploy": "Überspringen, später bereitstellen",
|
||||
"createGuide.description": "Erstellen Sie eine Bereitstellung aus einer Release-Quelle, Basisinformationen und einer Zielumgebung.",
|
||||
"createGuide.dsl.defaultAppName": "Importierte DSL-App",
|
||||
"createGuide.dsl.description": "Laden Sie ein Workflow-DSL-Paket hoch, um die Bereitstellung, das erste Release und die optionale Umgebungsbereitstellung zu erstellen.",
|
||||
"createGuide.dsl.dropDescription": "Laden Sie ein Workflow-YAML-DSL-Paket hoch. Die Bereitstellungsoptionen werden vor der Bereitstellung aus dieser Datei aufgelöst.",
|
||||
@ -163,7 +108,6 @@
|
||||
"createGuide.methods.bindApp.title": "Bestehende Workflow-App binden",
|
||||
"createGuide.methods.importDsl.description": "Laden Sie ein Workflow-YAML-DSL-Paket hoch und fahren Sie über die Bereitstellungs-UI fort.",
|
||||
"createGuide.methods.importDsl.title": "DSL importieren",
|
||||
"createGuide.methods.mocked": "Simuliert",
|
||||
"createGuide.nav.back": "Bereitstellungen",
|
||||
"createGuide.release.defaultName": "initiales Release",
|
||||
"createGuide.release.deployInfo": "Bereitstellungsinformationen",
|
||||
@ -176,10 +120,7 @@
|
||||
"createGuide.release.releaseDescription": "Release-Beschreibung",
|
||||
"createGuide.release.releaseDescriptionPlaceholder": "Beschreiben Sie dieses Release",
|
||||
"createGuide.release.releaseName": "Release-Name",
|
||||
"createGuide.release.releaseNote": "Release-Beschreibung",
|
||||
"createGuide.release.title": "Basisinformationen",
|
||||
"createGuide.source.availableApps_one": "{{count}} App",
|
||||
"createGuide.source.availableApps_other": "{{count}} Apps",
|
||||
"createGuide.source.clearSearch": "App-Suche löschen",
|
||||
"createGuide.source.description": "Wählen Sie die Quelle, die zum Erstellen des ersten Releases verwendet wird.",
|
||||
"createGuide.source.empty": "Keine Workflow-Apps gefunden.",
|
||||
@ -194,8 +135,6 @@
|
||||
"createGuide.target.bindingCount_other": "{{count}} Anmeldedaten",
|
||||
"createGuide.target.bindingHint": "Wählen Sie die Anmeldedaten aus, die von diesem Release verwendet werden.",
|
||||
"createGuide.target.bindings": "Anmeldedaten",
|
||||
"createGuide.target.deferredBindingHint": "Die Anmeldedaten werden während der finalen Bereitstellungsaktion aus dem tatsächlichen Bereitstellungsplan aufgelöst.",
|
||||
"createGuide.target.deferredEnvironmentHint": "Der Name wird mit den tatsächlichen Umgebungen abgeglichen, nachdem die Bereitstellung und das Release erstellt wurden.",
|
||||
"createGuide.target.description": "Wählen Sie eine Zielumgebung und geben Sie die Laufzeiteinstellungen an, die dieses Release dort benötigt. Dieser Schritt kann übersprungen werden.",
|
||||
"createGuide.target.envVarCount_one": "{{count}} Variable",
|
||||
"createGuide.target.envVarCount_other": "{{count}} Variablen",
|
||||
@ -210,15 +149,12 @@
|
||||
"createGuide.target.envVarType.string": "Zeichenkette",
|
||||
"createGuide.target.envVars": "Umgebungsvariablen",
|
||||
"createGuide.target.environment": "Zielumgebung",
|
||||
"createGuide.target.environmentName": "Umgebungsname",
|
||||
"createGuide.target.environmentNamePlaceholder": "Produktion",
|
||||
"createGuide.target.loadBindingsFailed": "Anmeldedaten konnten nicht geladen werden.",
|
||||
"createGuide.target.loadEnvironmentsFailed": "Bereitstellungsumgebungen konnten nicht geladen werden.",
|
||||
"createGuide.target.missingRequiredBinding": "Wählen Sie Anmeldedaten für diese erforderliche Bindung aus.",
|
||||
"createGuide.target.noBindingRequired": "Keine Anmeldedaten erforderlich.",
|
||||
"createGuide.target.noCredentialCandidates": "Keine verfügbaren Anmeldedaten.",
|
||||
"createGuide.target.noEnvironmentOptions": "Keine Bereitstellungsumgebungen verfügbar.",
|
||||
"createGuide.target.required": "Erforderlich",
|
||||
"createGuide.target.selectCredential": "Anmeldedaten auswählen",
|
||||
"createGuide.target.title": "In Umgebung bereitstellen",
|
||||
"createGuide.title": "Neue Bereitstellung",
|
||||
@ -226,31 +162,15 @@
|
||||
"createModal.appSearchEmpty": "Keine passenden Workflow-Apps",
|
||||
"createModal.appSearchPlaceholder": "Workflow-Apps suchen…",
|
||||
"createModal.cancel": "Abbrechen",
|
||||
"createModal.create": "Erstellen",
|
||||
"createModal.createFailed": "Bereitstellung konnte nicht erstellt werden.",
|
||||
"createModal.description": "Wählen Sie eine Workflow-App und erstellen Sie eine Bereitstellung.",
|
||||
"createModal.descriptionLabel": "Beschreibung",
|
||||
"createModal.descriptionPlaceholder": "Beschreiben Sie, wofür diese Bereitstellung verwendet wird",
|
||||
"createModal.loadMoreApps": "Weitere Apps laden",
|
||||
"createModal.loadingApps": "Apps werden geladen…",
|
||||
"createModal.nameLabel": "Bereitstellungsname",
|
||||
"createModal.namePlaceholder": "Bereitstellungsname",
|
||||
"createModal.noApps": "In diesem Arbeitsbereich wurden keine Workflow-Apps gefunden. Erstellen Sie zuerst eine in Studio.",
|
||||
"createModal.selected": "Ausgewählt",
|
||||
"createModal.sourceApp": "Workflow-App (erforderlich)",
|
||||
"createModal.title": "Neue Bereitstellung",
|
||||
"deployDrawer.bindingCount_one": "{{count}} Anmeldedaten",
|
||||
"deployDrawer.bindingCount_other": "{{count}} Anmeldedaten",
|
||||
"deployDrawer.bindingOptionsFailed": "Anmeldedaten-Optionen konnten nicht geladen werden.",
|
||||
"deployDrawer.bindingSelectionHint": "Wählen Sie die Anmeldedaten aus, die von dieser Bereitstellung verwendet werden.",
|
||||
"deployDrawer.bindingsDisabled": "Aus der Release-Vorschau aufgelöst. Bearbeitung ist noch nicht verfügbar.",
|
||||
"deployDrawer.cancel": "Abbrechen",
|
||||
"deployDrawer.close": "Bereitstellungs-Drawer schließen",
|
||||
"deployDrawer.defaultSelect": "Auswählen...",
|
||||
"deployDrawer.deploy": "In Umgebung bereitstellen",
|
||||
"deployDrawer.deployExistingRelease": "In Umgebung bereitstellen",
|
||||
"deployDrawer.deployExistingReleaseDescription": "Wählen Sie ein Release und eine Zielumgebung zur Bereitstellung aus.",
|
||||
"deployDrawer.deployExistingReleaseTitle": "In Umgebung bereitstellen",
|
||||
"deployDrawer.deployFailed": "Bereitstellung konnte nicht gestartet werden.",
|
||||
"deployDrawer.deploying": "Wird bereitgestellt...",
|
||||
"deployDrawer.description": "Wählen Sie ein Release und eine Zielumgebung zur Bereitstellung aus.",
|
||||
@ -267,95 +187,41 @@
|
||||
"deployDrawer.envVarType.string": "Zeichenkette",
|
||||
"deployDrawer.envVars": "Umgebungsvariablen",
|
||||
"deployDrawer.existingReleaseHint": "Dieses Release wird unverändert bereitgestellt. Es wird kein neues Release erstellt.",
|
||||
"deployDrawer.loadingBindings": "Wird aufgelöst...",
|
||||
"deployDrawer.lockedHint": "An aktuelle Umgebung gebunden",
|
||||
"deployDrawer.missingRequiredBinding": "Wählen Sie Anmeldedaten für diese erforderliche Bindung aus.",
|
||||
"deployDrawer.missingRequiredEnvVar": "Geben Sie einen Wert für diese erforderliche Umgebungsvariable ein.",
|
||||
"deployDrawer.modelCreds": "Modell-Anmeldedaten",
|
||||
"deployDrawer.needsValidation": " (Validierung erforderlich)",
|
||||
"deployDrawer.newReleaseHint": "Aus dem ausgewählten Workflow-App-YAML wird ein neues Release erstellt.",
|
||||
"deployDrawer.noBindingRequired": "Nicht erforderlich",
|
||||
"deployDrawer.noCredentialCandidates": "Keine verfügbaren Anmeldedaten.",
|
||||
"deployDrawer.noNewEnvironmentAvailable": "Alle verfügbaren Umgebungen haben bereits eine Bereitstellung.",
|
||||
"deployDrawer.noOtherReleaseAvailable": "Es sind keine weiteren Releases für diese Umgebung verfügbar.",
|
||||
"deployDrawer.noReleaseAvailable": "Erstellen Sie ein Release, bevor Sie in einer Umgebung bereitstellen.",
|
||||
"deployDrawer.notFound": "Bereitstellung nicht gefunden.",
|
||||
"deployDrawer.noteLabel": "Release-Beschreibung (optional)",
|
||||
"deployDrawer.notePlaceholder": "z. B. Onboarding-Texte angepasst",
|
||||
"deployDrawer.pluginCreds": "Plugin-Anmeldedaten",
|
||||
"deployDrawer.promote": "Bereitstellen",
|
||||
"deployDrawer.promoteDescription": "Wählen Sie ein Release und eine Zielumgebung zur Bereitstellung aus.",
|
||||
"deployDrawer.promoteTitle": "In Umgebung bereitstellen",
|
||||
"deployDrawer.readOnly": "Schreibgeschützt",
|
||||
"deployDrawer.redeploy": "In Umgebung bereitstellen",
|
||||
"deployDrawer.redeployDescription": "Wählen Sie ein Release und eine Zielumgebung zur Bereitstellung aus.",
|
||||
"deployDrawer.redeployExistingReleaseHint": "Das aktuelle Release wird unverändert erneut bereitgestellt. Es wird kein neues Release erstellt.",
|
||||
"deployDrawer.redeployTitle": "In Umgebung bereitstellen",
|
||||
"deployDrawer.releaseLabel": "Release",
|
||||
"deployDrawer.requiredBinding": "Erforderlich",
|
||||
"deployDrawer.rollback": "Bereitstellen",
|
||||
"deployDrawer.rollbackDescription": "Wählen Sie ein Release und eine Zielumgebung zur Bereitstellung aus.",
|
||||
"deployDrawer.rollbackTitle": "In Umgebung bereitstellen",
|
||||
"deployDrawer.runtimeCredentials": "Anmeldedaten",
|
||||
"deployDrawer.secretPlaceholder": "Geheimnis",
|
||||
"deployDrawer.selectCredential": "Anmeldedaten auswählen",
|
||||
"deployDrawer.selectEnv": "Eine Umgebung auswählen",
|
||||
"deployDrawer.selectProviderCred": "{{provider}}-Anmeldedaten auswählen",
|
||||
"deployDrawer.selectProviderKey": "{{provider}}-Schlüssel auswählen",
|
||||
"deployDrawer.selectRelease": "Ein Release auswählen",
|
||||
"deployDrawer.targetEnv": "Zielumgebung",
|
||||
"deployDrawer.title": "In Umgebung bereitstellen",
|
||||
"deployDrawer.valuePlaceholder": "Wert",
|
||||
"deployTab.cancelDeployment": "Bereitstellung abbrechen",
|
||||
"deployTab.closeError": "Schließen",
|
||||
"deployTab.col.actions": "Aktionen",
|
||||
"deployTab.col.currentRelease": "Aktuelles Release",
|
||||
"deployTab.col.environment": "Umgebung",
|
||||
"deployTab.col.status": "Status",
|
||||
"deployTab.col.updated": "Aktualisiert",
|
||||
"deployTab.collapseDetails": "Bereitstellungsdetails einklappen",
|
||||
"deployTab.confirmUndeploy": "Bereitstellung aufheben",
|
||||
"deployTab.deployOtherVersion": "Anderes Release bereitstellen",
|
||||
"deployTab.deployToEnv": "In {{name}} bereitstellen",
|
||||
"deployTab.deployToNewEnv": "In neuer Umgebung bereitstellen...",
|
||||
"deployTab.empty": "Noch keine Instanzen. Stellen Sie in einer neuen Umgebung bereit, um zu beginnen.",
|
||||
"deployTab.emptyDescription": "Wählen Sie ein Release und eine Zielumgebung aus, um diese Bereitstellung Benutzern zur Verfügung zu stellen.",
|
||||
"deployTab.emptyTitle": "Es werden noch keine Umgebungen ausgeführt",
|
||||
"deployTab.envCount": "Umgebungen",
|
||||
"deployTab.errorCode": "Code",
|
||||
"deployTab.errorDialogDesc": "Überprüfen Sie die letzte fehlgeschlagene Bereitstellung, bevor Sie es erneut versuchen oder ein anderes Release bereitstellen.",
|
||||
"deployTab.errorDialogTitle": "Bereitstellungsfehler in {{name}}",
|
||||
"deployTab.errorMessage": "Meldung",
|
||||
"deployTab.errorPhase": "Phase",
|
||||
"deployTab.expandDetails": "Bereitstellungsdetails ausklappen",
|
||||
"deployTab.moreActions": "Weitere Aktionen",
|
||||
"deployTab.newDeployment": "In neuer Umgebung bereitstellen",
|
||||
"deployTab.panel.commit": "Commit-ID",
|
||||
"deployTab.panel.deploymentId": "Bereitstellungs-ID",
|
||||
"deployTab.panel.endpoints": "Endpunkte",
|
||||
"deployTab.panel.envVars": "Umgebungsvariablen",
|
||||
"deployTab.panel.error": "Fehler",
|
||||
"deployTab.panel.failedRelease": "Fehlgeschlagenes Release",
|
||||
"deployTab.panel.health": "Zustand",
|
||||
"deployTab.panel.instanceInfo": "Instanzinformationen",
|
||||
"deployTab.panel.modelCreds": "Modell-Anmeldedaten",
|
||||
"deployTab.panel.pluginCreds": "Plugin-Anmeldedaten",
|
||||
"deployTab.panel.release": "Release",
|
||||
"deployTab.panel.releaseCreatedAt": "Release erstellt am",
|
||||
"deployTab.panel.releaseInfo": "Release-Informationen",
|
||||
"deployTab.panel.replicas": "Replikate",
|
||||
"deployTab.panel.run": "Ausführen",
|
||||
"deployTab.panel.runtimeBindings": "Anmeldedaten",
|
||||
"deployTab.panel.runtimeInfo": "Laufzeitinformationen",
|
||||
"deployTab.panel.runtimeMode": "Laufzeitmodus",
|
||||
"deployTab.panel.runtimeNote": "Laufzeit-Hinweis",
|
||||
"deployTab.panel.targetRelease": "Ziel-Release",
|
||||
"deployTab.panel.unknownError": "Bereitstellung fehlgeschlagen.",
|
||||
"deployTab.promote": "Bereitstellen",
|
||||
"deployTab.redeploy": "Erneut bereitstellen",
|
||||
"deployTab.releaseCreatedAt": "Release erstellt {{time}}",
|
||||
"deployTab.retry": "Erneut versuchen",
|
||||
"deployTab.shortcut": "Kurzbefehl",
|
||||
"deployTab.status.deployFailed": "Bereitstellung fehlgeschlagen",
|
||||
"deployTab.status.deployingRelease": "Wird bereitgestellt ({{release}})",
|
||||
"deployTab.status.runningOutOfSync": "Läuft (Synchronisierung ausstehend)",
|
||||
@ -363,26 +229,13 @@
|
||||
"deployTab.undeploy": "Bereitstellung aufheben",
|
||||
"deployTab.undeployConfirmDesc": "Der Endbenutzerzugriff wird sofort beendet. Das Release kann später erneut bereitgestellt werden.",
|
||||
"deployTab.undeployConfirmTitle": "Bereitstellung aus {{name}} aufheben?",
|
||||
"deployTab.undeployFrom": "Bereitstellung aus {{name}} aufheben",
|
||||
"deployTab.undeployImpactTitle": "Betroffene Instanz",
|
||||
"deployTab.viewError": "Fehler anzeigen",
|
||||
"deployTab.viewLogs": "Logs anzeigen",
|
||||
"deployTab.viewProgress": "Fortschritt anzeigen",
|
||||
"detail.backToInstances": "Zurück zu Bereitstellungen",
|
||||
"detail.deployingCount": "{{count}} werden bereitgestellt",
|
||||
"detail.envCount_one": "{{count}} Umgebung",
|
||||
"detail.envCount_other": "{{count}} Umgebungen",
|
||||
"detail.failedCount": "{{count}} fehlgeschlagen",
|
||||
"detail.mobileTabs": "Bereitstellungsbereiche",
|
||||
"detail.notFound": "Bereitstellung nicht gefunden",
|
||||
"detail.openSourceApp": "Quelle {{name}} öffnen",
|
||||
"detail.sourceApp": "Quelle",
|
||||
"detail.sourceAppLink": "Quelle",
|
||||
"documentTitle.create": "Neue Bereitstellung · Bereitstellungen",
|
||||
"documentTitle.detail": "Bereitstellung · Bereitstellungen",
|
||||
"documentTitle.list": "Bereitstellungen",
|
||||
"filter.allEnvs": "Alle Umgebungen",
|
||||
"filter.notDeployed": "Nicht bereitgestellt",
|
||||
"filter.searchPlaceholder": "Bereitstellungen suchen",
|
||||
"health.ENVIRONMENT_STATUS_ADMISSION": "Zulassung",
|
||||
"health.ENVIRONMENT_STATUS_BOOTSTRAPPING": "Wird initialisiert",
|
||||
@ -393,7 +246,6 @@
|
||||
"list.clearFilters": "Filter löschen",
|
||||
"list.clearSearch": "Bereitstellungssuche löschen",
|
||||
"list.createDeployment": "Neu",
|
||||
"list.empty": "Keine Bereitstellungen gefunden.",
|
||||
"list.emptyDescription": "Erstellen Sie eine Bereitstellung aus einer Workflow-App oder einem Workflow-DSL-Paket, um Releases, Umgebungen und Zugriff zu verwalten.",
|
||||
"list.emptyFilteredDescription": "Keine Bereitstellung entspricht der aktuellen Suche oder dem Umgebungsfilter.",
|
||||
"list.emptyFilteredTitle": "Keine passenden Bereitstellungen",
|
||||
@ -401,11 +253,6 @@
|
||||
"mode.ENVIRONMENT_MODE_ISOLATED": "Isoliert",
|
||||
"mode.ENVIRONMENT_MODE_SHARED": "Geteilt",
|
||||
"mode.ENVIRONMENT_MODE_UNSPECIFIED": "Unbekannt",
|
||||
"newInstance.comingSoon": "Demnächst verfügbar",
|
||||
"newInstance.fromStudio": "Aus Studio auswählen",
|
||||
"newInstance.importDSL": "DSL importieren",
|
||||
"newInstance.title": "Neue Bereitstellung",
|
||||
"overview.accessEndpoints": "Zugriffsendpunkte",
|
||||
"overview.accessMeta.apiTokens": "API-Token verwalten",
|
||||
"overview.accessMeta.cli": "CLI-Zugriff anzeigen",
|
||||
"overview.accessMeta.webApp": "WebApp-Zugriff verwalten",
|
||||
@ -415,8 +262,6 @@
|
||||
"overview.apiKeysCount_other": "{{count}} API-Token",
|
||||
"overview.apiTokenSummary.environments_one": "{{count}} bereitgestellte Umgebung",
|
||||
"overview.apiTokenSummary.environments_other": "{{count}} bereitgestellte Umgebungen",
|
||||
"overview.availableForDeployment": "Verfügbar für Bereitstellung",
|
||||
"overview.basicInfo": "Basisinformationen",
|
||||
"overview.cardAction.deployLatest": "Neuestes Release bereitstellen",
|
||||
"overview.cardAction.redeploy": "Erneut bereitstellen",
|
||||
"overview.cardAction.viewProgress": "Bereitstellung anzeigen",
|
||||
@ -436,79 +281,27 @@
|
||||
"overview.chip.olderRelease": "älter",
|
||||
"overview.chip.olderReleaseTooltip": "In dieser Umgebung läuft ein älteres Release.",
|
||||
"overview.chip.openInDeployTab": "Bereitstellungsfortschritt anzeigen",
|
||||
"overview.cli": "CLI",
|
||||
"overview.configured": "Konfiguriert",
|
||||
"overview.createRelease": "Release erstellen",
|
||||
"overview.created": "Erstellt",
|
||||
"overview.deploy": "Bereitstellen",
|
||||
"overview.deployedEnvironments": "bereitgestellt",
|
||||
"overview.deploymentOverview": "Bereitstellungsübersicht",
|
||||
"overview.deploymentStatus": "Bereitstellungsstatus",
|
||||
"overview.description": "Beschreibung",
|
||||
"overview.developerApi": "Entwickler-API",
|
||||
"overview.disabled": "Deaktiviert",
|
||||
"overview.emptyValue": "Nicht festgelegt",
|
||||
"overview.enabled": "Aktiviert",
|
||||
"overview.enabledChannels": "Zugriff aktiviert",
|
||||
"overview.endUserAccess": "Endbenutzerzugriff",
|
||||
"overview.environments": "Umgebungen",
|
||||
"overview.hero.byName": "von {{name}}",
|
||||
"overview.hero.empty": "Noch keine Releases",
|
||||
"overview.hero.emptyDescription": "Erstellen Sie ein Release aus der aktuellen Quelle, bevor Sie bereitstellen.",
|
||||
"overview.hero.propagation_one": "in {{count}}/{{total}} Umgebung bereitgestellt",
|
||||
"overview.hero.propagation_other": "in {{count}}/{{total}} Umgebungen bereitgestellt",
|
||||
"overview.hero.untargeted": "noch keine Umgebungen konfiguriert",
|
||||
"overview.instanceDetails": "Bereitstellungsdetails",
|
||||
"overview.instanceId": "Bereitstellungs-ID",
|
||||
"overview.latestRelease.releaseCount_one": "{{count}} Release",
|
||||
"overview.latestRelease.releaseCount_other": "{{count}} Releases",
|
||||
"overview.latestReleaseTitle": "Neuestes Release",
|
||||
"overview.manageDeployments": "Bereitstellungen verwalten",
|
||||
"overview.name": "Name",
|
||||
"overview.noAccessConfig": "Keine Zugriffskonfiguration.",
|
||||
"overview.noReleaseYet": "Erstellen Sie ein Release, bevor Sie in einer Umgebung bereitstellen.",
|
||||
"overview.notConfigured": "Nicht konfiguriert",
|
||||
"overview.previousReleases.empty": "Noch keine früheren Releases.",
|
||||
"overview.previousReleases.retired": "Derzeit nicht bereitgestellt",
|
||||
"overview.previousReleases.title": "Frühere Releases",
|
||||
"overview.previousReleases.viewAll": "Alle anzeigen",
|
||||
"overview.ready": "Bereitstellbar",
|
||||
"overview.recentReleases": "Aktuelle Releases",
|
||||
"overview.releaseDeployedTitle": "{{release}} ist bereitgestellt",
|
||||
"overview.releaseReadyTitle": "{{release}} ist bereit zur Bereitstellung",
|
||||
"overview.serviceMap": "Servicekarte",
|
||||
"overview.servingRelease": "Bedient {{release}}",
|
||||
"overview.servingReleaseDescription": "Diese Bereitstellung ist in {{count}}/{{total}} Umgebungen bereitgestellt.",
|
||||
"overview.strip.deployToNewEnvironment": "In neuer Umgebung bereitstellen",
|
||||
"overview.strip.empty": "Keine Umgebungen konfiguriert.",
|
||||
"overview.strip.emptyDeployableDescription": "Stellen Sie das neueste Release in einer Umgebung bereit, sobald Sie bereit sind.",
|
||||
"overview.strip.emptyDeployed": "Noch keine Instanzen.",
|
||||
"overview.strip.emptyDescription": "Erstellen Sie ein Release, bevor Sie in einer Umgebung bereitstellen.",
|
||||
"overview.strip.emptyTitle": "Noch keine Instanzen",
|
||||
"overview.strip.summary_one": "1 von {{total}} auf dem neuesten Release",
|
||||
"overview.strip.summary_other": "{{count}} von {{total}} auf dem neuesten Release",
|
||||
"overview.strip.title": "Instanzen",
|
||||
"overview.switchSourceApp": "Quelle wechseln",
|
||||
"overview.switchSourceAppDescription": "Wählen Sie die Workflow-App, die als Quelle für zukünftige Releases verwendet wird.",
|
||||
"overview.switchSourceAppHint": "Nach dem Wechsel verwenden nur neu erstellte Releases die neue Quelle. Historische Releases und bestehende Bereitstellungen werden nicht geändert.",
|
||||
"overview.targetRelease": "Ziel-Release",
|
||||
"overview.webapp": "WebApp",
|
||||
"settings.danger": "Gefahrenzone",
|
||||
"settings.dangerDesc": "Löschen Sie diese Bereitstellung dauerhaft und beenden Sie alle laufenden Instanzen. Dies kann nicht rückgängig gemacht werden.",
|
||||
"settings.delete": "Bereitstellung löschen",
|
||||
"settings.deleteConfirmDesc": "{{name}} löschen? Jede Instanz wird gestoppt und in allen Umgebungen entfernt. Dies kann nicht rückgängig gemacht werden.",
|
||||
"settings.deleteConfirmTitle": "Bereitstellung löschen",
|
||||
"settings.deleteFailed": "Bereitstellung konnte nicht gelöscht werden.",
|
||||
"settings.deleteImpact": "Auswirkung",
|
||||
"settings.deleteImpactInstance": "Bereitstellung",
|
||||
"settings.deleteImpactTitle": "Betroffene Bereitstellung",
|
||||
"settings.deleteImpactValue": "Die Bereitstellung wird aus der Bereitstellungsliste entfernt.",
|
||||
"settings.deleted": "Bereitstellung gelöscht",
|
||||
"settings.description": "Beschreibung",
|
||||
"settings.descriptionHelp": "Verwalten Sie den Namen, die Beschreibung und andere Einstellungen dieser Bereitstellung.",
|
||||
"settings.general": "Allgemein",
|
||||
"settings.name": "Bereitstellungsname",
|
||||
"settings.reset": "Zurücksetzen",
|
||||
"settings.save": "Änderungen speichern",
|
||||
"settings.updateFailed": "Bereitstellung konnte nicht aktualisiert werden.",
|
||||
"settings.updated": "Bereitstellung aktualisiert",
|
||||
@ -520,7 +313,6 @@
|
||||
"status.RUNTIME_INSTANCE_STATUS_UNDEPLOYED": "Nicht bereitgestellt",
|
||||
"status.RUNTIME_INSTANCE_STATUS_UNDEPLOYING": "Bereitstellung wird aufgehoben",
|
||||
"status.RUNTIME_INSTANCE_STATUS_UNSPECIFIED": "Unbekannt",
|
||||
"subtitle": "Verwalten Sie Bereitstellungen über Umgebungen hinweg.",
|
||||
"tabs.access.description": "Verwalten Sie Zugriffskanäle und Zugriffsberechtigungen.",
|
||||
"tabs.access.name": "Zugriff",
|
||||
"tabs.api-tokens.description": "Verwalten Sie API-Token und rufen Sie Instanzen über HTTP auf.",
|
||||
@ -531,9 +323,6 @@
|
||||
"tabs.overview.name": "Übersicht",
|
||||
"tabs.releases.description": "Releases erstellen, bereitstellen und verwalten.",
|
||||
"tabs.releases.name": "Releases",
|
||||
"tabs.settings.description": "Verwalten Sie den Namen, die Beschreibung und andere Einstellungen dieser Bereitstellung.",
|
||||
"tabs.settings.name": "Einstellungen",
|
||||
"title": "Bereitstellungen",
|
||||
"unsupportedDslNodes.description": "Dieses Release enthält Knoten, die die Bereitstellungslaufzeit noch nicht unterstützt. Entfernen oder ersetzen Sie sie in Studio und versuchen Sie es erneut.",
|
||||
"unsupportedDslNodes.descriptionWithTypes": "Dieses Release enthält Knoten, die die Bereitstellungslaufzeit noch nicht unterstützt: {{nodeTypes}}. Entfernen oder ersetzen Sie sie in Studio und versuchen Sie es erneut.",
|
||||
"unsupportedDslNodes.title": "Nicht unterstützte Knoten",
|
||||
@ -544,7 +333,6 @@
|
||||
"versions.checkingReleaseContent": "Release-Inhalt wird überprüft...",
|
||||
"versions.col.action": "Aktion",
|
||||
"versions.col.author": "Erstellt von",
|
||||
"versions.col.commit": "Commit",
|
||||
"versions.col.createdAt": "Erstellt am",
|
||||
"versions.col.deployedTo": "Bereitgestellt in",
|
||||
"versions.col.release": "Release",
|
||||
@ -554,20 +342,14 @@
|
||||
"versions.createFailed": "Release konnte nicht erstellt werden.",
|
||||
"versions.createRelease": "Release erstellen",
|
||||
"versions.createReleaseDescription": "Erstellen Sie ein bereitstellbares Release aus einer Workflow-App oder einer Workflow-DSL-Datei.",
|
||||
"versions.createReleaseHint": "Neue Releases können in jeder Umgebung bereitgestellt werden.",
|
||||
"versions.createSuccess": "Release \"{{name}}\" erstellt.",
|
||||
"versions.creating": "Wird erstellt...",
|
||||
"versions.currentOn": "Aktuelles Release in {{name}}",
|
||||
"versions.deleteConfirmDesc": "Release \"{{name}}\" wird dauerhaft gelöscht. Dies kann nicht rückgängig gemacht werden.",
|
||||
"versions.deleteConfirmTitle": "Release löschen?",
|
||||
"versions.deleteFailed": "Release konnte nicht gelöscht werden.",
|
||||
"versions.deleteImpactDeployment": "Bereitstellungsstatus",
|
||||
"versions.deleteImpactNotDeployed": "Derzeit nicht bereitgestellt",
|
||||
"versions.deleteImpactRelease": "Release",
|
||||
"versions.deleteImpactTitle": "Auswirkung des Löschens",
|
||||
"versions.deleteRelease": "Release löschen",
|
||||
"versions.deleteSuccess": "Release \"{{name}}\" gelöscht.",
|
||||
"versions.deploy": "Bereitstellen",
|
||||
"versions.deployTo": "In {{name}} bereitstellen",
|
||||
"versions.deployedStatus.RUNTIME_INSTANCE_STATUS_DEPLOYING": "Wird bereitgestellt",
|
||||
"versions.deployedStatus.RUNTIME_INSTANCE_STATUS_DRIFTED": "Synchronisierung ausstehend",
|
||||
@ -582,7 +364,6 @@
|
||||
"versions.disabledReason.checkingDeployments": "Bereitstellungsnutzung wird überprüft",
|
||||
"versions.disabledReason.current": "Dieses Release läuft bereits in {{name}}",
|
||||
"versions.disabledReason.deploying": "Warten Sie, bis die aktive Bereitstellung abgeschlossen ist",
|
||||
"versions.disabledReason.envDisabled": "Diese Umgebung ist nicht bereitstellbar",
|
||||
"versions.disabledReason.releaseInUse_one": "Heben Sie die Bereitstellung dieses Releases aus {{count}} Umgebung auf, bevor Sie es löschen",
|
||||
"versions.disabledReason.releaseInUse_other": "Heben Sie die Bereitstellung dieses Releases aus {{count}} Umgebungen auf, bevor Sie es löschen",
|
||||
"versions.dslReadFailed": "Die DSL-Datei konnte nicht gelesen werden. Wählen Sie eine andere Datei und versuchen Sie es erneut.",
|
||||
@ -592,27 +373,21 @@
|
||||
"versions.editRelease": "Release bearbeiten",
|
||||
"versions.editReleaseDescription": "Aktualisieren Sie den Namen und die Beschreibung dieses Releases.",
|
||||
"versions.editSuccess": "Release \"{{name}}\" aktualisiert.",
|
||||
"versions.empty": "Noch keine Releases verfügbar.",
|
||||
"versions.emptyDescription": "Erstellen Sie das erste Release, bevor Sie in einer Umgebung bereitstellen.",
|
||||
"versions.emptyTitle": "Noch keine Releases",
|
||||
"versions.emptyWithCreate": "Noch keine Releases. Erstellen Sie das erste bereitstellbare Release, bevor Sie bereitstellen.",
|
||||
"versions.exportDsl": "DSL exportieren",
|
||||
"versions.exportDslFailed": "DSL konnte nicht exportiert werden.",
|
||||
"versions.exportingDsl": "Wird exportiert...",
|
||||
"versions.groupHeader.deploy": "Bereitstellen",
|
||||
"versions.groupHeader.promote": "Bereitstellen",
|
||||
"versions.groupHeader.rollback": "Vorherige Version bereitstellen",
|
||||
"versions.groupHeader.unavailable": "Nicht verfügbar",
|
||||
"versions.manualDslOption": "DSL hochladen",
|
||||
"versions.moreActions": "Weitere Aktionen",
|
||||
"versions.optional": "Optional",
|
||||
"versions.promote": "Bereitstellen",
|
||||
"versions.promoteTo": "In {{name}} bereitstellen",
|
||||
"versions.releaseAlreadyExists": "Ein Release mit demselben Inhalt existiert bereits: {{name}}.",
|
||||
"versions.releaseContentCheckFailed": "Release-Inhalt konnte nicht überprüft werden.",
|
||||
"versions.releaseDescriptionLabel": "Beschreibung",
|
||||
"versions.releaseDescriptionPlaceholder": "Beschreiben Sie dieses Release",
|
||||
"versions.releaseHistory": "Release-Historie",
|
||||
"versions.releaseNameConflict": "Ein Release mit diesem Namen existiert bereits. Wählen Sie einen anderen Namen.",
|
||||
"versions.releaseNameLabel": "Release-Name",
|
||||
"versions.releaseNamePlaceholder": "Release-Name",
|
||||
|
||||
@ -1,21 +1,10 @@
|
||||
{
|
||||
"applied.activeSubscription.description": "Sie haben ein aktives Abonnement. Sie können den Bildungsrabatt verwenden, nachdem Ihr Abonnement abläuft. Bestätigen Sie Ihr Abonnement in <stripeLink>Stripe</stripeLink>.",
|
||||
"applied.description": "Herzlichen Glückwunsch! Sie haben erfolgreich den Bildungsrabatt beantragt.",
|
||||
"applied.noPaymentPermission.description": "Sie haben keine Zahlungsberechtigung in diesem Arbeitsbereich. Bitte wechseln Sie zu einem Arbeitsbereich, in dem Sie die Abrechnung verwalten können, um den Bildungsrabatt zu nutzen.",
|
||||
"applied.noPaymentPermission.returnHome": "Zurück zu Dify",
|
||||
"applied.step1.description": "Sie haben erfolgreich den Bildungsrabatt beantragt.",
|
||||
"applied.step1.title": "Schritt 1",
|
||||
"applied.step2.description": "Wählen Sie den Arbeitsbereich aus, den Sie mit dem Bildungsrabatt verwenden möchten.",
|
||||
"applied.step2.title": "Schritt 2",
|
||||
"applied.tabs.activeSubscription": "Im Abonnement",
|
||||
"applied.tabs.eligible": "Kann kaufen",
|
||||
"applied.tabs.noPaymentPermission": "Keine Zahlungsberechtigung",
|
||||
"applied.title": "Bildungsrabatt angewendet",
|
||||
"applied.workspace.plan": "Bezahlter Plan",
|
||||
"applied.workspace.title": "Aktueller Arbeitsbereich",
|
||||
"currentSigned": "DERZEIT ANGEMELDET ALS",
|
||||
"educationPricingConfirm.billingPeriod.monthly": "monatlich",
|
||||
"educationPricingConfirm.billingPeriod.yearly": "jährlich",
|
||||
"educationPricingConfirm.cancel": "Aktuellen Plan behalten",
|
||||
"educationPricingConfirm.continue": "Zu Professional jährlich wechseln",
|
||||
"educationPricingConfirm.description": "Der Bildungsrabatt gilt nur für den jährlichen Professional-Plan. Wenn Sie Ihren aktuellen Plan behalten, ist der Rabatt nicht enthalten.",
|
||||
@ -56,8 +45,6 @@
|
||||
"rejectTitle": "Ihre Dify-Ausbildungsüberprüfung wurde abgelehnt.",
|
||||
"submit": "Einreichen",
|
||||
"submitError": "Die Formularübermittlung ist fehlgeschlagen. Bitte versuchen Sie es später erneut.",
|
||||
"successContent": "Wir haben einen 100% Rabattgutschein für den Dify Professional Plan auf Ihr Konto ausgestellt. Der Gutschein ist ein Jahr lang gültig, bitte nutzen Sie ihn innerhalb des Gültigkeitszeitraums.",
|
||||
"successTitle": "Sie haben die Dify-Ausbildung verifiziert",
|
||||
"toVerified": "Bildung überprüfen lassen",
|
||||
"toVerifiedTip.coupon": "exklusiver 100% Gutschein",
|
||||
"toVerifiedTip.end": "für den Dify Professional Plan.",
|
||||
|
||||
@ -1,9 +1,4 @@
|
||||
{
|
||||
"acceptPP": "Ich habe die Datenschutzbestimmungen gelesen und akzeptiere sie",
|
||||
"accountAlreadyInited": "Konto bereits initialisiert",
|
||||
"activated": "Jetzt anmelden",
|
||||
"activatedTipEnd": "Team beigetreten",
|
||||
"activatedTipStart": "Du bist dem",
|
||||
"adminInitPassword": "Admin-Initialpasswort",
|
||||
"back": "Zurück",
|
||||
"backToLogin": "Zurück zum Login",
|
||||
@ -17,16 +12,12 @@
|
||||
"checkCode.invalidCode": "Ungültiger Code",
|
||||
"checkCode.resend": "Wieder senden",
|
||||
"checkCode.tipsPrefix": "Wir senden einen Bestätigungscode an",
|
||||
"checkCode.useAnotherMethod": "Verwenden Sie eine andere Methode",
|
||||
"checkCode.validTime": "Beachten Sie, dass der Code 5 Minuten lang gültig ist",
|
||||
"checkCode.verificationCode": "Verifizierungscode",
|
||||
"checkCode.verificationCodePlaceholder": "Geben Sie den 6-stelligen Code ein",
|
||||
"checkCode.verify": "Überprüfen",
|
||||
"checkEmailForResetLink": "Bitte überprüfen Sie Ihre E-Mails auf einen Link zum Zurücksetzen Ihres Passworts. Wenn er nicht innerhalb weniger Minuten erscheint, überprüfen Sie bitte Ihren Spam-Ordner.",
|
||||
"confirmPassword": "Passwort bestätigen",
|
||||
"confirmPasswordPlaceholder": "Bestätigen Sie Ihr neues Passwort",
|
||||
"continueWithCode": "Fahren Sie mit dem Code fort",
|
||||
"createAndSignIn": "Erstellen und anmelden",
|
||||
"createSample": "Basierend auf diesen Informationen erstellen wir eine Beispielanwendung für dich",
|
||||
"dontHave": "Hast du nicht?",
|
||||
"email": "E-Mail-Adresse",
|
||||
@ -40,7 +31,6 @@
|
||||
"error.nameEmpty": "Name wird benötigt",
|
||||
"error.passwordEmpty": "Passwort wird benötigt",
|
||||
"error.passwordInvalid": "Das Passwort muss Buchstaben und Zahlen enthalten und länger als 8 Zeichen sein",
|
||||
"error.passwordLengthInValid": "Das Passwort muss mindestens 8 Zeichen lang sein",
|
||||
"error.redirectUrlMissing": "Die Weiterleitungs-URL fehlt",
|
||||
"error.registrationNotAllowed": "Konto nicht gefunden. Bitte wenden Sie sich an den Systemadministrator, um sich zu registrieren.",
|
||||
"explore": "Dify erkunden",
|
||||
@ -54,7 +44,6 @@
|
||||
"interfaceLanguage": "Oberflächensprache",
|
||||
"invalid": "Der Link ist abgelaufen",
|
||||
"invalidInvitationCode": "Ungültiger Einladungscode",
|
||||
"invalidToken": "Ungültiges oder abgelaufenes Token",
|
||||
"invitationCode": "Einladungscode",
|
||||
"invitationCodePlaceholder": "Dein Einladungscode",
|
||||
"join": "Beitreten",
|
||||
@ -81,12 +70,9 @@
|
||||
"passwordChangedTip": "Ihr Passwort wurde erfolgreich geändert",
|
||||
"passwordPlaceholder": "Dein Passwort",
|
||||
"pp": "Datenschutzbestimmungen",
|
||||
"reset": "Bitte führe den folgenden Befehl aus, um dein Passwort zurückzusetzen",
|
||||
"resetLinkSent": "Link zum Zurücksetzen gesendet",
|
||||
"resetPassword": "Passwort zurücksetzen",
|
||||
"resetPasswordDesc": "Geben Sie die E-Mail-Adresse ein, mit der Sie sich bei Dify angemeldet haben, und wir senden Ihnen eine E-Mail zum Zurücksetzen des Passworts.",
|
||||
"rightDesc": "Mühelos optisch ansprechende, bedienbare und verbesserbare KI-Anwendungen erstellen.",
|
||||
"rightTitle": "Das volle Potenzial von LLM ausschöpfen",
|
||||
"sendResetLink": "Link zum Zurücksetzen senden",
|
||||
"sendUsMail": "Sende uns deine Vorstellung per E-Mail, und wir bearbeiten die Einladungsanfrage.",
|
||||
"sendVerificationCode": "Verifizierungscode senden",
|
||||
@ -110,8 +96,6 @@
|
||||
"validate": "Validieren",
|
||||
"webapp.disabled": "Die Webanmeldeauthentifizierung ist deaktiviert. Bitte kontaktieren Sie den Systemadministrator, um sie zu aktivieren. Sie können versuchen, die App direkt zu verwenden.",
|
||||
"webapp.login": "Anmelden",
|
||||
"webapp.noLoginMethod": "Authentifizierungsmethode ist nicht für die Webanwendung konfiguriert",
|
||||
"webapp.noLoginMethodTip": "Bitte kontaktieren Sie den Systemadministrator, um eine Authentifizierungsmethode hinzuzufügen.",
|
||||
"welcome": "Willkommen bei Dify, bitte melde dich an, um fortzufahren.",
|
||||
"withGitHub": "Mit GitHub fortfahren",
|
||||
"withGoogle": "Mit Google fortfahren",
|
||||
|
||||
@ -21,14 +21,11 @@
|
||||
"accessRule.expandSection": "{{title}} ausklappen",
|
||||
"accessRule.individualPermissionSettings": "Individuelle Berechtigungseinstellungen",
|
||||
"accessRule.individualPermissionSettingsTip": "Legen Sie Berechtigungsausnahmen für bestimmte Mitarbeiter oder Gruppen fest. Diese Einstellungen überschreiben die Standardzugriffsstufe.",
|
||||
"accessRule.lockedSummary_one": "· {{count}} gesperrt",
|
||||
"accessRule.lockedSummary_other": "· {{count}} gesperrt",
|
||||
"accessRule.maintainer": "Betreuer",
|
||||
"accessRule.member": "Mitglied",
|
||||
"accessRule.newPermissionSet": "Neuer Berechtigungssatz",
|
||||
"accessRule.noAvailableMembers": "Keine Mitglieder zum Hinzufügen verfügbar",
|
||||
"accessRule.noDescription": "Keine Beschreibung",
|
||||
"accessRule.noRoles": "Keine Rollen",
|
||||
"accessRule.noRules": "Keine Zugriffsregeln",
|
||||
"accessRule.noUserAccessSettings": "Keine individuellen Berechtigungseinstellungen",
|
||||
"accessRule.permission": "Berechtigung",
|
||||
|
||||
@ -1,60 +1,33 @@
|
||||
{
|
||||
"events.actionNum": "{{num}} {{event}} ENTHALTEN",
|
||||
"events.description": "Ereignisse, auf die dieses Trigger-Integration reagieren kann",
|
||||
"events.empty": "Keine Veranstaltungen verfügbar",
|
||||
"events.event": "Veranstaltung",
|
||||
"events.events": "Veranstaltungen",
|
||||
"events.item.noParameters": "Keine Parameter",
|
||||
"events.item.parameters": "{{count}} Parameter",
|
||||
"events.output": "Ausgabe",
|
||||
"events.title": "Verfügbare Veranstaltungen",
|
||||
"modal.apiKey.configuration.description": "Richten Sie Ihre Abonnementparameter ein",
|
||||
"modal.apiKey.configuration.title": "Abonnement konfigurieren",
|
||||
"modal.apiKey.title": "Mit API-Schlüssel erstellen",
|
||||
"modal.apiKey.verify.description": "Bitte geben Sie Ihre API-Zugangsdaten ein, um den Zugriff zu überprüfen",
|
||||
"modal.apiKey.verify.error": "Überprüfung der Anmeldedaten fehlgeschlagen. Bitte überprüfen Sie Ihren API-Schlüssel.",
|
||||
"modal.apiKey.verify.success": "Anmeldedaten erfolgreich überprüft",
|
||||
"modal.apiKey.verify.title": "Anmeldeinformationen überprüfen",
|
||||
"modal.common.authorize": "Autorisieren",
|
||||
"modal.common.authorizing": "Autorisierung läuft...",
|
||||
"modal.common.back": "Zurück",
|
||||
"modal.common.cancel": "Abbrechen",
|
||||
"modal.common.create": "Erstellen",
|
||||
"modal.common.creating": "Erstellen...",
|
||||
"modal.common.next": "Weiter",
|
||||
"modal.common.verify": "Überprüfen",
|
||||
"modal.common.verifying": "Überprüfen...",
|
||||
"modal.errors.authFailed": "Autorisierung fehlgeschlagen",
|
||||
"modal.errors.createFailed": "Fehler beim Erstellen des Abonnements",
|
||||
"modal.errors.networkError": "Netzwerkfehler, bitte versuchen Sie es erneut",
|
||||
"modal.errors.updateFailed": "Aktualisierung des Abonnements fehlgeschlagen",
|
||||
"modal.errors.verifyFailed": "Anmeldeinformationen konnten nicht überprüft werden",
|
||||
"modal.form.callbackUrl.description": "Diese URL wird Webhook-Ereignisse empfangen",
|
||||
"modal.form.callbackUrl.label": "Rückruf-URL",
|
||||
"modal.form.callbackUrl.placeholder": "Generierung...",
|
||||
"modal.form.callbackUrl.privateAddressWarning": "Diese URL scheint eine interne Adresse zu sein, was dazu führen kann, dass Webhook-Anfragen fehlschlagen. Sie können TRIGGER_URL auf eine öffentliche Adresse ändern.",
|
||||
"modal.form.callbackUrl.tooltip": "Stellen Sie einen öffentlich zugänglichen Endpunkt bereit, der Callback-Anfragen vom Auslöseranbieter empfangen kann.",
|
||||
"modal.form.subscriptionName.label": "Abonnementname",
|
||||
"modal.form.subscriptionName.placeholder": "Abonnementname eingeben",
|
||||
"modal.form.subscriptionName.required": "Der Abonnementname ist erforderlich",
|
||||
"modal.manual.description": "Konfigurieren Sie Ihr Webhook-Abonnement manuell",
|
||||
"modal.manual.logs.loading": "Warten auf Anfrage von {{pluginName}}...",
|
||||
"modal.manual.logs.request": "Anfrage",
|
||||
"modal.manual.logs.title": "Anforderungsprotokolle",
|
||||
"modal.manual.title": "Manuelle Einrichtung",
|
||||
"modal.oauth.authorization.authFailed": "Fehler beim Abrufen der OAuth-Autorisierungsinformationen",
|
||||
"modal.oauth.authorization.authSuccess": "Autorisierung erfolgreich",
|
||||
"modal.oauth.authorization.authorizeButton": "Autorisieren mit {{provider}}",
|
||||
"modal.oauth.authorization.description": "Erlaube Dify den Zugriff auf dein Konto",
|
||||
"modal.oauth.authorization.redirectUrl": "Weiterleitungs-URL",
|
||||
"modal.oauth.authorization.redirectUrlHelp": "Verwenden Sie diese URL in der Konfiguration Ihrer OAuth-App",
|
||||
"modal.oauth.authorization.title": "OAuth-Autorisierung",
|
||||
"modal.oauth.authorization.waitingAuth": "Warten auf die Autorisierung...",
|
||||
"modal.oauth.authorization.waitingJump": "Autorisierte, warten auf den Sprung",
|
||||
"modal.oauth.configuration.description": "Richten Sie Ihre Abonnementparameter nach der Autorisierung ein",
|
||||
"modal.oauth.configuration.failed": "OAuth-Konfiguration fehlgeschlagen",
|
||||
"modal.oauth.configuration.success": "OAuth-Konfiguration erfolgreich",
|
||||
"modal.oauth.configuration.title": "Abonnement konfigurieren",
|
||||
"modal.oauth.remove.failed": "OAuth-Entfernung fehlgeschlagen",
|
||||
"modal.oauth.remove.success": "OAuth erfolgreich entfernt",
|
||||
"modal.oauth.save.success": "OAuth-Konfiguration erfolgreich gespeichert",
|
||||
@ -63,29 +36,22 @@
|
||||
"modal.steps.configuration": "Konfiguration",
|
||||
"modal.steps.verify": "Überprüfen",
|
||||
"node.status.warning": "Trennen",
|
||||
"subscription.addType.description": "Wählen Sie aus, wie Sie Ihr Trigger-Abonnement erstellen möchten",
|
||||
"subscription.addType.options.apikey.description": "Abonnement automatisch mit API-Zugangsdaten erstellen",
|
||||
"subscription.addType.options.apikey.title": "Mit API-Schlüssel erstellen",
|
||||
"subscription.addType.options.manual.description": "URL einfügen, um ein neues Abonnement zu erstellen",
|
||||
"subscription.addType.options.manual.tip": "URL auf einer Drittanbieterplattform manuell konfigurieren",
|
||||
"subscription.addType.options.manual.title": "Manuelle Einrichtung",
|
||||
"subscription.addType.options.oauth.clientSettings": "OAuth-Client-Einstellungen",
|
||||
"subscription.addType.options.oauth.clientTitle": "OAuth-Client",
|
||||
"subscription.addType.options.oauth.custom": "Benutzerdefiniert",
|
||||
"subscription.addType.options.oauth.default": "Standard",
|
||||
"subscription.addType.options.oauth.description": "Bei einer Drittanbieterplattform autorisieren, um ein Abonnement zu erstellen",
|
||||
"subscription.addType.options.oauth.title": "Erstellen Sie mit OAuth",
|
||||
"subscription.addType.title": "Abonnement hinzufügen",
|
||||
"subscription.createButton.apiKey": "Neues Abonnement mit API-Schlüssel",
|
||||
"subscription.createButton.manual": "URL einfügen, um ein neues Abonnement zu erstellen",
|
||||
"subscription.createButton.oauth": "Neue Anmeldung mit OAuth",
|
||||
"subscription.createFailed": "Fehler beim Erstellen des Abonnements",
|
||||
"subscription.createSuccess": "Abonnement erfolgreich erstellt",
|
||||
"subscription.empty.button": "Neues Abonnement",
|
||||
"subscription.empty.title": "Keine Abonnements",
|
||||
"subscription.list.addButton": "Hinzufügen",
|
||||
"subscription.list.item.actions.delete": "Löschen",
|
||||
"subscription.list.item.actions.deleteConfirm.cancel": "Abbrechen",
|
||||
"subscription.list.item.actions.deleteConfirm.confirm": "Löschen bestätigen",
|
||||
"subscription.list.item.actions.deleteConfirm.confirmInputPlaceholder": "Geben Sie \"{{name}}\" ein, um zu bestätigen.",
|
||||
"subscription.list.item.actions.deleteConfirm.confirmInputTip": "Bitte geben Sie „{{name}}“ zur Bestätigung ein.",
|
||||
@ -98,21 +64,12 @@
|
||||
"subscription.list.item.actions.edit.error": "Aktualisierung des Abonnements fehlgeschlagen",
|
||||
"subscription.list.item.actions.edit.success": "Abonnement erfolgreich aktualisiert",
|
||||
"subscription.list.item.actions.edit.title": "Abonnement bearbeiten",
|
||||
"subscription.list.item.credentialType.api_key": "API-Schlüssel",
|
||||
"subscription.list.item.credentialType.oauth2": "OAuth",
|
||||
"subscription.list.item.credentialType.unauthorized": "Handbuch",
|
||||
"subscription.list.item.disabled": "Deaktiviert",
|
||||
"subscription.list.item.enabled": "Aktiviert",
|
||||
"subscription.list.item.noUsed": "Kein Workflow verwendet",
|
||||
"subscription.list.item.status.active": "Aktiv",
|
||||
"subscription.list.item.status.inactive": "Inaktiv",
|
||||
"subscription.list.item.usedByNum": "Verwendet von {{num}} Workflows",
|
||||
"subscription.list.tip": "Ereignisse über ein Abonnement empfangen",
|
||||
"subscription.list.title": "Abonnements",
|
||||
"subscription.listNum": "{{num}} Abonnements",
|
||||
"subscription.maxCount": "Max {{num}} Abonnements",
|
||||
"subscription.noSubscriptionSelected": "Kein Abonnement ausgewählt",
|
||||
"subscription.selectPlaceholder": "Abonnement auswählen",
|
||||
"subscription.subscriptionRemoved": "Abonnement entfernt",
|
||||
"subscription.title": "Abonnements"
|
||||
"subscription.subscriptionRemoved": "Abonnement entfernt"
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
{
|
||||
"actionLogs": "Aktionsprotokolle",
|
||||
"circularInvocationTip": "Es gibt einen zirkulären Aufruf von Werkzeugen/Knoten im aktuellen Workflow.",
|
||||
"detail": "DETAILS",
|
||||
"input": "EINGABE",
|
||||
@ -10,7 +9,6 @@
|
||||
"meta.time": "Verstrichene Zeit",
|
||||
"meta.title": "METADATEN",
|
||||
"meta.tokens": "Gesamtzeichen",
|
||||
"meta.version": "Version",
|
||||
"result": "ERGEBNIS",
|
||||
"resultEmpty.link": "Gruppe Detail",
|
||||
"resultEmpty.tipLeft": "Bitte gehen Sie zum ",
|
||||
|
||||
@ -2,8 +2,6 @@
|
||||
"chat.chatFormTip": "Chat-Einstellungen können nach Beginn des Chats nicht mehr geändert werden.",
|
||||
"chat.chatSettingsTitle": "Neues Chat-Setup",
|
||||
"chat.collapse": "Reduzieren",
|
||||
"chat.configDisabled": "Voreinstellungen der vorherigen Sitzung wurden für diese Sitzung verwendet.",
|
||||
"chat.configStatusDes": "Vor dem Start können Sie die Konversationseinstellungen ändern",
|
||||
"chat.deleteConversation.content": "Sind Sie sicher, dass Sie diese Konversation löschen möchten?",
|
||||
"chat.deleteConversation.title": "Konversation löschen",
|
||||
"chat.expand": "Erweitern",
|
||||
@ -12,27 +10,18 @@
|
||||
"chat.newChatTip": "Bereits in einem neuen Chat",
|
||||
"chat.pinnedTitle": "Angeheftet",
|
||||
"chat.poweredBy": "Bereitgestellt von",
|
||||
"chat.privacyPolicyLeft": "Bitte lesen Sie die ",
|
||||
"chat.privacyPolicyMiddle": "Datenschutzrichtlinien",
|
||||
"chat.privacyPolicyRight": ", die vom App-Entwickler bereitgestellt wurden.",
|
||||
"chat.privatePromptConfigTitle": "Konversationseinstellungen",
|
||||
"chat.prompt": "Aufforderung",
|
||||
"chat.publicPromptConfigTitle": "Anfängliche Aufforderung",
|
||||
"chat.resetChat": "Gespräch zurücksetzen",
|
||||
"chat.startChat": "Chat starten",
|
||||
"chat.temporarySystemIssue": "Entschuldigung, vorübergehendes Systemproblem.",
|
||||
"chat.tryToSolve": "Versuchen zu lösen",
|
||||
"chat.unpinnedTitle": "Chats",
|
||||
"chat.viewChatSettings": "Chateinstellungen anzeigen",
|
||||
"common.appUnavailable": "App ist nicht verfügbar",
|
||||
"common.appUnknownError": "App ist nicht verfügbar",
|
||||
"common.welcome": "",
|
||||
"generation.batchFailed.info": "{{num}} fehlgeschlagene Ausführungen",
|
||||
"generation.batchFailed.outputPlaceholder": "Kein Ausgabeanhalt",
|
||||
"generation.batchFailed.retry": "Wiederholen",
|
||||
"generation.browse": "durchsuchen",
|
||||
"generation.completionResult": "Vervollständigungsergebnis",
|
||||
"generation.copy": "Kopieren",
|
||||
"generation.csvStructureTitle": "Die CSV-Datei muss der folgenden Struktur entsprechen:",
|
||||
"generation.csvUploadTitle": "Ziehen Sie Ihre CSV-Datei hierher oder ",
|
||||
"generation.downloadTemplate": "Laden Sie die Vorlage hier herunter",
|
||||
@ -46,9 +35,6 @@
|
||||
"generation.executions": "{{num}} Ausführungen",
|
||||
"generation.field": "Feld",
|
||||
"generation.noData": "KI wird Ihnen hier geben, was Sie möchten.",
|
||||
"generation.queryPlaceholder": "Schreiben Sie Ihren Abfrageinhalt...",
|
||||
"generation.queryTitle": "Abfrageinhalt",
|
||||
"generation.resultTitle": "KI-Vervollständigung",
|
||||
"generation.run": "Ausführen",
|
||||
"generation.savedNoData.description": "Beginnen Sie mit der Inhaltserstellung und finden Sie hier Ihre gespeicherten Ergebnisse.",
|
||||
"generation.savedNoData.startCreateContent": "Beginnen Sie mit der Inhaltserstellung",
|
||||
|
||||
@ -1,12 +1,10 @@
|
||||
{
|
||||
"cancel": "Abbrechen",
|
||||
"continueEditing": "Bearbeiten Sie weiter",
|
||||
"create": "SNIPPET ERSTELLEN",
|
||||
"createFailed": "Snippet konnte nicht erstellt werden",
|
||||
"createFrom": "ERSTELLEN AUS",
|
||||
"createFromBlank": "Aus Rohling erstellen",
|
||||
"currentDSLVersion": "Systemunterstützte DSL-Version: ",
|
||||
"defaultName": "Unbenannter Ausschnitt",
|
||||
"deleteConfirmContent": "Dies kann nicht rückgängig gemacht werden. Workflows, die dieses Snippet verwenden, sind nicht betroffen.",
|
||||
"deleteConfirmTitle": "Snippet löschen?",
|
||||
"deleteFailed": "Snippet konnte nicht gelöscht werden",
|
||||
@ -16,7 +14,6 @@
|
||||
"discardChangesTitle": "Entwurfsänderungen verwerfen?",
|
||||
"discardDraft": "Entwurf verwerfen",
|
||||
"doNotSave": "Als Entwurf belassen",
|
||||
"draft": "Entwurf",
|
||||
"dslVersionMismatchDescription": "Es wurde ein erheblicher Unterschied zwischen den DSL-Versionen festgestellt. Das Erzwingen des Imports kann zu Fehlfunktionen des Snippets führen.",
|
||||
"dslVersionMismatchQuestion": "Möchten Sie fortfahren?",
|
||||
"dslVersionMismatchTitle": "Versionsinkompatibilität",
|
||||
@ -30,40 +27,25 @@
|
||||
"exportFailed": "Der Export des Snippets ist fehlgeschlagen.",
|
||||
"importDSLFile": "DSL-Datei importieren",
|
||||
"importDialogTitle": "Snippet importieren",
|
||||
"importFailed": "Snippet-DSL konnte nicht importiert werden",
|
||||
"importFromDSLFile": "Aus DSL-Datei",
|
||||
"importFromDSLUrl": "Von URL",
|
||||
"importFromDSLUrlPlaceholder": "DSL-Link hier einfügen",
|
||||
"importSuccess": "Snippet importiert",
|
||||
"importedDSLVersion": "Aktuelle Snippet-DSL-Version: ",
|
||||
"inputFieldButton": "Eingabefeld",
|
||||
"inputVariables": "Eingabevariablen",
|
||||
"management": "SNIPPET-VERWALTUNG",
|
||||
"menu.deleteSnippet": "Löschen",
|
||||
"menu.editInfo": "Informationen bearbeiten",
|
||||
"menu.exportSnippet": "Snippet exportieren",
|
||||
"notFoundDescription": "Der angeforderte Snippet-Mock wurde nicht gefunden.",
|
||||
"notFoundTitle": "Snippet nicht gefunden",
|
||||
"panelDescription": "Definiert die Eingabefelder, die es dem Snippet ermöglichen, Daten von anderen Knoten zu empfangen.",
|
||||
"panelPrimaryGroup": "Kerneingaben",
|
||||
"panelSecondaryGroup": "Optionale Eingaben",
|
||||
"panelTitle": "Eingabefeld",
|
||||
"publishButton": "Veröffentlichen",
|
||||
"publishFailed": "Snippet konnte nicht veröffentlicht werden",
|
||||
"publishMenuCurrentDraft": "Aktueller Entwurf unveröffentlicht",
|
||||
"publishSuccess": "Snippet veröffentlicht",
|
||||
"save": "Speichern",
|
||||
"saveAndExit": "Speichern und beenden",
|
||||
"saveBeforeLeavingDescription": "Speichern Sie, um diese Version für die Verwendung in Workflows verfügbar zu machen. Oder bewahren Sie Ihre Änderungen vorerst als Entwurf auf.",
|
||||
"saveBeforeLeavingTitle": "Änderungen vor dem Verlassen speichern?",
|
||||
"saveSuccess": "Snippet gespeichert",
|
||||
"sectionOrchestrate": "Orchestrieren",
|
||||
"testRunButton": "Testlauf",
|
||||
"typeLabel": "Ausschnitt",
|
||||
"unknownUser": "Benutzer",
|
||||
"unsavedChanges": "Aktuelle Änderungen werden nicht gespeichert.",
|
||||
"updatedBy": "{{name}} aktualisiert {{time}}",
|
||||
"usageCount": "{{count}} Mal verwendet",
|
||||
"variableInspect": "Variablenprüfung",
|
||||
"viewOnly": "Nur ansehen"
|
||||
}
|
||||
|
||||
@ -1,9 +1,6 @@
|
||||
{
|
||||
"dateFormats.display": "MMMM D, YYYY",
|
||||
"dateFormats.displayWithTime": "MMMM D, YYYY hh:mm A",
|
||||
"dateFormats.input": "YYYY-MM-DD",
|
||||
"dateFormats.output": "YYYY-MM-DD",
|
||||
"dateFormats.outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ",
|
||||
"daysInWeek.Fri": "Freitag",
|
||||
"daysInWeek.Mon": "Mon",
|
||||
"daysInWeek.Sat": "Sat",
|
||||
|
||||
@ -7,12 +7,10 @@
|
||||
"addToolModal.all.title": "Keine Werkzeuge verfügbar",
|
||||
"addToolModal.built-in.tip": "",
|
||||
"addToolModal.built-in.title": "Kein integriertes Tool verfügbar",
|
||||
"addToolModal.category": "Kategorie",
|
||||
"addToolModal.custom.tip": "Benutzerdefiniertes Werkzeug erstellen",
|
||||
"addToolModal.custom.title": "Kein benutzerdefiniertes Werkzeug verfügbar",
|
||||
"addToolModal.mcp.tip": "Einen MCP-Server hinzufügen",
|
||||
"addToolModal.mcp.title": "Kein MCP-Werkzeug verfügbar",
|
||||
"addToolModal.type": "Art",
|
||||
"addToolModal.workflow.tip": "Veröffentlichen Sie Workflows als Werkzeuge im Studio",
|
||||
"addToolModal.workflow.title": "Kein Workflow-Werkzeug verfügbar",
|
||||
"allMCP": "Alle MCP",
|
||||
@ -27,11 +25,7 @@
|
||||
"auth.unauthorized": "Unbefugt",
|
||||
"author": "Von",
|
||||
"builtInPromptTitle": "Aufforderung",
|
||||
"contribute.line1": "Ich interessiere mich dafür, ",
|
||||
"contribute.line2": "Werkzeuge zu Dify beizutragen.",
|
||||
"contribute.viewGuide": "Leitfaden anzeigen",
|
||||
"copyToolName": "Name kopieren",
|
||||
"createCustomTool": "Eigenes Werkzeug erstellen",
|
||||
"createSwaggerAPIAsTool": "Create a Swagger API as Tool",
|
||||
"createTool.authHeaderPrefix.title": "Auth-Typ",
|
||||
"createTool.authHeaderPrefix.types.basic": "Basic",
|
||||
@ -97,13 +91,11 @@
|
||||
"createTool.toolInput.title": "Werkzeug-Eingabe",
|
||||
"createTool.toolNamePlaceHolder": "Geben Sie den Werkzeugnamen ein",
|
||||
"createTool.toolOutput.description": "Beschreibung",
|
||||
"createTool.toolOutput.name": "Name",
|
||||
"createTool.toolOutput.reserved": "Reserviert",
|
||||
"createTool.toolOutput.reservedParameterDuplicateTip": "Text, JSON und Dateien sind reservierte Variablen. Variablen mit diesen Namen dürfen im Ausgabeschema nicht erscheinen.",
|
||||
"createTool.toolOutput.title": "Werkzeugausgabe",
|
||||
"createTool.urlError": "Bitte geben Sie eine gültige URL ein",
|
||||
"createTool.viewSchemaSpec": "Die OpenAPI-Swagger-Spezifikation anzeigen",
|
||||
"customToolTip": "Erfahren Sie mehr über benutzerdefinierte Dify-Tools",
|
||||
"howToGet": "Wie erhält man",
|
||||
"includeToolNum": "{{num}} {{action}} inkludiert",
|
||||
"mcp.authorize": "Autorisieren",
|
||||
@ -183,25 +175,16 @@
|
||||
"mcp.update": "Aktualisieren",
|
||||
"mcp.updateTime": "Aktualisiert",
|
||||
"mcp.updateTools": "Tools werden aktualisiert...",
|
||||
"mcp.updating": "Wird aktualisiert",
|
||||
"noCustomTool.content": "Fügen Sie hier Ihre benutzerdefinierten Werkzeuge hinzu und verwalten Sie sie, um KI-Apps zu erstellen.",
|
||||
"noCustomTool.createTool": "Werkzeug erstellen",
|
||||
"noCustomTool.title": "Keine benutzerdefinierten Werkzeuge!",
|
||||
"noSearchRes.content": "Wir konnten keine Werkzeuge finden, die Ihrer Suche entsprechen.",
|
||||
"noSearchRes.reset": "Suche zurücksetzen",
|
||||
"noSearchRes.title": "Leider keine Ergebnisse!",
|
||||
"noTools": "Keine Werkzeuge gefunden",
|
||||
"notAuthorized": "Werkzeug nicht autorisiert",
|
||||
"openInStudio": "In Studio öffnen",
|
||||
"setBuiltInTools.file": "Datei",
|
||||
"setBuiltInTools.info": "Info",
|
||||
"setBuiltInTools.infoAndSetting": "Info & Einstellungen",
|
||||
"setBuiltInTools.number": "Nummer",
|
||||
"setBuiltInTools.parameters": "Parameter",
|
||||
"setBuiltInTools.required": "Erforderlich",
|
||||
"setBuiltInTools.setting": "Einstellung",
|
||||
"setBuiltInTools.string": "Zeichenkette",
|
||||
"setBuiltInTools.toolDescription": "Werkzeugbeschreibung",
|
||||
"swaggerAPIAsToolTip": "Learn more about Swagger API as Tool",
|
||||
"test.parameters": "Parameter",
|
||||
"test.parametersValue": "Parameter & Wert",
|
||||
@ -213,7 +196,6 @@
|
||||
"thought.responseTitle": "Antwort von",
|
||||
"thought.used": "Genutzt",
|
||||
"thought.using": "Nutzung",
|
||||
"title": "Werkzeuge",
|
||||
"toolNameUsageTip": "Name des Tool-Aufrufs für die Argumentation und Aufforderung des Agenten",
|
||||
"toolRemoved": "Werkzeug entfernt",
|
||||
"type.builtIn": "Integriert",
|
||||
|
||||
@ -1,29 +1,14 @@
|
||||
{
|
||||
"agentDetail.access.actionUnavailable": "This action is not available yet.",
|
||||
"agentDetail.access.actions.monitoring": "Monitoring",
|
||||
"agentDetail.access.copyAccessUrl": "Copy access URL",
|
||||
"agentDetail.access.copyFailed": "Failed to copy reference.",
|
||||
"agentDetail.access.copyReference": "Copy reference for {{name}}",
|
||||
"agentDetail.access.copyServiceEndpoint": "Copy service API endpoint",
|
||||
"agentDetail.access.description": "Every surface this agent is reachable from.",
|
||||
"agentDetail.access.empty": "No linked access points",
|
||||
"agentDetail.access.emptyDescription": "This roster agent has no app or workflow references yet.",
|
||||
"agentDetail.access.entries.agentApp.description": "Agent app linked to this roster agent.",
|
||||
"agentDetail.access.entries.agentApp.name": "Agent app",
|
||||
"agentDetail.access.entries.workflow.description": "Workflow and node reference linked to this roster agent.",
|
||||
"agentDetail.access.entries.workflow.name": "Workflow node",
|
||||
"agentDetail.access.entryCount_one": "{{count}} entry",
|
||||
"agentDetail.access.entryCount_other": "{{count}} entries",
|
||||
"agentDetail.access.groups.references.heading": "References",
|
||||
"agentDetail.access.groups.references.label": "Linked references",
|
||||
"agentDetail.access.learnMore": "Learn more",
|
||||
"agentDetail.access.moreActions": "More actions for {{name}}",
|
||||
"agentDetail.access.serviceApi.actions.apiKey": "API Key",
|
||||
"agentDetail.access.serviceApi.actions.apiReference": "API Reference",
|
||||
"agentDetail.access.serviceApi.endpoint": "Service API Endpoint",
|
||||
"agentDetail.access.serviceApi.title": "Backend service API",
|
||||
"agentDetail.access.status.disabled": "Disabled",
|
||||
"agentDetail.access.status.enabled": "Enabled",
|
||||
"agentDetail.access.status.inService": "In service",
|
||||
"agentDetail.access.status.outOfService": "Out of service",
|
||||
"agentDetail.access.title": "Access Point",
|
||||
@ -151,7 +136,6 @@
|
||||
"agentDetail.configure.prompt.insert.tenders": "Start tenders",
|
||||
"agentDetail.configure.prompt.label": "Prompt",
|
||||
"agentDetail.configure.prompt.mention.davidHayes": "David Hayes",
|
||||
"agentDetail.configure.prompt.mention.label": "Mention",
|
||||
"agentDetail.configure.prompt.mention.priyaRamanathan": "Priya Ramanathan",
|
||||
"agentDetail.configure.prompt.placeholder": "Write instructions here,",
|
||||
"agentDetail.configure.prompt.tip": "Define the agent's role and describe its typical task. Use / to make explicit reference to Skills, Files, Tools and Knowledge Retrievals.",
|
||||
@ -183,7 +167,6 @@
|
||||
"agentDetail.configure.skills.add": "Add skill",
|
||||
"agentDetail.configure.skills.detail.contentRegion": "Skill detail content",
|
||||
"agentDetail.configure.skills.detail.fileCount": "{{count}} FILES",
|
||||
"agentDetail.configure.skills.detail.fileTreeLabel": "Skill files",
|
||||
"agentDetail.configure.skills.detail.files": "Files",
|
||||
"agentDetail.configure.skills.empty.description": "Skills give the agent reusable expertise it can call while working",
|
||||
"agentDetail.configure.skills.empty.title": "No skills yet",
|
||||
@ -225,14 +208,11 @@
|
||||
"agentDetail.configure.tools.cliDialog.title": "Add a CLI Tool",
|
||||
"agentDetail.configure.tools.cliTool": "CLI Tool",
|
||||
"agentDetail.configure.tools.credential.authOne": "Auth 1",
|
||||
"agentDetail.configure.tools.credential.endUserOAuth": "End-user · OAuth",
|
||||
"agentDetail.configure.tools.editAction": "Edit {{name}}",
|
||||
"agentDetail.configure.tools.empty.description": "Tools let the agent act, like searching the web or calling your apps",
|
||||
"agentDetail.configure.tools.empty.title": "No tools yet",
|
||||
"agentDetail.configure.tools.label": "Tools",
|
||||
"agentDetail.configure.tools.moreActions": "More actions for {{name}}",
|
||||
"agentDetail.configure.tools.pluginType": "Plugin",
|
||||
"agentDetail.configure.tools.preAuthorize": "Pre-authorize",
|
||||
"agentDetail.configure.tools.removeAction": "Remove {{name}}",
|
||||
"agentDetail.configure.tools.removeProvider": "Remove all tools",
|
||||
"agentDetail.configure.tools.richTip": "Equip your agent with Dify's plugins. Refer to <pluginDocLink>docs</pluginDocLink>. Make explicit reference with / in Prompt.\nAlternatively, you can always tell the agent to install and authenticate other tools (e.g. MCPs & CLI tools) via a Build chat. Note that tools configured via Build chats will NOT show up here, although they will still be available to your agent going forward. Refer to <buildDocLink>docs</buildDocLink>.",
|
||||
@ -245,11 +225,9 @@
|
||||
"agentDetail.configure.tools.toolTabs.plugins": "Plugins",
|
||||
"agentDetail.configure.tools.toolTabs.workflow": "Workflow",
|
||||
"agentDetail.documentTitle": "Agent",
|
||||
"agentDetail.history": "History",
|
||||
"agentDetail.logs.description": "Full logs record the running status of the application, including user inputs, agent replies, planning and tool uses.",
|
||||
"agentDetail.logs.empty": "No logs found",
|
||||
"agentDetail.logs.filters.period.allTime": "All time",
|
||||
"agentDetail.logs.filters.period.label": "Log period",
|
||||
"agentDetail.logs.filters.period.last30days": "Last 30 days",
|
||||
"agentDetail.logs.filters.period.last7days": "Last 7 days",
|
||||
"agentDetail.logs.filters.search.label": "Search logs",
|
||||
@ -267,7 +245,6 @@
|
||||
"agentDetail.logs.filters.source.workflow": "Workflow",
|
||||
"agentDetail.logs.learnMore": "Learn more",
|
||||
"agentDetail.logs.loadFailed": "Failed to load logs",
|
||||
"agentDetail.logs.loading": "Loading logs…",
|
||||
"agentDetail.logs.notAvailable": "N/A",
|
||||
"agentDetail.logs.table.createdTime": "Created Time",
|
||||
"agentDetail.logs.table.endUser": "End-user",
|
||||
@ -288,19 +265,7 @@
|
||||
"agentDetail.memorySettings.notConfigured": "Not configured",
|
||||
"agentDetail.memorySettings.scopeLabel": "Memory Scope",
|
||||
"agentDetail.memorySettings.title": "Memory",
|
||||
"agentDetail.metadata.activeVersionLabel": "Active Version",
|
||||
"agentDetail.metadata.appIdLabel": "App ID",
|
||||
"agentDetail.metadata.description": "Read-only roster fields returned by the agent backend.",
|
||||
"agentDetail.metadata.emptyValue": "Not available",
|
||||
"agentDetail.metadata.scopeLabel": "Scope",
|
||||
"agentDetail.metadata.scopes.roster": "Roster",
|
||||
"agentDetail.metadata.scopes.workflow_only": "Workflow only",
|
||||
"agentDetail.metadata.sourceLabel": "Source",
|
||||
"agentDetail.metadata.statusLabel": "Status",
|
||||
"agentDetail.metadata.title": "Metadata",
|
||||
"agentDetail.metadata.updatedAtLabel": "Updated At",
|
||||
"agentDetail.metadata.workflowIdLabel": "Workflow ID",
|
||||
"agentDetail.metadata.workflowNodeIdLabel": "Workflow Node ID",
|
||||
"agentDetail.monitoring.change": "{{value}} from previous period",
|
||||
"agentDetail.monitoring.dateRangeLabel": "Date range",
|
||||
"agentDetail.monitoring.description": "Track the reusable agent activity, cost, and interaction quality across workflows.",
|
||||
@ -334,15 +299,12 @@
|
||||
"agentDetail.monitoring.units.tokenPerSecond": "Token/s",
|
||||
"agentDetail.navigationLabel": "Agent navigation",
|
||||
"agentDetail.publish": "Publish",
|
||||
"agentDetail.publishSoon": "Soon",
|
||||
"agentDetail.sections.access": "Access Point",
|
||||
"agentDetail.sections.configure": "Configure",
|
||||
"agentDetail.sections.logs": "Logs",
|
||||
"agentDetail.sections.monitoring": "Monitoring",
|
||||
"agentDetail.subtitle": "Agent ID: {{agentId}}",
|
||||
"agentDetail.title": "Agent",
|
||||
"agentDetail.type": "AGENT",
|
||||
"agentDetail.versionHistory.active": "Active",
|
||||
"agentDetail.versionHistory.empty": "No versions yet",
|
||||
"agentDetail.versionHistory.exitVersions": "Exit versions",
|
||||
"agentDetail.versionHistory.filter": "Filter versions",
|
||||
@ -350,7 +312,6 @@
|
||||
"agentDetail.versionHistory.versionName": "Version {{version}}",
|
||||
"agentDetail.versionHistory.viewOnly": "View Only",
|
||||
"roster.createAgent": "Create agent",
|
||||
"roster.createAgentOptions": "Create agent options",
|
||||
"roster.createDialog.description": "Create a reusable agent in this workspace roster.",
|
||||
"roster.createDialog.title": "Create agent",
|
||||
"roster.createForm.changeIcon": "Change agent icon",
|
||||
@ -377,9 +338,7 @@
|
||||
"roster.editDialog.title": "Edit agent",
|
||||
"roster.editInfo": "Edit Info",
|
||||
"roster.empty": "No agent yet",
|
||||
"roster.emptyDescription": "Agents saved to this workspace will appear here.",
|
||||
"roster.emptySearch": "No matching agents",
|
||||
"roster.emptySearchDescription": "Try another agent name.",
|
||||
"roster.filters.all": "All",
|
||||
"roster.filters.drafts": "Drafts",
|
||||
"roster.filters.label": "Agent filters",
|
||||
@ -403,12 +362,6 @@
|
||||
"roster.saveToRosterSuccess": "Agent saved to roster.",
|
||||
"roster.searchLabel": "Search agents",
|
||||
"roster.searchPlaceholder": "Search agents by name…",
|
||||
"roster.sources.agent_app": "Agent app",
|
||||
"roster.sources.imported": "Imported",
|
||||
"roster.sources.system": "System",
|
||||
"roster.sources.workflow": "Workflow",
|
||||
"roster.status.active": "Active",
|
||||
"roster.status.archived": "Archived",
|
||||
"roster.tabs.agent": "Agent",
|
||||
"roster.tabs.human": "Human",
|
||||
"roster.tabsLabel": "Roster type",
|
||||
|
||||
@ -5,24 +5,16 @@
|
||||
"addModal.queryName": "Question",
|
||||
"addModal.queryPlaceholder": "Type query here",
|
||||
"addModal.title": "Add Annotation Reply",
|
||||
"batchAction.cancel": "Cancel",
|
||||
"batchAction.delete": "Delete",
|
||||
"batchAction.selected": "Selected",
|
||||
"batchModal.answer": "answer",
|
||||
"batchModal.browse": "browse",
|
||||
"batchModal.cancel": "Cancel",
|
||||
"batchModal.completed": "Import completed",
|
||||
"batchModal.content": "content",
|
||||
"batchModal.contentTitle": "chunk content",
|
||||
"batchModal.csvUploadTitle": "Drag and drop your CSV file here, or ",
|
||||
"batchModal.error": "Import Error",
|
||||
"batchModal.ok": "OK",
|
||||
"batchModal.processing": "In batch processing",
|
||||
"batchModal.question": "question",
|
||||
"batchModal.run": "Run Batch",
|
||||
"batchModal.runError": "Run batch failed",
|
||||
"batchModal.template": "Download the template here",
|
||||
"batchModal.tip": "The CSV file must conform to the following structure:",
|
||||
"batchModal.title": "Bulk Import",
|
||||
"editBy": "Answer edited by {{author}}",
|
||||
"editModal.answerName": "Storyteller Bot",
|
||||
|
||||
@ -11,62 +11,14 @@
|
||||
"apiKeyModal.lastUsed": "LAST USED",
|
||||
"apiKeyModal.secretKey": "Secret Key",
|
||||
"apiServer": "API Server",
|
||||
"chatMode.blocking": "Blocking type, waiting for execution to complete and returning results. (Requests may be interrupted if the process is long)",
|
||||
"chatMode.chatMsgHistoryApi": "Get the chat history message",
|
||||
"chatMode.chatMsgHistoryApiTip": "The first page returns the latest `limit` bar, which is in reverse order.",
|
||||
"chatMode.chatMsgHistoryConversationIdTip": "Conversation ID",
|
||||
"chatMode.chatMsgHistoryFirstId": "ID of the first chat record on the current page. The default is none.",
|
||||
"chatMode.chatMsgHistoryLimit": "How many chats are returned in one request",
|
||||
"chatMode.conversationIdTip": "(Optional) Conversation ID: leave empty for first-time conversation; pass conversation_id from context to continue dialogue.",
|
||||
"chatMode.conversationRenamingApi": "Conversation renaming",
|
||||
"chatMode.conversationRenamingApiTip": "Rename conversations; the name is displayed in multi-session client interfaces.",
|
||||
"chatMode.conversationRenamingNameTip": "New name",
|
||||
"chatMode.conversationsListApi": "Get conversation list",
|
||||
"chatMode.conversationsListApiTip": "Gets the session list of the current user. By default, the last 20 sessions are returned.",
|
||||
"chatMode.conversationsListFirstIdTip": "The ID of the last record on the current page, default none.",
|
||||
"chatMode.conversationsListLimitTip": "How many chats are returned in one request",
|
||||
"chatMode.createChatApi": "Create chat message",
|
||||
"chatMode.createChatApiTip": "Create a new conversation message or continue an existing dialogue.",
|
||||
"chatMode.info": "For versatile conversational apps using a Q&A format, call the chat-messages API to initiate dialogue. Maintain ongoing conversations by passing the returned conversation_id. Response parameters and templates depend on Dify Prompt Eng. settings.",
|
||||
"chatMode.inputsTips": "(Optional) Provide user input fields as key-value pairs, corresponding to variables in Prompt Eng. Key is the variable name, Value is the parameter value. If the field type is Select, the submitted Value must be one of the preset choices.",
|
||||
"chatMode.messageFeedbackApi": "Message terminal user feedback, like",
|
||||
"chatMode.messageFeedbackApiTip": "Rate received messages on behalf of end-users with likes or dislikes. This data is visible in the Logs & Annotations page and used for future model fine-tuning.",
|
||||
"chatMode.messageIDTip": "Message ID",
|
||||
"chatMode.parametersApi": "Obtain application parameter information",
|
||||
"chatMode.parametersApiTip": "Retrieve configured Input parameters, including variable names, field names, types, and default values. Typically used for displaying these fields in a form or filling in default values after the client loads.",
|
||||
"chatMode.queryTips": "User input/question content",
|
||||
"chatMode.ratingTip": "like or dislike, null is undo",
|
||||
"chatMode.streaming": "streaming returns. Implementation of streaming return based on SSE (Server-Sent Events).",
|
||||
"chatMode.title": "Chat App API",
|
||||
"completionMode.blocking": "Blocking type, waiting for execution to complete and returning results. (Requests may be interrupted if the process is long)",
|
||||
"completionMode.createCompletionApi": "Create Completion Message",
|
||||
"completionMode.createCompletionApiTip": "Create a Completion Message to support the question-and-answer mode.",
|
||||
"completionMode.info": "For high-quality text generation, such as articles, summaries, and translations, use the completion-messages API with user input. Text generation relies on the model parameters and prompt templates set in Dify Prompt Engineering.",
|
||||
"completionMode.inputsTips": "(Optional) Provide user input fields as key-value pairs, corresponding to variables in Prompt Eng. Key is the variable name, Value is the parameter value. If the field type is Select, the submitted Value must be one of the preset choices.",
|
||||
"completionMode.messageFeedbackApi": "Message feedback (like)",
|
||||
"completionMode.messageFeedbackApiTip": "Rate received messages on behalf of end-users with likes or dislikes. This data is visible in the Logs & Annotations page and used for future model fine-tuning.",
|
||||
"completionMode.messageIDTip": "Message ID",
|
||||
"completionMode.parametersApi": "Obtain application parameter information",
|
||||
"completionMode.parametersApiTip": "Retrieve configured Input parameters, including variable names, field names, types, and default values. Typically used for displaying these fields in a form or filling in default values after the client loads.",
|
||||
"completionMode.queryTips": "User input text content.",
|
||||
"completionMode.ratingTip": "like or dislike, null is undo",
|
||||
"completionMode.streaming": "streaming returns. Implementation of streaming return based on SSE (Server-Sent Events).",
|
||||
"completionMode.title": "Completion App API",
|
||||
"copied": "Copied",
|
||||
"copy": "Copy",
|
||||
"develop.noContent": "No content",
|
||||
"develop.pathParams": "Path Params",
|
||||
"develop.query": "Query",
|
||||
"develop.requestBody": "Request Body",
|
||||
"develop.toc": "Contents",
|
||||
"disabled": "Disabled",
|
||||
"loading": "Loading",
|
||||
"merMaid.rerender": "Redo Rerender",
|
||||
"never": "Never",
|
||||
"ok": "In Service",
|
||||
"pause": "Pause",
|
||||
"play": "Play",
|
||||
"playing": "Playing",
|
||||
"regenerate": "Regenerate",
|
||||
"status": "Status"
|
||||
"playing": "Playing"
|
||||
}
|
||||
|
||||
@ -1,24 +1,17 @@
|
||||
{
|
||||
"agentLog": "Agent Log",
|
||||
"agentLogDetail.agentMode": "Agent Mode",
|
||||
"agentLogDetail.finalProcessing": "Final Processing",
|
||||
"agentLogDetail.iteration": "Iteration",
|
||||
"agentLogDetail.iterations": "Iterations",
|
||||
"agentLogDetail.toolUsed": "Tool Used",
|
||||
"dateFormat": "MM/DD/YYYY",
|
||||
"dateTimeFormat": "MM/DD/YYYY hh:mm:ss A",
|
||||
"description": "The logs record the running status of the application, including user inputs and AI replies.",
|
||||
"detail.annotationTip": "Improvements Marked by {{user}}",
|
||||
"detail.conversationId": "Conversation ID",
|
||||
"detail.loading": "loading",
|
||||
"detail.modelParams": "Model parameters",
|
||||
"detail.operation.addAnnotation": "Add Improvement",
|
||||
"detail.operation.annotationPlaceholder": "Enter the expected answer that you want AI to reply, which can be used for model fine-tuning and continuous improvement of text generation quality in the future.",
|
||||
"detail.operation.dislike": "dislike",
|
||||
"detail.operation.editAnnotation": "Edit Improvement",
|
||||
"detail.operation.like": "like",
|
||||
"detail.promptTemplate": "Prompt Template",
|
||||
"detail.promptTemplateBeforeChat": "Prompt Template Before Chat · As System Message",
|
||||
"detail.second": "s",
|
||||
"detail.time": "Time",
|
||||
"detail.timeConsuming": "",
|
||||
@ -43,7 +36,6 @@
|
||||
"filter.period.yearToDate": "Year to date",
|
||||
"filter.sortBy": "Sort by:",
|
||||
"monitoring.description": "Monitoring records the running status of the application, including performance, user activity, and costs.",
|
||||
"promptLog": "Prompt Log",
|
||||
"runDetail.fileListDetail": "Detail",
|
||||
"runDetail.fileListLabel": "File Details",
|
||||
"runDetail.testWithParams": "Test With Params",
|
||||
@ -68,9 +60,6 @@
|
||||
"table.header.updatedTime": "Updated time",
|
||||
"table.header.user": "END USER OR ACCOUNT",
|
||||
"table.header.userRate": "User Rate",
|
||||
"table.header.version": "VERSION",
|
||||
"table.pagination.next": "Next",
|
||||
"table.pagination.previous": "Prev",
|
||||
"title": "Logs",
|
||||
"triggerBy.appRun": "WebApp",
|
||||
"triggerBy.debugging": "Debugging",
|
||||
@ -79,7 +68,6 @@
|
||||
"triggerBy.ragPipelineRun": "RAG Pipeline",
|
||||
"triggerBy.schedule": "Schedule",
|
||||
"triggerBy.webhook": "Webhook",
|
||||
"viewLog": "View Log",
|
||||
"workflowSubtitle": "The log recorded the operation of Automate.",
|
||||
"workflowTitle": "Workflow Logs"
|
||||
}
|
||||
|
||||
@ -32,9 +32,6 @@
|
||||
"appSelector.noParams": "No parameters needed",
|
||||
"appSelector.params": "APP PARAMETERS",
|
||||
"appSelector.placeholder": "Select an app...",
|
||||
"communityIntro": "Discuss with team members, contributors and developers on different channels.",
|
||||
"createApp": "CREATE APP",
|
||||
"createFromConfigFile": "Create from DSL file",
|
||||
"deleteAppConfirmContent": "Deleting the app is irreversible. Users will no longer be able to access your app, and all prompt configurations and logs will be permanently deleted.",
|
||||
"deleteAppConfirmInputLabel": "To confirm, type <appName>{{appName}}</appName> in the box below:",
|
||||
"deleteAppConfirmInputPlaceholder": "Enter app name…",
|
||||
@ -51,7 +48,6 @@
|
||||
"exportFailed": "Export DSL failed.",
|
||||
"filterEmpty.noApps": "No apps here",
|
||||
"firstEmpty.blankDescription": "Start with an empty canvas and build your app step by step.",
|
||||
"firstEmpty.description": "Turn an idea into a working AI app — start from blank, a template, or import an existing one.",
|
||||
"firstEmpty.importDescription": "Already have a Dify app exported as DSL? Bring it in to continue where you left off.",
|
||||
"firstEmpty.learnDifyTitle": "Learn Dify from Template",
|
||||
"firstEmpty.or": "Or",
|
||||
@ -60,34 +56,24 @@
|
||||
"gotoAnything.actions.accountDesc": "Navigate to account page",
|
||||
"gotoAnything.actions.communityDesc": "Open Discord community",
|
||||
"gotoAnything.actions.createCategoryDesc": "Create an AI-generated workflow or chatflow",
|
||||
"gotoAnything.actions.createCategoryTitle": "Create",
|
||||
"gotoAnything.actions.createChatflow": "Chatflow",
|
||||
"gotoAnything.actions.createChatflowDesc": "Generate a chatflow (advanced chat) app from a description",
|
||||
"gotoAnything.actions.createWorkflow": "Workflow",
|
||||
"gotoAnything.actions.createWorkflowDesc": "Generate a workflow app from a description",
|
||||
"gotoAnything.actions.docDesc": "Open help documentation",
|
||||
"gotoAnything.actions.feedbackDesc": "Open community feedback discussions",
|
||||
"gotoAnything.actions.languageCategoryDesc": "Switch interface language",
|
||||
"gotoAnything.actions.languageCategoryTitle": "Language",
|
||||
"gotoAnything.actions.languageChangeDesc": "Change UI language",
|
||||
"gotoAnything.actions.refineCategoryDesc": "Refine the current workflow or chatflow graph",
|
||||
"gotoAnything.actions.refineDesc": "Describe a change to apply to the current draft",
|
||||
"gotoAnything.actions.refineTitle": "Refine current graph",
|
||||
"gotoAnything.actions.runDesc": "Run quick commands (theme, language, ...)",
|
||||
"gotoAnything.actions.runTitle": "Commands",
|
||||
"gotoAnything.actions.searchApplications": "Search Applications",
|
||||
"gotoAnything.actions.searchApplicationsDesc": "Search and navigate to your applications",
|
||||
"gotoAnything.actions.searchKnowledgeBases": "Search Knowledge Bases",
|
||||
"gotoAnything.actions.searchKnowledgeBasesDesc": "Search and navigate to your knowledge bases",
|
||||
"gotoAnything.actions.searchPlugins": "Search Integrations",
|
||||
"gotoAnything.actions.searchPluginsDesc": "Search and navigate to your integrations",
|
||||
"gotoAnything.actions.searchWorkflowNodes": "Search Workflow Nodes",
|
||||
"gotoAnything.actions.searchWorkflowNodesDesc": "Find and jump to nodes in the current workflow by name or type",
|
||||
"gotoAnything.actions.searchWorkflowNodesHelp": "This feature only works when viewing a workflow. Navigate to a workflow first.",
|
||||
"gotoAnything.actions.slashDesc": "Execute commands (type / to see all available commands)",
|
||||
"gotoAnything.actions.slashTitle": "Commands",
|
||||
"gotoAnything.actions.themeCategoryDesc": "Switch application theme",
|
||||
"gotoAnything.actions.themeCategoryTitle": "Theme",
|
||||
"gotoAnything.actions.themeDark": "Dark Theme",
|
||||
"gotoAnything.actions.themeDarkDesc": "Use dark appearance",
|
||||
"gotoAnything.actions.themeLight": "Light Theme",
|
||||
@ -140,8 +126,6 @@
|
||||
"importFromDSLFile": "From DSL file",
|
||||
"importFromDSLUrl": "From URL",
|
||||
"importFromDSLUrlPlaceholder": "Paste DSL link here",
|
||||
"join": "Join the community",
|
||||
"marketplace.template.categories": "Categories",
|
||||
"marketplace.template.category.design": "Design",
|
||||
"marketplace.template.category.it": "IT",
|
||||
"marketplace.template.category.knowledge": "Knowledge",
|
||||
@ -156,7 +140,6 @@
|
||||
"marketplace.template.overview": "Overview",
|
||||
"marketplace.template.publishedBy": "By",
|
||||
"marketplace.template.usageCount": "Usage",
|
||||
"marketplace.template.viewOnMarketplace": "View on Marketplace",
|
||||
"maxActiveRequests": "Max concurrent requests",
|
||||
"maxActiveRequestsPlaceholder": "Enter 0 for unlimited",
|
||||
"maxActiveRequestsTip": "Maximum number of concurrent active requests per app (0 for unlimited)",
|
||||
@ -167,7 +150,6 @@
|
||||
"newApp.Create": "Create",
|
||||
"newApp.advancedShortDescription": "Workflow enhanced for multi-turn chats",
|
||||
"newApp.advancedUserDescription": "Workflow with additional memory features and a chatbot interface.",
|
||||
"newApp.agentAssistant": "New Agent Assistant",
|
||||
"newApp.agentShortDescription": "Intelligent agent with reasoning and autonomous tool use",
|
||||
"newApp.agentUserDescription": "An intelligent agent capable of iterative reasoning and autonomous tool use to achieve task goals.",
|
||||
"newApp.appCreateDSLErrorPart1": "A significant difference in DSL versions has been detected. Forcing the import may cause the application to malfunction.",
|
||||
@ -180,51 +162,34 @@
|
||||
"newApp.appCreated": "App created",
|
||||
"newApp.appDescriptionPlaceholder": "Enter the description of the app",
|
||||
"newApp.appNamePlaceholder": "Give your app a name",
|
||||
"newApp.appTemplateNotSelected": "Please select a template",
|
||||
"newApp.appTypeRequired": "Please select an app type",
|
||||
"newApp.captionDescription": "Description",
|
||||
"newApp.captionName": "App Name & Icon",
|
||||
"newApp.caution": "Caution",
|
||||
"newApp.chatApp": "Assistant",
|
||||
"newApp.chatAppIntro": "I want to build a chat-based application. This app uses a question-and-answer format, allowing for multiple rounds of continuous conversation.",
|
||||
"newApp.chatbotShortDescription": "LLM-based chatbot with simple setup",
|
||||
"newApp.chatbotUserDescription": "Quickly build an LLM-based chatbot with simple configuration. You can switch to Chatflow later.",
|
||||
"newApp.chooseAppType": "Choose an App Type",
|
||||
"newApp.completeApp": "Text Generator",
|
||||
"newApp.completeAppIntro": "I want to create an application that generates high-quality text based on prompts, such as generating articles, summaries, translations, and more.",
|
||||
"newApp.completionShortDescription": "AI assistant for text generation tasks",
|
||||
"newApp.completionUserDescription": "Quickly build an AI assistant for text generation tasks with simple configuration.",
|
||||
"newApp.dropDSLToCreateApp": "Drop DSL file here to create app",
|
||||
"newApp.forAdvanced": "FOR ADVANCED USERS",
|
||||
"newApp.forBeginners": "More basic app types",
|
||||
"newApp.foundResult": "{{count}} Result",
|
||||
"newApp.foundResults": "{{count}} Results",
|
||||
"newApp.hideTemplates": "Go back to mode selection",
|
||||
"newApp.import": "Import",
|
||||
"newApp.learnMore": "Learn more",
|
||||
"newApp.nameNotEmpty": "Name cannot be empty",
|
||||
"newApp.noAppsFound": "No apps found",
|
||||
"newApp.noIdeaTip": "No ideas? Check out our templates",
|
||||
"newApp.noTemplateFound": "No templates found",
|
||||
"newApp.noTemplateFoundTip": "Try searching using different keywords.",
|
||||
"newApp.optional": "Optional",
|
||||
"newApp.previewDemo": "Preview demo",
|
||||
"newApp.showTemplates": "I want to choose from a template",
|
||||
"newApp.startFromBlank": "Create from Blank",
|
||||
"newApp.startFromTemplate": "Create from Template",
|
||||
"newApp.useTemplate": "Use this template",
|
||||
"newApp.workflowShortDescription": "Agentic flow for intelligent automations",
|
||||
"newApp.workflowUserDescription": "Visually build autonomous AI workflows with drag-and-drop simplicity.",
|
||||
"newApp.workflowWarning": "Currently in beta",
|
||||
"newAppFromTemplate.byCategories": "BY CATEGORIES",
|
||||
"newAppFromTemplate.searchAllTemplate": "Search all templates...",
|
||||
"newAppFromTemplate.sidebar.Agent": "Agent",
|
||||
"newAppFromTemplate.sidebar.Assistant": "Assistant",
|
||||
"newAppFromTemplate.sidebar.HR": "HR",
|
||||
"newAppFromTemplate.sidebar.Programming": "Programming",
|
||||
"newAppFromTemplate.sidebar.Recommended": "All",
|
||||
"newAppFromTemplate.sidebar.Workflow": "Workflow",
|
||||
"newAppFromTemplate.sidebar.Writing": "Writing",
|
||||
"noAccessPermission": "No permission to access web app",
|
||||
"noAccessResourcePermission": "No permission to access this resource",
|
||||
"noUserInputNode": "Missing user input node",
|
||||
@ -234,8 +199,6 @@
|
||||
"publishApp.notSetDesc": "Currently nobody can access the web app. Please set permissions.",
|
||||
"publishApp.title": "Who can access web app",
|
||||
"removeOriginal": "Delete the original app",
|
||||
"roadmap": "See our roadmap",
|
||||
"showMyCreatedAppsOnly": "Created by me",
|
||||
"structOutput.LLMResponse": "LLM Response",
|
||||
"structOutput.configure": "Configure",
|
||||
"structOutput.modelNotSupported": "Model not supported",
|
||||
@ -246,8 +209,6 @@
|
||||
"structOutput.structured": "Structured",
|
||||
"structOutput.structuredTip": "Structured Outputs is a feature that ensures the model will always generate responses that adhere to your supplied JSON Schema",
|
||||
"studio.allApps": "All Apps",
|
||||
"studio.apps": "Apps",
|
||||
"studio.filters.allCreators": "All creators",
|
||||
"studio.filters.creators": "Creators",
|
||||
"studio.filters.reset": "Reset",
|
||||
"studio.filters.searchCreators": "Search creator...",
|
||||
@ -261,7 +222,6 @@
|
||||
"studio.starFailed": "Failed to update star",
|
||||
"studio.starred": "Starred",
|
||||
"studio.unstarApp": "Unstar app",
|
||||
"studio.viewSnippets": "View Snippets",
|
||||
"switch": "Switch to Workflow Orchestrate",
|
||||
"switchLabel": "The app copy to be created",
|
||||
"switchStart": "Start switch",
|
||||
@ -274,7 +234,6 @@
|
||||
"tracing.aliyun.title": "Cloud Monitor",
|
||||
"tracing.arize.description": "Enterprise-grade LLM observability, online & offline evaluation, monitoring, and experimentation—powered by OpenTelemetry. Purpose-built for LLM & agent-driven applications.",
|
||||
"tracing.arize.title": "Arize",
|
||||
"tracing.collapse": "Collapse",
|
||||
"tracing.config": "Config",
|
||||
"tracing.configProvider.clientId": "OAuth Client ID",
|
||||
"tracing.configProvider.clientSecret": "OAuth Client Secret",
|
||||
@ -297,11 +256,9 @@
|
||||
"tracing.configProviderTitle.notConfigured": "Config provider to enable tracing",
|
||||
"tracing.databricks.description": "Databricks offers fully-managed MLflow with strong governance and security for storing trace data.",
|
||||
"tracing.databricks.title": "Databricks",
|
||||
"tracing.description": "Configuring a Third-Party LLMOps provider and tracing app performance.",
|
||||
"tracing.disabled": "Disabled",
|
||||
"tracing.disabledTip": "Please config provider first",
|
||||
"tracing.enabled": "In Service",
|
||||
"tracing.expand": "Expand",
|
||||
"tracing.inUse": "In use",
|
||||
"tracing.langfuse.description": "Open-source LLM observability, evaluation, prompt management and metrics to debug and improve your LLM application.",
|
||||
"tracing.langfuse.title": "Langfuse",
|
||||
@ -330,9 +287,7 @@
|
||||
"types.advanced": "Chatflow",
|
||||
"types.agent": "Agent",
|
||||
"types.all": "All",
|
||||
"types.basic": "Basic",
|
||||
"types.chatbot": "Chatbot",
|
||||
"types.completion": "Completion",
|
||||
"types.filter": "Types",
|
||||
"types.workflow": "Workflow"
|
||||
}
|
||||
|
||||
@ -10,7 +10,6 @@
|
||||
"account.appearanceLabel": "Appearance",
|
||||
"account.appearanceLight": "Light",
|
||||
"account.appearanceSystem": "System",
|
||||
"account.avatar": "Avatar",
|
||||
"account.changeEmail.authTip": "Once your email is changed, Google or GitHub accounts linked to your old email will no longer be able to log in to this account.",
|
||||
"account.changeEmail.changeTo": "Change to {{email}}",
|
||||
"account.changeEmail.codeLabel": "Verification code",
|
||||
@ -63,7 +62,6 @@
|
||||
"account.showAppLength": "Show {{length}} apps",
|
||||
"account.verificationLabel": "Verification Code",
|
||||
"account.verificationPlaceholder": "Paste the 6-digit code",
|
||||
"account.workspaceIcon": "Workspace Icon",
|
||||
"account.workspaceName": "Workspace Name",
|
||||
"account.workspaceNamePlaceholder": "Enter workspace name",
|
||||
"actionMsg.copySuccessfully": "Copied successfully",
|
||||
@ -78,7 +76,6 @@
|
||||
"agentStrategyPage.description": "Define how your AI agent reasons and makes decisions — including how it selects tools, handles results, and solves problems autonomously.",
|
||||
"api.actionFailed": "Action failed",
|
||||
"api.actionSuccess": "Action succeeded",
|
||||
"api.create": "Created",
|
||||
"api.remove": "Removed",
|
||||
"api.saved": "Saved",
|
||||
"api.success": "Success",
|
||||
@ -105,8 +102,6 @@
|
||||
"appMenus.logs": "Logs",
|
||||
"appMenus.overview": "Monitoring",
|
||||
"appMenus.promptEng": "Orchestrate",
|
||||
"appModes.chatApp": "Chat App",
|
||||
"appModes.completionApp": "Text Generator",
|
||||
"avatar.deleteDescription": "Are you sure you want to remove your profile picture? Your account will use the default initial avatar.",
|
||||
"avatar.deleteTitle": "Remove Avatar",
|
||||
"avatar.editAction": "Edit Avatar",
|
||||
@ -122,7 +117,6 @@
|
||||
"chat.inputDisabledPlaceholder": "Preview Only",
|
||||
"chat.inputPlaceholder": "Talk to {{botName}}",
|
||||
"chat.renameConversation": "Rename Conversation",
|
||||
"chat.resend": "Resend",
|
||||
"chat.thinking": "Thinking...",
|
||||
"chat.thought": "Thought",
|
||||
"compliance.gdpr": "GDPR DPA",
|
||||
@ -131,42 +125,21 @@
|
||||
"compliance.sandboxUpgradeTooltip": "Only available with a Professional or Team plan.",
|
||||
"compliance.soc2Type1": "SOC 2 Type I Report",
|
||||
"compliance.soc2Type2": "SOC 2 Type II Report",
|
||||
"dataSource.add": "Add a Data Source",
|
||||
"dataSource.configure": "Configure",
|
||||
"dataSource.connect": "Connect",
|
||||
"dataSource.notion.addWorkspace": "Add workspace",
|
||||
"dataSource.notion.changeAuthorizedPages": "Change authorized pages",
|
||||
"dataSource.notion.connected": "Connected",
|
||||
"dataSource.notion.connectedWorkspace": "Connected workspace",
|
||||
"dataSource.notion.description": "Using Notion as a Data Source for the Knowledge.",
|
||||
"dataSource.notion.disconnected": "Disconnected",
|
||||
"dataSource.notion.integratedAlert": "Notion is integrated via internal credential, no need to re-authorize.",
|
||||
"dataSource.notion.pagesAuthorized": "Pages authorized",
|
||||
"dataSource.notion.remove": "Remove",
|
||||
"dataSource.notion.selector.addPages": "Add pages",
|
||||
"dataSource.notion.selector.configure": "Configure Notion",
|
||||
"dataSource.notion.selector.docs": "Notion docs",
|
||||
"dataSource.notion.selector.headerTitle": "Choose Notion pages",
|
||||
"dataSource.notion.selector.noSearchResult": "No search results",
|
||||
"dataSource.notion.selector.pageSelected": "Pages Selected",
|
||||
"dataSource.notion.selector.preview": "PREVIEW",
|
||||
"dataSource.notion.selector.searchPages": "Search pages...",
|
||||
"dataSource.notion.sync": "Sync",
|
||||
"dataSource.notion.title": "Notion",
|
||||
"dataSource.website.active": "Active",
|
||||
"dataSource.website.configuredCrawlers": "Configured crawlers",
|
||||
"dataSource.website.description": "Import content from websites using web crawler.",
|
||||
"dataSource.website.inactive": "Inactive",
|
||||
"dataSource.website.title": "Website",
|
||||
"dataSource.website.with": "With",
|
||||
"dataSourcePage.description": "Connect external data sources to use in your Knowledge base or Knowledge Pipeline — pull in content from Google Drive, Notion, GitHub, and more.",
|
||||
"dataSourcePage.installFirst": "Please install a data source first.",
|
||||
"dataSourcePage.notSetUp": "not set up",
|
||||
"dataSourcePage.notSetUpTitle": "<highlight>Data Source</highlight> not set up",
|
||||
"datasetMenus.documents": "Documents",
|
||||
"datasetMenus.emptyTip": "This Knowledge has not been integrated within any application. Please refer to the document for guidance.",
|
||||
"datasetMenus.hitTesting": "Retrieval Testing",
|
||||
"datasetMenus.noRelatedApp": "No linked apps",
|
||||
"datasetMenus.pipeline": "Pipeline",
|
||||
"datasetMenus.relatedApp": "linked apps",
|
||||
"datasetMenus.settings": "Settings",
|
||||
@ -181,12 +154,10 @@
|
||||
"errorBoundary.componentStack": "Component Stack:",
|
||||
"errorBoundary.details": "Error Details (Development Only)",
|
||||
"errorBoundary.errorCount": "This error has occurred {{count}} times",
|
||||
"errorBoundary.fallbackTitle": "Oops! Something went wrong",
|
||||
"errorBoundary.message": "An unexpected error occurred while rendering this component.",
|
||||
"errorBoundary.reloadPage": "Reload Page",
|
||||
"errorBoundary.title": "Something went wrong",
|
||||
"errorBoundary.tryAgain": "Try Again",
|
||||
"errorBoundary.tryAgainCompact": "Try again",
|
||||
"errorMsg.fieldRequired": "{{field}} is required",
|
||||
"errorMsg.urlError": "url should start with http:// or https://",
|
||||
"extensionPage.description": "Integrate external services into your apps using HTTP Webhooks.",
|
||||
@ -217,14 +188,8 @@
|
||||
"imageUploader.uploadFromComputerReadError": "Image reading failed, please try again.",
|
||||
"imageUploader.uploadFromComputerUploadError": "Image upload failed, please upload again.",
|
||||
"integrations.connect": "Connect",
|
||||
"integrations.connected": "Connected",
|
||||
"integrations.github": "GitHub",
|
||||
"integrations.githubAccount": "Login with GitHub account",
|
||||
"integrations.google": "Google",
|
||||
"integrations.googleAccount": "Login with Google account",
|
||||
"label.optional": "(optional)",
|
||||
"language.displayLanguage": "Display Language",
|
||||
"language.language": "Language",
|
||||
"language.timezone": "Time Zone",
|
||||
"license.expiring": "Expiring in one day",
|
||||
"license.expiring_plural": "Expiring in {{count}} days",
|
||||
@ -247,21 +212,13 @@
|
||||
"mainNav.workspace.sort.createdTime": "Created time",
|
||||
"mainNav.workspace.sort.lastOpened": "Last opened",
|
||||
"mainNav.workspace.sort.openMenu": "Sort workspaces",
|
||||
"mainNav.workspace.switchWorkspace": "Switch workspace",
|
||||
"mcpPage.description": "Connect and manage MCP servers to give your apps access to external tools and services.",
|
||||
"members.adminTip": "Can build apps & manage team settings",
|
||||
"members.alreadyInTeam": "Already in team",
|
||||
"members.alreadyInTeamTip": "These users already have access to this workspace.",
|
||||
"members.assignRoles": "Assign Roles",
|
||||
"members.assignRolesModal.description": "Select roles to assign to this member. All permissions from selected roles will be combined.",
|
||||
"members.assignRolesModal.selectedCount": "{{count}} selected",
|
||||
"members.assignRolesModal.title": "Assign Roles",
|
||||
"members.builder": "Builder",
|
||||
"members.builderTip": "Can build & edit own apps",
|
||||
"members.datasetOperatorTip": "Only can manage the knowledge base",
|
||||
"members.deleteMember": "Delete Member",
|
||||
"members.disInvite": "Cancel the invitation",
|
||||
"members.editorTip": "Can build & edit apps",
|
||||
"members.email": "Email",
|
||||
"members.emailInvalid": "Invalid Email Format",
|
||||
"members.emailNotSetup": "Email server is not set up, so invitation emails cannot be sent. Please notify users of the invitation link that will be issued after invitation instead.",
|
||||
@ -281,39 +238,18 @@
|
||||
"members.memberDetails.customGroup": "CUSTOMIZED",
|
||||
"members.memberDetails.generalGroup": "GENERAL",
|
||||
"members.memberDetails.openAria": "Open member details for {{name}}",
|
||||
"members.memberDetails.permissions.assignRoles": "Assign roles",
|
||||
"members.memberDetails.permissions.createApps": "Create apps",
|
||||
"members.memberDetails.permissions.createDatasets": "Create knowledge",
|
||||
"members.memberDetails.permissions.editApps": "Edit apps",
|
||||
"members.memberDetails.permissions.editDatasets": "Edit knowledge",
|
||||
"members.memberDetails.permissions.inviteMembers": "Invite members",
|
||||
"members.memberDetails.permissions.manageBilling": "Manage billing",
|
||||
"members.memberDetails.permissions.manageDatasets": "Manage knowledge",
|
||||
"members.memberDetails.permissions.removeMembers": "Remove members",
|
||||
"members.memberDetails.permissions.transferOwnership": "Transfer ownership",
|
||||
"members.memberDetails.permissions.useApps": "Use apps",
|
||||
"members.memberDetails.permissions.workspaceSettings": "Workspace settings",
|
||||
"members.memberDetails.removeRoleAria": "Remove {{role}} role",
|
||||
"members.memberDetails.roleActionsAria": "Open actions for {{role}} role",
|
||||
"members.memberDetails.roleNoPermissionSummary": "Current role has no permissions.",
|
||||
"members.memberDetails.rolePermissionSummary": "{{role}} can <permissionList>{{permissions}}</permissionList>",
|
||||
"members.memberDetails.title": "Member Details",
|
||||
"members.name": "NAME",
|
||||
"members.noNewInvitationsSent": "No new invitations sent",
|
||||
"members.normal": "Normal",
|
||||
"members.normalTip": "Only can use apps, can not build apps",
|
||||
"members.ok": "OK",
|
||||
"members.pending": "Pending...",
|
||||
"members.removeFromTeam": "Remove from team",
|
||||
"members.removeFromTeamTip": "Will remove team access",
|
||||
"members.role": "ROLES",
|
||||
"members.selectRole": "Select a role",
|
||||
"members.sendInvite": "Send Invite",
|
||||
"members.setAdmin": "Set as administrator",
|
||||
"members.setBuilder": "Set as builder",
|
||||
"members.setEditor": "Set as editor",
|
||||
"members.setMember": "Set to ordinary member",
|
||||
"members.team": "Team",
|
||||
"members.transferModal.codeLabel": "Verification code",
|
||||
"members.transferModal.codePlaceholder": "Paste the 6-digit code",
|
||||
"members.transferModal.continue": "Continue",
|
||||
@ -337,53 +273,19 @@
|
||||
"menus.appDetail": "App Detail",
|
||||
"menus.apps": "Studio",
|
||||
"menus.datasets": "Knowledge",
|
||||
"menus.datasetsTips": "COMING SOON: Import your own text data or write data in real-time via Webhook for LLM context enhancement.",
|
||||
"menus.deployments": "Deployments",
|
||||
"menus.explore": "Explore",
|
||||
"menus.exploreMarketplace": "Explore Marketplace",
|
||||
"menus.newApp": "New App",
|
||||
"menus.newDataset": "Create Knowledge",
|
||||
"menus.plugins": "Integrations",
|
||||
"menus.pluginsTips": "Integrate third-party services or create ChatGPT-compatible AI integrations.",
|
||||
"menus.roster": "Roster",
|
||||
"menus.status": "beta",
|
||||
"menus.tools": "Tools",
|
||||
"model.addMoreModel": "Go to settings to add more models",
|
||||
"model.capabilities": "MultiModal Capabilities",
|
||||
"model.params.frequency_penalty": "Frequency penalty",
|
||||
"model.params.frequency_penaltyTip": "How much to penalize new tokens based on their existing frequency in the text so far.\nDecreases the model's likelihood to repeat the same line verbatim.",
|
||||
"model.params.maxTokenSettingTip": "Your max token setting is high, potentially limiting space for prompts, queries, and data. Consider setting it below 2/3.",
|
||||
"model.params.max_tokens": "Max token",
|
||||
"model.params.max_tokensTip": "Used to limit the maximum length of the reply, in tokens. \nLarger values may limit the space left for prompt words, chat logs, and Knowledge. \nIt is recommended to set it below two-thirds\ngpt-4-1106-preview, gpt-4-vision-preview max token (input 128k output 4k)",
|
||||
"model.params.presence_penalty": "Presence penalty",
|
||||
"model.params.presence_penaltyTip": "How much to penalize new tokens based on whether they appear in the text so far.\nIncreases the model's likelihood to talk about new topics.",
|
||||
"model.params.setToCurrentModelMaxTokenTip": "Max token is updated to the 80% maximum token of the current model {{maxToken}}.",
|
||||
"model.params.stop_sequences": "Stop sequences",
|
||||
"model.params.stop_sequencesPlaceholder": "Enter sequence and press Tab",
|
||||
"model.params.stop_sequencesTip": "Up to four sequences where the API will stop generating further tokens. The returned text will not contain the stop sequence.",
|
||||
"model.params.temperature": "Temperature",
|
||||
"model.params.temperatureTip": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.",
|
||||
"model.params.top_p": "Top P",
|
||||
"model.params.top_pTip": "Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered.",
|
||||
"model.settingsLink": "Model Provider Settings",
|
||||
"model.tone.Balanced": "Balanced",
|
||||
"model.tone.Creative": "Creative",
|
||||
"model.tone.Custom": "Custom",
|
||||
"model.tone.Precise": "Precise",
|
||||
"modelName.claude-2": "Claude-2",
|
||||
"modelName.claude-instant-1": "Claude-Instant",
|
||||
"modelName.gpt-3.5-turbo": "GPT-3.5-Turbo",
|
||||
"modelName.gpt-3.5-turbo-16k": "GPT-3.5-Turbo-16K",
|
||||
"modelName.gpt-4": "GPT-4",
|
||||
"modelName.gpt-4-32k": "GPT-4-32K",
|
||||
"modelName.text-davinci-003": "Text-Davinci-003",
|
||||
"modelName.text-embedding-ada-002": "Text-Embedding-Ada-002",
|
||||
"modelName.whisper-1": "Whisper-1",
|
||||
"modelProvider.addApiKey": "Add your API key",
|
||||
"modelProvider.addConfig": "Add Config",
|
||||
"modelProvider.addModel": "Add Model",
|
||||
"modelProvider.addMoreModelProvider": "ADD MORE MODEL PROVIDER",
|
||||
"modelProvider.apiKey": "API-KEY",
|
||||
"modelProvider.apiKeyRateLimit": "Rate limit was reached, available after {{seconds}}s",
|
||||
"modelProvider.apiKeyStatusNormal": "APIKey status is normal",
|
||||
"modelProvider.auth.addApiKey": "Add API Key",
|
||||
@ -392,7 +294,6 @@
|
||||
"modelProvider.auth.addModelCredential": "Add model credential",
|
||||
"modelProvider.auth.addNewModel": "Add new model",
|
||||
"modelProvider.auth.addNewModelCredential": "Add new model credential",
|
||||
"modelProvider.auth.apiKeyModal.addModel": "Add model",
|
||||
"modelProvider.auth.apiKeyModal.desc": "After configuring credentials, all members within the workspace can use this model when orchestrating applications.",
|
||||
"modelProvider.auth.apiKeyModal.title": "API Key Authorization Configuration",
|
||||
"modelProvider.auth.apiKeys": "API Keys",
|
||||
@ -413,17 +314,12 @@
|
||||
"modelProvider.auth.selectModelCredential": "Select a model credential",
|
||||
"modelProvider.auth.specifyModelCredential": "Specify model credential",
|
||||
"modelProvider.auth.specifyModelCredentialTip": "Use a configured model credential.",
|
||||
"modelProvider.auth.unAuthorized": "Unauthorized",
|
||||
"modelProvider.buyQuota": "Buy Quota",
|
||||
"modelProvider.callTimes": "Call times",
|
||||
"modelProvider.card.aiCreditsInUse": "AI credits in use",
|
||||
"modelProvider.card.aiCreditsOption": "AI credits",
|
||||
"modelProvider.card.apiKeyOption": "API Key",
|
||||
"modelProvider.card.apiKeyRequired": "API key required",
|
||||
"modelProvider.card.apiKeyUnavailableFallback": "API Key unavailable, now using AI credits",
|
||||
"modelProvider.card.apiKeyUnavailableFallbackDescription": "Check your API key configuration to switch back",
|
||||
"modelProvider.card.buyQuota": "Buy Quota",
|
||||
"modelProvider.card.callTimes": "Call times",
|
||||
"modelProvider.card.creditsExhaustedDescription": "Please <upgradeLink>upgrade your plan</upgradeLink> or configure an API key",
|
||||
"modelProvider.card.creditsExhaustedFallback": "AI credits exhausted, now using API key",
|
||||
"modelProvider.card.creditsExhaustedFallbackDescription": "<upgradeLink>Upgrade your plan</upgradeLink> to resume AI credit priority.",
|
||||
@ -435,32 +331,17 @@
|
||||
"modelProvider.card.noApiKeysFallback": "No API keys, using AI credits instead",
|
||||
"modelProvider.card.noApiKeysTitle": "No API keys configured yet",
|
||||
"modelProvider.card.noAvailableUsage": "No available usage",
|
||||
"modelProvider.card.onTrial": "On Trial",
|
||||
"modelProvider.card.paid": "Paid",
|
||||
"modelProvider.card.priorityUse": "Priority use",
|
||||
"modelProvider.card.quota": "QUOTA",
|
||||
"modelProvider.card.quotaExhausted": "Credits exhausted",
|
||||
"modelProvider.card.removeKey": "Remove API Key",
|
||||
"modelProvider.card.tip": "AI Credits supports models from {{modelNames}}. Priority will be given to the paid quota. The Trial quota will be used after the paid quota is exhausted.",
|
||||
"modelProvider.card.tokens": "Tokens",
|
||||
"modelProvider.card.unavailable": "Unavailable",
|
||||
"modelProvider.card.upgradePlan": "upgrade your plan",
|
||||
"modelProvider.card.usageLabel": "Usage",
|
||||
"modelProvider.card.usagePriority": "Usage Priority",
|
||||
"modelProvider.card.usagePriorityTip": "Set which resource to use first when running models.",
|
||||
"modelProvider.collapse": "Collapse",
|
||||
"modelProvider.config": "Config",
|
||||
"modelProvider.configLoadBalancing": "Config Load Balancing",
|
||||
"modelProvider.configureTip": "Set up api-key or add model to use",
|
||||
"modelProvider.configuredProviders": "Configured providers",
|
||||
"modelProvider.confirmDelete": "Confirm deletion?",
|
||||
"modelProvider.credits": "Message Credits",
|
||||
"modelProvider.creditsBackedProviders": "Available with Message Credits",
|
||||
"modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.",
|
||||
"modelProvider.defaultConfig": "Default Config",
|
||||
"modelProvider.deprecated": "Deprecated",
|
||||
"modelProvider.discoverMore": "Discover more in",
|
||||
"modelProvider.editConfig": "Edit Config",
|
||||
"modelProvider.embeddingModel.key": "Embedding Model",
|
||||
"modelProvider.embeddingModel.required": "Embedding Model is required",
|
||||
"modelProvider.embeddingModel.tip": "Set the default model for document embedding processing of the Knowledge, both retrieval and import of the Knowledge use this Embedding model for vectorization processing. Switching will cause the vector dimension between the imported Knowledge and the question to be inconsistent, resulting in retrieval failure. To avoid retrieval failure, please do not switch this model at will.",
|
||||
@ -470,43 +351,28 @@
|
||||
"modelProvider.encrypted.back": " technology.",
|
||||
"modelProvider.encrypted.front": "Your API KEY will be encrypted and stored using",
|
||||
"modelProvider.featureSupported": "{{feature}} supported",
|
||||
"modelProvider.freeQuota.howToEarn": "How to earn",
|
||||
"modelProvider.getFreeTokens": "Get free Tokens",
|
||||
"modelProvider.installDataSource": "Install data source",
|
||||
"modelProvider.installDataSourceProvider": "Install Data Source Providers",
|
||||
"modelProvider.installProvider": "Install model providers",
|
||||
"modelProvider.invalidApiKey": "Invalid API key",
|
||||
"modelProvider.item.deleteDesc": "{{modelName}} are being used as system reasoning models. Some functions will not be available after removal. Please confirm.",
|
||||
"modelProvider.item.freeQuota": "FREE QUOTA",
|
||||
"modelProvider.learnMore": "Learn more",
|
||||
"modelProvider.loadBalancing": "Load balancing",
|
||||
"modelProvider.loadBalancingDescription": "Configure multiple credentials for the model and invoke them automatically. ",
|
||||
"modelProvider.loadBalancingHeadline": "Load Balancing",
|
||||
"modelProvider.loadBalancingInfo": "By default, load balancing uses the Round-robin strategy. If rate limiting is triggered, a 1-minute cooldown period will be applied.",
|
||||
"modelProvider.loadBalancingLeastKeyWarning": "To enable load balancing at least 2 keys must be enabled.",
|
||||
"modelProvider.loadPresets": "Load Presets",
|
||||
"modelProvider.model": "Model",
|
||||
"modelProvider.modelAndParameters": "Model and Parameters",
|
||||
"modelProvider.modelHasBeenDeprecated": "This model has been deprecated",
|
||||
"modelProvider.modelSettings": "Model Settings",
|
||||
"modelProvider.models": "Models",
|
||||
"modelProvider.modelsNum": "{{num}} Models",
|
||||
"modelProvider.noModelFound": "No model found for {{model}}",
|
||||
"modelProvider.noneConfigured": "Configure a default system model to run applications",
|
||||
"modelProvider.notConfigured": "The system model has not yet been fully configured",
|
||||
"modelProvider.pageDesc": "Connect the world's leading model providers to power every app you build.",
|
||||
"modelProvider.parameters": "PARAMETERS",
|
||||
"modelProvider.parametersInvalidRemoved": "Some parameters are invalid and have been removed",
|
||||
"modelProvider.priorityUsing": "Prioritize using",
|
||||
"modelProvider.providerManaged": "Provider managed",
|
||||
"modelProvider.providerManagedDescription": "Use the single set of credentials provided by the Model Provider.",
|
||||
"modelProvider.quota": "AI Credits",
|
||||
"modelProvider.quotaLabel": "AI CREDITS",
|
||||
"modelProvider.quotaTip": "Remaining available free tokens",
|
||||
"modelProvider.rerankModel.key": "Rerank Model",
|
||||
"modelProvider.rerankModel.tip": "Rerank model will reorder the candidate document list based on the semantic match with user query, improving the results of semantic ranking",
|
||||
"modelProvider.resetDate": "Reset on {{date}}",
|
||||
"modelProvider.searchModel": "Search model",
|
||||
"modelProvider.searchModels": "Search models...",
|
||||
"modelProvider.selectModel": "Select your model",
|
||||
"modelProvider.selector.aiCredits": "AI credits",
|
||||
@ -518,8 +384,6 @@
|
||||
"modelProvider.selector.creditsExhaustedTip": "Your AI credits have been exhausted. Please upgrade your plan or add an API key.",
|
||||
"modelProvider.selector.disabled": "Disabled",
|
||||
"modelProvider.selector.discoverMoreInMarketplace": "Discover more in Marketplace",
|
||||
"modelProvider.selector.emptySetting": "Please go to settings to configure",
|
||||
"modelProvider.selector.emptyTip": "No available models",
|
||||
"modelProvider.selector.fromMarketplace": "From Marketplace",
|
||||
"modelProvider.selector.incompatible": "Incompatible",
|
||||
"modelProvider.selector.incompatibleTip": "This model is not available in the current version. Please select another available model.",
|
||||
@ -529,11 +393,7 @@
|
||||
"modelProvider.selector.noProviderConfigured": "No Model Provider configured",
|
||||
"modelProvider.selector.noProviderConfiguredDesc": "Browse Marketplace to install one, or configure providers in settings.",
|
||||
"modelProvider.selector.onlyCompatibleModelsShown": "Only compatible models are shown",
|
||||
"modelProvider.selector.rerankTip": "Please set up the Rerank model",
|
||||
"modelProvider.selector.tip": "This model has been removed. Please add a model or select another model.",
|
||||
"modelProvider.setupModelFirst": "Please set up your model first",
|
||||
"modelProvider.showModels": "Show Models",
|
||||
"modelProvider.showMoreModelProvider": "Show more Model Providers",
|
||||
"modelProvider.speechToTextModel.key": "Speech-to-Text Model",
|
||||
"modelProvider.speechToTextModel.tip": "Set the default model for speech-to-text input in conversation.",
|
||||
"modelProvider.systemModelSettings": "Default Models",
|
||||
@ -564,7 +424,6 @@
|
||||
"operation.create": "Create",
|
||||
"operation.deSelectAll": "Deselect All",
|
||||
"operation.delete": "Delete",
|
||||
"operation.deleteApp": "Delete App",
|
||||
"operation.deleteConfirmTitle": "Delete?",
|
||||
"operation.download": "Download",
|
||||
"operation.downloadFailed": "Download failed. Please try again later.",
|
||||
@ -574,19 +433,16 @@
|
||||
"operation.exporting": "Exporting",
|
||||
"operation.fill": "Autofill",
|
||||
"operation.format": "Format",
|
||||
"operation.getForFree": "Get for free",
|
||||
"operation.imageCopied": "Image copied",
|
||||
"operation.imageDownloaded": "Image downloaded",
|
||||
"operation.in": "in",
|
||||
"operation.learnMore": "Learn More",
|
||||
"operation.lineBreak": "Line break",
|
||||
"operation.log": "Log",
|
||||
"operation.more": "More",
|
||||
"operation.moreActions": "More actions",
|
||||
"operation.no": "No",
|
||||
"operation.noSearchCount": "0 {{content}}",
|
||||
"operation.noSearchResults": "No {{content}} were found",
|
||||
"operation.now": "Now",
|
||||
"operation.ok": "OK",
|
||||
"operation.openInNewTab": "Open in new tab",
|
||||
"operation.params": "Params",
|
||||
@ -594,7 +450,6 @@
|
||||
"operation.play": "Play",
|
||||
"operation.refresh": "Restart",
|
||||
"operation.regenerate": "Regenerate",
|
||||
"operation.reload": "Reload",
|
||||
"operation.remove": "Remove",
|
||||
"operation.rename": "Rename",
|
||||
"operation.reset": "Reset",
|
||||
@ -610,7 +465,6 @@
|
||||
"operation.selectCount": "{{count}} Selected",
|
||||
"operation.send": "Send",
|
||||
"operation.settings": "Settings",
|
||||
"operation.setup": "Setup",
|
||||
"operation.skip": "Skip",
|
||||
"operation.submit": "Submit",
|
||||
"operation.sure": "I'm sure",
|
||||
@ -631,86 +485,31 @@
|
||||
"placeholder.input": "Please enter",
|
||||
"placeholder.search": "Search...",
|
||||
"placeholder.select": "Please select",
|
||||
"promptEditor.context.item.desc": "Insert context template",
|
||||
"promptEditor.context.item.title": "Context",
|
||||
"promptEditor.context.modal.add": "Add Context ",
|
||||
"promptEditor.context.modal.footer": "You can manage contexts in the Context section below.",
|
||||
"promptEditor.context.modal.title": "{{num}} Knowledge in Context",
|
||||
"promptEditor.existed": "Already exists in the prompt",
|
||||
"promptEditor.history.item.desc": "Insert historical message template",
|
||||
"promptEditor.history.item.title": "Conversation History",
|
||||
"promptEditor.history.modal.assistant": "Hello! How can I assist you today?",
|
||||
"promptEditor.history.modal.edit": "Edit Conversation Role Names",
|
||||
"promptEditor.history.modal.title": "EXAMPLE",
|
||||
"promptEditor.history.modal.user": "Hello",
|
||||
"promptEditor.placeholder": "Write your prompt word here, enter '{' to insert a variable, enter '/' to insert a prompt content block",
|
||||
"promptEditor.query.item.desc": "Insert user query template",
|
||||
"promptEditor.query.item.title": "Query",
|
||||
"promptEditor.requestURL.item.desc": "Insert request URL",
|
||||
"promptEditor.requestURL.item.title": "Request URL",
|
||||
"promptEditor.variable.item.desc": "Insert Variables & External Tools",
|
||||
"promptEditor.variable.item.title": "Variables & External Tools",
|
||||
"promptEditor.variable.modal.add": "New variable",
|
||||
"promptEditor.variable.modal.addTool": "New tool",
|
||||
"promptEditor.variable.outputToolDisabledItem.desc": "Insert Variables",
|
||||
"promptEditor.variable.outputToolDisabledItem.title": "Variables",
|
||||
"provider.addKey": "Add Key",
|
||||
"provider.anthropic.enableTip": "To enable the Anthropic model, you need to bind to OpenAI or Azure OpenAI Service first.",
|
||||
"provider.anthropic.keyFrom": "Get your API key from Anthropic",
|
||||
"provider.anthropic.notEnabled": "Not enabled",
|
||||
"provider.anthropic.using": "The embedding capability is using",
|
||||
"provider.anthropicHosted.anthropicHosted": "Anthropic Claude",
|
||||
"provider.anthropicHosted.callTimes": "Call times",
|
||||
"provider.anthropicHosted.close": "Close",
|
||||
"provider.anthropicHosted.desc": "Powerful model, which excels at a wide range of tasks from sophisticated dialogue and creative content generation to detailed instruction.",
|
||||
"provider.anthropicHosted.exhausted": "QUOTA EXHAUSTED",
|
||||
"provider.anthropicHosted.onTrial": "ON TRIAL",
|
||||
"provider.anthropicHosted.trialQuotaTip": "Your Anthropic trial quota will expire on 2025/03/17 and will no longer be available thereafter. Please make use of it in time.",
|
||||
"provider.anthropicHosted.useYourModel": "Currently using own Model Provider.",
|
||||
"provider.anthropicHosted.usedUp": "Trial quota used up. Add own Model Provider.",
|
||||
"provider.apiKey": "API Key",
|
||||
"provider.apiKeyExceedBill": "This API KEY has no quota available, please read",
|
||||
"provider.azure.apiBase": "API Base",
|
||||
"provider.azure.apiBasePlaceholder": "The API Base URL of your Azure OpenAI Endpoint.",
|
||||
"provider.azure.apiKey": "API Key",
|
||||
"provider.azure.apiKeyPlaceholder": "Enter your API key here",
|
||||
"provider.azure.helpTip": "Learn Azure OpenAI Service",
|
||||
"provider.comingSoon": "Coming Soon",
|
||||
"provider.editKey": "Edit",
|
||||
"provider.encrypted.back": " technology.",
|
||||
"provider.encrypted.front": "Your API KEY will be encrypted and stored using",
|
||||
"provider.enterYourKey": "Enter your API key here",
|
||||
"provider.invalidApiKey": "Invalid API key",
|
||||
"provider.invalidKey": "Invalid OpenAI API key",
|
||||
"provider.openaiHosted.callTimes": "Call times",
|
||||
"provider.openaiHosted.close": "Close",
|
||||
"provider.openaiHosted.desc": "The OpenAI hosting service provided by Dify allows you to use models such as GPT-3.5. Before your trial quota is used up, you need to set up other Model Providers.",
|
||||
"provider.openaiHosted.exhausted": "QUOTA EXHAUSTED",
|
||||
"provider.openaiHosted.onTrial": "ON TRIAL",
|
||||
"provider.openaiHosted.openaiHosted": "Hosted OpenAI",
|
||||
"provider.openaiHosted.useYourModel": "Currently using own Model Provider.",
|
||||
"provider.openaiHosted.usedUp": "Trial quota used up. Add own Model Provider.",
|
||||
"provider.saveFailed": "Save api key failed",
|
||||
"provider.validatedError": "Validation failed: ",
|
||||
"provider.validating": "Validating key...",
|
||||
"settings.ResourceAccess": "Resource Access",
|
||||
"settings.account": "My account",
|
||||
"settings.accountGroup": "GENERAL",
|
||||
"settings.agentStrategy": "Agent Strategy",
|
||||
"settings.billing": "Billing",
|
||||
"settings.collapse": "Collapse",
|
||||
"settings.customEndpoint": "Custom Endpoint",
|
||||
"settings.customTool": "Swagger API as Tool",
|
||||
"settings.dataSource": "Data Source",
|
||||
"settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace",
|
||||
"settings.expand": "Expand",
|
||||
"settings.extension": "Extension",
|
||||
"settings.filter": "Filter",
|
||||
"settings.generalGroup": "GENERAL",
|
||||
"settings.integrations": "Integrations",
|
||||
"settings.language": "Language",
|
||||
"settings.members": "Members",
|
||||
"settings.plugin": "Integrations",
|
||||
"settings.preferences": "Preferences",
|
||||
"settings.provider": "Model Provider",
|
||||
"settings.resourceAccess": "Resource Access",
|
||||
@ -719,9 +518,7 @@
|
||||
"settings.settings": "Settings",
|
||||
"settings.swaggerAPIAsTool": "Swagger API as Tool",
|
||||
"settings.trigger": "Trigger",
|
||||
"settings.workplaceGroup": "WORKSPACE",
|
||||
"settings.workspace": "WORKSPACE",
|
||||
"settings.workspaceSettings": "Workspace Settings",
|
||||
"swaggerAPIAsToolPage.description": "Import any API as a tool using OpenAPI/Swagger specs. Configure once and reuse it across your workflows.",
|
||||
"tag.addNew": "Add new tag",
|
||||
"tag.addTag": "Add tags",
|
||||
@ -729,11 +526,9 @@
|
||||
"tag.created": "Tag created successfully",
|
||||
"tag.delete": "Delete tag",
|
||||
"tag.deleteTip": "The tag is being used, delete it?",
|
||||
"tag.editTag": "Edit tags",
|
||||
"tag.failed": "Tag creation failed",
|
||||
"tag.manageTags": "Manage Tags",
|
||||
"tag.noTag": "No tags",
|
||||
"tag.noTagYet": "No tags yet",
|
||||
"tag.placeholder": "Tags",
|
||||
"tag.selectorPlaceholder": "Type to search or create",
|
||||
"tag.tags": "Tags",
|
||||
@ -749,7 +544,6 @@
|
||||
"userProfile.community": "Community",
|
||||
"userProfile.compliance": "Compliance",
|
||||
"userProfile.contactUs": "Contact Us",
|
||||
"userProfile.createWorkspace": "Create Workspace",
|
||||
"userProfile.emailSupport": "Email Support",
|
||||
"userProfile.forum": "Forum",
|
||||
"userProfile.github": "GitHub",
|
||||
@ -757,7 +551,6 @@
|
||||
"userProfile.logout": "Log out",
|
||||
"userProfile.roadmap": "Roadmap",
|
||||
"userProfile.settings": "Settings",
|
||||
"userProfile.support": "Support",
|
||||
"userProfile.workspace": "Workspace",
|
||||
"voice.language.arTN": "Tunisian Arabic",
|
||||
"voice.language.deDE": "German",
|
||||
|
||||
@ -1,6 +1,4 @@
|
||||
{
|
||||
"app.changeLogoTip": "SVG or PNG format with a minimum size of 80x80px",
|
||||
"app.title": "Customize app header brand",
|
||||
"apply": "Apply",
|
||||
"change": "Change",
|
||||
"custom": "Customization",
|
||||
@ -9,14 +7,11 @@
|
||||
"customize.suffix": "to upgrade to the Enterprise edition.",
|
||||
"restore": "Restore Defaults",
|
||||
"upgradeTip.des": "Upgrade your plan to customize your brand",
|
||||
"upgradeTip.prefix": "Upgrade your plan to",
|
||||
"upgradeTip.suffix": "customize your brand.",
|
||||
"upgradeTip.title": "Upgrade your plan",
|
||||
"upload": "Upload",
|
||||
"uploadedFail": "Image upload failed, please re-upload.",
|
||||
"uploading": "Uploading",
|
||||
"webapp.changeLogo": "Change Powered by Brand Image",
|
||||
"webapp.changeLogoTip": "SVG or PNG format with a minimum size of 40x40px",
|
||||
"webapp.removeBrand": "Remove Powered by Dify",
|
||||
"webapp.title": "Customize web app brand"
|
||||
"webapp.removeBrand": "Remove Powered by Dify"
|
||||
}
|
||||
|
||||
@ -1,16 +1,6 @@
|
||||
{
|
||||
"error.unavailable": "This Knowledge is not available",
|
||||
"firecrawl.apiKeyPlaceholder": "API key from firecrawl.dev",
|
||||
"firecrawl.configFirecrawl": "Configure 🔥Firecrawl",
|
||||
"firecrawl.getApiKeyLinkText": "Get your API key from firecrawl.dev",
|
||||
"jinaReader.apiKeyPlaceholder": "API key from jina.ai",
|
||||
"jinaReader.configJinaReader": "Configure Jina Reader",
|
||||
"jinaReader.getApiKeyLinkText": "Get your free API key at jina.ai",
|
||||
"otherDataSource.description": "Currently, Dify's knowledge base only has limited data sources. Contributing a data source to the Dify knowledge base is a fantastic way to help enhance the platform's flexibility and power for all users. Our contribution guide makes it easy to get started. Please click on the link below to learn more.",
|
||||
"otherDataSource.learnMore": "Learn more",
|
||||
"otherDataSource.title": "Connect to other data sources?",
|
||||
"stepOne.button": "Next",
|
||||
"stepOne.cancel": "Cancel",
|
||||
"stepOne.connect": "Go to connect",
|
||||
"stepOne.dataSourceType.file": "Import from file",
|
||||
"stepOne.dataSourceType.notion": "Sync from Notion",
|
||||
@ -32,7 +22,6 @@
|
||||
"stepOne.uploader.browse": "Browse",
|
||||
"stepOne.uploader.button": "Drag and drop file or folder, or",
|
||||
"stepOne.uploader.buttonSingleFile": "Drag and drop file, or",
|
||||
"stepOne.uploader.cancel": "Cancel",
|
||||
"stepOne.uploader.change": "Change",
|
||||
"stepOne.uploader.failed": "Upload failed",
|
||||
"stepOne.uploader.tip": "Supports {{supportTypes}}. Max {{batchCount}} in a batch and {{size}} MB each.",
|
||||
@ -57,7 +46,6 @@
|
||||
"stepOne.website.firecrawlTitle": "Extract web content with 🔥Firecrawl",
|
||||
"stepOne.website.includeOnlyPaths": "Include only paths",
|
||||
"stepOne.website.jinaReaderDoc": "Learn more about Jina Reader",
|
||||
"stepOne.website.jinaReaderDocLink": "https://jina.ai/reader",
|
||||
"stepOne.website.jinaReaderNotConfigured": "Jina Reader is not configured",
|
||||
"stepOne.website.jinaReaderNotConfiguredDescription": "Set up Jina Reader by entering your free API key for access.",
|
||||
"stepOne.website.jinaReaderTitle": "Convert the entire site to Markdown",
|
||||
@ -85,34 +73,15 @@
|
||||
"stepThree.creationContent": "We automatically named the Knowledge, you can modify it at any time.",
|
||||
"stepThree.creationTitle": "🎉 Knowledge created",
|
||||
"stepThree.label": "Knowledge name",
|
||||
"stepThree.modelButtonCancel": "Cancel",
|
||||
"stepThree.modelButtonConfirm": "Confirm",
|
||||
"stepThree.modelContent": "If you need to resume processing later, you will continue from where you left off.",
|
||||
"stepThree.modelTitle": "Are you sure to stop embedding?",
|
||||
"stepThree.navTo": "Go to document",
|
||||
"stepThree.resume": "Resume processing",
|
||||
"stepThree.sideTipContent": "After finishing document indexing, you can manage and edit documents, run retrieval tests, and modify knowledge settings. Knowledge can then be integrated into your application as context, so make sure to adjust the Retrieval Setting to ensure optimal performance.",
|
||||
"stepThree.sideTipTitle": "What's next",
|
||||
"stepThree.stop": "Stop processing",
|
||||
"stepTwo.QALanguage": "Segment using",
|
||||
"stepTwo.QATip": "Enable this option will consume more tokens",
|
||||
"stepTwo.QATitle": "Segmenting in Question & Answer format",
|
||||
"stepTwo.auto": "Automatic",
|
||||
"stepTwo.autoDescription": "Automatically set chunk and preprocessing rules. Unfamiliar users are recommended to select this.",
|
||||
"stepTwo.calculating": "Calculating...",
|
||||
"stepTwo.cancel": "Cancel",
|
||||
"stepTwo.characters": "characters",
|
||||
"stepTwo.childChunkForRetrieval": "Child-chunk for Retrieval",
|
||||
"stepTwo.click": "Go to settings",
|
||||
"stepTwo.custom": "Custom",
|
||||
"stepTwo.customDescription": "Customize chunks rules, chunks length, and preprocessing rules, etc.",
|
||||
"stepTwo.datasetSettingLink": "Knowledge settings.",
|
||||
"stepTwo.economical": "Economical",
|
||||
"stepTwo.economicalTip": "Using 10 keywords per chunk for retrieval, no tokens are consumed at the expense of reduced retrieval accuracy.",
|
||||
"stepTwo.estimateCost": "Estimation",
|
||||
"stepTwo.estimateSegment": "Estimated chunks",
|
||||
"stepTwo.fileSource": "Preprocess documents",
|
||||
"stepTwo.fileUnit": " files",
|
||||
"stepTwo.fullDoc": "Full Doc",
|
||||
"stepTwo.fullDocTip": "The entire document is used as the parent chunk and retrieved directly. Please note that for performance reasons, text exceeding 10000 tokens will be automatically truncated.",
|
||||
"stepTwo.general": "General",
|
||||
@ -125,9 +94,6 @@
|
||||
"stepTwo.nextStep": "Save & Process",
|
||||
"stepTwo.notAvailableForParentChild": "Not available for Parent-child Index",
|
||||
"stepTwo.notAvailableForQA": "Not available for Q&A Index",
|
||||
"stepTwo.notionSource": "Preprocess pages",
|
||||
"stepTwo.notionUnit": " pages",
|
||||
"stepTwo.other": "and other ",
|
||||
"stepTwo.overlap": "Chunk overlap",
|
||||
"stepTwo.overlapCheck": "chunk overlap should not bigger than maximum chunk length",
|
||||
"stepTwo.overlapTip": "Setting the chunk overlap can maintain the semantic relevance between them, enhancing the retrieve effect. It is recommended to set 10%-25% of the maximum chunk size.",
|
||||
@ -139,14 +105,9 @@
|
||||
"stepTwo.parentChildTip": "When using the parent-child mode, the child-chunk is used for retrieval and the parent-chunk is used for recall as context.",
|
||||
"stepTwo.parentChunkForContext": "Parent-chunk for Context",
|
||||
"stepTwo.preview": "Preview",
|
||||
"stepTwo.previewButton": "Switching to Q&A format",
|
||||
"stepTwo.previewChunk": "Preview Chunk",
|
||||
"stepTwo.previewChunkCount": "{{count}} Estimated chunks",
|
||||
"stepTwo.previewChunkTip": "Click the 'Preview Chunk' button on the left to load the preview",
|
||||
"stepTwo.previewSwitchTipEnd": " consume additional tokens",
|
||||
"stepTwo.previewSwitchTipStart": "The current chunk preview is in text format, switching to a question-and-answer format preview will",
|
||||
"stepTwo.previewTitle": "Preview",
|
||||
"stepTwo.previewTitleButton": "Preview",
|
||||
"stepTwo.previousStep": "Previous step",
|
||||
"stepTwo.qaSwitchHighQualityTipContent": "Currently, only high-quality index method supports Q&A format chunking. Would you like to switch to high-quality mode?",
|
||||
"stepTwo.qaSwitchHighQualityTipTitle": "Q&A Format Requires High-quality Indexing Method",
|
||||
@ -158,29 +119,16 @@
|
||||
"stepTwo.removeStopwords": "Remove stopwords such as \"a\", \"an\", \"the\"",
|
||||
"stepTwo.removeUrlEmails": "Delete all URLs and email addresses",
|
||||
"stepTwo.reset": "Reset",
|
||||
"stepTwo.retrievalSettingTip": "To change the retrieval setting, please go to the ",
|
||||
"stepTwo.rules": "Text Pre-processing Rules",
|
||||
"stepTwo.save": "Save & Process",
|
||||
"stepTwo.segmentCount": "chunks",
|
||||
"stepTwo.segmentation": "Chunk Settings",
|
||||
"stepTwo.separator": "Delimiter",
|
||||
"stepTwo.separatorPlaceholder": "\\n\\n for paragraphs; \\n for lines",
|
||||
"stepTwo.separatorTip": "A delimiter is the character used to separate text. \\n\\n and \\n are commonly used delimiters for separating paragraphs and lines. Combined with commas (\\n\\n,\\n), paragraphs will be segmented by lines when exceeding the maximum chunk length. You can also use special delimiters defined by yourself (e.g. ***).",
|
||||
"stepTwo.sideTipP1": "When processing text data, chunk and cleaning are two important preprocessing steps.",
|
||||
"stepTwo.sideTipP2": "Segmentation splits long text into paragraphs so models can understand better. This improves the quality and relevance of model results.",
|
||||
"stepTwo.sideTipP3": "Cleaning removes unnecessary characters and formats, making Knowledge cleaner and easier to parse.",
|
||||
"stepTwo.sideTipP4": "Proper chunk and cleaning improve model performance, providing more accurate and valuable results.",
|
||||
"stepTwo.sideTipTitle": "Why chunk and preprocess?",
|
||||
"stepTwo.switch": "Switch",
|
||||
"stepTwo.useQALanguage": "Chunk using Q&A format in",
|
||||
"stepTwo.warning": "Please set up the model provider API key first.",
|
||||
"stepTwo.webpageUnit": " pages",
|
||||
"stepTwo.websiteSource": "Preprocess website",
|
||||
"steps.header.fallbackRoute": "Knowledge",
|
||||
"steps.one": "Data Source",
|
||||
"steps.three": "Execute & Finish",
|
||||
"steps.two": "Document Processing",
|
||||
"watercrawl.apiKeyPlaceholder": "API key from watercrawl.dev",
|
||||
"watercrawl.configWatercrawl": "Configure Watercrawl",
|
||||
"watercrawl.getApiKeyLinkText": "Get your API key from watercrawl.dev"
|
||||
"steps.two": "Document Processing"
|
||||
}
|
||||
|
||||
@ -1,27 +1,19 @@
|
||||
{
|
||||
"embedding.automatic": "Automatic",
|
||||
"embedding.childMaxTokens": "Child",
|
||||
"embedding.completed": "Embedding completed",
|
||||
"embedding.custom": "Custom",
|
||||
"embedding.docName": "Preprocessing document",
|
||||
"embedding.economy": "Economy mode",
|
||||
"embedding.error": "Embedding error",
|
||||
"embedding.estimate": "Estimated consumption",
|
||||
"embedding.hierarchical": "Parent-child",
|
||||
"embedding.highQuality": "High-quality mode",
|
||||
"embedding.mode": "Chunking Setting",
|
||||
"embedding.parentMaxTokens": "Parent",
|
||||
"embedding.pause": "Pause",
|
||||
"embedding.paused": "Embedding paused",
|
||||
"embedding.previewTip": "Paragraph preview will be available after embedding is complete",
|
||||
"embedding.processing": "Embedding processing...",
|
||||
"embedding.resume": "Resume",
|
||||
"embedding.segmentLength": "Maximum Chunk Length",
|
||||
"embedding.segments": "Paragraphs",
|
||||
"embedding.stop": "Stop processing",
|
||||
"embedding.textCleaning": "Text Preprocessing Rules",
|
||||
"embedding.waiting": "Embedding waiting...",
|
||||
"list.action.add": "Add a chunk",
|
||||
"list.action.addButton": "Add chunk",
|
||||
"list.action.archive": "Archive",
|
||||
"list.action.batchAdd": "Batch add",
|
||||
@ -34,7 +26,6 @@
|
||||
"list.action.summary": "Generate summary",
|
||||
"list.action.sync": "Sync",
|
||||
"list.action.unarchive": "Unarchive",
|
||||
"list.action.uploadFile": "Upload new file",
|
||||
"list.addFile": "Add file",
|
||||
"list.addPages": "Add Pages",
|
||||
"list.addUrl": "Add URL",
|
||||
@ -52,7 +43,6 @@
|
||||
"list.batchModal.run": "Run Batch",
|
||||
"list.batchModal.runError": "Run batch failed",
|
||||
"list.batchModal.template": "Download the template here",
|
||||
"list.batchModal.tip": "The CSV file must conform to the following structure:",
|
||||
"list.batchModal.title": "Batch add chunks",
|
||||
"list.delete.content": "If you need to resume processing later, you will continue from where you left off",
|
||||
"list.delete.title": "Are you sure Delete?",
|
||||
@ -61,10 +51,6 @@
|
||||
"list.empty.title": "There is no documentation yet",
|
||||
"list.empty.upload.tip": "You can upload files, sync from the website, or from web apps like Notion, GitHub, etc.",
|
||||
"list.index.all": "All",
|
||||
"list.index.disable": "Disable",
|
||||
"list.index.disableTip": "The file cannot be indexed",
|
||||
"list.index.enable": "Enable",
|
||||
"list.index.enableTip": "The file can be indexed",
|
||||
"list.learnMore": "Learn more",
|
||||
"list.sort.hitCount": "Retrieval Count",
|
||||
"list.sort.uploadTime": "Upload Time",
|
||||
@ -78,7 +64,6 @@
|
||||
"list.status.queuing": "Queuing",
|
||||
"list.summary.generating": "Generating...",
|
||||
"list.summary.generatingSummary": "Generating summary",
|
||||
"list.summary.ready": "Summary ready",
|
||||
"list.table.header.action": "ACTION",
|
||||
"list.table.header.chunkingMode": "CHUNKING MODE",
|
||||
"list.table.header.fileName": "NAME",
|
||||
@ -89,61 +74,7 @@
|
||||
"list.table.name": "Name",
|
||||
"list.table.rename": "Rename",
|
||||
"list.title": "Documents",
|
||||
"metadata.categoryMap.book.art": "Art",
|
||||
"metadata.categoryMap.book.biography": "Biography",
|
||||
"metadata.categoryMap.book.businessEconomics": "BusinessEconomics",
|
||||
"metadata.categoryMap.book.childrenYoungAdults": "ChildrenYoungAdults",
|
||||
"metadata.categoryMap.book.comicsGraphicNovels": "ComicsGraphicNovels",
|
||||
"metadata.categoryMap.book.cooking": "Cooking",
|
||||
"metadata.categoryMap.book.drama": "Drama",
|
||||
"metadata.categoryMap.book.education": "Education",
|
||||
"metadata.categoryMap.book.fiction": "Fiction",
|
||||
"metadata.categoryMap.book.health": "Health",
|
||||
"metadata.categoryMap.book.history": "History",
|
||||
"metadata.categoryMap.book.other": "Other",
|
||||
"metadata.categoryMap.book.philosophy": "Philosophy",
|
||||
"metadata.categoryMap.book.poetry": "Poetry",
|
||||
"metadata.categoryMap.book.religion": "Religion",
|
||||
"metadata.categoryMap.book.science": "Science",
|
||||
"metadata.categoryMap.book.selfHelp": "SelfHelp",
|
||||
"metadata.categoryMap.book.socialSciences": "SocialSciences",
|
||||
"metadata.categoryMap.book.technology": "Technology",
|
||||
"metadata.categoryMap.book.travel": "Travel",
|
||||
"metadata.categoryMap.businessDoc.contractsAgreements": "Contracts & Agreements",
|
||||
"metadata.categoryMap.businessDoc.designDocument": "Design Document",
|
||||
"metadata.categoryMap.businessDoc.emailCorrespondence": "Email Correspondence",
|
||||
"metadata.categoryMap.businessDoc.employeeHandbook": "Employee Handbook",
|
||||
"metadata.categoryMap.businessDoc.financialReport": "Financial Report",
|
||||
"metadata.categoryMap.businessDoc.marketAnalysis": "Market Analysis",
|
||||
"metadata.categoryMap.businessDoc.meetingMinutes": "Meeting Minutes",
|
||||
"metadata.categoryMap.businessDoc.other": "Other",
|
||||
"metadata.categoryMap.businessDoc.policiesProcedures": "Policies & Procedures",
|
||||
"metadata.categoryMap.businessDoc.productSpecification": "Product Specification",
|
||||
"metadata.categoryMap.businessDoc.projectPlan": "Project Plan",
|
||||
"metadata.categoryMap.businessDoc.proposal": "Proposal",
|
||||
"metadata.categoryMap.businessDoc.requirementsDocument": "Requirements Document",
|
||||
"metadata.categoryMap.businessDoc.researchReport": "Research Report",
|
||||
"metadata.categoryMap.businessDoc.teamStructure": "Team Structure",
|
||||
"metadata.categoryMap.businessDoc.trainingMaterials": "Training Materials",
|
||||
"metadata.categoryMap.personalDoc.blogDraft": "Blog Draft",
|
||||
"metadata.categoryMap.personalDoc.bookExcerpt": "Book Excerpt",
|
||||
"metadata.categoryMap.personalDoc.codeSnippet": "Code Snippet",
|
||||
"metadata.categoryMap.personalDoc.creativeWriting": "Creative Writing",
|
||||
"metadata.categoryMap.personalDoc.designDraft": "Design Draft",
|
||||
"metadata.categoryMap.personalDoc.diary": "Diary",
|
||||
"metadata.categoryMap.personalDoc.list": "List",
|
||||
"metadata.categoryMap.personalDoc.notes": "Notes",
|
||||
"metadata.categoryMap.personalDoc.other": "Other",
|
||||
"metadata.categoryMap.personalDoc.personalResume": "Personal Resume",
|
||||
"metadata.categoryMap.personalDoc.photoCollection": "Photo Collection",
|
||||
"metadata.categoryMap.personalDoc.projectOverview": "Project Overview",
|
||||
"metadata.categoryMap.personalDoc.researchReport": "Research Report",
|
||||
"metadata.categoryMap.personalDoc.schedule": "Schedule",
|
||||
"metadata.dateTimeFormat": "MMMM D, YYYY hh:mm A",
|
||||
"metadata.desc": "Labeling metadata for documents allows AI to access them in a timely manner and exposes the source of references for users.",
|
||||
"metadata.docTypeChangeTitle": "Change document type",
|
||||
"metadata.docTypeSelectTitle": "Please select a document type",
|
||||
"metadata.docTypeSelectWarning": "If the document type is changed, the now filled metadata will no longer be preserved",
|
||||
"metadata.field.IMChat.chatPartiesGroupName": "Chat Parties/Group Name",
|
||||
"metadata.field.IMChat.chatPlatform": "Chat Platform",
|
||||
"metadata.field.IMChat.endDate": "End Date",
|
||||
@ -202,10 +133,6 @@
|
||||
"metadata.field.personalDocument.lastModifiedDate": "Last Modified Date",
|
||||
"metadata.field.personalDocument.tagsCategory": "Tags/Category",
|
||||
"metadata.field.personalDocument.title": "Title",
|
||||
"metadata.field.processRule.processClean": "Text Process Clean",
|
||||
"metadata.field.processRule.processDoc": "Process Document",
|
||||
"metadata.field.processRule.segmentLength": "Chunks Length",
|
||||
"metadata.field.processRule.segmentRule": "Chunk Rule",
|
||||
"metadata.field.socialMediaPost.authorUsername": "Author/Username",
|
||||
"metadata.field.socialMediaPost.platform": "Platform",
|
||||
"metadata.field.socialMediaPost.postURL": "Post URL",
|
||||
@ -231,7 +158,6 @@
|
||||
"metadata.field.wikipediaEntry.summaryIntroduction": "Summary/Introduction",
|
||||
"metadata.field.wikipediaEntry.title": "Title",
|
||||
"metadata.field.wikipediaEntry.webpageURL": "Webpage URL",
|
||||
"metadata.firstMetaAction": "Let's go",
|
||||
"metadata.languageMap.ar": "Arabic",
|
||||
"metadata.languageMap.cs": "Czech",
|
||||
"metadata.languageMap.da": "Danish",
|
||||
@ -304,7 +230,6 @@
|
||||
"segment.delete": "Delete this chunk ?",
|
||||
"segment.editChildChunk": "Edit Child Chunk",
|
||||
"segment.editChunk": "Edit Chunk",
|
||||
"segment.editParentChunk": "Edit Parent Chunk",
|
||||
"segment.edited": "EDITED",
|
||||
"segment.editedAt": "Edited at",
|
||||
"segment.empty": "No Chunk found",
|
||||
@ -316,9 +241,6 @@
|
||||
"segment.keywords": "KEYWORDS",
|
||||
"segment.newChildChunk": "New Child Chunk",
|
||||
"segment.newChunk": "New Chunk",
|
||||
"segment.newQaSegment": "New Q&A Segment",
|
||||
"segment.newTextSegment": "New Text Segment",
|
||||
"segment.paragraphs": "Paragraphs",
|
||||
"segment.parentChunk": "Parent-Chunk",
|
||||
"segment.parentChunks_one": "PARENT CHUNK",
|
||||
"segment.parentChunks_other": "PARENT CHUNKS",
|
||||
@ -334,6 +256,5 @@
|
||||
"segment.searchResults_other": "RESULTS",
|
||||
"segment.searchResults_zero": "RESULT",
|
||||
"segment.summary": "SUMMARY",
|
||||
"segment.summaryPlaceholder": "Write a brief summary for better retrieval…",
|
||||
"segment.vectorHash": "Vector hash: "
|
||||
"segment.summaryPlaceholder": "Write a brief summary for better retrieval…"
|
||||
}
|
||||
|
||||
@ -10,7 +10,6 @@
|
||||
"imageUploader.tip": "Upload or drop images (Max {{batchCount}}, {{size}}MB each)",
|
||||
"imageUploader.tooltip": "Upload images (Max {{batchCount}}, {{size}}MB each)",
|
||||
"input.countWarning": "Up to 200 characters.",
|
||||
"input.indexWarning": "High quality Knowledge only.",
|
||||
"input.placeholder": "Please enter a text, a short declarative sentence is recommended.",
|
||||
"input.testing": "Test",
|
||||
"input.title": "Source text",
|
||||
@ -22,7 +21,5 @@
|
||||
"table.header.queryContent": "Query Content",
|
||||
"table.header.source": "Source",
|
||||
"table.header.time": "Time",
|
||||
"title": "Retrieval Test",
|
||||
"viewChart": "View VECTOR CHART",
|
||||
"viewDetail": "View Detail"
|
||||
"title": "Retrieval Test"
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
{
|
||||
"addDocuments.backToDataSource": "Data Source",
|
||||
"addDocuments.characters": "characters",
|
||||
"addDocuments.selectOnlineDocumentTip": "Process up to {{count}} pages",
|
||||
"addDocuments.selectOnlineDriveTip": "Process up to {{count}} files, maximum {{fileSize}} MB each",
|
||||
@ -24,7 +23,6 @@
|
||||
"creation.caution": "Caution",
|
||||
"creation.createFromScratch.description": "Create a custom pipeline from scratch with full control over data processing and structure.",
|
||||
"creation.createFromScratch.title": "Blank knowledge pipeline",
|
||||
"creation.createKnowledge": "Create Knowledge",
|
||||
"creation.errorTip": "Failed to create a Knowledge Base",
|
||||
"creation.importDSL": "Import from a DSL file",
|
||||
"creation.successTip": "Successfully created a Knowledge Base",
|
||||
@ -52,9 +50,7 @@
|
||||
"inputFieldPanel.uniqueInputs.tooltip": "Unique Inputs are only accessible to the selected data source and its downstream nodes. Users won't need to fill it in when choosing other data sources. Only input fields referenced by data source variables will appear in the first step(Data Source). All other fields will be shown in the second step(Process Documents).",
|
||||
"knowledgeDescription": "Knowledge description",
|
||||
"knowledgeDescriptionPlaceholder": "Describe what is in this Knowledge Base. A detailed description allows AI to access the content of the dataset more accurately. If empty, Dify will use the default hit strategy. (Optional)",
|
||||
"knowledgeNameAndIcon": "Knowledge name & icon",
|
||||
"knowledgeNameAndIconPlaceholder": "Please enter the name of the Knowledge Base",
|
||||
"knowledgePermissions": "Permissions",
|
||||
"onlineDocument.pageSelectorTitle": "{{name}} pages",
|
||||
"onlineDrive.breadcrumbs.allBuckets": "All Cloud Storage Buckets",
|
||||
"onlineDrive.breadcrumbs.allFiles": "All Files",
|
||||
@ -62,8 +58,6 @@
|
||||
"onlineDrive.breadcrumbs.searchResult": "Find {{searchResultsLength}} items in \"{{folderName}}\" folder",
|
||||
"onlineDrive.emptyFolder": "This folder is empty",
|
||||
"onlineDrive.emptySearchResult": "No items were found",
|
||||
"onlineDrive.notConnected": "{{name}} is not connected",
|
||||
"onlineDrive.notConnectedTip": "To sync with {{name}}, connection to {{name}} must be established first.",
|
||||
"onlineDrive.notSupportedFileType": "This file type is not supported",
|
||||
"onlineDrive.resetKeywords": "Reset keywords",
|
||||
"operations.backToDataSource": "Back to Data Source",
|
||||
@ -86,9 +80,6 @@
|
||||
"publishTemplate.success.message": "Pipeline Template Published",
|
||||
"publishTemplate.success.tip": "You can use this template on the creation page.",
|
||||
"templates.customized": "Customized",
|
||||
"testRun.dataSource.localFiles": "Local Files",
|
||||
"testRun.notion.docTitle": "Notion docs",
|
||||
"testRun.notion.title": "Choose Notion Pages",
|
||||
"testRun.steps.dataSource": "Data Source",
|
||||
"testRun.steps.documentProcessing": "Document Processing",
|
||||
"testRun.title": "Test Run",
|
||||
|
||||
@ -4,20 +4,16 @@
|
||||
"form.chunkStructure.learnMore": "Learn more",
|
||||
"form.chunkStructure.title": "Chunk Structure",
|
||||
"form.desc": "Description",
|
||||
"form.descInfo": "Please write a clear textual description to outline the content of the Knowledge. This description will be used as a basis for matching when selecting from multiple Knowledge for inference.",
|
||||
"form.descPlaceholder": "Describe what is in this data set. A detailed description allows AI to access the content of the data set in a timely manner. If empty, Dify will use the default hit strategy.",
|
||||
"form.descWrite": "Learn how to write a good Knowledge description.",
|
||||
"form.embeddingModel": "Embedding Model",
|
||||
"form.embeddingModelTip": "Change the embedded model, please go to ",
|
||||
"form.embeddingModelTipLink": "Settings",
|
||||
"form.externalKnowledgeAPI": "External Knowledge API",
|
||||
"form.externalKnowledgeID": "External Knowledge ID",
|
||||
"form.helpText": "Learn how to write a good dataset description.",
|
||||
"form.indexMethod": "Index Method",
|
||||
"form.indexMethodChangeToEconomyDisabledTip": "Not available for downgrading from HQ to ECO",
|
||||
"form.indexMethodEconomy": "Economical",
|
||||
"form.indexMethodEconomyTip": "Using {{count}} keywords per chunk for retrieval, no tokens are consumed at the expense of reduced retrieval accuracy.",
|
||||
"form.indexMethodHighQuality": "High Quality",
|
||||
"form.indexMethodHighQualityTip": "Calling the embedding model to process documents for more precise retrieval helps LLM generate high-quality answers.",
|
||||
"form.me": "(You)",
|
||||
"form.name": "Knowledge Name",
|
||||
@ -37,7 +33,6 @@
|
||||
"form.retrievalSetting.method": "Retrieval Method",
|
||||
"form.retrievalSetting.multiModalTip": "When embedding model supports multi-modal, please select a multi-modal rerank model for better performance.",
|
||||
"form.retrievalSetting.title": "Retrieval Setting",
|
||||
"form.retrievalSettings": "Retrieval Settings",
|
||||
"form.save": "Save",
|
||||
"form.searchModel": "Search model",
|
||||
"form.summaryAutoGen": "Summary Auto-Gen",
|
||||
|
||||
@ -28,16 +28,10 @@
|
||||
"connectHelper.helper5": " carefully before using this feature.",
|
||||
"cornerLabel.pipeline": "Pipeline",
|
||||
"cornerLabel.unavailable": "Unavailable",
|
||||
"createDataset": "Create Knowledge",
|
||||
"createDatasetIntro": "Import your own text data or write data in real-time via Webhook for LLM context enhancement.",
|
||||
"createExternalAPI": "Add an External Knowledge API",
|
||||
"createFromPipeline": "Create from Knowledge Pipeline",
|
||||
"createNewExternalAPI": "Create a new External Knowledge API",
|
||||
"datasetDeleteFailed": "Failed to delete Knowledge",
|
||||
"datasetDeleted": "Knowledge deleted",
|
||||
"datasetUsedByApp": "The knowledge is being used by some apps. Apps will no longer be able to use this Knowledge, and all prompt configurations and logs will be permanently deleted.",
|
||||
"datasets": "KNOWLEDGE",
|
||||
"datasetsApi": "API ACCESS",
|
||||
"defaultRetrievalTip": "Multi-path retrieval is used by default. Knowledge is retrieved from multiple knowledge bases and then re-ranked.",
|
||||
"deleteDatasetConfirmContent": "Deleting the Knowledge is irreversible. Users will no longer be able to access your Knowledge, and all prompt configurations and logs will be permanently deleted.",
|
||||
"deleteDatasetConfirmTitle": "Delete this Knowledge?",
|
||||
@ -46,11 +40,9 @@
|
||||
"deleteExternalAPIConfirmWarningContent.noConnectionContent": "Are you sure to delete this API?",
|
||||
"deleteExternalAPIConfirmWarningContent.title.end": "?",
|
||||
"deleteExternalAPIConfirmWarningContent.title.front": "Delete",
|
||||
"didYouKnow": "Did you know?",
|
||||
"docAllEnabled_one": "{{count}} document enabled",
|
||||
"docAllEnabled_other": "All {{count}} documents enabled",
|
||||
"docsFailedNotice": "documents indexed failed",
|
||||
"documentCount": " docs",
|
||||
"documentsDisabled": "{{num}} documents disabled - inactive for over 30 days",
|
||||
"editExternalAPIConfirmWarningContent.end": "external knowledge, and this modification will be applied to all of them. Are you sure you want to save this change?",
|
||||
"editExternalAPIConfirmWarningContent.front": "This External Knowledge API is linked to",
|
||||
@ -60,14 +52,9 @@
|
||||
"editExternalAPITooltipTitle": "LINKED KNOWLEDGE",
|
||||
"embeddingModelNotAvailable": "Embedding model is unavailable.",
|
||||
"enable": "Enable",
|
||||
"externalAPI": "External API",
|
||||
"externalAPIForm.apiKey": "API Key",
|
||||
"externalAPIForm.cancel": "Cancel",
|
||||
"externalAPIForm.edit": "Edit",
|
||||
"externalAPIForm.encrypted.end": "technology.",
|
||||
"externalAPIForm.encrypted.front": "Your API Token will be encrypted and stored using",
|
||||
"externalAPIForm.endpoint": "API Endpoint",
|
||||
"externalAPIForm.name": "Name",
|
||||
"externalAPIForm.save": "Save",
|
||||
"externalAPIPanelDescription": "The external knowledge API is used to connect to a knowledge base outside of Dify and retrieve knowledge from that knowledge base.",
|
||||
"externalAPIPanelDocumentation": "Learn how to create an External Knowledge API",
|
||||
@ -85,15 +72,10 @@
|
||||
"externalKnowledgeNamePlaceholder": "Please enter the name of the knowledge base",
|
||||
"externalTag": "External",
|
||||
"filterEmpty.noKnowledge": "No knowledge here",
|
||||
"firstEmpty.advancedBadge": "Advanced",
|
||||
"firstEmpty.basicBadge": "Basic",
|
||||
"firstEmpty.connectDescription": "Already have a knowledge base? Connect it via API without migrating data.",
|
||||
"firstEmpty.createDescription": "Upload documents and let Dify handle the rest. The fastest way to get started.",
|
||||
"firstEmpty.createTitle": "Create a ready-to-use knowledge base",
|
||||
"firstEmpty.description": "Upload documents, PDFs, or URLs — then connect your Knowledge base to an app in Studio to make it smarter.",
|
||||
"firstEmpty.headerDescription": "Create and manage knowledge used by your AI apps.",
|
||||
"firstEmpty.or": "Or",
|
||||
"firstEmpty.pickHint": "Not sure which to pick? Start with \"Create Knowledge\" — you can always switch later.",
|
||||
"firstEmpty.pipelineDescription": "Build a custom data processing workflow with flexible nodes and steps.",
|
||||
"firstEmpty.pipelineTitle": "Build a custom knowledge base",
|
||||
"firstEmpty.recommended": "Recommended",
|
||||
@ -110,15 +92,7 @@
|
||||
"indexingMethod.semantic_search": "VECTOR",
|
||||
"indexingTechnique.economy": "ECO",
|
||||
"indexingTechnique.high_quality": "HQ",
|
||||
"intro1": "The Knowledge can be integrated into the Dify application ",
|
||||
"intro2": "as a context",
|
||||
"intro3": ",",
|
||||
"intro4": "or it ",
|
||||
"intro5": "can be published",
|
||||
"intro6": " as an independent service.",
|
||||
"knowledge": "Knowledge",
|
||||
"learnHowToWriteGoodKnowledgeDescription": "Learn how to write a good knowledge description",
|
||||
"localDocs": "Local Docs",
|
||||
"metadata.addMetadata": "Add Metadata",
|
||||
"metadata.batchEditMetadata.applyToAllSelectDocument": "Apply to all selected documents",
|
||||
"metadata.batchEditMetadata.applyToAllSelectDocumentTip": "Automatically create all the above edited and new metadata for all selected documents, otherwise editing metadata will only apply to documents with it.",
|
||||
@ -156,9 +130,6 @@
|
||||
"mixtureHighQualityAndEconomicTip": "The Rerank model is required for mixture of high quality and economical knowledge bases.",
|
||||
"mixtureInternalAndExternalTip": "The Rerank model is required for mixture of internal and external knowledge.",
|
||||
"multimodal": "Multimodal",
|
||||
"nTo1RetrievalLegacy": "N-to-1 retrieval will be officially deprecated from September. It is recommended to use the latest Multi-path retrieval to obtain better results. ",
|
||||
"nTo1RetrievalLegacyLink": "Learn more",
|
||||
"nTo1RetrievalLegacyLinkText": " N-to-1 retrieval will be officially deprecated in September.",
|
||||
"noExternalKnowledge": "There is no External Knowledge API yet, click here to create",
|
||||
"parentMode.fullDoc": "Full-doc",
|
||||
"parentMode.paragraph": "Paragraph",
|
||||
@ -166,14 +137,10 @@
|
||||
"partialEnabled_other": "Total of {{count}} documents, {{num}} available",
|
||||
"preprocessDocument": "{{num}} Preprocess Documents",
|
||||
"rerankSettings": "Rerank Setting",
|
||||
"retrieval.change": "Change",
|
||||
"retrieval.changeRetrievalMethod": "Change retrieval method",
|
||||
"retrieval.full_text_search.description": "Index all terms in the document, allowing users to search any term and retrieve relevant text chunk containing those terms.",
|
||||
"retrieval.full_text_search.title": "Full-Text Search",
|
||||
"retrieval.hybrid_search.description": "Execute full-text search and vector searches simultaneously, re-rank to select the best match for the user's query. Users can choose to set weights or configure to a Rerank model.",
|
||||
"retrieval.hybrid_search.recommend": "Recommend",
|
||||
"retrieval.hybrid_search.title": "Hybrid Search",
|
||||
"retrieval.invertedIndex.description": "Inverted Index is a structure used for efficient retrieval. Organized by terms, each term points to documents or web pages containing it.",
|
||||
"retrieval.invertedIndex.title": "Inverted Index",
|
||||
"retrieval.keyword_search.description": "Inverted Index is a structure used for efficient retrieval. Organized by terms, each term points to documents or web pages containing it.",
|
||||
"retrieval.keyword_search.title": "Inverted Index",
|
||||
@ -189,16 +156,11 @@
|
||||
"serviceApi.disabled": "Disabled",
|
||||
"serviceApi.enabled": "Enabled",
|
||||
"serviceApi.title": "Service API",
|
||||
"studioDescription": "Store and manage your data here. Connect it to your apps in Studio to make AI responses more accurate and grounded.",
|
||||
"unavailable": "Unavailable",
|
||||
"unknownError": "Unknown error",
|
||||
"updated": "Updated",
|
||||
"weightedScore.customized": "Customized",
|
||||
"weightedScore.description": "By adjusting the weights assigned, this rerank strategy determines whether to prioritize semantic or keyword matching.",
|
||||
"weightedScore.keyword": "Keyword",
|
||||
"weightedScore.keywordFirst": "Keyword first",
|
||||
"weightedScore.semantic": "Semantic",
|
||||
"weightedScore.semanticFirst": "Semantic first",
|
||||
"weightedScore.title": "Weighted Score",
|
||||
"wordCount": " k words"
|
||||
"weightedScore.title": "Weighted Score"
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
{
|
||||
"access.api.backendTitle": "Backend service API",
|
||||
"access.api.copyCurlExample": "Copy cURL example",
|
||||
"access.api.createFailed": "Failed to generate API Token.",
|
||||
"access.api.createKey": "Generate API Token",
|
||||
@ -9,7 +8,6 @@
|
||||
"access.api.developerTitle": "Developer API",
|
||||
"access.api.disabled": "API access is turned off for this deployment.",
|
||||
"access.api.disabledHint": "Enable API access to generate environment-scoped tokens.",
|
||||
"access.api.dismissToken": "Dismiss API Token",
|
||||
"access.api.docs": "API Docs",
|
||||
"access.api.docsClose": "Close API docs",
|
||||
"access.api.docsDescription": "View the Workflow API reference for this deployment.",
|
||||
@ -17,7 +15,6 @@
|
||||
"access.api.empty": "Deploy to an environment first to start issuing API Tokens.",
|
||||
"access.api.emptyTitle": "No deployed environments",
|
||||
"access.api.endpoint": "Request URL",
|
||||
"access.api.envPrefix": "env: {{env}}",
|
||||
"access.api.keyList": "API Token list",
|
||||
"access.api.nameLabel": "API Token name",
|
||||
"access.api.namePlaceholder": "Enter an API Token name",
|
||||
@ -36,14 +33,8 @@
|
||||
"access.api.table.environment": "Environment",
|
||||
"access.api.table.key": "API Token",
|
||||
"access.api.table.name": "Name",
|
||||
"access.api.title": "API",
|
||||
"access.channels.col.channel": "Channel",
|
||||
"access.channels.col.endpoint": "Entry point",
|
||||
"access.channels.col.status": "Status",
|
||||
"access.channels.description": "WebApp and CLI entry points use the access permissions above.",
|
||||
"access.channels.disabled": "Access channels are turned off for this deployment.",
|
||||
"access.channels.disabledHint": "Enable access channels to expose WebApp and CLI entry points.",
|
||||
"access.channels.followPermission": "Follows permissions",
|
||||
"access.channels.title": "Access channels",
|
||||
"access.cli.description": "Invoke from the terminal with difyctl, suitable for scripts, automated workflows, or Agent integrations.",
|
||||
"access.cli.docs": "Usage guide",
|
||||
@ -51,103 +42,57 @@
|
||||
"access.cli.empty": "CLI endpoint not configured.",
|
||||
"access.cli.install": "Install CLI",
|
||||
"access.cli.title": "CLI",
|
||||
"access.copied": "Copied",
|
||||
"access.copy": "Copy",
|
||||
"access.copyFailed": "Copy failed",
|
||||
"access.copyToast": "Copied to clipboard",
|
||||
"access.hide": "Hide",
|
||||
"access.members.clearAll": "Clear all",
|
||||
"access.members.empty": "No matches found.",
|
||||
"access.members.groupCount_one": "{{count}} group",
|
||||
"access.members.groupCount_other": "{{count}} groups",
|
||||
"access.members.groups": "Groups",
|
||||
"access.members.individuals": "Members",
|
||||
"access.members.memberCount_one": "{{count}} member",
|
||||
"access.members.memberCount_other": "{{count}} members",
|
||||
"access.members.pickPlaceholder": "Select groups or members",
|
||||
"access.members.searchPlaceholder": "Search groups and members",
|
||||
"access.members.selectedLabel": "Selected",
|
||||
"access.permission.anyone": "Anyone with the link",
|
||||
"access.permission.anyoneDesc": "Anyone can access this deployment without logging in.",
|
||||
"access.permission.memberCount_one": "{{count}} member",
|
||||
"access.permission.memberCount_other": "{{count}} members",
|
||||
"access.permission.organization": "All members within the platform",
|
||||
"access.permission.organizationDesc": "All members within the platform",
|
||||
"access.permission.specific": "Specific members within the platform",
|
||||
"access.permission.specificDesc": "Select specific groups or members",
|
||||
"access.permission.specificUnavailable": "Specific member selection is disabled until real platform members and groups are connected.",
|
||||
"access.permission.updateFailed": "Failed to update access policy.",
|
||||
"access.permissions.col.environment": "Environment",
|
||||
"access.permissions.col.permission": "Access",
|
||||
"access.permissions.description": "Set access permissions for WebApp and CLI entry points in each environment.",
|
||||
"access.permissions.editAriaLabel": "Configure access for {{environment}}",
|
||||
"access.permissions.editDescription": "Set access permissions for WebApp and CLI entry points.",
|
||||
"access.permissions.editTitle": "Access permissions",
|
||||
"access.permissions.title": "Access permissions",
|
||||
"access.revoke": "Revoke",
|
||||
"access.runAccess.description": "Manage how users can run this deployment and who is allowed to access it per environment.",
|
||||
"access.runAccess.disabled": "Run access is turned off for this deployment.",
|
||||
"access.runAccess.mcp": "MCP",
|
||||
"access.runAccess.mcpDesc": "Expose this deployment as a Model Context Protocol server.",
|
||||
"access.runAccess.mcpEmpty": "MCP endpoint not configured.",
|
||||
"access.runAccess.noEnvs": "Deploy to an environment to configure access permissions.",
|
||||
"access.runAccess.noEnvsTitle": "No deployed environments",
|
||||
"access.runAccess.openWebapp": "Open WebApp",
|
||||
"access.runAccess.permissions": "Access permissions",
|
||||
"access.runAccess.permissionsDesc": "Who can access this deployment in each environment.",
|
||||
"access.runAccess.title": "Run access",
|
||||
"access.runAccess.urlLabel": "URL",
|
||||
"access.runAccess.webapp": "WebApp",
|
||||
"access.runAccess.webappDesc": "Hosted web page for end users.",
|
||||
"access.runAccess.webappEmpty": "Coming soon.",
|
||||
"access.show": "Show",
|
||||
"backend.RUNTIME_BACKEND_EXTERNAL": "External",
|
||||
"backend.RUNTIME_BACKEND_K8S": "K8S",
|
||||
"backend.RUNTIME_BACKEND_UNSPECIFIED": "Unknown",
|
||||
"card.access.api": "API Tokens",
|
||||
"card.access.apiShort": "API",
|
||||
"card.access.cli": "CLI",
|
||||
"card.access.cliShort": "CLI",
|
||||
"card.access.none": "No access",
|
||||
"card.access.webApp": "WebApp",
|
||||
"card.access.webAppShort": "Web",
|
||||
"card.createFirstRelease": "Create First Release",
|
||||
"card.deploy": "Deploy",
|
||||
"card.deploying": "{{count}} deploying",
|
||||
"card.envOverflow": "+ {{count}}",
|
||||
"card.failed": "{{count}} failed",
|
||||
"card.fromApp": "From {{name}}",
|
||||
"card.lastDeployed": "Last deployed {{time}}",
|
||||
"card.menu.delete": "Delete deployment",
|
||||
"card.menu.deleteDisabled": "Deployment deletion is not available for backend-managed deployments yet.",
|
||||
"card.menu.deploy": "Deploy to Environment",
|
||||
"card.menu.editInfo": "Edit Info",
|
||||
"card.menu.viewDetail": "View deployment detail",
|
||||
"card.moreActions": "More actions",
|
||||
"card.neverDeployed": "Not deployed yet",
|
||||
"card.noDescription": "No description provided.",
|
||||
"card.notDeployed": "Not deployed",
|
||||
"card.ready": "{{count}} running",
|
||||
"card.tooltip.createdAt": "Created",
|
||||
"card.tooltip.deployed": "Deployed",
|
||||
"card.tooltip.deploymentStatus": "Deployment",
|
||||
"card.tooltip.notDeployed": "This deployment has not been deployed to any environment yet.",
|
||||
"card.tooltip.notDeployedShort": "Not deployed",
|
||||
"card.tooltip.release": "Release",
|
||||
"card.tooltip.releaseName": "Release Name",
|
||||
"card.tooltip.source": "Source",
|
||||
"common.loadFailed": "Failed to load. Try again later.",
|
||||
"common.loading": "Loading...",
|
||||
"createGuide.actions.back": "Back",
|
||||
"createGuide.actions.cancel": "Cancel",
|
||||
"createGuide.actions.continue": "Continue",
|
||||
"createGuide.actions.createAndDeploy": "Create & Deploy",
|
||||
"createGuide.actions.creating": "Creating...",
|
||||
"createGuide.actions.deploy": "Deploy",
|
||||
"createGuide.actions.deploying": "Creating & deploying...",
|
||||
"createGuide.actions.next": "Next",
|
||||
"createGuide.actions.skipDeploy": "Skip, deploy later",
|
||||
"createGuide.description": "Create a deployment from a release source, basic info, and target environment.",
|
||||
"createGuide.dsl.defaultAppName": "Imported DSL app",
|
||||
"createGuide.dsl.description": "Upload a Workflow DSL package to create the deployment, first release, and optional environment deployment.",
|
||||
"createGuide.dsl.dropDescription": "Upload a Workflow YAML DSL package. Deployment options are resolved from this file before deploy.",
|
||||
@ -163,7 +108,6 @@
|
||||
"createGuide.methods.bindApp.title": "Bind existing Workflow App",
|
||||
"createGuide.methods.importDsl.description": "Upload a Workflow YAML DSL package and continue through the deployment UI.",
|
||||
"createGuide.methods.importDsl.title": "Import DSL",
|
||||
"createGuide.methods.mocked": "Mocked",
|
||||
"createGuide.nav.back": "Deployments",
|
||||
"createGuide.release.defaultName": "initial release",
|
||||
"createGuide.release.deployInfo": "Deployment Info",
|
||||
@ -176,10 +120,7 @@
|
||||
"createGuide.release.releaseDescription": "Release Description",
|
||||
"createGuide.release.releaseDescriptionPlaceholder": "Describe this release",
|
||||
"createGuide.release.releaseName": "Release Name",
|
||||
"createGuide.release.releaseNote": "Release Description",
|
||||
"createGuide.release.title": "Basic Info",
|
||||
"createGuide.source.availableApps_one": "{{count}} app",
|
||||
"createGuide.source.availableApps_other": "{{count}} apps",
|
||||
"createGuide.source.clearSearch": "Clear app search",
|
||||
"createGuide.source.description": "Choose the source used to create the first release.",
|
||||
"createGuide.source.empty": "No Workflow Apps found.",
|
||||
@ -194,8 +135,6 @@
|
||||
"createGuide.target.bindingCount_other": "{{count}} bindings",
|
||||
"createGuide.target.bindingHint": "Pick the credentials used by this release.",
|
||||
"createGuide.target.bindings": "Credentials",
|
||||
"createGuide.target.deferredBindingHint": "Credentials will be resolved from the real deployment plan during the final deploy action.",
|
||||
"createGuide.target.deferredEnvironmentHint": "The name is matched against the real environments after the deployment and release are created.",
|
||||
"createGuide.target.description": "Choose a target environment and provide the runtime settings this release needs there. This step can be skipped.",
|
||||
"createGuide.target.envVarCount_one": "{{count}} variable",
|
||||
"createGuide.target.envVarCount_other": "{{count}} variables",
|
||||
@ -210,15 +149,12 @@
|
||||
"createGuide.target.envVarType.string": "String",
|
||||
"createGuide.target.envVars": "Environment Variables",
|
||||
"createGuide.target.environment": "Target Environment",
|
||||
"createGuide.target.environmentName": "Environment Name",
|
||||
"createGuide.target.environmentNamePlaceholder": "Production",
|
||||
"createGuide.target.loadBindingsFailed": "Failed to load credentials.",
|
||||
"createGuide.target.loadEnvironmentsFailed": "Failed to load deploy environments.",
|
||||
"createGuide.target.missingRequiredBinding": "Select a credential for this required binding.",
|
||||
"createGuide.target.noBindingRequired": "No credentials required.",
|
||||
"createGuide.target.noCredentialCandidates": "No available credentials.",
|
||||
"createGuide.target.noEnvironmentOptions": "No deploy environments available.",
|
||||
"createGuide.target.required": "Required",
|
||||
"createGuide.target.selectCredential": "Select a credential",
|
||||
"createGuide.target.title": "Deploy to Environment",
|
||||
"createGuide.title": "New Deployment",
|
||||
@ -226,31 +162,15 @@
|
||||
"createModal.appSearchEmpty": "No matching Workflow Apps",
|
||||
"createModal.appSearchPlaceholder": "Search Workflow Apps…",
|
||||
"createModal.cancel": "Cancel",
|
||||
"createModal.create": "Create",
|
||||
"createModal.createFailed": "Failed to create deployment.",
|
||||
"createModal.description": "Pick a Workflow App and create a deployment.",
|
||||
"createModal.descriptionLabel": "Description",
|
||||
"createModal.descriptionPlaceholder": "Describe what this deployment is used for",
|
||||
"createModal.loadMoreApps": "Load more apps",
|
||||
"createModal.loadingApps": "Loading apps…",
|
||||
"createModal.nameLabel": "Deployment Name",
|
||||
"createModal.namePlaceholder": "Deployment Name",
|
||||
"createModal.noApps": "No Workflow Apps found in this workspace. Create one in Studio first.",
|
||||
"createModal.selected": "Selected",
|
||||
"createModal.sourceApp": "Workflow App (required)",
|
||||
"createModal.title": "New Deployment",
|
||||
"deployDrawer.bindingCount_one": "{{count}} binding",
|
||||
"deployDrawer.bindingCount_other": "{{count}} bindings",
|
||||
"deployDrawer.bindingOptionsFailed": "Failed to load credential options.",
|
||||
"deployDrawer.bindingSelectionHint": "Choose the credentials used by this deployment.",
|
||||
"deployDrawer.bindingsDisabled": "Resolved from the release preview. Editing is not available yet.",
|
||||
"deployDrawer.cancel": "Cancel",
|
||||
"deployDrawer.close": "Close deployment drawer",
|
||||
"deployDrawer.defaultSelect": "Select...",
|
||||
"deployDrawer.deploy": "Deploy to Environment",
|
||||
"deployDrawer.deployExistingRelease": "Deploy to Environment",
|
||||
"deployDrawer.deployExistingReleaseDescription": "Select a release and target environment to deploy.",
|
||||
"deployDrawer.deployExistingReleaseTitle": "Deploy to Environment",
|
||||
"deployDrawer.deployFailed": "Failed to start deployment.",
|
||||
"deployDrawer.deploying": "Deploying...",
|
||||
"deployDrawer.description": "Select a release and target environment to deploy.",
|
||||
@ -267,95 +187,41 @@
|
||||
"deployDrawer.envVarType.string": "String",
|
||||
"deployDrawer.envVars": "Environment Variables",
|
||||
"deployDrawer.existingReleaseHint": "This release will be deployed as-is. No new release will be created.",
|
||||
"deployDrawer.loadingBindings": "Resolving...",
|
||||
"deployDrawer.lockedHint": "Locked to current environment",
|
||||
"deployDrawer.missingRequiredBinding": "Select a credential for this required binding.",
|
||||
"deployDrawer.missingRequiredEnvVar": "Enter a value for this required environment variable.",
|
||||
"deployDrawer.modelCreds": "Model Credentials",
|
||||
"deployDrawer.needsValidation": " (needs validation)",
|
||||
"deployDrawer.newReleaseHint": "A new release will be created from the selected Workflow App YAML.",
|
||||
"deployDrawer.noBindingRequired": "Not required",
|
||||
"deployDrawer.noCredentialCandidates": "No available credentials.",
|
||||
"deployDrawer.noNewEnvironmentAvailable": "All available environments already have a deployment.",
|
||||
"deployDrawer.noOtherReleaseAvailable": "No other releases are available for this environment.",
|
||||
"deployDrawer.noReleaseAvailable": "Create a release before deploying to an environment.",
|
||||
"deployDrawer.notFound": "Deployment not found.",
|
||||
"deployDrawer.noteLabel": "Release Description (optional)",
|
||||
"deployDrawer.notePlaceholder": "e.g. Ship onboarding copy tweak",
|
||||
"deployDrawer.pluginCreds": "Plugin Credentials",
|
||||
"deployDrawer.promote": "Deploy",
|
||||
"deployDrawer.promoteDescription": "Select a release and target environment to deploy.",
|
||||
"deployDrawer.promoteTitle": "Deploy to Environment",
|
||||
"deployDrawer.readOnly": "Read-only",
|
||||
"deployDrawer.redeploy": "Deploy to Environment",
|
||||
"deployDrawer.redeployDescription": "Select a release and target environment to deploy.",
|
||||
"deployDrawer.redeployExistingReleaseHint": "The current release will be redeployed as-is. No new release will be created.",
|
||||
"deployDrawer.redeployTitle": "Deploy to Environment",
|
||||
"deployDrawer.releaseLabel": "Release",
|
||||
"deployDrawer.requiredBinding": "Required",
|
||||
"deployDrawer.rollback": "Deploy",
|
||||
"deployDrawer.rollbackDescription": "Select a release and target environment to deploy.",
|
||||
"deployDrawer.rollbackTitle": "Deploy to Environment",
|
||||
"deployDrawer.runtimeCredentials": "Credentials",
|
||||
"deployDrawer.secretPlaceholder": "secret",
|
||||
"deployDrawer.selectCredential": "Select a credential",
|
||||
"deployDrawer.selectEnv": "Select an environment",
|
||||
"deployDrawer.selectProviderCred": "Select {{provider}} credential",
|
||||
"deployDrawer.selectProviderKey": "Select {{provider}} key",
|
||||
"deployDrawer.selectRelease": "Select a release",
|
||||
"deployDrawer.targetEnv": "Target Environment",
|
||||
"deployDrawer.title": "Deploy to Environment",
|
||||
"deployDrawer.valuePlaceholder": "value",
|
||||
"deployTab.cancelDeployment": "Cancel deployment",
|
||||
"deployTab.closeError": "Close",
|
||||
"deployTab.col.actions": "Actions",
|
||||
"deployTab.col.currentRelease": "Current Release",
|
||||
"deployTab.col.environment": "Environment",
|
||||
"deployTab.col.status": "Status",
|
||||
"deployTab.col.updated": "Updated",
|
||||
"deployTab.collapseDetails": "Collapse deployment details",
|
||||
"deployTab.confirmUndeploy": "Undeploy",
|
||||
"deployTab.deployOtherVersion": "Deploy Another Release",
|
||||
"deployTab.deployToEnv": "Deploy to {{name}}",
|
||||
"deployTab.deployToNewEnv": "Deploy to New Environment...",
|
||||
"deployTab.empty": "No instances yet. Deploy to a new environment to get started.",
|
||||
"deployTab.emptyDescription": "Choose a release and target environment to make this deployment available to users.",
|
||||
"deployTab.emptyTitle": "No environments are running yet",
|
||||
"deployTab.envCount": "Environments",
|
||||
"deployTab.errorCode": "Code",
|
||||
"deployTab.errorDialogDesc": "Review the last failed deployment before retrying or deploying another release.",
|
||||
"deployTab.errorDialogTitle": "Deployment error in {{name}}",
|
||||
"deployTab.errorMessage": "Message",
|
||||
"deployTab.errorPhase": "Phase",
|
||||
"deployTab.expandDetails": "Expand deployment details",
|
||||
"deployTab.moreActions": "More actions",
|
||||
"deployTab.newDeployment": "Deploy to New Environment",
|
||||
"deployTab.panel.commit": "Commit ID",
|
||||
"deployTab.panel.deploymentId": "Deployment ID",
|
||||
"deployTab.panel.endpoints": "Endpoints",
|
||||
"deployTab.panel.envVars": "Environment Variables",
|
||||
"deployTab.panel.error": "Error",
|
||||
"deployTab.panel.failedRelease": "Failed Release",
|
||||
"deployTab.panel.health": "Health",
|
||||
"deployTab.panel.instanceInfo": "Instance Info",
|
||||
"deployTab.panel.modelCreds": "Model Credentials",
|
||||
"deployTab.panel.pluginCreds": "Plugin Credentials",
|
||||
"deployTab.panel.release": "Release",
|
||||
"deployTab.panel.releaseCreatedAt": "Release Created At",
|
||||
"deployTab.panel.releaseInfo": "Release Info",
|
||||
"deployTab.panel.replicas": "Replicas",
|
||||
"deployTab.panel.run": "Run",
|
||||
"deployTab.panel.runtimeBindings": "Credentials",
|
||||
"deployTab.panel.runtimeInfo": "Runtime Info",
|
||||
"deployTab.panel.runtimeMode": "Runtime Mode",
|
||||
"deployTab.panel.runtimeNote": "Runtime Note",
|
||||
"deployTab.panel.targetRelease": "Target Release",
|
||||
"deployTab.panel.unknownError": "Deployment failed.",
|
||||
"deployTab.promote": "Deploy",
|
||||
"deployTab.redeploy": "Redeploy",
|
||||
"deployTab.releaseCreatedAt": "Release created {{time}}",
|
||||
"deployTab.retry": "Retry",
|
||||
"deployTab.shortcut": "Shortcut",
|
||||
"deployTab.status.deployFailed": "Deploy failed",
|
||||
"deployTab.status.deployingRelease": "Deploying ({{release}})",
|
||||
"deployTab.status.runningOutOfSync": "Running (sync pending)",
|
||||
@ -363,26 +229,13 @@
|
||||
"deployTab.undeploy": "Undeploy",
|
||||
"deployTab.undeployConfirmDesc": "End-user access will stop immediately. The release can be redeployed later.",
|
||||
"deployTab.undeployConfirmTitle": "Undeploy from {{name}}?",
|
||||
"deployTab.undeployFrom": "Undeploy from {{name}}",
|
||||
"deployTab.undeployImpactTitle": "Affected instance",
|
||||
"deployTab.viewError": "View error",
|
||||
"deployTab.viewLogs": "View logs",
|
||||
"deployTab.viewProgress": "View progress",
|
||||
"detail.backToInstances": "Back to deployments",
|
||||
"detail.deployingCount": "{{count}} deploying",
|
||||
"detail.envCount_one": "{{count}} env",
|
||||
"detail.envCount_other": "{{count}} envs",
|
||||
"detail.failedCount": "{{count}} failed",
|
||||
"detail.mobileTabs": "Deployment sections",
|
||||
"detail.notFound": "Deployment not found",
|
||||
"detail.openSourceApp": "Open source {{name}}",
|
||||
"detail.sourceApp": "Source",
|
||||
"detail.sourceAppLink": "Source",
|
||||
"documentTitle.create": "New deployment · Deployments",
|
||||
"documentTitle.detail": "Deployment · Deployments",
|
||||
"documentTitle.list": "Deployments",
|
||||
"filter.allEnvs": "All environments",
|
||||
"filter.notDeployed": "Not deployed",
|
||||
"filter.searchPlaceholder": "Search deployments",
|
||||
"health.ENVIRONMENT_STATUS_ADMISSION": "Admission",
|
||||
"health.ENVIRONMENT_STATUS_BOOTSTRAPPING": "Bootstrapping",
|
||||
@ -393,7 +246,6 @@
|
||||
"list.clearFilters": "Clear filters",
|
||||
"list.clearSearch": "Clear deployment search",
|
||||
"list.createDeployment": "New",
|
||||
"list.empty": "No deployments found.",
|
||||
"list.emptyDescription": "Create a deployment from a Workflow App or Workflow DSL package to manage releases, environments, and access.",
|
||||
"list.emptyFilteredDescription": "No deployment matches the current search or environment filter.",
|
||||
"list.emptyFilteredTitle": "No matching deployments",
|
||||
@ -401,11 +253,6 @@
|
||||
"mode.ENVIRONMENT_MODE_ISOLATED": "Isolated",
|
||||
"mode.ENVIRONMENT_MODE_SHARED": "Shared",
|
||||
"mode.ENVIRONMENT_MODE_UNSPECIFIED": "Unknown",
|
||||
"newInstance.comingSoon": "Coming soon",
|
||||
"newInstance.fromStudio": "Select from Studio",
|
||||
"newInstance.importDSL": "Import DSL",
|
||||
"newInstance.title": "New Deployment",
|
||||
"overview.accessEndpoints": "Access endpoints",
|
||||
"overview.accessMeta.apiTokens": "Manage API Tokens",
|
||||
"overview.accessMeta.cli": "View CLI access",
|
||||
"overview.accessMeta.webApp": "Manage WebApp access",
|
||||
@ -415,8 +262,6 @@
|
||||
"overview.apiKeysCount_other": "{{count}} API Tokens",
|
||||
"overview.apiTokenSummary.environments_one": "{{count}} deployed environment",
|
||||
"overview.apiTokenSummary.environments_other": "{{count}} deployed environments",
|
||||
"overview.availableForDeployment": "Available for deployment",
|
||||
"overview.basicInfo": "Basic info",
|
||||
"overview.cardAction.deployLatest": "Deploy Latest Release",
|
||||
"overview.cardAction.redeploy": "Redeploy",
|
||||
"overview.cardAction.viewProgress": "View deployment",
|
||||
@ -436,79 +281,27 @@
|
||||
"overview.chip.olderRelease": "older",
|
||||
"overview.chip.olderReleaseTooltip": "This environment is running an older release.",
|
||||
"overview.chip.openInDeployTab": "View deployment progress",
|
||||
"overview.cli": "CLI",
|
||||
"overview.configured": "Configured",
|
||||
"overview.createRelease": "Create Release",
|
||||
"overview.created": "Created",
|
||||
"overview.deploy": "Deploy",
|
||||
"overview.deployedEnvironments": "deployed",
|
||||
"overview.deploymentOverview": "Deployment overview",
|
||||
"overview.deploymentStatus": "Deployment status",
|
||||
"overview.description": "Description",
|
||||
"overview.developerApi": "Developer API",
|
||||
"overview.disabled": "Disabled",
|
||||
"overview.emptyValue": "Not set",
|
||||
"overview.enabled": "Enabled",
|
||||
"overview.enabledChannels": "access enabled",
|
||||
"overview.endUserAccess": "End-user access",
|
||||
"overview.environments": "Environments",
|
||||
"overview.hero.byName": "by {{name}}",
|
||||
"overview.hero.empty": "No releases yet",
|
||||
"overview.hero.emptyDescription": "Create a release from the current source before deploying.",
|
||||
"overview.hero.propagation_one": "deployed to {{count}}/{{total}} environment",
|
||||
"overview.hero.propagation_other": "deployed to {{count}}/{{total}} environments",
|
||||
"overview.hero.untargeted": "no environments configured yet",
|
||||
"overview.instanceDetails": "Deployment details",
|
||||
"overview.instanceId": "Deployment ID",
|
||||
"overview.latestRelease.releaseCount_one": "{{count}} release",
|
||||
"overview.latestRelease.releaseCount_other": "{{count}} releases",
|
||||
"overview.latestReleaseTitle": "Latest Release",
|
||||
"overview.manageDeployments": "Manage deployments",
|
||||
"overview.name": "Name",
|
||||
"overview.noAccessConfig": "No access configuration.",
|
||||
"overview.noReleaseYet": "Create a release before deploying to an environment.",
|
||||
"overview.notConfigured": "Not configured",
|
||||
"overview.previousReleases.empty": "No earlier releases yet.",
|
||||
"overview.previousReleases.retired": "Not currently deployed",
|
||||
"overview.previousReleases.title": "Previous releases",
|
||||
"overview.previousReleases.viewAll": "View All",
|
||||
"overview.ready": "Deployable",
|
||||
"overview.recentReleases": "Recent releases",
|
||||
"overview.releaseDeployedTitle": "{{release}} is deployed",
|
||||
"overview.releaseReadyTitle": "{{release}} is ready to deploy",
|
||||
"overview.serviceMap": "Service map",
|
||||
"overview.servingRelease": "Serving {{release}}",
|
||||
"overview.servingReleaseDescription": "This deployment is deployed to {{count}}/{{total}} environments.",
|
||||
"overview.strip.deployToNewEnvironment": "Deploy to new environment",
|
||||
"overview.strip.empty": "No environments configured.",
|
||||
"overview.strip.emptyDeployableDescription": "Deploy the latest release to an environment when you're ready.",
|
||||
"overview.strip.emptyDeployed": "No instances yet.",
|
||||
"overview.strip.emptyDescription": "Create a release before deploying to an environment.",
|
||||
"overview.strip.emptyTitle": "No instances yet",
|
||||
"overview.strip.summary_one": "1 of {{total}} on latest release",
|
||||
"overview.strip.summary_other": "{{count}} of {{total}} on latest release",
|
||||
"overview.strip.title": "Instances",
|
||||
"overview.switchSourceApp": "Switch source",
|
||||
"overview.switchSourceAppDescription": "Choose the Workflow App used as the source for future releases.",
|
||||
"overview.switchSourceAppHint": "After switching, only newly created releases use the new source. Historical releases and existing deployments are not changed.",
|
||||
"overview.targetRelease": "Target Release",
|
||||
"overview.webapp": "WebApp",
|
||||
"settings.danger": "Danger zone",
|
||||
"settings.dangerDesc": "Permanently delete this deployment and stop any running instances. This can't be undone.",
|
||||
"settings.delete": "Delete Deployment",
|
||||
"settings.deleteConfirmDesc": "Delete {{name}}? Every instance will stop running and be removed across all environments. This can't be undone.",
|
||||
"settings.deleteConfirmTitle": "Delete deployment",
|
||||
"settings.deleteFailed": "Failed to delete deployment.",
|
||||
"settings.deleteImpact": "Impact",
|
||||
"settings.deleteImpactInstance": "Deployment",
|
||||
"settings.deleteImpactTitle": "Affected deployment",
|
||||
"settings.deleteImpactValue": "The deployment is removed from the deployment list.",
|
||||
"settings.deleted": "Deployment deleted",
|
||||
"settings.description": "Description",
|
||||
"settings.descriptionHelp": "Manage this deployment's name, description, and other settings.",
|
||||
"settings.general": "General",
|
||||
"settings.name": "Deployment name",
|
||||
"settings.reset": "Reset",
|
||||
"settings.save": "Save Changes",
|
||||
"settings.updateFailed": "Failed to update deployment.",
|
||||
"settings.updated": "Deployment updated",
|
||||
@ -520,7 +313,6 @@
|
||||
"status.RUNTIME_INSTANCE_STATUS_UNDEPLOYED": "Not deployed",
|
||||
"status.RUNTIME_INSTANCE_STATUS_UNDEPLOYING": "Undeploying",
|
||||
"status.RUNTIME_INSTANCE_STATUS_UNSPECIFIED": "Unknown",
|
||||
"subtitle": "Manage deployments across environments.",
|
||||
"tabs.access.description": "Manage access channels and access permissions.",
|
||||
"tabs.access.name": "Access",
|
||||
"tabs.api-tokens.description": "Manage API Tokens and invoke instances over HTTP.",
|
||||
@ -531,9 +323,6 @@
|
||||
"tabs.overview.name": "Overview",
|
||||
"tabs.releases.description": "Create, deploy, and manage releases.",
|
||||
"tabs.releases.name": "Releases",
|
||||
"tabs.settings.description": "Manage this deployment's name, description, and other settings.",
|
||||
"tabs.settings.name": "Settings",
|
||||
"title": "Deployments",
|
||||
"unsupportedDslNodes.description": "This release contains nodes that the deployment runtime does not support yet. Remove or replace them in Studio, then try again.",
|
||||
"unsupportedDslNodes.descriptionWithTypes": "This release contains nodes that the deployment runtime does not support yet: {{nodeTypes}}. Remove or replace them in Studio, then try again.",
|
||||
"unsupportedDslNodes.title": "Unsupported nodes",
|
||||
@ -544,7 +333,6 @@
|
||||
"versions.checkingReleaseContent": "Checking release content...",
|
||||
"versions.col.action": "Action",
|
||||
"versions.col.author": "Created by",
|
||||
"versions.col.commit": "Commit",
|
||||
"versions.col.createdAt": "Created at",
|
||||
"versions.col.deployedTo": "Deployed to",
|
||||
"versions.col.release": "Release",
|
||||
@ -554,20 +342,14 @@
|
||||
"versions.createFailed": "Failed to create release.",
|
||||
"versions.createRelease": "Create Release",
|
||||
"versions.createReleaseDescription": "Create a deployable release from a Workflow App or Workflow DSL file.",
|
||||
"versions.createReleaseHint": "New releases can be deployed to any environment.",
|
||||
"versions.createSuccess": "Release \"{{name}}\" created.",
|
||||
"versions.creating": "Creating...",
|
||||
"versions.currentOn": "Current Release on {{name}}",
|
||||
"versions.deleteConfirmDesc": "Release \"{{name}}\" will be permanently deleted. This can't be undone.",
|
||||
"versions.deleteConfirmTitle": "Delete release?",
|
||||
"versions.deleteFailed": "Failed to delete release.",
|
||||
"versions.deleteImpactDeployment": "Deployment status",
|
||||
"versions.deleteImpactNotDeployed": "Not currently deployed",
|
||||
"versions.deleteImpactRelease": "Release",
|
||||
"versions.deleteImpactTitle": "Delete impact",
|
||||
"versions.deleteRelease": "Delete Release",
|
||||
"versions.deleteSuccess": "Release \"{{name}}\" deleted.",
|
||||
"versions.deploy": "Deploy",
|
||||
"versions.deployTo": "Deploy to {{name}}",
|
||||
"versions.deployedStatus.RUNTIME_INSTANCE_STATUS_DEPLOYING": "Deploying",
|
||||
"versions.deployedStatus.RUNTIME_INSTANCE_STATUS_DRIFTED": "Sync pending",
|
||||
@ -582,7 +364,6 @@
|
||||
"versions.disabledReason.checkingDeployments": "Checking deployment usage",
|
||||
"versions.disabledReason.current": "This release is already running on {{name}}",
|
||||
"versions.disabledReason.deploying": "Wait for the active deployment to finish",
|
||||
"versions.disabledReason.envDisabled": "This environment isn't deployable",
|
||||
"versions.disabledReason.releaseInUse_one": "Undeploy this release from {{count}} environment before deleting it",
|
||||
"versions.disabledReason.releaseInUse_other": "Undeploy this release from {{count}} environments before deleting it",
|
||||
"versions.dslReadFailed": "Failed to read the DSL file. Choose another file and try again.",
|
||||
@ -592,27 +373,21 @@
|
||||
"versions.editRelease": "Edit Release",
|
||||
"versions.editReleaseDescription": "Update this release's name and description.",
|
||||
"versions.editSuccess": "Release \"{{name}}\" updated.",
|
||||
"versions.empty": "No releases available yet.",
|
||||
"versions.emptyDescription": "Create the first release before deploying to an environment.",
|
||||
"versions.emptyTitle": "No releases yet",
|
||||
"versions.emptyWithCreate": "No releases yet. Create the first deployable release before deploying.",
|
||||
"versions.exportDsl": "Export DSL",
|
||||
"versions.exportDslFailed": "Failed to export DSL.",
|
||||
"versions.exportingDsl": "Exporting...",
|
||||
"versions.groupHeader.deploy": "Deploy",
|
||||
"versions.groupHeader.promote": "Deploy",
|
||||
"versions.groupHeader.rollback": "Deploy previous version",
|
||||
"versions.groupHeader.unavailable": "Unavailable",
|
||||
"versions.manualDslOption": "Upload DSL",
|
||||
"versions.moreActions": "More actions",
|
||||
"versions.optional": "Optional",
|
||||
"versions.promote": "Deploy",
|
||||
"versions.promoteTo": "Deploy to {{name}}",
|
||||
"versions.releaseAlreadyExists": "A release with the same content already exists: {{name}}.",
|
||||
"versions.releaseContentCheckFailed": "Failed to check release content.",
|
||||
"versions.releaseDescriptionLabel": "Description",
|
||||
"versions.releaseDescriptionPlaceholder": "Describe this release",
|
||||
"versions.releaseHistory": "Release history",
|
||||
"versions.releaseNameConflict": "A release with this name already exists. Choose another name.",
|
||||
"versions.releaseNameLabel": "Release Name",
|
||||
"versions.releaseNamePlaceholder": "Release Name",
|
||||
|
||||
@ -1,21 +1,10 @@
|
||||
{
|
||||
"applied.activeSubscription.description": "You have an active subscription. You can use the education discount after your subscription expires. Confirm your subscription in <stripeLink>Stripe</stripeLink>.",
|
||||
"applied.description": "Congratulations! You've successfully applied for the education discount.",
|
||||
"applied.noPaymentPermission.description": "You don't have payment permission in this workspace. Please switch to a workspace where you can manage billing to use the education discount.",
|
||||
"applied.noPaymentPermission.returnHome": "Back to Dify",
|
||||
"applied.step1.description": "You've successfully applied for the education discount.",
|
||||
"applied.step1.title": "Step 1",
|
||||
"applied.step2.description": "Select the workspace you want to use the education discount with.",
|
||||
"applied.step2.title": "Step 2",
|
||||
"applied.tabs.activeSubscription": "In subscription",
|
||||
"applied.tabs.eligible": "Can buy",
|
||||
"applied.tabs.noPaymentPermission": "No payment permission",
|
||||
"applied.title": "Education discount applied",
|
||||
"applied.workspace.plan": "Paid plan",
|
||||
"applied.workspace.title": "Current Workspace",
|
||||
"currentSigned": "CURRENTLY SIGNED IN AS",
|
||||
"educationPricingConfirm.billingPeriod.monthly": "monthly",
|
||||
"educationPricingConfirm.billingPeriod.yearly": "annual",
|
||||
"educationPricingConfirm.cancel": "Keep current plan",
|
||||
"educationPricingConfirm.continue": "Switch to Professional Annual",
|
||||
"educationPricingConfirm.description": "The education discount applies to the Professional annual plan only. Keeping your current plan won't include the discount.",
|
||||
@ -56,8 +45,6 @@
|
||||
"rejectTitle": "Your Dify Educational Verification Has Been Rejected",
|
||||
"submit": "Submit",
|
||||
"submitError": "Form submission failed. Please try again later.",
|
||||
"successContent": "We have issued a 100% discount coupon for the Dify Professional plan to your account. The coupon is valid for one year, please use it within the validity period.",
|
||||
"successTitle": "You Have Got Dify Education Verified",
|
||||
"toVerified": "Get Education Verified",
|
||||
"toVerifiedTip.coupon": "exclusive 100% coupon",
|
||||
"toVerifiedTip.end": "for the Dify Professional Plan.",
|
||||
|
||||
@ -1,9 +1,4 @@
|
||||
{
|
||||
"acceptPP": "I have read and accept the privacy policy",
|
||||
"accountAlreadyInited": "Account already initialized",
|
||||
"activated": "Sign in now",
|
||||
"activatedTipEnd": "team",
|
||||
"activatedTipStart": "You have joined the",
|
||||
"adminInitPassword": "Admin initialization password",
|
||||
"back": "Back",
|
||||
"backToLogin": "Back to login",
|
||||
@ -17,16 +12,12 @@
|
||||
"checkCode.invalidCode": "Invalid code",
|
||||
"checkCode.resend": "Resend",
|
||||
"checkCode.tipsPrefix": "We send a verification code to ",
|
||||
"checkCode.useAnotherMethod": "Use another method",
|
||||
"checkCode.validTime": "Bear in mind that the code is valid for 5 minutes",
|
||||
"checkCode.verificationCode": "Verification code",
|
||||
"checkCode.verificationCodePlaceholder": "Enter 6-digit code",
|
||||
"checkCode.verify": "Verify",
|
||||
"checkEmailForResetLink": "Please check your email for a link to reset your password. If it doesn't appear within a few minutes, make sure to check your spam folder.",
|
||||
"confirmPassword": "Confirm Password",
|
||||
"confirmPasswordPlaceholder": "Confirm your new password",
|
||||
"continueWithCode": "Continue With Code",
|
||||
"createAndSignIn": "Create and sign in",
|
||||
"createSample": "Based on this information, we'll create sample application for you",
|
||||
"dontHave": "Don't have?",
|
||||
"email": "Email address",
|
||||
@ -40,7 +31,6 @@
|
||||
"error.nameEmpty": "Name is required",
|
||||
"error.passwordEmpty": "Password is required",
|
||||
"error.passwordInvalid": "Password must contain letters and numbers, and the length must be greater than 8",
|
||||
"error.passwordLengthInValid": "Password must be at least 8 characters",
|
||||
"error.redirectUrlMissing": "Redirect URL is missing",
|
||||
"error.registrationNotAllowed": "Account not found. Please contact the system admin to register.",
|
||||
"explore": "Explore Dify",
|
||||
@ -54,7 +44,6 @@
|
||||
"interfaceLanguage": "Interface Language",
|
||||
"invalid": "The link has expired",
|
||||
"invalidInvitationCode": "Invalid invitation code",
|
||||
"invalidToken": "Invalid or expired token",
|
||||
"invitationCode": "Invitation Code",
|
||||
"invitationCodePlaceholder": "Your invitation code",
|
||||
"join": "Join ",
|
||||
@ -81,12 +70,9 @@
|
||||
"passwordChangedTip": "Your password has been successfully changed",
|
||||
"passwordPlaceholder": "Your password",
|
||||
"pp": "Privacy Policy",
|
||||
"reset": "Please run following command to reset your password",
|
||||
"resetLinkSent": "Reset link sent",
|
||||
"resetPassword": "Reset Password",
|
||||
"resetPasswordDesc": "Type the email you used to sign up on Dify and we will send you a password reset email.",
|
||||
"rightDesc": "Effortlessly build visually captivating, operable, and improvable AI applications.",
|
||||
"rightTitle": "Unlock the full potential of LLM",
|
||||
"sendResetLink": "Send reset link",
|
||||
"sendUsMail": "Email us your introduction, and we'll handle the invitation request.",
|
||||
"sendVerificationCode": "Send Verification Code",
|
||||
@ -110,8 +96,6 @@
|
||||
"validate": "Validate",
|
||||
"webapp.disabled": "Webapp authentication is disabled. Please contact the system admin to enable it. You can try to use the app directly.",
|
||||
"webapp.login": "Login",
|
||||
"webapp.noLoginMethod": "Authentication method not configured for web app",
|
||||
"webapp.noLoginMethodTip": "Please contact the system admin to add an authentication method.",
|
||||
"welcome": "👋 Welcome! Please log in to get started.",
|
||||
"withGitHub": "Continue with GitHub",
|
||||
"withGoogle": "Continue with Google",
|
||||
|
||||
@ -21,14 +21,11 @@
|
||||
"accessRule.expandSection": "Expand {{title}}",
|
||||
"accessRule.individualPermissionSettings": "Individual permission settings",
|
||||
"accessRule.individualPermissionSettingsTip": "Set permission exceptions for specific collaborators or groups. These settings override the default access level.",
|
||||
"accessRule.lockedSummary_one": "· {{count}} locked",
|
||||
"accessRule.lockedSummary_other": "· {{count}} locked",
|
||||
"accessRule.maintainer": "Maintainer",
|
||||
"accessRule.member": "Member",
|
||||
"accessRule.newPermissionSet": "New permission set",
|
||||
"accessRule.noAvailableMembers": "No members available to add",
|
||||
"accessRule.noDescription": "No description",
|
||||
"accessRule.noRoles": "No roles",
|
||||
"accessRule.noRules": "No access rules",
|
||||
"accessRule.noUserAccessSettings": "No individual permission settings",
|
||||
"accessRule.permission": "Permission",
|
||||
|
||||
@ -1,60 +1,33 @@
|
||||
{
|
||||
"events.actionNum": "{{num}} {{event}} INCLUDED",
|
||||
"events.description": "Events that this integration trigger can subscribe to",
|
||||
"events.empty": "No events available",
|
||||
"events.event": "Event",
|
||||
"events.events": "Events",
|
||||
"events.item.noParameters": "No parameters",
|
||||
"events.item.parameters": "{{count}} parameters",
|
||||
"events.output": "Output",
|
||||
"events.title": "Available Events",
|
||||
"modal.apiKey.configuration.description": "Set up your subscription parameters",
|
||||
"modal.apiKey.configuration.title": "Configure Subscription",
|
||||
"modal.apiKey.title": "Create with API Key",
|
||||
"modal.apiKey.verify.description": "Please provide your API credentials to verify access",
|
||||
"modal.apiKey.verify.error": "Credential verification failed. Please check your API key.",
|
||||
"modal.apiKey.verify.success": "Credentials verified successfully",
|
||||
"modal.apiKey.verify.title": "Verify Credentials",
|
||||
"modal.common.authorize": "Authorize",
|
||||
"modal.common.authorizing": "Authorizing...",
|
||||
"modal.common.back": "Back",
|
||||
"modal.common.cancel": "Cancel",
|
||||
"modal.common.create": "Create",
|
||||
"modal.common.creating": "Creating...",
|
||||
"modal.common.next": "Next",
|
||||
"modal.common.verify": "Verify",
|
||||
"modal.common.verifying": "Verifying...",
|
||||
"modal.errors.authFailed": "Authorization failed",
|
||||
"modal.errors.createFailed": "Failed to create subscription",
|
||||
"modal.errors.networkError": "Network error, please try again",
|
||||
"modal.errors.updateFailed": "Failed to update subscription",
|
||||
"modal.errors.verifyFailed": "Failed to verify credentials",
|
||||
"modal.form.callbackUrl.description": "This URL will receive webhook events",
|
||||
"modal.form.callbackUrl.label": "Callback URL",
|
||||
"modal.form.callbackUrl.placeholder": "Generating...",
|
||||
"modal.form.callbackUrl.privateAddressWarning": "This URL appears to be an internal address, which may cause webhook requests to fail. You may change TRIGGER_URL to a public address.",
|
||||
"modal.form.callbackUrl.tooltip": "Provide a publicly accessible endpoint that can receive callback requests from the trigger provider.",
|
||||
"modal.form.subscriptionName.label": "Subscription Name",
|
||||
"modal.form.subscriptionName.placeholder": "Enter subscription name",
|
||||
"modal.form.subscriptionName.required": "Subscription name is required",
|
||||
"modal.manual.description": "Configure your webhook subscription manually",
|
||||
"modal.manual.logs.loading": "Awaiting request from {{pluginName}}...",
|
||||
"modal.manual.logs.request": "Request",
|
||||
"modal.manual.logs.title": "Request Logs",
|
||||
"modal.manual.title": "Manual Setup",
|
||||
"modal.oauth.authorization.authFailed": "Failed to get OAuth authorization information",
|
||||
"modal.oauth.authorization.authSuccess": "Authorization successful",
|
||||
"modal.oauth.authorization.authorizeButton": "Authorize with {{provider}}",
|
||||
"modal.oauth.authorization.description": "Authorize Dify to access your account",
|
||||
"modal.oauth.authorization.redirectUrl": "Redirect URL",
|
||||
"modal.oauth.authorization.redirectUrlHelp": "Use this URL in your OAuth app configuration",
|
||||
"modal.oauth.authorization.title": "OAuth Authorization",
|
||||
"modal.oauth.authorization.waitingAuth": "Waiting for authorization...",
|
||||
"modal.oauth.authorization.waitingJump": "Authorized, waiting for jump",
|
||||
"modal.oauth.configuration.description": "Set up your subscription parameters after authorization",
|
||||
"modal.oauth.configuration.failed": "OAuth configuration failed",
|
||||
"modal.oauth.configuration.success": "OAuth configuration successful",
|
||||
"modal.oauth.configuration.title": "Configure Subscription",
|
||||
"modal.oauth.remove.failed": "OAuth remove failed",
|
||||
"modal.oauth.remove.success": "OAuth remove successful",
|
||||
"modal.oauth.save.success": "OAuth configuration saved successfully",
|
||||
@ -63,29 +36,22 @@
|
||||
"modal.steps.configuration": "Configuration",
|
||||
"modal.steps.verify": "Verify",
|
||||
"node.status.warning": "Disconnect",
|
||||
"subscription.addType.description": "Choose how you want to create your trigger subscription",
|
||||
"subscription.addType.options.apikey.description": "Automatically create subscription using API credentials",
|
||||
"subscription.addType.options.apikey.title": "Create with API Key",
|
||||
"subscription.addType.options.manual.description": "Paste URL to create a new subscription",
|
||||
"subscription.addType.options.manual.tip": "Configure URL on third-party platform manually",
|
||||
"subscription.addType.options.manual.title": "Manual Setup",
|
||||
"subscription.addType.options.oauth.clientSettings": "OAuth Client Settings",
|
||||
"subscription.addType.options.oauth.clientTitle": "OAuth Client",
|
||||
"subscription.addType.options.oauth.custom": "Custom",
|
||||
"subscription.addType.options.oauth.default": "Default",
|
||||
"subscription.addType.options.oauth.description": "Authorize with third-party platform to create subscription",
|
||||
"subscription.addType.options.oauth.title": "Create with OAuth",
|
||||
"subscription.addType.title": "Add subscription",
|
||||
"subscription.createButton.apiKey": "New subscription with API Key",
|
||||
"subscription.createButton.manual": "Paste URL to create a new subscription",
|
||||
"subscription.createButton.oauth": "New subscription with OAuth",
|
||||
"subscription.createFailed": "Failed to create subscription",
|
||||
"subscription.createSuccess": "Subscription created successfully",
|
||||
"subscription.empty.button": "New subscription",
|
||||
"subscription.empty.title": "No subscriptions",
|
||||
"subscription.list.addButton": "Add",
|
||||
"subscription.list.item.actions.delete": "Delete",
|
||||
"subscription.list.item.actions.deleteConfirm.cancel": "Cancel",
|
||||
"subscription.list.item.actions.deleteConfirm.confirm": "Confirm Delete",
|
||||
"subscription.list.item.actions.deleteConfirm.confirmInputPlaceholder": "Enter \"{{name}}\" to confirm.",
|
||||
"subscription.list.item.actions.deleteConfirm.confirmInputTip": "Please enter “{{name}}” to confirm.",
|
||||
@ -98,21 +64,12 @@
|
||||
"subscription.list.item.actions.edit.error": "Failed to update subscription",
|
||||
"subscription.list.item.actions.edit.success": "Subscription updated successfully",
|
||||
"subscription.list.item.actions.edit.title": "Edit Subscription",
|
||||
"subscription.list.item.credentialType.api_key": "API Key",
|
||||
"subscription.list.item.credentialType.oauth2": "OAuth",
|
||||
"subscription.list.item.credentialType.unauthorized": "Manual",
|
||||
"subscription.list.item.disabled": "Disabled",
|
||||
"subscription.list.item.enabled": "Enabled",
|
||||
"subscription.list.item.noUsed": "No workflow used",
|
||||
"subscription.list.item.status.active": "Active",
|
||||
"subscription.list.item.status.inactive": "Inactive",
|
||||
"subscription.list.item.usedByNum": "Used by {{num}} workflows",
|
||||
"subscription.list.tip": "Receive events via Subscription",
|
||||
"subscription.list.title": "Subscriptions",
|
||||
"subscription.listNum": "{{num}} subscriptions",
|
||||
"subscription.maxCount": "Max {{num}} subscriptions",
|
||||
"subscription.noSubscriptionSelected": "No subscription selected",
|
||||
"subscription.selectPlaceholder": "Select subscription",
|
||||
"subscription.subscriptionRemoved": "Subscription removed",
|
||||
"subscription.title": "Subscriptions"
|
||||
"subscription.subscriptionRemoved": "Subscription removed"
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
{
|
||||
"actionLogs": "Action Logs",
|
||||
"circularInvocationTip": "There is circular invocation of tools/nodes in the current workflow.",
|
||||
"detail": "DETAIL",
|
||||
"input": "INPUT",
|
||||
@ -10,7 +9,6 @@
|
||||
"meta.time": "Elapsed Time",
|
||||
"meta.title": "METADATA",
|
||||
"meta.tokens": "Total Tokens",
|
||||
"meta.version": "Version",
|
||||
"result": "RESULT",
|
||||
"resultEmpty.link": "detail panel",
|
||||
"resultEmpty.tipLeft": "please go to the ",
|
||||
|
||||
@ -2,8 +2,6 @@
|
||||
"chat.chatFormTip": "Chat settings cannot be modified after the chat has started.",
|
||||
"chat.chatSettingsTitle": "New chat setup",
|
||||
"chat.collapse": "Collapse",
|
||||
"chat.configDisabled": "Previous session settings have been used for this session.",
|
||||
"chat.configStatusDes": "Before starting, you can modify the conversation settings",
|
||||
"chat.deleteConversation.content": "Are you sure you want to delete this conversation?",
|
||||
"chat.deleteConversation.title": "Delete conversation",
|
||||
"chat.expand": "Expand",
|
||||
@ -12,27 +10,18 @@
|
||||
"chat.newChatTip": "Already in a new chat",
|
||||
"chat.pinnedTitle": "Pinned",
|
||||
"chat.poweredBy": "Powered by",
|
||||
"chat.privacyPolicyLeft": "Please read the ",
|
||||
"chat.privacyPolicyMiddle": "privacy policy",
|
||||
"chat.privacyPolicyRight": " provided by the app developer.",
|
||||
"chat.privatePromptConfigTitle": "Conversation settings",
|
||||
"chat.prompt": "Prompt",
|
||||
"chat.publicPromptConfigTitle": "Initial Prompt",
|
||||
"chat.resetChat": "Reset conversation",
|
||||
"chat.startChat": "Start Chat",
|
||||
"chat.temporarySystemIssue": "Sorry, temporary system issue.",
|
||||
"chat.tryToSolve": "Try to solve",
|
||||
"chat.unpinnedTitle": "Recent",
|
||||
"chat.viewChatSettings": "View chat settings",
|
||||
"common.appUnavailable": "App is unavailable",
|
||||
"common.appUnknownError": "App is unavailable",
|
||||
"common.welcome": "",
|
||||
"generation.batchFailed.info": "{{num}} failed executions",
|
||||
"generation.batchFailed.outputPlaceholder": "No output content",
|
||||
"generation.batchFailed.retry": "Retry",
|
||||
"generation.browse": "browse",
|
||||
"generation.completionResult": "Completion result",
|
||||
"generation.copy": "Copy",
|
||||
"generation.csvStructureTitle": "The CSV file must conform to the following structure:",
|
||||
"generation.csvUploadTitle": "Drag and drop your CSV file here, or ",
|
||||
"generation.downloadTemplate": "Download the template here",
|
||||
@ -46,9 +35,6 @@
|
||||
"generation.executions": "{{num}} runs",
|
||||
"generation.field": "Field",
|
||||
"generation.noData": "AI will give you what you want here.",
|
||||
"generation.queryPlaceholder": "Write your query content...",
|
||||
"generation.queryTitle": "Query content",
|
||||
"generation.resultTitle": "AI Completion",
|
||||
"generation.run": "Execute",
|
||||
"generation.savedNoData.description": "Start generating content, and find your saved results here.",
|
||||
"generation.savedNoData.startCreateContent": "Start create content",
|
||||
|
||||
@ -1,12 +1,10 @@
|
||||
{
|
||||
"cancel": "Cancel",
|
||||
"continueEditing": "Continue Editing",
|
||||
"create": "CREATE SNIPPET",
|
||||
"createFailed": "Failed to create snippet",
|
||||
"createFrom": "CREATE FROM",
|
||||
"createFromBlank": "Create from blank",
|
||||
"currentDSLVersion": "System-supported DSL version: ",
|
||||
"defaultName": "Untitled Snippet",
|
||||
"deleteConfirmContent": "This can't be undone. Workflows that use this snippet won't be affected.",
|
||||
"deleteConfirmTitle": "Delete Snippet?",
|
||||
"deleteFailed": "Failed to delete snippet",
|
||||
@ -16,7 +14,6 @@
|
||||
"discardChangesTitle": "Discard draft changes?",
|
||||
"discardDraft": "Discard Draft",
|
||||
"doNotSave": "Leave as Draft",
|
||||
"draft": "Draft",
|
||||
"dslVersionMismatchDescription": "A significant difference in DSL versions has been detected. Forcing the import may cause the snippet to malfunction.",
|
||||
"dslVersionMismatchQuestion": "Do you want to continue?",
|
||||
"dslVersionMismatchTitle": "Version Incompatibility",
|
||||
@ -30,40 +27,25 @@
|
||||
"exportFailed": "Export snippet failed.",
|
||||
"importDSLFile": "Import DSL file",
|
||||
"importDialogTitle": "Import Snippet",
|
||||
"importFailed": "Failed to import snippet DSL",
|
||||
"importFromDSLFile": "From DSL file",
|
||||
"importFromDSLUrl": "From URL",
|
||||
"importFromDSLUrlPlaceholder": "Paste DSL link here",
|
||||
"importSuccess": "Snippet imported",
|
||||
"importedDSLVersion": "Current snippet DSL version: ",
|
||||
"inputFieldButton": "Input Field",
|
||||
"inputVariables": "Input Variables",
|
||||
"management": "SNIPPET MANAGEMENT",
|
||||
"menu.deleteSnippet": "Delete",
|
||||
"menu.editInfo": "Edit Info",
|
||||
"menu.exportSnippet": "Export Snippet",
|
||||
"notFoundDescription": "The requested snippet mock was not found.",
|
||||
"notFoundTitle": "Snippet not found",
|
||||
"panelDescription": "Defines the input fields that allow the snippet to receive data from other nodes.",
|
||||
"panelPrimaryGroup": "Core inputs",
|
||||
"panelSecondaryGroup": "Optional inputs",
|
||||
"panelTitle": "Input Field",
|
||||
"publishButton": "Publish",
|
||||
"publishFailed": "Failed to publish snippet",
|
||||
"publishMenuCurrentDraft": "Current draft unpublished",
|
||||
"publishSuccess": "Snippet published",
|
||||
"save": "Save",
|
||||
"saveAndExit": "Save and Exit",
|
||||
"saveBeforeLeavingDescription": "Save to make this version available to use in workflows. Or keep your edits as a draft for now.",
|
||||
"saveBeforeLeavingTitle": "Save changes before leaving?",
|
||||
"saveSuccess": "Snippet saved",
|
||||
"sectionOrchestrate": "Orchestrate",
|
||||
"testRunButton": "Test run",
|
||||
"typeLabel": "Snippet",
|
||||
"unknownUser": "User",
|
||||
"unsavedChanges": "Current changes are not saved.",
|
||||
"updatedBy": "{{name}} updated {{time}}",
|
||||
"usageCount": "Used {{count}} times",
|
||||
"variableInspect": "Variable Inspect",
|
||||
"viewOnly": "View only"
|
||||
}
|
||||
|
||||
@ -1,9 +1,6 @@
|
||||
{
|
||||
"dateFormats.display": "MMMM D, YYYY",
|
||||
"dateFormats.displayWithTime": "MMMM D, YYYY hh:mm A",
|
||||
"dateFormats.input": "YYYY-MM-DD",
|
||||
"dateFormats.output": "YYYY-MM-DD",
|
||||
"dateFormats.outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ",
|
||||
"daysInWeek.Fri": "Fri",
|
||||
"daysInWeek.Mon": "Mon",
|
||||
"daysInWeek.Sat": "Sat",
|
||||
|
||||
@ -7,12 +7,10 @@
|
||||
"addToolModal.all.title": "No tools available",
|
||||
"addToolModal.built-in.tip": "",
|
||||
"addToolModal.built-in.title": "No built-in tool available",
|
||||
"addToolModal.category": "category",
|
||||
"addToolModal.custom.tip": "Create a custom tool",
|
||||
"addToolModal.custom.title": "No custom tool available",
|
||||
"addToolModal.mcp.tip": "Add an MCP server",
|
||||
"addToolModal.mcp.title": "No MCP tool available",
|
||||
"addToolModal.type": "type",
|
||||
"addToolModal.workflow.tip": "Publish workflows as tools in Studio",
|
||||
"addToolModal.workflow.title": "No workflow tool available",
|
||||
"allMCP": "All MCP",
|
||||
@ -27,11 +25,7 @@
|
||||
"auth.unauthorized": "Unauthorized",
|
||||
"author": "by",
|
||||
"builtInPromptTitle": "Prompt",
|
||||
"contribute.line1": "I'm interested in ",
|
||||
"contribute.line2": "contributing tools to Dify.",
|
||||
"contribute.viewGuide": "View the guide",
|
||||
"copyToolName": "Copy Name",
|
||||
"createCustomTool": "Create Custom Tool",
|
||||
"createSwaggerAPIAsTool": "Create a Swagger API as Tool",
|
||||
"createTool.authHeaderPrefix.title": "Auth Type",
|
||||
"createTool.authHeaderPrefix.types.basic": "Basic",
|
||||
@ -97,13 +91,11 @@
|
||||
"createTool.toolInput.title": "Tool Input",
|
||||
"createTool.toolNamePlaceHolder": "Enter the tool name",
|
||||
"createTool.toolOutput.description": "Description",
|
||||
"createTool.toolOutput.name": "Name",
|
||||
"createTool.toolOutput.reserved": "Reserved",
|
||||
"createTool.toolOutput.reservedParameterDuplicateTip": "text, json, and files are reserved variables. Variables with these names cannot appear in the output schema.",
|
||||
"createTool.toolOutput.title": "Tool Output",
|
||||
"createTool.urlError": "Please enter a valid URL",
|
||||
"createTool.viewSchemaSpec": "View the OpenAPI-Swagger Specification",
|
||||
"customToolTip": "Learn more about Dify custom tools",
|
||||
"howToGet": "How to get",
|
||||
"includeToolNum": "{{num}} {{action}} included",
|
||||
"mcp.authorize": "Authorize",
|
||||
@ -183,25 +175,16 @@
|
||||
"mcp.update": "Update",
|
||||
"mcp.updateTime": "Updated",
|
||||
"mcp.updateTools": "Updating Tools...",
|
||||
"mcp.updating": "Updating",
|
||||
"noCustomTool.content": "Add and manage your custom tools here for building AI apps.",
|
||||
"noCustomTool.createTool": "Create Tool",
|
||||
"noCustomTool.title": "No custom tools!",
|
||||
"noSearchRes.content": "We couldn't find any tools that match your search.",
|
||||
"noSearchRes.reset": "Reset Search",
|
||||
"noSearchRes.title": "Sorry, no results!",
|
||||
"noTools": "No tools found",
|
||||
"notAuthorized": "Not authorized",
|
||||
"openInStudio": "Open in Studio",
|
||||
"setBuiltInTools.file": "file",
|
||||
"setBuiltInTools.info": "Info",
|
||||
"setBuiltInTools.infoAndSetting": "Info & Settings",
|
||||
"setBuiltInTools.number": "number",
|
||||
"setBuiltInTools.parameters": "parameters",
|
||||
"setBuiltInTools.required": "Required",
|
||||
"setBuiltInTools.setting": "Setting",
|
||||
"setBuiltInTools.string": "string",
|
||||
"setBuiltInTools.toolDescription": "Tool description",
|
||||
"swaggerAPIAsToolTip": "Learn more about Swagger API as Tool",
|
||||
"test.parameters": "Parameters",
|
||||
"test.parametersValue": "Parameters & Value",
|
||||
@ -213,7 +196,6 @@
|
||||
"thought.responseTitle": "Response",
|
||||
"thought.used": "Used",
|
||||
"thought.using": "Using",
|
||||
"title": "Tools",
|
||||
"toolNameUsageTip": "Tool call name for agent reasoning and prompting",
|
||||
"toolRemoved": "Tool removed",
|
||||
"type.builtIn": "Tools",
|
||||
|
||||
@ -1,29 +1,14 @@
|
||||
{
|
||||
"agentDetail.access.actionUnavailable": "Esta acción aún no está disponible.",
|
||||
"agentDetail.access.actions.monitoring": "Monitoreo",
|
||||
"agentDetail.access.copyAccessUrl": "Copiar URL de acceso",
|
||||
"agentDetail.access.copyFailed": "No se pudo copiar la referencia.",
|
||||
"agentDetail.access.copyReference": "Copiar referencia de {{name}}",
|
||||
"agentDetail.access.copyServiceEndpoint": "Copiar endpoint de la API de servicio",
|
||||
"agentDetail.access.description": "Todas las superficies desde las que se puede acceder a este agente.",
|
||||
"agentDetail.access.empty": "No hay puntos de acceso vinculados",
|
||||
"agentDetail.access.emptyDescription": "Este agente del roster aún no tiene referencias de aplicación o flujo de trabajo.",
|
||||
"agentDetail.access.entries.agentApp.description": "Aplicación de agente vinculada a este agente del roster.",
|
||||
"agentDetail.access.entries.agentApp.name": "Aplicación de agente",
|
||||
"agentDetail.access.entries.workflow.description": "Flujo de trabajo y referencia de nodo vinculados a este agente del roster.",
|
||||
"agentDetail.access.entries.workflow.name": "Nodo de flujo de trabajo",
|
||||
"agentDetail.access.entryCount_one": "{{count}} entrada",
|
||||
"agentDetail.access.entryCount_other": "{{count}} entradas",
|
||||
"agentDetail.access.groups.references.heading": "Referencias",
|
||||
"agentDetail.access.groups.references.label": "Referencias vinculadas",
|
||||
"agentDetail.access.learnMore": "Más información",
|
||||
"agentDetail.access.moreActions": "Más acciones para {{name}}",
|
||||
"agentDetail.access.serviceApi.actions.apiKey": "API Key",
|
||||
"agentDetail.access.serviceApi.actions.apiReference": "API Reference",
|
||||
"agentDetail.access.serviceApi.endpoint": "Endpoint de la API de servicio",
|
||||
"agentDetail.access.serviceApi.title": "API de servicio backend",
|
||||
"agentDetail.access.status.disabled": "Deshabilitado",
|
||||
"agentDetail.access.status.enabled": "Habilitado",
|
||||
"agentDetail.access.status.inService": "En servicio",
|
||||
"agentDetail.access.status.outOfService": "Fuera de servicio",
|
||||
"agentDetail.access.title": "Punto de acceso",
|
||||
@ -151,7 +136,6 @@
|
||||
"agentDetail.configure.prompt.insert.tenders": "Lista inicial de licitaciones",
|
||||
"agentDetail.configure.prompt.label": "Prompt",
|
||||
"agentDetail.configure.prompt.mention.davidHayes": "David Hayes",
|
||||
"agentDetail.configure.prompt.mention.label": "Mencionar",
|
||||
"agentDetail.configure.prompt.mention.priyaRamanathan": "Priya Ramanathan",
|
||||
"agentDetail.configure.prompt.placeholder": "Escribe las instrucciones aquí,",
|
||||
"agentDetail.configure.prompt.tip": "Define el rol del agente y describe su tarea habitual. Usa / para hacer referencia explícita a habilidades, archivos, herramientas y recuperaciones de conocimiento.",
|
||||
@ -183,7 +167,6 @@
|
||||
"agentDetail.configure.skills.add": "Agregar habilidad",
|
||||
"agentDetail.configure.skills.detail.contentRegion": "Contenido de los detalles de la habilidad",
|
||||
"agentDetail.configure.skills.detail.fileCount": "{{count}} ARCHIVOS",
|
||||
"agentDetail.configure.skills.detail.fileTreeLabel": "Archivos de la habilidad",
|
||||
"agentDetail.configure.skills.detail.files": "Archivos",
|
||||
"agentDetail.configure.skills.empty.description": "Las habilidades le dan al agente experiencia reutilizable que puede invocar mientras trabaja",
|
||||
"agentDetail.configure.skills.empty.title": "Aún no hay habilidades",
|
||||
@ -225,14 +208,11 @@
|
||||
"agentDetail.configure.tools.cliDialog.title": "Agregar una herramienta CLI",
|
||||
"agentDetail.configure.tools.cliTool": "Herramienta CLI",
|
||||
"agentDetail.configure.tools.credential.authOne": "Auth 1",
|
||||
"agentDetail.configure.tools.credential.endUserOAuth": "Usuario final · OAuth",
|
||||
"agentDetail.configure.tools.editAction": "Editar {{name}}",
|
||||
"agentDetail.configure.tools.empty.description": "Las herramientas permiten al agente actuar, como buscar en la web o invocar tus aplicaciones",
|
||||
"agentDetail.configure.tools.empty.title": "Aún no hay herramientas",
|
||||
"agentDetail.configure.tools.label": "Herramientas",
|
||||
"agentDetail.configure.tools.moreActions": "Más acciones para {{name}}",
|
||||
"agentDetail.configure.tools.pluginType": "Plugin",
|
||||
"agentDetail.configure.tools.preAuthorize": "Preautorizar",
|
||||
"agentDetail.configure.tools.removeAction": "Eliminar {{name}}",
|
||||
"agentDetail.configure.tools.removeProvider": "Eliminar todas las herramientas",
|
||||
"agentDetail.configure.tools.richTip": "Equipa a tu agente con los plugins de Dify. Consulta la <pluginDocLink>documentación</pluginDocLink>. Haz referencia explícita con / en el prompt.\nComo alternativa, siempre puedes indicar al agente que instale y autentique otras herramientas (por ejemplo, MCPs y herramientas CLI) mediante un chat de Build. Ten en cuenta que las herramientas configuradas mediante chats de Build NO aparecerán aquí, aunque seguirán estando disponibles para tu agente en adelante. Consulta la <buildDocLink>documentación</buildDocLink>.",
|
||||
@ -245,11 +225,9 @@
|
||||
"agentDetail.configure.tools.toolTabs.plugins": "Plugins",
|
||||
"agentDetail.configure.tools.toolTabs.workflow": "Workflow",
|
||||
"agentDetail.documentTitle": "Agente",
|
||||
"agentDetail.history": "Historial",
|
||||
"agentDetail.logs.description": "Los registros completos registran el estado de ejecución de la aplicación, incluidas las entradas del usuario, las respuestas del agente, la planificación y los usos de herramientas.",
|
||||
"agentDetail.logs.empty": "No se encontraron registros",
|
||||
"agentDetail.logs.filters.period.allTime": "Todo el tiempo",
|
||||
"agentDetail.logs.filters.period.label": "Periodo del registro",
|
||||
"agentDetail.logs.filters.period.last30days": "Últimos 30 días",
|
||||
"agentDetail.logs.filters.period.last7days": "Últimos 7 días",
|
||||
"agentDetail.logs.filters.search.label": "Buscar registros",
|
||||
@ -267,7 +245,6 @@
|
||||
"agentDetail.logs.filters.source.workflow": "Flujo de trabajo",
|
||||
"agentDetail.logs.learnMore": "Más información",
|
||||
"agentDetail.logs.loadFailed": "No se pudieron cargar los registros",
|
||||
"agentDetail.logs.loading": "Cargando registros…",
|
||||
"agentDetail.logs.notAvailable": "N/D",
|
||||
"agentDetail.logs.table.createdTime": "Fecha de creación",
|
||||
"agentDetail.logs.table.endUser": "Usuario final",
|
||||
@ -288,19 +265,7 @@
|
||||
"agentDetail.memorySettings.notConfigured": "No configurado",
|
||||
"agentDetail.memorySettings.scopeLabel": "Alcance de memoria",
|
||||
"agentDetail.memorySettings.title": "Memoria",
|
||||
"agentDetail.metadata.activeVersionLabel": "Versión activa",
|
||||
"agentDetail.metadata.appIdLabel": "ID de la aplicación",
|
||||
"agentDetail.metadata.description": "Campos del roster de solo lectura devueltos por el backend del agente.",
|
||||
"agentDetail.metadata.emptyValue": "No disponible",
|
||||
"agentDetail.metadata.scopeLabel": "Alcance",
|
||||
"agentDetail.metadata.scopes.roster": "Roster",
|
||||
"agentDetail.metadata.scopes.workflow_only": "Solo flujo de trabajo",
|
||||
"agentDetail.metadata.sourceLabel": "Fuente",
|
||||
"agentDetail.metadata.statusLabel": "Estado",
|
||||
"agentDetail.metadata.title": "Metadatos",
|
||||
"agentDetail.metadata.updatedAtLabel": "Actualizado el",
|
||||
"agentDetail.metadata.workflowIdLabel": "ID de flujo de trabajo",
|
||||
"agentDetail.metadata.workflowNodeIdLabel": "ID del nodo de flujo de trabajo",
|
||||
"agentDetail.monitoring.change": "{{value}} respecto al periodo anterior",
|
||||
"agentDetail.monitoring.dateRangeLabel": "Rango de fechas",
|
||||
"agentDetail.monitoring.description": "Realiza un seguimiento de la actividad, el coste y la calidad de interacción del agente reutilizable en todos los flujos de trabajo.",
|
||||
@ -334,15 +299,12 @@
|
||||
"agentDetail.monitoring.units.tokenPerSecond": "Token/s",
|
||||
"agentDetail.navigationLabel": "Navegación del agente",
|
||||
"agentDetail.publish": "Publicar",
|
||||
"agentDetail.publishSoon": "Próximamente",
|
||||
"agentDetail.sections.access": "Punto de acceso",
|
||||
"agentDetail.sections.configure": "Configurar",
|
||||
"agentDetail.sections.logs": "Registros",
|
||||
"agentDetail.sections.monitoring": "Monitoreo",
|
||||
"agentDetail.subtitle": "ID del agente: {{agentId}}",
|
||||
"agentDetail.title": "Agente",
|
||||
"agentDetail.type": "AGENTE",
|
||||
"agentDetail.versionHistory.active": "Activa",
|
||||
"agentDetail.versionHistory.empty": "Aún no hay versiones",
|
||||
"agentDetail.versionHistory.exitVersions": "Salir de versiones",
|
||||
"agentDetail.versionHistory.filter": "Filtrar versiones",
|
||||
@ -350,7 +312,6 @@
|
||||
"agentDetail.versionHistory.versionName": "Versión {{version}}",
|
||||
"agentDetail.versionHistory.viewOnly": "Solo lectura",
|
||||
"roster.createAgent": "Crear agente",
|
||||
"roster.createAgentOptions": "Opciones para crear agente",
|
||||
"roster.createDialog.description": "Crea un agente reutilizable en el roster de este workspace.",
|
||||
"roster.createDialog.title": "Crear agente",
|
||||
"roster.createForm.changeIcon": "Cambiar icono del agente",
|
||||
@ -377,9 +338,7 @@
|
||||
"roster.editDialog.title": "Editar agente",
|
||||
"roster.editInfo": "Editar información",
|
||||
"roster.empty": "Aún no hay agentes",
|
||||
"roster.emptyDescription": "Los agentes guardados en este workspace aparecerán aquí.",
|
||||
"roster.emptySearch": "No hay agentes coincidentes",
|
||||
"roster.emptySearchDescription": "Prueba con otro nombre de agente.",
|
||||
"roster.filters.all": "Todos",
|
||||
"roster.filters.drafts": "Borradores",
|
||||
"roster.filters.label": "Filtros de agente",
|
||||
@ -403,12 +362,6 @@
|
||||
"roster.saveToRosterSuccess": "Agent saved to roster.",
|
||||
"roster.searchLabel": "Buscar agentes",
|
||||
"roster.searchPlaceholder": "Buscar agentes por nombre…",
|
||||
"roster.sources.agent_app": "Aplicación de agente",
|
||||
"roster.sources.imported": "Importado",
|
||||
"roster.sources.system": "Sistema",
|
||||
"roster.sources.workflow": "Flujo de trabajo",
|
||||
"roster.status.active": "Activo",
|
||||
"roster.status.archived": "Archivado",
|
||||
"roster.tabs.agent": "Agente",
|
||||
"roster.tabs.human": "Humano",
|
||||
"roster.tabsLabel": "Tipo de roster",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user