From 48c032ccbe27bf36ddb597cbeeefcaa4d29704bf Mon Sep 17 00:00:00 2001 From: wizardchen Date: Tue, 28 Apr 2026 17:51:33 +0800 Subject: [PATCH] chore(i18n): align en-US/ko-KR/ru-RU locales with zh-CN Sync key structure of non-Chinese locale files with zh-CN.ts as the source of truth: add missing keys (translated into the target language) and remove keys that no longer exist in zh-CN. - en-US: +1 (knowledgeEditor.wikiBrowser.aliases) - ko-KR: +110 / -9 (drop confluence/github/web_crawler entries that don't exist in zh-CN; add chat.wiki*, auth.oidc*, agent.editor.web*, knowledgeEditor.indexing.*, agentEditor.{im.wechat*,desc.web*, llmCallTimeout.*}, datasource.* prereq/scheduleHuman/resourceType/ relative-time keys, etc.) - ru-RU: +108 / -9 (same shape as ko-KR, minus auth.oidc which already existed) --- frontend/src/i18n/locales/en-US.ts | 1 + frontend/src/i18n/locales/ko-KR.ts | 146 +++++++++++++++++++++++++++-- frontend/src/i18n/locales/ru-RU.ts | 144 +++++++++++++++++++++++++--- 3 files changed, 271 insertions(+), 20 deletions(-) diff --git a/frontend/src/i18n/locales/en-US.ts b/frontend/src/i18n/locales/en-US.ts index 76f19a909..a717600fa 100755 --- a/frontend/src/i18n/locales/en-US.ts +++ b/frontend/src/i18n/locales/en-US.ts @@ -1651,6 +1651,7 @@ export default { emptyDesc: 'Upload documents with Wiki enabled to auto-generate knowledge pages', selectPageHint: 'Select a page from the left to view its content', version: 'v{ver}', + aliases: 'Aliases', linksTo: 'Links to', linkedFrom: 'Linked from', sources: 'Source documents', diff --git a/frontend/src/i18n/locales/ko-KR.ts b/frontend/src/i18n/locales/ko-KR.ts index 42f78c017..3eb4e8dc9 100755 --- a/frontend/src/i18n/locales/ko-KR.ts +++ b/frontend/src/i18n/locales/ko-KR.ts @@ -406,6 +406,24 @@ export default { knowledgeBaseCount: "총 {count}개 지식베이스", noKnowledgeBases: "사용 가능한 지식베이스 없음", rawOutputLabel: "원시 출력", + wikiWritePageTitle: "Wiki 페이지 작성", + wikiReplaceTextTitle: "Wiki 텍스트 교체", + wikiRenamePageTitle: "Wiki 페이지 이름 변경", + wikiDeletePageTitle: "Wiki 페이지 삭제", + wikiActionCreated: "생성됨", + wikiActionUpdated: "업데이트됨", + wikiActionRenamed: "이름 변경됨", + wikiActionDeleted: "삭제됨", + wikiFieldSlug: "페이지 경로", + wikiFieldTitle: "제목", + wikiFieldPageType: "유형", + wikiFieldSummary: "요약", + wikiFieldOldText: "원본 텍스트", + wikiFieldNewText: "새 텍스트", + wikiFieldOldSlug: "원본 경로", + wikiFieldNewSlug: "새 경로", + wikiFieldAffectedPages: "영향을 받는 페이지", + wikiAffectedCount: "{count}개 페이지의 링크가 업데이트되었습니다", selectKnowledgeBaseWarning: "최소 하나의 지식베이스를 선택하세요", processError: "처리 오류", sessionExcerpt: "대화 발췌", @@ -619,6 +637,7 @@ export default { providerNamePlaceholder: "예: 프로덕션 Bing 검색", providerTypeLabel: "프로바이더 유형", providerDescLabel: "설명", + providerDescPlaceholder: "선택 사항. 예: 테스트 환경용", engineIdLabel: "엔진 ID", setAsDefault: "기본으로 설정", free: "무료", @@ -665,6 +684,8 @@ export default { providerCreated: "검색 엔진 프로바이더가 생성되었습니다", providerUpdated: "검색 엔진 프로바이더가 업데이트되었습니다", providerDeleted: "검색 엔진 프로바이더가 삭제되었습니다", + testSuccess: "연결 테스트 성공", + testFailed: "연결 테스트 실패", }, }, vectorStoreSettings: { @@ -1027,6 +1048,12 @@ export default { loginSuccess: "로그인 성공!", loginFailed: "로그인 실패", loggingIn: "로그인 중...", + oidcLogin: "OIDC로 로그인", + oidcLoginWithProvider: "{provider}(으)로 로그인", + redirectingToOIDC: "ID 공급자로 이동하는 중...", + orContinueWith: "또는 다음 방법으로 계속", + oidcLoginFailed: "OIDC 로그인 실패", + oidcStateMismatch: "OIDC 상태 검증 실패, 다시 시도하세요", register: "회원가입", registering: "가입 중...", createAccount: "계정 생성", @@ -1304,7 +1331,11 @@ export default { suggestedPrompts: "추천 질문", mode: "작동 모드", webSearch: "웹 검색", + webSearchProvider: "검색 엔진", + webSearchProviderPlaceholder: "기본 검색 엔진 사용", webSearchMaxResults: "최대 검색 결과 수", + webFetchEnabled: "페이지 콘텐츠 자동 가져오기", + webFetchTopN: "가져올 페이지 수", knowledgeBases: "관련 지식베이스", allKnowledgeBases: "모든 지식베이스", allKnowledgeBasesDesc: "에이전트은 모든 지식베이스에 액세스할 수 있습니다.", @@ -1319,6 +1350,7 @@ export default { retrieveKBOnlyWhenMentioned: "언급된 경우에만 검색", retrieveKBOnlyWhenMentionedDesc: "꺼짐: 구성된 지식베이스를 자동으로 검색합니다. 켜짐: 사용자 {'@'}이 언급한 경우에만 검색합니다.", + retrievalSectionTitle: "검색 전략", rerankModel: "리랭크 모델", rerankModelDesc: "지식베이스 검색 결과를 재정렬하여 답변 정확도를 높입니다", rerankModelPlaceholder: "ReRank 모델을 선택하세요.", @@ -2108,6 +2140,7 @@ export default { share: "공유관리", storage: "스토리지 엔진", datasource: "데이터 소스", + indexing: "인덱싱 전략", }, basic: { title: "기본 정보", @@ -2140,7 +2173,26 @@ export default { granularityStandardHint: "주요 주체 + 상세히 논의된 부수 엔티티/개념. 지나가듯 언급된 용어는 생략합니다. 권장 기본값입니다.", granularityExhaustiveHint: "스쳐 지나가는 기술 스택 언급을 포함해 명명된 모든 엔티티와 개념을 추출합니다. KB를 용어집으로 사용할 때 적합합니다.", }, + indexing: { + title: "인덱싱 전략", + description: "문서 업로드 후 처리 파이프라인을 구성합니다. 각 인덱싱 방식을 독립적으로 켜거나 끌 수 있습니다", + searchTitle: "RAG 검색", + searchDesc: "문서를 청크 분할, 벡터화, 키워드 인덱싱하여 하이브리드 검색을 지원합니다", + wikiTitle: "Wiki 지식베이스", + wikiDesc: "상호 연결된 Wiki 지식 페이지를 자동 생성하여 구조화된 지식 체계를 구축합니다", + graphTitle: "지식 그래프", + graphDesc: "엔티티와 관계를 추출하여 지식 그래프를 구축하고 그래프 검색을 지원합니다", + atLeastOne: "최소 하나의 인덱싱 전략을 활성화해야 합니다", + embeddingRequired: "RAG 검색에는 Embedding 모델 설정이 필요합니다", + wikiModelRequired: "Wiki 지식베이스에는 합성 모델 설정이 필요합니다", + lockedTip: "지식베이스에 콘텐츠가 있어 인덱싱 전략을 변경할 수 없습니다. 변경하려면 먼저 지식베이스를 비우세요.", + rebuildConfirmTitle: "인덱스 재구축", + rebuildConfirmBody: "인덱싱 전략이 변경되었습니다. 기존 {count}개 문서를 재처리하시겠습니까? 시간이 다소 걸릴 수 있습니다.", + rebuildSuccess: "재구축 작업이 제출되었습니다. 총 {count}개 문서", + rebuildSkip: "데이터 소스에서 나중에 수동으로 재구축할 수 있습니다", + }, wikiBrowser: { + viewInGraph: "그래프에서 보기", tabDocuments: "문서", tabWiki: "Wiki", tabGraph: "그래프", @@ -2158,6 +2210,7 @@ export default { emptyDesc: "Wiki를 활성화하고 문서를 업로드하면 지식 페이지가 자동 생성됩니다", selectPageHint: "왼쪽에서 페이지를 선택하여 내용을 확인하세요", version: "v{ver}", + aliases: "별칭", linksTo: "링크 대상", linkedFrom: "링크 출처", sources: "원본 문서", @@ -3439,6 +3492,7 @@ export default { notFound: '콘텐츠를 찾을 수 없습니다', loadFailed: '로드 실패', chunkId: '청크 ID', + noKbForWiki: '연결된 지식베이스를 식별할 수 없어 Wiki를 열 수 없습니다', }, toolSummary: { getDocument: '문서 조회: {title}', @@ -3519,7 +3573,10 @@ export default { maxIterations: 'Agent가 작업 수행 시 최대 추론 단계 수', kbScope: '에이전트가 접근할 수 있는 지식베이스 범위를 선택하세요', webSearch: '활성화하면 에이전트가 인터넷에서 정보를 검색할 수 있습니다', + webSearchProvider: '이 에이전트의 검색 엔진을 지정합니다. 비워두면 기본 검색 엔진을 사용합니다', webSearchMaxResults: '검색당 반환되는 최대 결과 수', + webFetchEnabled: 'Rerank 후 상위 웹 페이지의 전체 콘텐츠를 자동으로 가져와 답변 품질을 향상시킵니다', + webFetchTopN: 'Rerank 후 전체 콘텐츠를 가져올 최대 웹 페이지 수', retrievalSection: '지식베이스 검색 및 순위 매개변수 설정', queryExpansion: '쿼리 용어를 자동으로 확장하여 재현율 향상', embeddingTopK: '벡터 검색에서 반환되는 최대 결과 수', @@ -3534,11 +3591,13 @@ export default { im: { title: "IM 통합", description: "에이전트를 Feishu, Slack, Telegram, DingTalk, Mattermost 등 인스턴트 메시징 플랫폼에 연결", + wecom: "WeCom", feishu: "Feishu", slack: "Slack", telegram: "Telegram", dingtalk: "DingTalk", mattermost: "Mattermost", + wechat: "WeChat", addChannel: "채널 추가", editChannel: "채널 편집", deleteConfirm: "이 채널을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", @@ -3575,6 +3634,13 @@ export default { sessionModeUser: "사용자별 (기본)", sessionModeThread: "스레드별", sessionModeHint: "사용자 모드: 각 사용자별 독립 대화. /clear로 새 대화 시작. 스레드 모드: 메시지 스레드별 독립 대화. 같은 스레드에서 여러 명이 함께 대화 가능.", + wechatScanBind: "QR 코드를 스캔하여 WeChat 연결", + wechatScanning: "WeChat으로 QR 코드를 스캔하세요", + wechatBindSuccess: "WeChat이 연결되었습니다", + wechatRebind: "다시 연결", + wechatHint: "iOS WeChat 8.0.70+ 버전이 필요하며, 1:1 채팅 메시지만 지원됩니다", + wechatQRExpired: "QR 코드가 만료되었습니다. 다시 가져오세요", + wechatBinding: "연결 중...", }, tools: { thinking: '사고', @@ -3667,6 +3733,12 @@ export default { selectDesc: '활성화할 MCP 서비스를 선택하세요', selectPlaceholder: 'MCP 서비스 선택', }, + llmCallTimeout: { + label: "LLM 호출 타임아웃", + desc: "단일 LLM 호출의 최대 대기 시간(초)입니다. 이 시간을 초과하면 호출이 중단됩니다", + hint: "0은 무제한 대기를 의미합니다 (권장하지 않음)", + placeholder: "초 단위로 입력하세요. 권장 범위 60-600", + }, imageUpload: { navLabel: '멀티모달', sectionTitle: '멀티모달 설정', @@ -3821,6 +3893,8 @@ export default { syncDeletions: "삭제 동기화 (소스에서 삭제 시 지식베이스에서도 삭제)", createAndSync: "생성 후 즉시 동기화", createSuccess: "데이터 소스가 생성되었습니다", + createAndSyncSuccess: "데이터 소스가 생성되었으며 동기화 작업이 제출되었습니다", + createButSyncFailed: "데이터 소스가 생성되었으나 동기화 트리거에 실패했습니다", updateSuccess: "데이터 소스가 업데이트되었습니다", saveFailed: "저장 실패", step: { @@ -3841,37 +3915,69 @@ export default { }, logMetric: { total: "총계", + created: "추가", + updated: "업데이트", + deleted: "삭제", + skipped: "건너뜀", failed: "실패", }, + logSummary: { + total: "총 횟수", + success: "성공", + failed: "실패", + items: "동기화 항목", + }, + logLatest: "최신", + logDetail: { + startTime: "시작 시간", + endTime: "종료 시간", + duration: "소요 시간", + }, connector: { feishu: "페이슈 (Feishu)", notion: "Notion", - confluence: "Confluence", yuque: "위큐 (Yuque)", - github: "GitHub", - web_crawler: "웹 크롤러", }, connectorDesc: { feishu: "페이슈 위키에서 문서, 스프레드시트, 파일 동기화", notion: "Notion에서 페이지 및 데이터베이스 동기화", - confluence: "Confluence에서 스페이스 및 페이지 동기화", yuque: "위큐 지식베이스에서 문서 동기화", - github: "GitHub 리포지토리에서 문서 및 위키 동기화", - web_crawler: "사이트맵을 통해 웹사이트 크롤링", }, field: { appId: "App ID", appSecret: "App Secret", integrationToken: "Integration Token", baseUrl: "Base URL", - email: "이메일", apiToken: "API Token", - personalToken: "Personal Access Token", - sitemapUrl: "사이트맵 URL", + baseUrlHint: "비워두면 Yuque 퍼블릭 클라우드 https://www.yuque.com 를 사용합니다. Yuque Enterprise 또는 사설 배포를 사용하는 경우 기업 도메인(예: https://your-company.yuque.com)을 입력하세요", }, comingSoon: "곧 지원 예정", docHint: "다음에서 인증 정보를 받으세요:", + copyUrl: "URL 복사", + copied: "복사됨", pleaseTestFirst: "먼저 연결을 테스트하세요", + prereqTitle: "사용 전 다음 설정을 모두 완료하세요 (필수)", + prereqBarText: "처음 사용하시나요? 클릭하여 Feishu 앱 설정 가이드를 확인하세요", + prereqBarText_yuque: "처음 사용하시나요? 클릭하여 Yuque Token 설정 가이드를 확인하세요", + prereqStep1Brief_yuque: "Yuque 개인 Token 생성", + prereqStep1Desc_yuque: "Yuque 로그인 → 프로필 아이콘 → 설정 → Token → 새 Token 만들기", + prereqStep2Brief_yuque: "Token에 필요한 권한 부여", + prereqStep2Desc_yuque: "최소한 repo:read 와 doc:read 를 선택하세요 (지식베이스 및 문서 콘텐츠 읽기)", + prereqStep3Brief_yuque: "(선택) Enterprise 사용 시 Base URL 입력", + prereqStep3Desc_yuque: "퍼블릭 클라우드 사용자는 입력하지 않아도 됩니다. Yuque Enterprise 또는 사설 배포 시 기업 도메인을 입력하세요", + prereqOpenConsole_yuque: "Yuque Token 설정으로 이동", + prereqBotBrief: "앱에 '봇' 기능 추가", + prereqBotDesc: "오픈 플랫폼 → 앱 기능 추가 → 봇 → 버전 생성 후 게시", + prereqBotLabel: "1. 앱에 '봇' 기능을 추가하세요 (그렇지 않으면 지식베이스에서 앱을 찾을 수 없음):", + prereqBotStep1: "Feishu 오픈 플랫폼에서 앱을 열고 왼쪽 '앱 기능 추가'를 클릭하세요", + prereqBotStep2: "'봇'을 선택하고 추가를 확인하세요", + prereqBotStep3: "새 버전을 만들고 게시하세요 (또는 테스트 기업에서 디버그)", + prereqPermBrief: "API 권한 활성화", + prereqPermLabel: "2. 앱에 다음 API 권한을 활성화하세요:", + prereqOpenConsole: "Feishu 오픈 플랫폼 설정으로 이동", + prereqMemberBrief: "그룹 채팅을 통해 지식베이스 멤버로 추가", + prereqMemberDesc: "그룹 채팅 생성 → 앱을 그룹 봇으로 추가 → 그룹 채팅을 지식베이스 멤버로 추가", + prereqMemberLabel: "3. 그룹 채팅을 통해 앱을 지식베이스 멤버로 추가하세요 (지식베이스에서 앱을 직접 찾을 수 없음):", back: "이전", next: "다음", save: "저장", @@ -3880,5 +3986,27 @@ export default { schedule6h: "6시간마다", schedule12h: "12시간마다", schedule24h: "매일", + scheduleHuman: { + '30min': "30분마다", + '1h': "매시간", + '6h': "6시간마다", + '12h': "12시간마다", + '24h': "매일", + }, + addCard: "데이터 소스 추가", + wikiSpace: "위키 공간", + resourceType: { + wikiSpace: "위키 공간", + docCategory: "문서 분류", + book: "Yuque 지식베이스", + }, + neverSynced: "동기화되지 않음", + justNow: "방금", + minutesAgo: "{n}분 전", + hoursAgo: "{n}시간 전", + daysAgo: "{n}일 전", + syncResultCreated: "+{n}", + syncResultUpdated: "~{n}", + syncResultDeleted: "-{n}", }, }; diff --git a/frontend/src/i18n/locales/ru-RU.ts b/frontend/src/i18n/locales/ru-RU.ts index 457df95be..44b8eb260 100755 --- a/frontend/src/i18n/locales/ru-RU.ts +++ b/frontend/src/i18n/locales/ru-RU.ts @@ -360,7 +360,11 @@ export default { suggestedPrompts: 'Suggested Prompts', mode: 'Running Mode', webSearch: 'Web Search', + webSearchProvider: 'Поисковый движок', + webSearchProviderPlaceholder: 'Использовать поисковый движок по умолчанию', webSearchMaxResults: 'Max Search Results', + webFetchEnabled: 'Автоматически загружать содержимое страниц', + webFetchTopN: 'Количество загружаемых страниц', knowledgeBases: 'Knowledge Bases', allKnowledgeBases: 'All Knowledge Bases', allKnowledgeBasesDesc: 'Agent can access all knowledge bases', @@ -374,6 +378,7 @@ export default { sharedKnowledgeBases: 'Collaborative Knowledge Bases', retrieveKBOnlyWhenMentioned: 'Retrieve Only When Mentioned', retrieveKBOnlyWhenMentionedDesc: "Off: auto-retrieve configured KBs; On: retrieve only when user {'@'} mentions", + retrievalSectionTitle: 'Стратегия поиска', rerankModel: 'ReRank Model', rerankModelDesc: 'Used to rerank knowledge base retrieval results for better accuracy', rerankModelPlaceholder: 'Select ReRank Model', @@ -737,6 +742,7 @@ export default { providerNamePlaceholder: 'Напр., Продакшн Bing Поиск', providerTypeLabel: 'Тип провайдера', providerDescLabel: 'Описание', + providerDescPlaceholder: 'Опционально, например: для тестовой среды', engineIdLabel: 'ID движка', setAsDefault: 'Установить по умолчанию', free: 'Бесплатно', @@ -784,6 +790,8 @@ export default { providerCreated: 'Поисковый провайдер создан', providerUpdated: 'Поисковый провайдер обновлён', providerDeleted: 'Поисковый провайдер удалён', + testSuccess: 'Подключение успешно', + testFailed: 'Подключение не удалось', } }, vectorStoreSettings: { @@ -1787,7 +1795,8 @@ export default { asr: 'Аудио', storage: 'Storage Engine', datasource: 'Источники данных', - share: 'Sharing' + share: 'Sharing', + indexing: 'Стратегия индексации', }, basic: { title: 'Основная информация', @@ -1819,7 +1828,26 @@ export default { granularityStandardHint: 'Главные темы плюс подробно обсуждаемые сущности/концепции. Пропускает упомянутые вскользь. Рекомендуемое значение.', granularityExhaustiveHint: 'Извлекает все именованные сущности и концепции, включая мимоходом упомянутые технологии. Подходит для глоссария.', }, + indexing: { + title: 'Стратегия индексации', + description: 'Настройте конвейер обработки после загрузки документов. Каждый способ индексации можно включить или выключить независимо', + searchTitle: 'RAG-поиск', + searchDesc: 'Разбивает документы на чанки, векторизует и индексирует ключевые слова, поддерживая гибридный поиск', + wikiTitle: 'Wiki-база знаний', + wikiDesc: 'Автоматически создаёт взаимосвязанные Wiki-страницы и формирует структурированную систему знаний', + graphTitle: 'Граф знаний', + graphDesc: 'Извлекает сущности и связи, строит граф знаний и поддерживает поиск по графу', + atLeastOne: 'Должна быть включена хотя бы одна стратегия индексации', + embeddingRequired: 'RAG-поиск требует настройки модели Embedding', + wikiModelRequired: 'Wiki-база знаний требует настройки модели синтеза', + lockedTip: 'В базе знаний уже есть содержимое, изменение стратегии индексации недоступно. Чтобы изменить, сначала очистите базу знаний.', + rebuildConfirmTitle: 'Перестроить индекс', + rebuildConfirmBody: 'Стратегия индексации изменена. Переобработать существующие {count} документов? Это может занять некоторое время.', + rebuildSuccess: 'Задача перестроения отправлена, всего {count} документов', + rebuildSkip: 'Перестроение можно запустить вручную позже в источниках данных', + }, wikiBrowser: { + viewInGraph: 'Открыть в графе', tabDocuments: 'Документы', tabWiki: 'Wiki', tabGraph: 'Граф', @@ -1837,6 +1865,7 @@ export default { emptyDesc: 'Загрузите документы с включённым Wiki для автоматической генерации страниц', selectPageHint: 'Выберите страницу слева для просмотра', version: 'v{ver}', + aliases: 'Псевдонимы', linksTo: 'Ссылается на', linkedFrom: 'Цитируется', sources: 'Исходные документы', @@ -2235,6 +2264,24 @@ export default { knowledgeBaseCount: '{count} баз знаний', noKnowledgeBases: 'Нет доступных баз знаний', rawOutputLabel: 'Исходный вывод', + wikiWritePageTitle: 'Запись страницы Wiki', + wikiReplaceTextTitle: 'Замена текста Wiki', + wikiRenamePageTitle: 'Переименование страницы Wiki', + wikiDeletePageTitle: 'Удаление страницы Wiki', + wikiActionCreated: 'Создано', + wikiActionUpdated: 'Обновлено', + wikiActionRenamed: 'Переименовано', + wikiActionDeleted: 'Удалено', + wikiFieldSlug: 'Путь страницы', + wikiFieldTitle: 'Заголовок', + wikiFieldPageType: 'Тип', + wikiFieldSummary: 'Резюме', + wikiFieldOldText: 'Исходный текст', + wikiFieldNewText: 'Новый текст', + wikiFieldOldSlug: 'Исходный путь', + wikiFieldNewSlug: 'Новый путь', + wikiFieldAffectedPages: 'Затронутые страницы', + wikiAffectedCount: 'Ссылки на {count} страницах обновлены', selectKnowledgeBaseWarning: 'Пожалуйста, выберите хотя бы одну базу знаний', processError: 'Ошибка обработки', sessionExcerpt: 'Выдержка из сессии', @@ -3053,7 +3100,8 @@ export default { loading: 'Загрузка...', notFound: 'Содержимое не найдено', loadFailed: 'Ошибка загрузки', - chunkId: 'ID фрагмента' + chunkId: 'ID фрагмента', + noKbForWiki: 'Не удалось определить связанную базу знаний, Wiki не может быть открыта', }, toolSummary: { getDocument: 'Получить документ: {title}', @@ -3134,7 +3182,10 @@ export default { maxIterations: 'Максимальное количество шагов рассуждения при выполнении задач', kbScope: 'Выберите область баз знаний, доступных агенту', webSearch: 'При включении агент может искать информацию в интернете', + webSearchProvider: 'Укажите поисковый движок для этого агента. Если оставить пустым, будет использоваться движок по умолчанию', webSearchMaxResults: 'Максимальное количество результатов на один поиск', + webFetchEnabled: 'Автоматически загружать полное содержимое лучших страниц после Rerank для повышения качества ответов', + webFetchTopN: 'Максимальное количество страниц для загрузки полного содержимого после Rerank', retrievalSection: 'Настройка параметров поиска и ранжирования базы знаний', queryExpansion: 'Автоматическое расширение поисковых запросов для улучшения полноты', embeddingTopK: 'Максимальное количество результатов векторного поиска', @@ -3220,11 +3271,13 @@ export default { im: { title: 'Интеграция IM', description: 'Подключите агента к платформам мгновенных сообщений, таким как Feishu, Slack, Telegram, DingTalk и Mattermost', + wecom: 'WeCom', feishu: 'Feishu', slack: 'Slack', telegram: 'Telegram', dingtalk: 'DingTalk', mattermost: 'Mattermost', + wechat: 'WeChat', addChannel: 'Добавить канал', editChannel: 'Редактировать канал', deleteConfirm: 'Вы уверены, что хотите удалить этот канал? Это действие не может быть отменено.', @@ -3261,6 +3314,13 @@ export default { sessionModeUser: 'По пользователю (по умолчанию)', sessionModeThread: 'По потоку', sessionModeHint: 'Режим пользователя: отдельный диалог для каждого пользователя. /clear для нового диалога. Режим потока: отдельный диалог для каждого потока. Несколько человек могут общаться в одном потоке.', + wechatScanBind: 'Сканировать QR-код для привязки WeChat', + wechatScanning: 'Отсканируйте QR-код в WeChat', + wechatBindSuccess: 'WeChat успешно привязан', + wechatRebind: 'Перепривязать', + wechatHint: 'Требуется iOS WeChat 8.0.70+, поддерживаются только сообщения 1:1', + wechatQRExpired: 'Срок действия QR-кода истёк, получите новый', + wechatBinding: 'Привязка...', }, agentType: { label: 'Тип агента', @@ -3282,6 +3342,12 @@ export default { selectDesc: 'Выберите MCP-сервисы для включения', selectPlaceholder: 'Выберите MCP-сервисы' }, + llmCallTimeout: { + label: 'Таймаут вызова LLM', + desc: 'Максимальное время ожидания одного вызова LLM (в секундах). По истечении этого времени вызов прерывается', + hint: '0 означает бесконечное ожидание (не рекомендуется)', + placeholder: 'Введите количество секунд, рекомендуемый диапазон 60-600', + }, imageUpload: { navLabel: 'Мультимодальность', sectionTitle: 'Настройка мультимодальности', @@ -3727,6 +3793,8 @@ export default { syncDeletions: 'Синхронизировать удаления (удалять знания при удалении в источнике)', createAndSync: 'Создать и синхронизировать', createSuccess: 'Источник данных создан', + createAndSyncSuccess: 'Источник данных создан, задача синхронизации поставлена в очередь', + createButSyncFailed: 'Источник данных создан, но не удалось запустить синхронизацию', updateSuccess: 'Источник данных обновлён', saveFailed: 'Не удалось сохранить', step: { @@ -3747,37 +3815,69 @@ export default { }, logMetric: { total: 'Всего', + created: 'Добавлено', + updated: 'Обновлено', + deleted: 'Удалено', + skipped: 'Пропущено', failed: 'ошибок', }, + logSummary: { + total: 'Всего запусков', + success: 'Успешно', + failed: 'Ошибки', + items: 'Элементов синхронизации', + }, + logLatest: 'Последняя', + logDetail: { + startTime: 'Время начала', + endTime: 'Время окончания', + duration: 'Длительность', + }, connector: { feishu: 'Feishu (Фэйшу)', notion: 'Notion', - confluence: 'Confluence', yuque: 'Yuque (Юйцюэ)', - github: 'GitHub', - web_crawler: 'Веб-краулер', }, connectorDesc: { feishu: 'Синхронизация документов, таблиц и файлов из Feishu Wiki', notion: 'Синхронизация страниц и баз данных из Notion', - confluence: 'Синхронизация пространств и страниц из Confluence', yuque: 'Синхронизация документов из баз знаний Yuque', - github: 'Синхронизация документов и вики из репозиториев GitHub', - web_crawler: 'Сканирование веб-сайтов через Sitemap', }, field: { appId: 'App ID', appSecret: 'App Secret', integrationToken: 'Integration Token', baseUrl: 'Base URL', - email: 'Email', apiToken: 'API Token', - personalToken: 'Personal Access Token', - sitemapUrl: 'Sitemap URL', + baseUrlHint: 'Оставьте пустым, чтобы использовать публичное облако Yuque https://www.yuque.com. Если вы используете Yuque Enterprise или приватное развёртывание, укажите корпоративный домен (например, https://your-company.yuque.com)', }, comingSoon: 'Скоро', docHint: 'Получить учётные данные можно здесь:', + copyUrl: 'Копировать URL', + copied: 'Скопировано', pleaseTestFirst: 'Сначала проверьте подключение', + prereqTitle: 'Перед использованием выполните все следующие настройки (обязательно)', + prereqBarText: 'Используете впервые? Нажмите, чтобы открыть руководство по настройке приложения Feishu', + prereqBarText_yuque: 'Используете впервые? Нажмите, чтобы открыть руководство по настройке Yuque Token', + prereqStep1Brief_yuque: 'Создайте персональный Yuque Token', + prereqStep1Desc_yuque: 'Войдите в Yuque → значок профиля → Настройки → Token → Создать новый Token', + prereqStep2Brief_yuque: 'Назначьте Token необходимые права', + prereqStep2Desc_yuque: 'Выберите как минимум repo:read и doc:read (чтение баз знаний и содержимого документов)', + prereqStep3Brief_yuque: '(Опционально) Для Enterprise укажите Base URL', + prereqStep3Desc_yuque: 'Пользователям публичного облака указывать не нужно. Для Yuque Enterprise или приватного развёртывания укажите корпоративный домен', + prereqOpenConsole_yuque: 'Перейти к настройкам Yuque Token', + prereqBotBrief: 'Добавьте приложению возможность «Бот»', + prereqBotDesc: 'Открытая платформа → Добавить возможность приложения → Бот → Создать версию и опубликовать', + prereqBotLabel: '1. Добавьте приложению возможность «Бот» (иначе приложение не будет найдено в базе знаний):', + prereqBotStep1: 'Откройте ваше приложение в Feishu Open Platform и нажмите «Добавить возможность приложения» слева', + prereqBotStep2: 'Выберите «Бот» и подтвердите добавление', + prereqBotStep3: 'Создайте новую версию и опубликуйте (или выполняйте отладку в тестовой компании)', + prereqPermBrief: 'Включите права API', + prereqPermLabel: '2. Включите для приложения следующие права API:', + prereqOpenConsole: 'Открыть настройки Feishu Open Platform', + prereqMemberBrief: 'Добавьте через групповой чат как участника базы знаний', + prereqMemberDesc: 'Создайте групповой чат → добавьте приложение как группового бота → добавьте групповой чат как участника базы знаний', + prereqMemberLabel: '3. Добавьте приложение как участника базы знаний через групповой чат (приложение нельзя найти в базе знаний напрямую):', back: 'Назад', next: 'Далее', save: 'Сохранить', @@ -3786,5 +3886,27 @@ export default { schedule6h: 'Каждые 6 часов', schedule12h: 'Каждые 12 часов', schedule24h: 'Ежедневно', + scheduleHuman: { + '30min': 'Каждые 30 мин', + '1h': 'Каждый час', + '6h': 'Каждые 6 часов', + '12h': 'Каждые 12 часов', + '24h': 'Ежедневно', + }, + addCard: 'Добавить источник данных', + wikiSpace: 'Пространство вики', + resourceType: { + wikiSpace: 'Пространство вики', + docCategory: 'Категория документов', + book: 'База знаний Yuque', + }, + neverSynced: 'Не синхронизировано', + justNow: 'Только что', + minutesAgo: '{n} мин назад', + hoursAgo: '{n} ч назад', + daysAgo: '{n} д назад', + syncResultCreated: '+{n}', + syncResultUpdated: '~{n}', + syncResultDeleted: '-{n}', }, }