'wizard.step1.subtitle':'Select the transport protocol your upstream service uses. This determines how Crank will communicate with your API and which configuration options are available in subsequent steps.',
'wizard.step1.rest_name':'REST / HTTP',
'wizard.step1.rest_tagline':'Standard HTTP verbs over a RESTful endpoint. The most broadly supported option.',
'wizard.step1.graphql_name':'GraphQL',
'wizard.step1.graphql_tagline':'Query and mutate a GraphQL schema. Supports queries and mutations over one fixed operation.',
'wizard.step1.grpc_name':'gRPC',
'wizard.step1.grpc_tagline':'High-performance binary RPC over HTTP/2 for unary calls to low-latency internal services.',
'wizard.step1.websocket_name':'WebSocket',
'wizard.step1.websocket_tagline':'Stateful event streams and push-oriented integrations normalized into bounded MCP streaming tools.',
'wizard.step1.soap_name':'SOAP',
'wizard.step1.soap_tagline':'Enterprise WSDL/XSD service contracts normalized into MCP tools with structured XML mapping.',
'wizard.step1.query':'Query',
'wizard.step1.mutation':'Mutation',
'wizard.step1.unary':'Unary',
'wizard.step1.tip_title':'You can change this later',
'wizard.step1.tip_body':'Switching protocol after configuring subsequent steps will clear schema and mapping data. Save your operation as a draft before experimenting. See protocol migration guide for details.',
'wizard.step1.community_protocol_note':'This Community build hides {protocols}. Commercial editions unlock those protocol surfaces.',
'wizard.step5.streaming_title':'Streaming execution in Community',
'wizard.step5.community_streaming_note':'This Community build keeps operations in unary mode. Window, session and async job tool families require a commercial edition.',
'wizard.step2.subtitle':'Choose an existing upstream or register a new one. Then define the specific endpoint path this operation will call.',
'wizard.required':'Required',
@@ -537,7 +517,6 @@ var TRANSLATIONS = {
'wizard.step2.path_template':'Path template',
'wizard.step2.path_hint':'Appended to the API host Base URL. Use {param} for path parameters.',
'wizard.step3.rest.label':'Request config',
'wizard.step3.graphql.label':'GQL operation',
'wizard.step3.rest.title':'HTTP method & format',
'wizard.step3.rest.subtitle':'Choose the HTTP method and request format. Crank converts MCP tool parameters into the API request body.',
'wizard.step3.rest.method_title':'HTTP method',
@@ -553,16 +532,6 @@ var TRANSLATIONS = {
'wizard.step3.rest.content_type_hint':'How the request body is encoded before sending it to the API.',
'wizard.step3.rest.accept':'Accept',
'wizard.step3.rest.accept_hint':'Response types accepted from the API server.',
'wizard.step3.graphql.title':'GraphQL operation',
'wizard.step3.graphql.subtitle':'Define the GraphQL operation this tool will execute. All requests are sent as HTTP POST to the endpoint configured in the previous step. Variables are populated from MCP tool arguments at runtime.',
'wizard.step3.graphql.doc_subtitle':'GraphQL document with typed variable declarations',
'wizard.step3.graphql.variables_title':'Variables are mapped in step 5',
'wizard.step3.graphql.variables_body':'Declare all variables in the query document using the $variable: Type syntax. In step 5 you will map MCP input fields to these variables. Crank serializes the final {"query","variables"} payload automatically.',
'wizard.step4.title':'Tool config',
'wizard.step4.subtitle':'Name your tool, write the LLM-facing description, and define the input/output schemas. The description is the primary signal the model uses when deciding whether to call this tool.',
'wizard.step4.identity_title':'Tool parameters',
@@ -679,23 +648,6 @@ var TRANSLATIONS = {
'wizard.test.window_truncated_note':'Results were truncated.',
'wizard.test.window_more_note':'More data is available if you continue from the streaming views.',
'wizard.test.window_incomplete_note':'The upstream stream ended before the configured window was fully collected.',
'wizard.test.websocket_window_completed':'WebSocket window test completed',
'wizard.test.websocket_window_completed_body':'Collected {items} WebSocket event(s) inside the bounded test window.',
'wizard.test.websocket_window_truncated_note':'The bounded window stopped after reaching the configured item or byte limit.',
'wizard.test.websocket_window_more_note':'The socket produced more events than this test window retained. Increase limits or switch to session mode if you need a longer stream.',
'wizard.test.websocket_window_incomplete_note':'The upstream socket closed before the bounded window finished collecting all configured events.',
'wizard.test.websocket_session_started':'WebSocket session test started',
'wizard.test.websocket_session_started_body':'WebSocket session {session_id} was created. Continue from Stream sessions after a short delay.',
'wizard.test.websocket_async_job_started':'WebSocket async job test started',
'wizard.test.websocket_async_job_started_body':'WebSocket async job {job_id} was created. Continue from the async jobs view for status and result.',
'wizard.test.websocket_failed':'WebSocket test returned errors',
'wizard.test.websocket_failed_body':'The socket test failed before Crank could collect a bounded result window.',
'wizard.test.websocket_failed_reconnect_body':'The upstream socket closed before enough events were collected, and the configured reconnect policy was exhausted.',
'wizard.test.websocket_failed_closed_body':'The upstream socket closed before the bounded test window completed.',
'wizard.test.session_started':'Session test started',
'wizard.test.session_started_body':'Session {session_id} was created. Check Stream sessions in a few seconds.',
'wizard.test.async_job_started':'Async job test started',
'wizard.test.async_job_started_body':'Async job {job_id} was created. Track status and result from the async jobs view.',
'wizard.test.no_response':'No test response yet',
'wizard.test.no_response_body':'Run a test first, then copy the response into the output example.',
'wizard.test.response_copied':'Response copied',
@@ -712,18 +664,6 @@ var TRANSLATIONS = {
'wizard.yaml.loaded_body':'The YAML configuration was loaded.',
'wizard.publish.done':'Operation published',
'wizard.publish.done_body':'Version {version} is now published and can be bound into agents.',
'wizard.grpc.discovery_title':'gRPC discovery moved to live descriptor flow',
'wizard.grpc.discovery_body':'Server reflection is not wired in this deployment. Save the draft, then use the descriptor-set tools in Step 5 to upload a real descriptor set and discover unary methods from the backend.',
'wizard.step1.subtitle':'Выберите протокол вашего API. От этого зависит, как Crank будет выполнять запросы и какие настройки будут доступны на следующих шагах.',
'wizard.step1.rest_name':'REST / HTTP',
'wizard.step1.rest_tagline':'Стандартные HTTP-методы для REST API. Самый универсальный вариант.',
'wizard.step1.graphql_name':'GraphQL',
'wizard.step1.graphql_tagline':'Операции по GraphQL-схеме. Поддерживаются Query и Mutation для одной фиксированной операции.',
'wizard.step1.grpc_name':'gRPC',
'wizard.step1.grpc_tagline':'Бинарный RPC поверх HTTP/2 для быстрых внутренних сервисов.',
'wizard.step1.websocket_name':'WebSocket',
'wizard.step1.websocket_tagline':'Долгие соединения и потоковые события, оформленные как MCP инструменты.',
'wizard.step1.soap_name':'SOAP',
'wizard.step1.soap_tagline':'SOAP-сервисы по WSDL/XSD, оформленные как MCP инструменты.',
'wizard.step1.query':'Query',
'wizard.step1.mutation':'Mutation',
'wizard.step1.unary':'Unary',
'wizard.step1.tip_title':'Это можно изменить позже',
'wizard.step1.tip_body':'Если сменить протокол после настройки следующих шагов, схемы и связи полей будут очищены. Перед экспериментами сохраните операцию.',
'wizard.step1.community_protocol_note':'Ограничение Community версии. В редакции Community протоколы {protocols} недоступны. Если вы заинтересованы в работе с данными протоколами, обратитесь к разработчикам для приобретения коммерческой версии или воспользуйтесь облачным решением.',
'wizard.step5.community_streaming_note':'В Community операции выполняются в обычном режиме запрос-ответ. Потоковые сценарии, сессии и фоновые задания требуют коммерческую редакцию.',
'wizard.step2.title':'Выберите API-хост и путь',
'wizard.step2.subtitle':'Выберите существующий API-хост или добавьте новый. Затем задайте путь, который будет вызывать эта операция.',
'wizard.required':'Обязательно',
@@ -1388,7 +1303,6 @@ var TRANSLATIONS = {
'wizard.step2.path_template':'Шаблон пути',
'wizard.step2.path_hint':'Добавляется к базовому URL API-хоста. Используйте {param} для параметров пути.',
'wizard.step3.rest.label':'Настройки запроса',
'wizard.step3.graphql.label':'GQL операция',
'wizard.step3.rest.title':'HTTP метод и формат',
'wizard.step3.rest.subtitle':'Выберите HTTP-метод и формат запроса. Crank подставит параметры MCP инструмента в запрос к API.',
'wizard.step3.rest.method_title':'HTTP метод',
@@ -1404,16 +1318,6 @@ var TRANSLATIONS = {
'wizard.step3.rest.content_type_hint':'В каком формате отправлять данные в API.',
'wizard.step3.rest.accept':'Accept',
'wizard.step3.rest.accept_hint':'Какой формат ответа ожидать от API.',
'wizard.step3.graphql.title':'GraphQL операция',
'wizard.step3.graphql.subtitle':'Определите GraphQL-операцию, которую будет выполнять этот инструмент. Все запросы отправляются как HTTP POST на путь, настроенный на предыдущем шаге. Переменные заполняются из аргументов MCP инструмента во время выполнения.',
'wizard.step3.graphql.type_title':'Тип операции',
'wizard.step3.graphql.type_subtitle':'Вид GraphQL-операции. Подписки не поддерживаются.',
'wizard.step3.graphql.query_desc':'Получение данных без побочных эффектов',
'wizard.step3.graphql.mutation_desc':'Создание, изменение или удаление данных',
'wizard.step3.graphql.doc_subtitle':'GraphQL-документ с типизированными объявлениями переменных',
'wizard.step3.graphql.variables_title':'Переменные связываются на шаге 5',
'wizard.step3.graphql.variables_body':'Объявите все переменные в документе запроса в формате $variable: Type. На шаге 5 вы свяжете поля MCP инструмента с этими переменными.',
'wizard.step4.title':'Настройки инструмента',
'wizard.step4.subtitle':'Задайте имя инструмента, описание для LLM и определите входную/выходную схему. Описание — главный сигнал, по которому модель решает, вызывать ли этот инструмент.',
'wizard.test.window_truncated_note':'Результат был усечен.',
'wizard.test.window_more_note':'Доступно продолжение, если перейти к streaming-представлениям.',
'wizard.test.window_incomplete_note':'Upstream-поток завершился раньше, чем удалось собрать всё окно.',
'wizard.test.websocket_window_completed':'WebSocket оконный тест завершен',
'wizard.test.websocket_window_completed_body':'В пределах ограниченного тестового окна собрано {items} WebSocket event(s).',
'wizard.test.websocket_window_truncated_note':'Ограниченное окно остановилось после достижения лимита по элементам или байтам.',
'wizard.test.websocket_window_more_note':'Сокет выдал больше событий, чем сохранило это тестовое окно. Увеличьте лимиты или переключитесь в session mode, если нужен более длинный поток.',
'wizard.test.websocket_window_incomplete_note':'Upstream WebSocket закрылся до того, как bounded окно успело собрать все настроенные события.',
'wizard.test.websocket_session_started_body':'WebSocket session {session_id} создана. Продолжайте в разделе Stream sessions через короткую паузу.',
'wizard.test.websocket_async_job_started':'WebSocket async job тест запущен',
'wizard.test.websocket_async_job_started_body':'Создан WebSocket async job {job_id}. Дальше отслеживайте статус и результат в представлении async jobs.',
'wizard.test.websocket_failed':'WebSocket тест завершился с ошибками',
'wizard.test.websocket_failed_body':'Тест сокета завершился до того, как Crank успел собрать bounded result window.',
'wizard.test.websocket_failed_reconnect_body':'Upstream WebSocket закрылся раньше, чем удалось собрать достаточно событий, и настроенная reconnect policy была исчерпана.',
'wizard.test.websocket_failed_closed_body':'Upstream WebSocket закрылся до завершения bounded test window.',
'wizard.publish.done_body':'Версия {version} опубликована и теперь может быть привязана к агентам.',
'wizard.grpc.discovery_title':'gRPC discovery переведен в live descriptor flow',
'wizard.grpc.discovery_body':'Server reflection в этом развертывании не подключен. Сохраните операцию и используйте descriptor set на шаге 5, чтобы загрузить описание сервиса и открыть unary methods.',
'wizard.grpc.no_methods':'Unary RPC methods не найдены.',
'wizard.grpc.fields_unresolved':'Поля не разрешены.',
'wizard.grpc.fields_unresolved_body':'Import-ы или внешние типы не разворачиваются на стороне клиента.',
'wizard.grpc.services_found':'Найдено {services_label} и {methods_label}.',
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.