diff --git a/home/docusaurus.config.js b/home/docusaurus.config.js index efecd876a2f..f83fe184b1e 100644 --- a/home/docusaurus.config.js +++ b/home/docusaurus.config.js @@ -24,7 +24,7 @@ module.exports = { }, i18n: { defaultLocale: 'en', - locales: ['zh-cn', 'en'], + locales: ['zh-cn', 'en', 'ko'], }, themeConfig: { matomo: { diff --git a/home/i18n/ko/code.json b/home/i18n/ko/code.json new file mode 100644 index 00000000000..c3447e1b63a --- /dev/null +++ b/home/i18n/ko/code.json @@ -0,0 +1,504 @@ +{ + "theme.NotFound.title": { + "message": "페이지를 찾을 수 없습니다", + "description": "The title of the 404 page" + }, + "theme.NotFound.p1": { + "message": "찾으시는 페이지를 찾을 수 없습니다.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "이 URL로 연결한 사이트의 관리자에게 링크가 깨졌다고 알려주세요.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "닫기", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "블로그 목록 페이지 내비게이션", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "최신 글", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "이전 글", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.readingTime.plurals": { + "message": "{readingTime}분 소요", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.tags.tagsListLabel": { + "message": "태그:", + "description": "The label alongside a tag list" + }, + "theme.blog.post.readMore": { + "message": "더 읽기", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "블로그 게시글 페이지 내비게이션", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "다음 글", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "이전 글", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "게시글 {count}개", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "\"{tagName}\" 태그가 지정된 {nPosts}", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "모든 태그 보기", + "description": "The label of the link targeting the tag list page" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "코드를 클립보드에 복사", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copied": { + "message": "복사됨", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copy": { + "message": "복사", + "description": "The copy button label on code blocks" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "사이드바 펼치기", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "사이드바 펼치기", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "문서 페이지 내비게이션", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "이전", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "다음", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "사이드바 접기", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "사이드바 접기", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "이 문서는 아직 출시되지 않은 {siteTitle} {versionLabel} 버전에 대한 것입니다.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "이 문서는 더 이상 관리되지 않는 {siteTitle} {versionLabel} 버전에 대한 것입니다.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "최신 문서는 {latestVersionLink}({versionLabel})을 참고하세요.", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "최신 버전", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "이 페이지 수정하기", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "제목으로 바로가기 링크", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " {date}에", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " {user}에 의해", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "마지막 업데이트{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.common.skipToMainContent": { + "message": "본문으로 건너뛰기", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.SearchPage.documentsFound.plurals": { + "message": "문서 {count}개 검색됨", + "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.SearchPage.existingResultsTitle": { + "message": "\"{query}\" 검색 결과", + "description": "The search page title for non-empty query" + }, + "theme.SearchPage.emptyResultsTitle": { + "message": "문서 검색", + "description": "The search page title for empty query" + }, + "theme.SearchPage.inputPlaceholder": { + "message": "검색어를 입력하세요", + "description": "The placeholder for search page input" + }, + "theme.SearchPage.inputLabel": { + "message": "검색", + "description": "The ARIA label for search page input" + }, + "theme.SearchPage.algoliaLabel": { + "message": "Algolia 검색", + "description": "The ARIA label for Algolia mention" + }, + "theme.SearchPage.noResultsText": { + "message": "검색 결과가 없습니다", + "description": "The paragraph for empty search result" + }, + "theme.SearchPage.fetchingNewResults": { + "message": "새 검색 결과를 가져오는 중...", + "description": "The paragraph for fetching new search results" + }, + "theme.SearchBar.label": { + "message": "검색", + "description": "The ARIA label and placeholder for search button" + }, + "theme.PwaReloadPopup.info": { + "message": "새 버전이 있습니다", + "description": "The text for PWA reload popup" + }, + "theme.PwaReloadPopup.refreshButtonText": { + "message": "새로고침", + "description": "The text for PWA reload button" + }, + "theme.PwaReloadPopup.closeButtonAriaLabel": { + "message": "닫기", + "description": "The ARIA label for close button of PWA reload popup" + }, + "theme.Playground.result": { + "message": "결과", + "description": "The result label of the live codeblocks" + }, + "theme.Playground.liveEditor": { + "message": "라이브 에디터", + "description": "The live editor label of the live codeblocks" + }, + "convenient": { + "message": "쉬운 사용성" + }, + "custom-multi-support": { + "message": "고성능 & 높은 확장성" + }, + "opensource": { + "message": "오픈소스 & 커뮤니티 주도" + }, + "theme.ErrorPageContent.title": { + "message": "이 페이지에서 오류가 발생했습니다.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "다시 시도", + "description": "The label of the button to try again when the page crashed" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "맨 위로 스크롤", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "아카이브", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "아카이브", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "블로그 최근 게시글 내비게이션", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel": { + "message": "'{label}' 사이드바 카테고리 접기/펼치기", + "description": "The ARIA label to toggle the collapsible sidebar category" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "문서 {count}개", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "\"{tagName}\" 태그가 지정된 {nDocsTagged}", + "description": "The title of the page for a docs tag" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← 메인 메뉴로 돌아가기", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "버전", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "이 페이지에서", + "description": "The label used by the button on the collapsible TOC component" + }, + "convenient-content": { + "message": "{docker} {br} 올인원 모니터링, 알람, 알림 시스템. 웹 서비스, 데이터베이스, 캐시, OS, 미들웨어, 빅데이터, 클라우드 네이티브, 네트워크 모니터링을 지원합니다. {br} 에이전트리스 방식으로 웹 화면에서 클릭 몇 번만으로 시작할 수 있습니다. {br} 모든 민감 데이터에 대해 종단 간 암호화를 적용한 엔터프라이즈급 보안을 제공합니다." + }, + "custom-multi-support-content": { + "message": "HTTP, JMX, SSH, SNMP, JDBC 등 설정 가능한 프로토콜. 간단한 온라인 YAML 설정으로 커스텀 메트릭을 정의할 수 있습니다. {br} 수집기 클러스터의 수평 확장, 다중 네트워크 격리, 클라우드-엣지 협업을 지원하는 고성능 아키텍처입니다. {br} Discord, Slack, 이메일, Webhook 등을 통한 유연하고 신속한 알람 규칙 및 알림을 제공합니다." + }, + "opensource-content": { + "message": "Apache HertzBeat™는 포용적인 커뮤니티를 가진 오픈소스 프로젝트입니다. 코드, 문서, 버그 리포트 등 규모에 상관없이 모든 기여를 환영합니다. {br} 모든 기여자를 존중하며 함께 성장합니다. {br} 전 세계 수천 대의 서버에 배포되어 있습니다." + }, + "slogan": { + "message": "AI 기반 오픈소스 옵저버빌리티 시스템" + }, + "Who uses HertzBeat?": { + "message": "Apache HertzBeat는 누가 사용하나요?" + }, + "theme.admonition.note": { + "message": "참고", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "팁", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.danger": { + "message": "위험", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "정보", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.caution": { + "message": "주의", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.colorToggle.ariaLabel": { + "message": "다크·라이트 모드 전환(현재 {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "다크 모드", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "라이트 모드", + "description": "The name for the light color mode" + }, + "theme.docs.breadcrumbs.home": { + "message": "홈페이지", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "이동 경로", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.DocCard.categoryDescription": { + "message": "{count}개 항목", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.versionBadge.label": { + "message": "버전: {versionLabel}" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "줄바꿈 전환", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "언어", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.blog.post.readMoreLabel": { + "message": "{title}에 대해 더 읽기", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.SearchBar.seeAll": { + "message": "{count}개 결과 모두 보기" + }, + "theme.SearchModal.searchBox.resetButtonTitle": { + "message": "검색어 지우기", + "description": "The label and ARIA label for search box reset button" + }, + "theme.SearchModal.searchBox.cancelButtonText": { + "message": "취소", + "description": "The label and ARIA label for search box cancel button" + }, + "theme.SearchModal.startScreen.recentSearchesTitle": { + "message": "최근 검색", + "description": "The title for recent searches" + }, + "theme.SearchModal.startScreen.noRecentSearchesText": { + "message": "최근 검색 기록이 없습니다", + "description": "The text when no recent searches" + }, + "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": { + "message": "이 검색 저장", + "description": "The label for save recent search button" + }, + "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": { + "message": "이 검색을 기록에서 삭제", + "description": "The label for remove recent search button" + }, + "theme.SearchModal.startScreen.favoriteSearchesTitle": { + "message": "즐겨찾기", + "description": "The title for favorite searches" + }, + "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": { + "message": "이 검색을 즐겨찾기에서 삭제", + "description": "The label for remove favorite search button" + }, + "theme.SearchModal.errorScreen.titleText": { + "message": "결과를 가져올 수 없습니다", + "description": "The title for error screen of search modal" + }, + "theme.SearchModal.errorScreen.helpText": { + "message": "네트워크 연결 상태를 확인해 보세요.", + "description": "The help text for error screen of search modal" + }, + "theme.SearchModal.footer.selectText": { + "message": "선택", + "description": "The explanatory text of the action for the enter key" + }, + "theme.SearchModal.footer.selectKeyAriaLabel": { + "message": "Enter 키", + "description": "The ARIA label for the Enter key button that makes the selection" + }, + "theme.SearchModal.footer.navigateText": { + "message": "이동", + "description": "The explanatory text of the action for the Arrow up and Arrow down key" + }, + "theme.SearchModal.footer.navigateUpKeyAriaLabel": { + "message": "위쪽 화살표", + "description": "The ARIA label for the Arrow up key button that makes the navigation" + }, + "theme.SearchModal.footer.navigateDownKeyAriaLabel": { + "message": "아래쪽 화살표", + "description": "The ARIA label for the Arrow down key button that makes the navigation" + }, + "theme.SearchModal.footer.closeText": { + "message": "닫기", + "description": "The explanatory text of the action for Escape key" + }, + "theme.SearchModal.footer.closeKeyAriaLabel": { + "message": "Esc 키", + "description": "The ARIA label for the Escape key button that close the modal" + }, + "theme.SearchModal.footer.searchByText": { + "message": "검색 제공", + "description": "The text explain that the search is making by Algolia" + }, + "theme.SearchModal.noResultsScreen.noResultsText": { + "message": "검색 결과 없음:", + "description": "The text explains that there are no results for the following search" + }, + "theme.SearchModal.noResultsScreen.suggestedQueryText": { + "message": "다음 검색어를 시도해 보세요:", + "description": "The text for the suggested query when no results are found for the following search" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsText": { + "message": "이 검색어에 결과가 있어야 한다고 생각하시나요?", + "description": "The text for the question where the user thinks there are missing results" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": { + "message": "알려주세요.", + "description": "The text for the link to report missing results" + }, + "theme.SearchModal.placeholder": { + "message": "문서 검색", + "description": "The placeholder of the input of the DocSearch pop-up modal" + }, + "theme.IdealImageMessage.loading": { + "message": "로딩 중...", + "description": "When the full-scale image is loading" + }, + "theme.IdealImageMessage.load": { + "message": "클릭하여 로드{sizeMessage}", + "description": "To prompt users to load the full image. sizeMessage is a parenthesized size figure." + }, + "theme.IdealImageMessage.offline": { + "message": "오프라인 상태입니다. 이미지를 불러올 수 없습니다", + "description": "When the user is viewing an offline document" + }, + "theme.IdealImageMessage.404error": { + "message": "404. 이미지를 찾을 수 없습니다", + "description": "When the image is not found" + }, + "theme.IdealImageMessage.error": { + "message": "오류가 발생했습니다. 클릭하여 다시 로드", + "description": "When the image fails to load for unknown error" + }, + "support hertzbeat": { + "message": "HertzBeat 후원하기" + }, + "click": { + "message": "클릭" + }, + "go github": { + "message": "Github로 이동" + }, + "If you like HertzBeat, star us on GitHub": { + "message": "HertzBeat가 마음에 드셨다면 GitHub에서 Star를 눌러주세요." + }, + "We will grow better with your support.": { + "message": "여러분의 응원과 함께 더 크게 성장하겠습니다. 가장 큰 힘이 됩니다." + }, + "quickstart": { + "message": "빠른 시작" + }, + "Support HertzBeat": { + "message": "HertzBeat 후원하기" + }, + "Go to Github": { + "message": "Github로 이동" + }, + "theme.NavBar.navAriaLabel": { + "message": "메인", + "description": "The ARIA label for the main navigation" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "문서 사이드바", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "내비게이션 바 닫기", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "내비게이션 바 전환", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "태그", + "description": "The title of the tag list page" + }, + "team.name": { + "message": "Apache HertzBeat™ 팀" + }, + "team.desc": { + "message": "HertzBeat 팀은 전 세계 다양한 분야의 기여자들로 구성되어 있습니다. 우리는 개방과 협업이라는 커뮤니티 철학을 존중하며, 더 많은 분들이 함께 참여하고👏 커뮤니티와 함께 성장하기를 환영합니다." + }, + "team.tip": { + "message": "(특정 순서 없음)" + }, + "team.thanks": { + "message": "HertzBeat에 기여해주신 멋진 분들께 감사드립니다!" + } +} diff --git a/home/i18n/ko/docusaurus-plugin-content-blog/options.json b/home/i18n/ko/docusaurus-plugin-content-blog/options.json new file mode 100644 index 00000000000..1aa61e8b7e5 --- /dev/null +++ b/home/i18n/ko/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,14 @@ +{ + "title": { + "message": "블로그", + "description": "The title for the blog used in SEO" + }, + "description": { + "message": "블로그", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "최근 게시글", + "description": "The label for the left sidebar" + } +} diff --git a/home/i18n/ko/docusaurus-plugin-content-docs/current.json b/home/i18n/ko/docusaurus-plugin-content-docs/current.json new file mode 100644 index 00000000000..b339ac7d053 --- /dev/null +++ b/home/i18n/ko/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,166 @@ +{ + "version.label": { + "message": "dev", + "description": "The label for version current" + }, + "sidebar.docs.category.quickstart": { + "message": "빠른 시작", + "description": "The label for category quickstart in sidebar docs" + }, + "sidebar.docs.category.custom": { + "message": "커스텀 모니터링", + "description": "The label for category custom in sidebar docs" + }, + "sidebar.docs.category.http": { + "message": "HTTP 프로토콜", + "description": "The label for category http in sidebar docs" + }, + "sidebar.docs.category.jdbc": { + "message": "JDBC 프로토콜", + "description": "The label for category jdbc in sidebar docs" + }, + "sidebar.docs.category.ssh": { + "message": "SSH 프로토콜", + "description": "The label for category ssh in sidebar docs" + }, + "sidebar.docs.category.telnet": { + "message": "TELNET 프로토콜", + "description": "The label for category telnet in sidebar docs" + }, + "sidebar.docs.category.guides": { + "message": "사용 가이드", + "description": "The label for category guides in sidebar docs" + }, + "sidebar.docs.category.service": { + "message": "서비스 모니터링", + "description": "The label for category service in sidebar docs" + }, + "sidebar.docs.category.database": { + "message": "데이터베이스 모니터링", + "description": "The label for category database in sidebar docs" + }, + "sidebar.docs.category.os": { + "message": "OS 모니터링", + "description": "The label for category os in sidebar docs" + }, + "sidebar.docs.category.server": { + "message": "서버 모니터링", + "description": "The label for category server in sidebar docs" + }, + "sidebar.docs.category.alert": { + "message": "알람", + "description": "The label for category alert in sidebar docs" + }, + "sidebar.docs.category.notice": { + "message": "알림", + "description": "The label for category notice in sidebar docs" + }, + "sidebar.docs.category.service-discovery": { + "message": "서비스 디스커버리", + "description": "The label for category service-discovery in sidebar docs" + }, + "sidebar.docs.category.mid": { + "message": "미들웨어 모니터링", + "description": "The label for category mid in sidebar docs" + }, + "sidebar.docs.category.Others": { + "message": "기타", + "description": "The label for category Others in sidebar docs" + }, + "sidebar.docs.category.cloud-native": { + "message": "클라우드 네이티브 모니터링", + "description": "The label for category cloud-native in sidebar docs" + }, + "sidebar.docs.category.jmx": { + "message": "JMX 프로토콜", + "description": "The label for category jmx in sidebar docs" + }, + "sidebar.docs.category.snmp": { + "message": "SNMP 프로토콜", + "description": "The label for category snmp in sidebar docs" + }, + "sidebar.docs.link.Install via Helm": { + "message": "Helm으로 설치", + "description": "The label for link Install via Helm in sidebar docs, linking to https://artifacthub.io/packages/helm/hertzbeat/hertzbeat" + }, + "sidebar.docs.category.push": { + "message": "Push", + "description": "The label for category push in sidebar docs" + }, + "sidebar.docs.category.program": { + "message": "애플리케이션 모니터링", + "description": "The label for category program in sidebar docs" + }, + "sidebar.docs.category.cache": { + "message": "캐시 모니터링", + "description": "The label for category cache in sidebar docs" + }, + "sidebar.docs.category.bigdata": { + "message": "빅데이터 모니터링", + "description": "The label for category bigdata in sidebar docs" + }, + "sidebar.docs.category.webserver": { + "message": "웹서버 모니터링", + "description": "The label for category webserver in sidebar docs" + }, + "sidebar.docs.category.contribution": { + "message": "기여 가이드", + "description": "The label for category contribution in sidebar docs" + }, + "sidebar.docs.category.submit": { + "message": "제출 가이드", + "description": "The label for category submit in sidebar docs" + }, + "sidebar.docs.category.release": { + "message": "릴리스 가이드", + "description": "The label for category release in sidebar docs" + }, + "sidebar.docs.category.Community": { + "message": "커뮤니티", + "description": "The label for category Community in sidebar docs" + }, + "sidebar.docs.category.network": { + "message": "네트워크 모니터링", + "description": "The label for category network in sidebar docs" + }, + "sidebar.docs.category.NGQL": { + "message": "NGQL", + "description": "The label for category NGQL in sidebar docs" + }, + "sidebar.docs.category.llm": { + "message": "AI LLM 모니터링", + "description": "The label for category llm in sidebar docs" + }, + "sidebar.docs.category.aiConfig": { + "message": "AI LLM 설정", + "description": "The label for category aiConfig in sidebar docs" + }, + "sidebar.docs.category.install": { + "message": "설치", + "description": "The label for category install in sidebar docs" + }, + "sidebar.docs.category.upgrade": { + "message": "업그레이드", + "description": "The label for category upgrade in sidebar docs" + }, + "sidebar.docs.category.setting": { + "message": "설정", + "description": "The label for category setting in sidebar docs" + }, + "sidebar.docs.category.change-db": { + "message": "DB 변경", + "description": "The label for category change-db in sidebar docs" + }, + "sidebar.docs.category.use-case": { + "message": "사용 사례", + "description": "The label for category use-case in sidebar docs" + }, + "sidebar.docs.category.extern-deploy": { + "message": "외부 설치", + "description": "The label for category extern-deploy in sidebar docs" + }, + "sidebar.docs.category.log": { + "message": "로그", + "description": "The label for category log in sidebar docs" + } +} diff --git a/home/i18n/ko/docusaurus-plugin-content-docs/version-1.8.0.json b/home/i18n/ko/docusaurus-plugin-content-docs/version-1.8.0.json new file mode 100644 index 00000000000..0d297babdd5 --- /dev/null +++ b/home/i18n/ko/docusaurus-plugin-content-docs/version-1.8.0.json @@ -0,0 +1,166 @@ +{ + "version.label": { + "message": "1.8.0", + "description": "The label for version current" + }, + "sidebar.docs.category.quickstart": { + "message": "빠른 시작", + "description": "The label for category quickstart in sidebar docs" + }, + "sidebar.docs.category.custom": { + "message": "커스텀 모니터링", + "description": "The label for category custom in sidebar docs" + }, + "sidebar.docs.category.http": { + "message": "HTTP 프로토콜", + "description": "The label for category http in sidebar docs" + }, + "sidebar.docs.category.jdbc": { + "message": "JDBC 프로토콜", + "description": "The label for category jdbc in sidebar docs" + }, + "sidebar.docs.category.ssh": { + "message": "SSH 프로토콜", + "description": "The label for category ssh in sidebar docs" + }, + "sidebar.docs.category.telnet": { + "message": "TELNET 프로토콜", + "description": "The label for category telnet in sidebar docs" + }, + "sidebar.docs.category.guides": { + "message": "사용 가이드", + "description": "The label for category guides in sidebar docs" + }, + "sidebar.docs.category.service": { + "message": "서비스 모니터링", + "description": "The label for category service in sidebar docs" + }, + "sidebar.docs.category.database": { + "message": "데이터베이스 모니터링", + "description": "The label for category database in sidebar docs" + }, + "sidebar.docs.category.os": { + "message": "OS 모니터링", + "description": "The label for category os in sidebar docs" + }, + "sidebar.docs.category.server": { + "message": "서버 모니터링", + "description": "The label for category server in sidebar docs" + }, + "sidebar.docs.category.alert": { + "message": "알람", + "description": "The label for category alert in sidebar docs" + }, + "sidebar.docs.category.notice": { + "message": "알림", + "description": "The label for category notice in sidebar docs" + }, + "sidebar.docs.category.service-discovery": { + "message": "서비스 디스커버리", + "description": "The label for category service-discovery in sidebar docs" + }, + "sidebar.docs.category.mid": { + "message": "미들웨어 모니터링", + "description": "The label for category mid in sidebar docs" + }, + "sidebar.docs.category.Others": { + "message": "기타", + "description": "The label for category Others in sidebar docs" + }, + "sidebar.docs.category.cloud-native": { + "message": "클라우드 네이티브 모니터링", + "description": "The label for category cloud-native in sidebar docs" + }, + "sidebar.docs.category.jmx": { + "message": "JMX 프로토콜", + "description": "The label for category jmx in sidebar docs" + }, + "sidebar.docs.category.snmp": { + "message": "SNMP 프로토콜", + "description": "The label for category snmp in sidebar docs" + }, + "sidebar.docs.link.Install via Helm": { + "message": "Helm으로 설치", + "description": "The label for link Install via Helm in sidebar docs, linking to https://artifacthub.io/packages/helm/hertzbeat/hertzbeat" + }, + "sidebar.docs.category.push": { + "message": "Push", + "description": "The label for category push in sidebar docs" + }, + "sidebar.docs.category.program": { + "message": "애플리케이션 모니터링", + "description": "The label for category program in sidebar docs" + }, + "sidebar.docs.category.cache": { + "message": "캐시 모니터링", + "description": "The label for category cache in sidebar docs" + }, + "sidebar.docs.category.bigdata": { + "message": "빅데이터 모니터링", + "description": "The label for category bigdata in sidebar docs" + }, + "sidebar.docs.category.webserver": { + "message": "웹서버 모니터링", + "description": "The label for category webserver in sidebar docs" + }, + "sidebar.docs.category.contribution": { + "message": "기여 가이드", + "description": "The label for category contribution in sidebar docs" + }, + "sidebar.docs.category.submit": { + "message": "제출 가이드", + "description": "The label for category submit in sidebar docs" + }, + "sidebar.docs.category.release": { + "message": "릴리스 가이드", + "description": "The label for category release in sidebar docs" + }, + "sidebar.docs.category.Community": { + "message": "커뮤니티", + "description": "The label for category Community in sidebar docs" + }, + "sidebar.docs.category.network": { + "message": "네트워크 모니터링", + "description": "The label for category network in sidebar docs" + }, + "sidebar.docs.category.NGQL": { + "message": "NGQL", + "description": "The label for category NGQL in sidebar docs" + }, + "sidebar.docs.category.llm": { + "message": "AI LLM 모니터링", + "description": "The label for category llm in sidebar docs" + }, + "sidebar.docs.category.aiConfig": { + "message": "AI LLM 설정", + "description": "The label for category aiConfig in sidebar docs" + }, + "sidebar.docs.category.install": { + "message": "설치", + "description": "The label for category install in sidebar docs" + }, + "sidebar.docs.category.upgrade": { + "message": "업그레이드", + "description": "The label for category upgrade in sidebar docs" + }, + "sidebar.docs.category.setting": { + "message": "설정", + "description": "The label for category setting in sidebar docs" + }, + "sidebar.docs.category.change-db": { + "message": "DB 변경", + "description": "The label for category change-db in sidebar docs" + }, + "sidebar.docs.category.use-case": { + "message": "사용 사례", + "description": "The label for category use-case in sidebar docs" + }, + "sidebar.docs.category.extern-deploy": { + "message": "외부 설치", + "description": "The label for category extern-deploy in sidebar docs" + }, + "sidebar.docs.category.log": { + "message": "로그", + "description": "The label for category log in sidebar docs" + } +} diff --git a/home/i18n/ko/docusaurus-theme-classic/footer.json b/home/i18n/ko/docusaurus-theme-classic/footer.json new file mode 100644 index 00000000000..442bcee7873 --- /dev/null +++ b/home/i18n/ko/docusaurus-theme-classic/footer.json @@ -0,0 +1,50 @@ +{ + "link.title.intro": { + "message": "소개", + "description": "The title of the footer links column with title=intro in the footer" + }, + "link.title.contact": { + "message": "커뮤니티", + "description": "The title of the footer links column with title=contact in the footer" + }, + "link.item.label.use": { + "message": "소개", + "description": "The label of footer link with label=use linking to /docs/" + }, + "link.item.label.quickstart": { + "message": "빠른 시작", + "description": "The label of footer link with label=quickstart linking to /docs/start/quickstart" + }, + "link.item.label.custom": { + "message": "커스텀 모니터링", + "description": "The label of footer link with label=custom linking to /docs/advanced/extend-point" + }, + "link.item.label.help": { + "message": "도움말 문서", + "description": "The label of footer link with label=help linking to /docs/help/guide" + }, + "link.item.label.discuss": { + "message": "문의", + "description": "The label of footer link with label=discuss linking to /docs/others/contact" + }, + "link.item.label.github": { + "message": "Github", + "description": "The label of footer link with label=github linking to https://github.com/apache/hertzbeat" + }, + "link.title.resource": { + "message": "자료", + "description": "The title of the footer links column with title=resource in the footer" + }, + "link.item.label.relate": { + "message": "기타", + "description": "The label of footer link with label=relate linking to /docs/others/resource" + }, + "link.item.label.discussion": { + "message": "토론", + "description": "The label of footer link with label=discussion linking to https://github.com/apache/hertzbeat/discussions/" + }, + "link.item.label.contact": { + "message": "문의", + "description": "The label of footer link with label=contact linking to /docs/community/contact" + } +} diff --git a/home/i18n/ko/docusaurus-theme-classic/navbar.json b/home/i18n/ko/docusaurus-theme-classic/navbar.json new file mode 100644 index 00000000000..fc9eff50878 --- /dev/null +++ b/home/i18n/ko/docusaurus-theme-classic/navbar.json @@ -0,0 +1,162 @@ +{ + "title": { + "message": "HertzBeat", + "description": "The title in the navbar" + }, + "item.label.main": { + "message": "홈", + "description": "Navbar item with label main" + }, + "item.label.document": { + "message": "문서", + "description": "Navbar item with label document" + }, + "item.label.blog": { + "message": "블로그", + "description": "Navbar item with label blog" + }, + "item.label.discuss": { + "message": "커뮤니티 문의", + "description": "Navbar item with label discuss" + }, + "item.label.kanban": { + "message": "칸반", + "description": "Navbar item with label kanban" + }, + "item.label.about": { + "message": "소개", + "description": "Navbar item with label about" + }, + "item.label.login": { + "message": "지금 로그인", + "description": "Navbar item with label login" + }, + "item.label.design": { + "message": "설계", + "description": "Navbar item with label design" + }, + "item.label.resource": { + "message": "자료", + "description": "Navbar item with label resource" + }, + "item.label.contributing": { + "message": "기여자 가이드", + "description": "Navbar item with label contributing" + }, + "item.label.developer": { + "message": "기여자", + "description": "Navbar item with label developer" + }, + "item.label.enterprise": { + "message": "엔터프라이즈", + "description": "Navbar item with label enterprise" + }, + "item.label.Docs": { + "message": "문서", + "description": "Navbar item with label Docs" + }, + "item.label.Others": { + "message": "기타", + "description": "Navbar item with label Others" + }, + "item.label.contributors": { + "message": "기여자", + "description": "Navbar item with label contributors" + }, + "item.label.ASF": { + "message": "ASF", + "description": "Navbar item with label ASF" + }, + "item.label.Community": { + "message": "커뮤니티", + "description": "Navbar item with label Community" + }, + "item.label.code_of_conduct": { + "message": "행동 강령", + "description": "Navbar item with label code_of_conduct" + }, + "item.label.join_the_mailing_lists": { + "message": "메일링 리스트 가입", + "description": "Navbar item with label join_the_mailing_lists" + }, + "item.label.become_committer": { + "message": "커미터 되기", + "description": "Navbar item with label become_committer" + }, + "item.label.become_pmc_member": { + "message": "PMC 멤버 되기", + "description": "Navbar item with label become_pmc_member" + }, + "item.label.new_committer_process": { + "message": "신규 커미터 절차", + "description": "Navbar item with label new_committer_process" + }, + "item.label.new_pmc_member_process": { + "message": "신규 PMC 멤버 절차", + "description": "Navbar item with label new_pmc_member_process" + }, + "item.label.documentation_notice": { + "message": "문서 안내", + "description": "Navbar item with label documentation_notice" + }, + "item.label.submit_code": { + "message": "코드 제출", + "description": "Navbar item with label submit_code" + }, + "item.label.code_style_and_quality_guide": { + "message": "코드 스타일 및 품질 가이드", + "description": "Navbar item with label code_style_and_quality_guide" + }, + "item.label.how_to_release": { + "message": "릴리스 방법", + "description": "Navbar item with label how_to_release" + }, + "item.label.how_to_verify_release": { + "message": "릴리스 검증 방법", + "description": "Navbar item with label how_to_verify_release" + }, + "item.label.Foundation": { + "message": "재단", + "description": "Navbar item with label Foundation" + }, + "item.label.License": { + "message": "라이선스", + "description": "Navbar item with label License" + }, + "item.label.Events": { + "message": "이벤트", + "description": "Navbar item with label Events" + }, + "item.label.Security": { + "message": "보안", + "description": "Navbar item with label Security" + }, + "item.label.Sponsorship": { + "message": "후원", + "description": "Navbar item with label Sponsorship" + }, + "item.label.Privacy": { + "message": "개인정보처리방침", + "description": "Navbar item with label Privacy" + }, + "item.label.team": { + "message": "팀", + "description": "Navbar item with label team" + }, + "item.label.Thanks": { + "message": "감사의 말", + "description": "Navbar item with label Thanks" + }, + "item.label.download": { + "message": "다운로드", + "description": "Navbar item with label download" + }, + "item.label.contribution": { + "message": "기여 가이드", + "description": "Navbar item with label contribution" + }, + "item.label.development": { + "message": "개발", + "description": "Navbar item with label development" + } +} diff --git a/web-app/src/app/core/i18n/i18n.service.ts b/web-app/src/app/core/i18n/i18n.service.ts index ffbc004a291..4f44fdb4623 100644 --- a/web-app/src/app/core/i18n/i18n.service.ts +++ b/web-app/src/app/core/i18n/i18n.service.ts @@ -3,6 +3,7 @@ import { registerLocaleData } from '@angular/common'; import { HttpHeaders } from '@angular/common/http'; import ngEn from '@angular/common/locales/en'; import ngJa from '@angular/common/locales/ja'; +import ngKo from '@angular/common/locales/ko'; import ngPt from '@angular/common/locales/pt'; import ngZh from '@angular/common/locales/zh'; import ngZhTw from '@angular/common/locales/zh-Hant'; @@ -15,10 +16,11 @@ import { SettingsService, zh_CN as delonZhCn, zh_TW as delonZhTw, - ja_JP as delonJaJP + ja_JP as delonJaJP, + ko_KR as delonKoKR } from '@delon/theme'; import { AlainConfigService } from '@delon/util/config'; -import { enUS as dfEn, zhCN as dfZhCn, zhTW as dfZhTw, ja as dfJa, ptBR as dfPtBR } from 'date-fns/locale'; +import { enUS as dfEn, zhCN as dfZhCn, zhTW as dfZhTw, ja as dfJa, ko as dfKo, ptBR as dfPtBR } from 'date-fns/locale'; import { NzSafeAny } from 'ng-zorro-antd/core/types'; import { en_US as zorroEnUS, @@ -26,6 +28,7 @@ import { zh_CN as zorroZhCN, zh_TW as zorroZhTW, ja_JP as zorroJaJP, + ko_KR as zorroKoKR, pt_BR as zorroPtBR } from 'ng-zorro-antd/i18n'; import { Observable, zip } from 'rxjs'; @@ -76,6 +79,14 @@ const LANGS: { [key: string]: LangConfigData } = { delon: delonJaJP, abbr: '🇯🇵' }, + 'ko-KR': { + text: '한국어', + ng: ngKo, + zorro: zorroKoKR, + date: dfKo, + delon: delonKoKR, + abbr: '🇰🇷' + }, 'pt-BR': { text: 'Português (Brasil)', ng: ngPt, diff --git a/web-app/src/app/layout/basic/directives/setting-drawer-i18n.directive.spec.ts b/web-app/src/app/layout/basic/directives/setting-drawer-i18n.directive.spec.ts index 55519cc87f6..84fc9c8fbd3 100644 --- a/web-app/src/app/layout/basic/directives/setting-drawer-i18n.directive.spec.ts +++ b/web-app/src/app/layout/basic/directives/setting-drawer-i18n.directive.spec.ts @@ -74,6 +74,12 @@ describe('SettingDrawerI18nDirective', () => { 'setting.drawer.theme.color': '主題色', 'setting.drawer.settings': '設置', 'setting.drawer.info.message': '配置欄只在開發環境用於預覽,生產環境不會展現,請拷貝後手動修改參數配置文件 src/styles/theme.less' + }, + 'ko-KR': { + 'setting.drawer.theme.color': '테마 색상', + 'setting.drawer.settings': '설정', + 'setting.drawer.info.message': + '이 설정 패널은 개발 환경에서 미리보기 용도로만 제공되며, 운영 환경에서는 표시되지 않습니다. src/styles/theme.less 파일을 복사하여 직접 수정해 주세요' } }; @@ -121,7 +127,7 @@ describe('SettingDrawerI18nDirective', () => { it('should load mappings from i18n files', fakeAsync(() => { fixture.detectChanges(); - const languages = ['zh-CN', 'en-US', 'ja-JP', 'pt-BR', 'zh-TW']; + const languages = ['zh-CN', 'en-US', 'ja-JP', 'pt-BR', 'zh-TW', 'ko-KR']; const requests = languages.map(lang => httpMock.expectOne(`./assets/i18n/${lang}.json`)); languages.forEach((lang, index) => { @@ -137,7 +143,7 @@ describe('SettingDrawerI18nDirective', () => { it('should replace Chinese text with translations', fakeAsync(() => { fixture.detectChanges(); - const languages = ['zh-CN', 'en-US', 'ja-JP', 'pt-BR', 'zh-TW']; + const languages = ['zh-CN', 'en-US', 'ja-JP', 'pt-BR', 'zh-TW', 'ko-KR']; const requests = languages.map(lang => httpMock.expectOne(`./assets/i18n/${lang}.json`)); languages.forEach((lang, index) => { diff --git a/web-app/src/app/layout/basic/directives/setting-drawer-i18n.directive.ts b/web-app/src/app/layout/basic/directives/setting-drawer-i18n.directive.ts index 3e45a416053..a9b7822ebb8 100644 --- a/web-app/src/app/layout/basic/directives/setting-drawer-i18n.directive.ts +++ b/web-app/src/app/layout/basic/directives/setting-drawer-i18n.directive.ts @@ -54,7 +54,7 @@ export class SettingDrawerI18nDirective implements OnInit, AfterViewInit, OnDest 'setting.drawer.info.message' ]; - private readonly languages = ['zh-CN', 'en-US', 'ja-JP', 'pt-BR', 'zh-TW']; + private readonly languages = ['zh-CN', 'en-US', 'ja-JP', 'pt-BR', 'zh-TW', 'ko-KR']; constructor( private el: ElementRef, diff --git a/web-app/src/assets/i18n/ko-KR.json b/web-app/src/assets/i18n/ko-KR.json new file mode 100644 index 00000000000..68e3e21f57a --- /dev/null +++ b/web-app/src/assets/i18n/ko-KR.json @@ -0,0 +1,1243 @@ +{ + "about.discuss": "토론", + "about.doc": "문서", + "about.gitee": "Gitee", + "about.github": "Github", + "about.help": "HertzBeat는 AI 지능형 분석, 강력한 커스터마이징, 다양한 유형 지원, 고성능, 손쉬운 확장성을 갖춘 통합 플랫폼으로, 사용자가 빠르고 편리하게 옵저버빌리티 요구사항을 달성할 수 있도록 돕습니다.", + "about.issue": "피드백", + "about.not-show-next-login": " 다음 로그인 시 이 팝업을 표시하지 않음", + "about.point.1": "통합 메트릭 플랫폼, 에이전트리스 방식으로 웹, DB, OS, 미들웨어, 네트워크 등을 지원합니다.", + "about.point.2": "통합 로그 플랫폼, OTLP를 통해 다양한 로그 소스를 매끄럽게 통합합니다.", + "about.point.3": "통합 알람 플랫폼, 다양한 알람 소스를 통합하고 유연한 임계값 규칙과 알람 처리 전략을 지원합니다.", + "about.point.4": "통합 메시지 배포, Discord, Slack, Telegram 등을 통해 신속하게 알림을 전달합니다.", + "about.point.5": "설정 가능한 프로토콜, YML 템플릿을 통해 수집 메트릭을 커스터마이징합니다.", + "about.point.6": "고성능 클러스터 아키텍처, 다중 수집기의 수평 확장, 다중 네트워크 격리 모니터링, 상태 페이지 구축을 지원합니다.", + "about.pr": "기여하기", + "about.star": "Star", + "about.title": "Apache HertzBeat™는 AI 기반의 차세대 오픈소스 실시간 옵저버빌리티 시스템입니다. 메트릭과 로그를 통합 수집하고, 원스톱 알람 배포와 지능형 관리·분석을 제공합니다.", + "about.upgrade": "업그레이드", + "alert": "알람", + "alert.center.clear": "전체 삭제", + "alert.center.confirm.clear-all": "모든 알람을 삭제하시겠습니까!", + "alert.center.confirm.delete": "삭제하시겠습니까!", + "alert.center.confirm.mark-done": "처리 완료로 표시하시겠습니까!", + "alert.center.confirm.mark-done-batch": "일괄 처리 완료로 표시하시겠습니까!", + "alert.center.confirm.mark-no": "미처리로 표시하시겠습니까!", + "alert.center.confirm.mark-no-batch": "일괄 미처리로 표시하시겠습니까!", + "alert.center.content": "알람 내용", + "alert.center.deal": "처리 완료로 표시", + "alert.center.delete": "알람 삭제", + "alert.center.end-time": "종료 시간", + "alert.center.filter-priority": "알람 우선순위", + "alert.center.filter-status": "알람 상태", + "alert.center.first-time": "시작 시간", + "alert.center.labels": "라벨", + "alert.center.last-time": "최근 발생 시간", + "alert.center.monitor": "소속 모니터링", + "alert.center.no-deal": "미처리로 표시", + "alert.center.notify.no-mark": "표시할 항목을 선택하지 않았습니다!", + "alert.center.priority": "우선순위", + "alert.center.search": "알람 검색", + "alert.center.status": "상태", + "alert.center.target": "메트릭 대상", + "alert.center.time": "알람 시간", + "alert.center.time.tip": "이 알람 기간 동안 {{times}}회 발생했습니다", + "alert.export.switch-type": "내보내기 파일 형식을 선택하세요!", + "alert.export.use-type": "{{type}} 형식으로 규칙 내보내기", + "alert.group-converge.delete": "그룹 컨버전스 전략 삭제", + "alert.group-converge.edit": "그룹 컨버전스 전략 수정", + "alert.group-converge.group-interval": "그룹 발송 간격", + "alert.group-converge.group-interval.tip": "그룹화된 알람 알림을 발송하는 최소 간격으로, 너무 잦은 알림을 방지합니다. 기본값은 5분입니다", + "alert.group-converge.group-labels": "그룹 라벨", + "alert.group-converge.group-labels.add": "라벨 추가", + "alert.group-converge.group-labels.input": "커스텀 라벨을 입력한 후 Enter 키를 누르세요", + "alert.group-converge.group-labels.placeholder": "라벨을 입력하세요", + "alert.group-converge.group-labels.tip": "알람 라벨 키를 기준으로 알람 메시지를 그룹화합니다. alertname, severity, instance 등 여러 라벨 키를 지원합니다", + "alert.group-converge.group-wait": "대기 시간", + "alert.group-converge.group-wait.tip": "새 알람 발생 후 대기하는 시간으로, 이 시간 동안 수신된 유사한 알람은 함께 그룹화됩니다. 기본값은 30초입니다", + "alert.group-converge.match-all": "전체 일치", + "alert.group-converge.name": "전략 이름", + "alert.group-converge.name.tip": "이 그룹화 전략을 식별하는 이름으로, 고유해야 합니다", + "alert.group-converge.new": "새 그룹 컨버전스 전략", + "alert.group-converge.repeat-interval": "반복 알림 간격", + "alert.group-converge.repeat-interval.tip": "반복 알람에 대한 최소 알림 간격으로, 지속되는 알람에 대해 중복 알림을 보내지 않도록 합니다. 기본값은 4시간입니다", + "alert.group-converge.seconds": "초", + "alert.help.center": "알람 센터는 그룹화, 컨버전스, 억제, 무음 처리 등의 절차를 거친 모든 알람을 표시하는 플랫폼으로, 시스템 내부 임계값에 의해 발생한 알람과 외부 시스템에서 연동된 알람을 모두 포함합니다.", + "alert.help.center.link": "https://hertzbeat.apache.org/docs/help/guide", + "alert.help.group": "그룹 컨버전스는 지정한 그룹 라벨을 기준으로 알람을 그룹화·병합하고, 동일 기간 내 중복된 알람을 제거하는 기능을 지원합니다. \"그룹화 정책 추가\"를 클릭하여 설정할 수 있습니다.
임계값 규칙이 알람을 발생시키거나 외부 알람이 수신되면 그룹 컨버전스를 거쳐 알람을 그룹화하고 중복을 제거함으로써, 대량의 알람 메시지로 인한 알람 폭주를 방지합니다.", + "alert.help.group.link": "https://hertzbeat.apache.org", + "alert.help.inhibit": "알람 억제는 알람 간의 억제 관계를 설정하는 기능입니다. 특정 알람이 발생하면 다른 알람의 생성을 억제할 수 있습니다. 예를 들어 서버가 다운되었을 때 해당 서버의 모든 알람을 억제할 수 있습니다.", + "alert.help.inhibit.link": "https://hertzbeat.apache.org/docs/help/alert_inhibit", + "alert.help.integration": "다양한 외부 플랫폼의 알람을 통합 관리하며, 외부 모니터링 및 옵저버빌리티 시스템의 알람 메시지를 연동·수신하여 그룹화, 집계, 억제, 무음 처리, 알림 배포 등의 작업을 수행합니다.", + "alert.help.integration.link": "https://hertzbeat.apache.org", + "alert.help.notice": "알림은 알람 메시지의 수신자와 수신 방식을 설정하는 기능입니다. 알람 메시지는 지정된 방식(이메일, Discord, Webhook 등 지원)으로 수신자에게 전송됩니다. 설정 절차는 여기를 클릭하세요..
\"알림 템플릿\"은 메시지 내용의 구조를 정의하는 템플릿입니다. 기본적으로 내장 템플릿을 사용하며, 필요에 따라 템플릿을 커스터마이징하여 메시지 알림 구조를 변경할 수 있습니다.
주의⚠️: \"수신자\"를 설정한 후에는 어떤 메시지를 어떤 수신자에게 보낼지 지정하기 위해 \"알림 정책\"도 함께 설정해야 합니다. 발생 가능한 문제는 여기를 클릭하세요.", + "alert.help.notice.link": "https://hertzbeat.apache.org/docs/help/alert_email", + "alert.help.setting": "임계값 규칙은 메트릭 알람 임계값 규칙을 관리하는 기능입니다. \"새 임계값\"을 클릭하여 모니터링 메트릭의 알람 임계값을 설정하세요. HertzBeat는 임계값과 메트릭 데이터를 기반으로 알람을 발생시킵니다.
주의⚠️: 발생한 알람 메시지는 [알람 센터]에서 확인할 수 있으며, [알림]에서 알림 방식과 담당자를 설정할 수 있습니다.", + "alert.help.setting.link": "https://hertzbeat.apache.org/docs/help/alert_threshold", + "alert.help.silence": "알람 무음 처리는 시스템 유지보수 중이거나 야간·주말에 알림을 받고 싶지 않을 때 사용합니다.
\"새 무음 처리 전략\"을 클릭하고 시간대를 설정하여 휴식 중 메시지 방해를 차단하세요.", + "alert.help.silence.link": "https://hertzbeat.apache.org/docs", + "alert.inhibit.delete": "억제 규칙 삭제", + "alert.inhibit.edit": "억제 규칙 수정", + "alert.inhibit.enable.tip": "이 억제 규칙을 활성화할지 여부", + "alert.inhibit.equal_labels": "동일 라벨", + "alert.inhibit.equal_labels.common": "공통 라벨", + "alert.inhibit.equal_labels.custom": "커스텀 라벨", + "alert.inhibit.equal_labels.more": "라벨 {{count}}개 더보기", + "alert.inhibit.equal_labels.placeholder": "라벨을 입력하거나 선택하세요", + "alert.inhibit.equal_labels.tip": "소스 알람과 타깃 알람은 지정된 라벨 키의 값이 동일해야 합니다. alertname, instance, severity 등이 일반적으로 사용됩니다", + "alert.inhibit.name": "억제 규칙 이름", + "alert.inhibit.name.tip": "이 억제 규칙을 식별하는 이름으로, 고유해야 합니다", + "alert.inhibit.new": "새 억제 규칙", + "alert.inhibit.source_labels": "소스 라벨", + "alert.inhibit.source_labels.tip": "알람이 이 라벨을 포함하면 타깃 알람을 억제합니다", + "alert.inhibit.target_labels": "타깃 라벨", + "alert.inhibit.target_labels.tip": "이 라벨과 일치하는 알람은 억제됩니다", + "alert.integration.source": "연동 소스", + "alert.integration.source.alertmanager": "Alertmanager", + "alert.integration.source.prometheus": "Prometheus", + "alert.integration.source.tencent": "Tencent Cloud", + "alert.integration.source.webhook": "기본 Webhook", + "alert.integration.source.skywalking": "SkyWalking", + "alert.integration.source.uptime-kuma": "Uptime Kuma", + "alert.integration.source.zabbix": "Zabbix", + "alert.integration.source.alibabacloud-sls": "AlibabaCloud-SLS", + "alert.integration.source.huaweicloud-ces": "Huawei Cloud Eye", + "alert.integration.source.volcengine": "Volcengine Monitoring", + "alert.integration.token.desc": "HertzBeat API에 접근하는 데 사용할 수 있도록 생성한 토큰입니다.", + "alert.integration.token.manage": "API 토큰 관리", + "alert.integration.token.new": "클릭하여 토큰 생성", + "alert.integration.token.notice": "토큰은 한 번만 표시됩니다. 안전하게 보관하고 타인과 공유하지 마세요.", + "alert.integration.token.title": "액세스 토큰", + "alert.notice.receiver": "알림 수신자", + "alert.notice.receiver.delete": "수신자 삭제", + "alert.notice.receiver.edit": "수신자 수정", + "alert.notice.receiver.new": "새 수신자", + "alert.notice.receiver.next": "다음 단계로 [알림 정책]을 설정하세요!", + "alert.notice.receiver.people": "수신자", + "alert.notice.receiver.people.name": "수신자 이름", + "alert.notice.receiver.people.placeholder": "수신자를 선택하세요", + "alert.notice.receiver.setting": "설정", + "alert.notice.receiver.type": "알림 유형", + "alert.notice.receiver.type.placeholder": "알림 유형을 선택하세요", + "alert.notice.rule": "알림 정책", + "alert.notice.rule.all": "전체 발송", + "alert.notice.rule.delete": "알림 정책 삭제", + "alert.notice.rule.edit": "알림 정책 수정", + "alert.notice.rule.name": "정책 이름", + "alert.notice.rule.new": "새 알림 정책", + "alert.notice.rule.period": "시간대", + "alert.notice.rule.period-chose": "날짜 선택", + "alert.notice.rule.period.custom": "커스텀", + "alert.notice.rule.period.no-limit": "제한 없음", + "alert.notice.rule.priority": "우선순위 일치", + "alert.notice.rule.priority.placeholder": "우선순위를 선택하세요", + "alert.notice.rule.tag": "라벨 일치", + "alert.notice.rule.tag.placeholder": "라벨을 선택하세요", + "alert.notice.rule.time": "알림 시간", + "alert.notice.rule.time-end": "종료 시간", + "alert.notice.rule.time-start": "시작 시간", + "alert.notice.send-test": "테스트 알람 메시지 전송", + "alert.notice.send-test.notify.failed": "테스트 알람 전송 실패!", + "alert.notice.send-test.notify.success": "테스트 알람 전송 성공!", + "alert.notice.sender.mail.enable": "이메일 설정 활성화", + "alert.notice.sender.mail.host": "이메일 서버 주소", + "alert.notice.sender.mail.password": "이메일 비밀번호", + "alert.notice.sender.mail.port": "이메일 포트", + "alert.notice.sender.mail.ssl": "SSL 활성화", + "alert.notice.sender.mail.starttls": "STARTTLS 활성화", + "alert.notice.sender.mail.username": "이메일 계정", + "alert.notice.sender.sms.tencent.appId": "Tencent SMS AppId", + "alert.notice.sender.sms.tencent.secretId": "Tencent SMS SecretId", + "alert.notice.sender.sms.tencent.secretKey": "Tencent SMS SecretKey", + "alert.notice.sender.sms.tencent.signName": "Tencent SMS SignName", + "alert.notice.sender.sms.tencent.templateId": "Tencent SMS TemplateId", + "alert.notice.sender.sms.alibaba.accessKeyId": "Alibaba SMS AccessKeyId", + "alert.notice.sender.sms.alibaba.accessKeySecret": "Alibaba SMS AccessKeySecret", + "alert.notice.sender.sms.alibaba.signName": "Alibaba SMS Sign Name", + "alert.notice.sender.sms.alibaba.templateCode": "Alibaba SMS Template Code", + "alert.notice.sender.sms.unisms.accessKeyId": "UniSMS AccessKeyId", + "alert.notice.sender.sms.unisms.accessKeySecret": "UniSMS AccessKeySecret", + "alert.notice.sender.sms.unisms.signature": "UniSMS Signature", + "alert.notice.sender.sms.unisms.templateId": "UniSMS TemplateId", + "alert.notice.sender.sms.unisms.authMode": "UniSMS 인증 방식", + "alert.notice.sender.sms.smslocal.apiKey": "Smslocal ApiKey", + "alert.notice.sender.sms.aws.accessKeyId": "AWS SMS AccessKeyId", + "alert.notice.sender.sms.aws.accessKeySecret": "AWS SMS AccessKeySecret", + "alert.notice.sender.sms.aws.region": "AWS Region", + "alert.notice.sender.sms.twilio.accountSid": "Twilio Account SID", + "alert.notice.sender.sms.twilio.authToken": "Twilio Auth Token", + "alert.notice.sender.sms.twilio.twilioPhoneNumber": "Twilio Phone Number", + "alert.notice.sender.sms.type": "SMS 유형", + "alert.notice.sender.sms.type.alibaba": "Alibaba SMS", + "alert.notice.sender.sms.type.tencent": "Tencent SMS", + "alert.notice.sender.sms.type.unisms": "UniSMS", + "alert.notice.sender.sms.type.smslocal": "Smslocal SMS", + "alert.notice.sender.sms.type.aws": "AWS SMS", + "alert.notice.sender.sms.type.twilio": "Twilio SMS", + "alert.notice.template": "알림 템플릿", + "alert.notice.template.content": "템플릿 내용", + "alert.notice.template.delete": "템플릿 삭제", + "alert.notice.template.edit": "템플릿 수정", + "alert.notice.template.name": "템플릿 이름", + "alert.notice.template.new": "새 템플릿", + "alert.notice.template.placeholder": "템플릿을 선택하세요", + "alert.notice.template.preset": "템플릿 유형", + "alert.notice.template.preset.false": "사용자 정의", + "alert.notice.template.preset.true": "시스템 기본 제공", + "alert.notice.template.show": "템플릿 내용 보기", + "alert.notice.template.type": "알림 유형", + "alert.notice.type.WeCom-robot": "위챗워크 로봇", + "alert.notice.type.WeCom-robot-key": "위챗워크 로봇 KEY", + "alert.notice.type.WeComApp": "위챗워크 앱", + "alert.notice.type.WeComApp-agentId": "위챗워크 앱 ID", + "alert.notice.type.WeComApp-appSecret": "위챗워크 앱 Secret", + "alert.notice.type.WeComApp-corpId": "위챗워크 앱 기업 ID", + "alert.notice.type.WeComApp-partyId": "부서 ID(| 기호로 구분)", + "alert.notice.type.WeComApp-tagId": "태그 ID(| 기호로 구분)", + "alert.notice.type.WeComApp-userId": "사용자 ID(| 기호로 구분)", + "alert.notice.type.access-token": "로봇 ACCESS_TOKEN", + "alert.notice.type.ding": "딩딩(DingTalk) 로봇", + "alert.notice.type.ding-secret": "로봇 Secret", + "alert.notice.type.discord": "Discord 봇", + "alert.notice.type.discord-bot-token": "Discord 봇 토큰", + "alert.notice.type.discord-channel-id": "Discord 채널 ID", + "alert.notice.type.email": "이메일", + "alert.notice.type.fei-shu": "페이슈(Feishu) 로봇", + "alert.notice.type.fei-shu-key": "페이슈 로봇 KEY", + "alert.notice.type.lark-app": "페이슈 앱", + "alert.notice.type.lark-app-appId": "앱 ID", + "alert.notice.type.lark-app-appSecret": "앱 Secret", + "alert.notice.type.lark-app-larkReceiveType": "알림 대상 유형", + "alert.notice.type.lark-app-larkReceiveType.placeholder": "페이슈 앱 알림 대상 유형을 선택하세요", + "alert.notice.type.lark-app-larkReceiveType.user": "지정 사용자 ID", + "alert.notice.type.lark-app-larkReceiveType.party": "지정 부서 ID", + "alert.notice.type.lark-app-larkReceiveType.chat": "지정 채팅방 ID", + "alert.notice.type.lark-app-larkReceiveType.all": "전체 사용자", + "alert.notice.type.lark-app-userId": "사용자 ID(, 기호로 구분)", + "alert.notice.type.lark-app-partyId": "부서 ID(, 기호로 구분)", + "alert.notice.type.lark-app-chatId": "채팅방 ID(, 기호로 구분)", + "alert.notice.type.gotify": "Gotify", + "alert.notice.type.gotify-token": "Gotify 토큰", + "alert.notice.type.ntfy": "Ntfy", + "alert.notice.type.ntfy-server-url": "Ntfy 서버 URL", + "alert.notice.type.ntfy-topic": "Ntfy Topic", + "alert.notice.type.ntfy-token": "Ntfy 액세스 토큰", + "alert.notice.type.phone": "전화", + "alert.notice.type.serverchan": "ServerChan", + "alert.notice.type.serverchan-token": "ServerChanToken", + "alert.notice.type.slack": "Slack Webhook", + "alert.notice.type.slack-webHook-url": "Slack Webhook URL", + "alert.notice.type.smn": "화웨이 클라우드 SMN", + "alert.notice.type.smn-ak": "AK", + "alert.notice.type.smn-projectId": "프로젝트 ID", + "alert.notice.type.smn-region": "리전", + "alert.notice.type.smn-sk": "SK", + "alert.notice.type.smn-topicUrn": "TopicUrn", + "alert.notice.type.sms": "SMS", + "alert.notice.type.telegram": "Telegram", + "alert.notice.type.telegram-bot": "Telegram 봇", + "alert.notice.type.telegram-bot-token": "Telegram 봇 토큰", + "alert.notice.type.telegram-bot-user-id": "Telegram 사용자 ID", + "alert.notice.type.telegram-message-thread-id": "메시지 스레드 ID", + "alert.notice.type.url": "URL", + "alert.notice.type.userId": "사용자 ID", + "alert.notice.type.wechat": "위챗(WeChat) 공식 계정", + "alert.notice.type.wechat-id": "위챗 OPENID", + "alert.notice.type.webhook-auth-type": "인증 방식", + "alert.notice.type.webhook-auth-type.placeholder": "인증 방식을 선택하세요", + "alert.notice.type.webhook-auth-token": "인증 토큰", + "alert.notify.title": "새 알람", + "alert.notify.body": "새로운 알람이 있습니다. 신속히 처리해 주세요", + "alert.setting.bind.available": "선택 가능한 모니터링", + "alert.setting.bind.manage": "연결 관리", + "alert.setting.bind.monitors": "연결된 모니터링", + "alert.setting.bind.monitors.tip": "이 임계값 규칙을 특정 모니터링 작업에만 적용하도록 설정합니다. 기본값은 전체와 연결되지 않은 상태입니다", + "alert.setting.bind.need-save": "모니터링을 연결하기 전에 메트릭 유형을 먼저 선택하세요", + "alert.setting.bind.selected": "선택된 모니터링", + "alert.setting.connect": "알람 임계값 연결 모니터링", + "alert.setting.connect.left": "미연결", + "alert.setting.connect.right": "연결됨", + "alert.setting.connect.instance": "인스턴스 연결", + "alert.setting.connect.label": "라벨 연결", + "alert.setting.connect.label.input": "라벨 입력", + "alert.setting.connect.label.empty": "일치하는 모니터링 대상이 없습니다. 라벨을 추가해 주세요", + "alert.setting.datatype": "데이터 유형", + "alert.setting.datatype.tip": "이 임계값 규칙의 데이터 유형을 선택하세요", + "alert.setting.datatype.metric": "메트릭", + "alert.setting.datatype.log": "로그", + "alert.setting.filter.name": "이름으로 필터링...", + "alert.setting.filter.labels": "라벨로 필터링...", + "alert.setting.default": "전역 기본값", + "alert.setting.default.tip": "이 알람 임계값 설정을 이 유형의 모든 모니터링에 전역적으로 적용할지 여부", + "alert.setting.delete": "임계값 규칙 삭제", + "alert.setting.edit": "임계값 규칙 수정", + "alert.setting.edit.periodic": "주기적 임계값 수정", + "alert.setting.edit.realtime": "실시간 임계값 수정", + "alert.setting.enable": "임계값 활성화", + "alert.setting.enable.tip": "이 알람 임계값 설정의 활성화 여부", + "alert.setting.export": "규칙 내보내기", + "alert.setting.expr": "임계값 표현식", + "alert.setting.expr.example": "이 표현식에 따라 임계값 트리거 여부를 계산합니다. 예", + "alert.setting.expr.label": "이 표현식에 따라 임계값 트리거 여부를 계산하고 판단합니다. 표현식에서 사용 가능한 환경 변수와 연산자는 위와 같습니다.", + "alert.setting.expr.operator.and": "그리고(AND)", + "alert.setting.expr.operator.brackets": "괄호", + "alert.setting.expr.operator.equals": "같음", + "alert.setting.expr.operator.greater": "초과", + "alert.setting.expr.operator.greater-equals": "이상", + "alert.setting.expr.operator.less": "미만", + "alert.setting.expr.operator.less-equals": "이하", + "alert.setting.expr.operator.not-equals": "같지 않음", + "alert.setting.expr.operator.or": "또는(OR)", + "alert.setting.expr.tip": "지원되는 임계값 트리거 표현식 환경 변수 및 연산자", + "alert.setting.import": "규칙 가져오기", + "alert.setting.name": "규칙 이름", + "alert.setting.name.tip": "규칙 이름은 고유해야 합니다", + "alert.setting.new": "새 임계값 규칙", + "alert.setting.new.periodic": "새 주기적 임계값", + "alert.setting.new.realtime": "새 실시간 임계값", + "alert.setting.number": "숫자", + "alert.setting.object": "객체", + "alert.setting.operator": "지원되는 연산자 함수", + "alert.setting.period": "실행 주기", + "alert.setting.period.placeholder": "실행 주기를 입력하세요. 최소 60초입니다", + "alert.setting.period.tip": "주기적 임계값 계산 시간 간격(초)으로, 최소 60초입니다", + "alert.setting.preview.expr": "표현식 미리보기", + "alert.setting.priority.tip": "임계값 발생 시의 알람 등급으로, 낮은 순서부터 경고, 심각, 긴급입니다", + "alert.setting.promql.tip": "PromQL 쿼리: sum(rate(process_cpu_seconds_total[5m])) > 0.8", + "alert.setting.recover-notice": "복구 알림", + "alert.setting.recover-notice.tip": "이 임계값 규칙에서 알람이 해제될 때 복구 알림을 전송할지 여부", + "alert.setting.rule": "임계값 규칙", + "alert.setting.rule.label": "그래픽 방식으로 알람 임계값 규칙을 설정하며, 여러 규칙의 && 조합을 지원합니다", + "alert.setting.rule.metric.place-holder": "메트릭을 선택하세요", + "alert.setting.rule.numeric-value.place-holder": "숫자를 입력하세요", + "alert.setting.rule.object.attribute.placeholder": "객체 속성을 입력하세요", + "alert.setting.rule.operator": "연산자", + "alert.setting.rule.operator.exists": "값 존재", + "alert.setting.rule.operator.no-exists": "값 없음", + "alert.setting.rule.operator.str-contains": "포함", + "alert.setting.rule.operator.str-equals": "일치", + "alert.setting.rule.operator.str-matches": "패턴 일치", + "alert.setting.rule.operator.str-no-contains": "미포함", + "alert.setting.rule.operator.str-no-equals": "불일치", + "alert.setting.rule.operator.str-no-matches": "패턴 불일치", + "alert.setting.rule.string-value.place-holder": "문자열을 입력하세요", + "alert.setting.log.query": "로그 쿼리", + "alert.setting.log.query.tip": "모니터링할 로그를 필터링하기 위한 로그 쿼리 조건을 설정하세요", + "alert.setting.log.expr": "로그 알람 표현식", + "alert.setting.log.expr.tip": "쿼리 결과를 기반으로 로그 알람 발생 조건을 설정하세요", + "alert.setting.log.expr.placeholder": "알람 표현식을 입력하세요. 예: count > 10", + "alert.setting.rule.switch-expr.0": "템플릿 임계값", + "alert.setting.rule.switch-expr.1": "코드 작성 임계값", + "alert.setting.search": "임계값 검색", + "alert.setting.string": "문자열", + "alert.setting.target": "메트릭 유형", + "alert.setting.target.other": "동일 행의 다른 메트릭 객체", + "alert.setting.target.place-holder": "메트릭 대상을 검색하거나 선택하세요", + "alert.setting.target.system_value_row_count": "값 행 수", + "alert.setting.target.tip": "선택된 메트릭 객체", + "alert.setting.template": "알람 내용", + "alert.setting.template.example": "인스턴스 localhost에서 높은 CPU 사용률이 감지되었습니다", + "alert.setting.template.label": "알람 발생 후 전송되는 알림 정보 템플릿", + "alert.setting.template.metric-name": "메트릭 이름", + "alert.setting.template.metric-value": "메트릭 값", + "alert.setting.template.metrics-name": "메트릭 이름", + "alert.setting.template.monitor-type": "모니터링 유형 이름", + "alert.setting.template.other-value": "기타 메트릭 값", + "alert.setting.template.tip": "지원되는 알림 템플릿 환경 변수", + "alert.setting.template.vars.app": "앱 유형", + "alert.setting.template.vars.instance": "인스턴스 ID", + "alert.setting.template.vars.instance-name": "인스턴스 이름", + "alert.setting.template.vars.instance-host": "인스턴스 호스트", + "alert.setting.template.vars.labels": "라벨", + "alert.setting.template.vars.metrics": "메트릭 이름", + "alert.setting.template.vars.threshold": "임계값 표현식", + "alert.setting.template.vars.time": "발생 시간", + "alert.setting.template.vars.tip": "메트릭 또는 연산자 삽입", + "alert.setting.template.vars.value": "발생 값", + "alert.setting.time": "시간", + "alert.setting.times": "발생 횟수", + "alert.setting.times.tip": "알람을 전송하기 전 임계값이 발생해야 하는 횟수를 설정하세요", + "alert.setting.trigger": "알람 발생", + "alert.setting.type": "임계값 유형", + "alert.setting.type.periodic": "주기적 알람", + "alert.setting.type.periodic.desc": "PromQL/SQL 쿼리를 주기적으로 실행하여 알람 조건을 확인합니다", + "alert.setting.type.periodic.log": "로그 주기적", + "alert.setting.type.periodic.metric": "메트릭 주기적", + "alert.setting.type.realtime": "실시간 알람", + "alert.setting.type.realtime.desc": "데이터 수집 즉시 알람을 발생시킵니다", + "alert.setting.type.realtime.log": "로그 실시간", + "alert.setting.type.realtime.metric": "메트릭 실시간", + "alert.setting.query.language": "쿼리 언어", + "alert.setting.query.language.promql": "PromQL", + "alert.setting.query.language.sql": "SQL", + "alert.setting.query.language.sql.not.support.metric": "주기적 메트릭 알람에는 아직 SQL 쿼리를 지원하지 않습니다", + "alert.setting.query.language.promql.not.support.log": "주기적 로그 알람에는 아직 PromQL 쿼리를 지원하지 않습니다", + "alert.setting.promql.description": "PromQL 쿼리 언어

예시:
cpu_usage > 80
cpu_usage{instance=\"server1\"} > 80
rate(http_requests_total[5m]) > 100
cpu > 80 and memory > 70", + "alert.setting.sql.description": "SQL 쿼리 언어

예시:
SELECT COUNT(*) FROM hertzbeat_logs WHERE severity_text = 'ERROR'
SELECT service_name, COUNT(*) FROM hertzbeat_logs GROUP BY service_name
SELECT * FROM hertzbeat_logs WHERE time_unix_nano >= NOW() - INTERVAL '5 minute'", + "alert.setting.type.periodic.not.configured": "주기적 알람을 사용하려면 지원되는 시계열 데이터베이스(Prometheus, GreptimeDB, VictoriaMetrics 등)를 설정하세요", + "alert.setting.type.periodic.not.available": "주기적 알람을 사용할 수 없습니다. 먼저 시계열 데이터베이스를 설정하세요", + "alert.setting.type.periodic.not.available.short": "시계열 DB 필요", + "alert.severity": "알람 등급", + "alert.severity.0": "긴급", + "alert.severity.1": "심각", + "alert.severity.2": "경고", + "alert.severity.all": "전체 등급", + "alert.mode": "알람 모드", + "alert.mode.group": "그룹 알람", + "alert.mode.individual": "개별 알람", + "alert.setting.mode.tip": "알람 모드를 선택하세요. 그룹 알람 모드는 동일 조건의 알람을 병합하고, 개별 알람 모드는 각 알람을 개별적으로 전송합니다", + "alert.notice.rule.mode.placeholder": "알람 모드를 선택하세요", + "alert.silence.delete": "무음 처리 전략 삭제", + "alert.silence.edit": "무음 처리 전략 수정", + "alert.silence.labels": "라벨 일치", + "alert.silence.match-all": "전체 일치", + "alert.silence.name": "무음 처리 전략 이름", + "alert.silence.new": "새 무음 처리 전략", + "alert.silence.priority": "우선순위 일치", + "alert.silence.time": "무음 처리 기간", + "alert.silence.times": "무음 처리된 알람 수", + "alert.silence.type": "무음 처리 유형", + "alert.silence.type.cyc": "주기적 무음 처리", + "alert.silence.type.once": "일회성 무음 처리", + "alert.status": "알람 상태", + "alert.status.all": "전체 상태", + "alert.status.firing": "발생 중", + "alert.status.resolved": "해결됨", + "annotation": "주석", + "annotation.bind": "주석 바인딩", + "annotation.bind.tip": "주석을 사용하여 엔터티 정보를 표시할 수 있습니다. 예를 들어 리소스에 바인딩된 중요 이벤트에 주석을 달 수 있습니다.", + "app.lock": "잠금 해제", + "app.lock.placeholder": "아무 키나 입력하여 잠금 해제", + "app.login.explore.cloud": "클라우드 살펴보기", + "app.login.explore.cloud.detail": "클릭하여 HertzBeat Cloud 살펴보기", + "app.login.login": "로그인", + "app.login.message-invalid-credentials": "잘못된 사용자명 또는 비밀번호입니다", + "app.login.message-need-credential": "비밀번호를 입력하세요", + "app.login.message-need-identifier": "사용자명을 입력하세요", + "app.login.need-change-password": "초기 기본 비밀번호를 빠른 시일 내에 변경해 주세요!", + "app.login.notify": "로그인해 주세요!", + "app.login.remember-me": "로그인 정보 기억하기", + "app.login.tab-login-credentials": "HertzBeat 로그인", + "app.passport.desc": "AI 기반 차세대 오픈소스 실시간 옵저버빌리티 시스템", + "app.passport.intro-1": "오픈소스, 고성능, AI 기반", + "app.passport.intro-2": "실시간 옵저버빌리티", + "app.role.admin": "관리자", + "app.theme.compact": "컴팩트 테마", + "app.theme.dark": "다크 테마", + "app.theme.default": "라이트 테마", + "bulletin.batch.delete": "게시판 일괄 삭제", + "bulletin.delete": "게시판 삭제", + "bulletin.edit": "게시판 수정", + "bulletin.help.content": "커스텀 모니터링 게시판(베타), 특정 모니터링의 선택된 메트릭을 표 형태로 표시합니다", + "bulletin.help.link": "https://hertzbeat.apache.org/docs/help/bulletin", + "bulletin.monitor.metrics": "모니터링 메트릭", + "bulletin.monitor.name": "모니터링 작업 이름", + "bulletin.monitor.name.placeholder": "이름 / 라벨 / 값으로 검색", + "bulletin.monitor.type": "모니터링 유형", + "bulletin.name": "게시판 이름", + "bulletin.name.placeholder": "커스텀 게시판 이름을 입력하세요", + "bulletin.new": "새 게시판", + "collector": "수집기", + "collector.confirm.offline": "이 수집기를 오프라인으로 전환하시겠습니까!", + "collector.confirm.offline-batch": "수집기를 일괄 오프라인으로 전환하시겠습니까!", + "collector.confirm.online": "이 수집기를 온라인으로 전환하시겠습니까!", + "collector.confirm.online-batch": "수집기를 일괄 온라인으로 전환하시겠습니까!", + "collector.delete": "수집기 삭제", + "collector.deploy": "수집기 배포", + "collector.deploy.close": "닫기 - 토큰을 저장했습니다", + "collector.deploy.docker": "Docker로 배포", + "collector.deploy.docker.help": "# Docker 환경에서 아래 명령어를 실행하세요", + "collector.deploy.docker.help.1": "# docker run -d : Docker를 통해 백그라운드에서 실행되는 컨테이너를 시작합니다", + "collector.deploy.docker.help.2": "# -e IDENTITY=xxx : 수집기의 식별 토큰을 설정합니다", + "collector.deploy.docker.help.3": "# -e MANAGER_HOST=127.0.0.1 : 연결할 HertzBeat 메인 서비스 주소를 설정합니다", + "collector.deploy.docker.help.4": "# -e MODE=public : 실행 모드(public 또는 private)를 설정합니다. 퍼블릭 클러스터 또는 프라이빗 클라우드-엣지 방식입니다.", + "collector.deploy.docker.help.5": "# --name hertzbeat-collector: 컨테이너 이름을 hertzbeat-collector로 지정합니다", + "collector.deploy.docker.help.6": "# apache/hertzbeat-collector: 공식 애플리케이션 이미지이며, 타임아웃 시 quay.io/tancloud/hertzbeat-collector를 사용하세요", + "collector.deploy.identity": "수집기 토큰(IDENTITY)", + "collector.deploy.identity.tip": "이 토큰은 고유하므로 안전하게 보관해 주세요.", + "collector.deploy.ok": "토큰 및 배포 명령어 생성", + "collector.deploy.package": "패키지로 배포", + "collector.deploy.package.gitee": "Gitee에서 다운로드", + "collector.deploy.package.github": "Github에서 다운로드", + "collector.deploy.package.help": "# 시스템에 맞는 릴리스 패키지 hertzbeat-collector-xx.tar.gz를 다운로드하세요", + "collector.deploy.package.help.1": "# 압축을 풀고 hertzbeat-collector/config/application.yml 파일을 설정하세요", + "collector.deploy.package.help.2": "# 파일 내 IDENTITY, MANAGER_HOST, MODE 파라미터를 아래와 같이 변경하세요.", + "collector.deploy.package.help.3": "# bin/startup.sh 또는 startup.bat(윈도우)을 실행하여 수집기를 시작하세요.", + "collector.dispatched": "할당된 작업", + "collector.help": "수집기 클러스터는 등록된 수집기 클러스터 노드를 관리하며, 현재 수집기 상태와 스케줄링 작업 분배 현황을 표시하고, 배포·삭제·오프라인 등의 작업을 지원합니다.
내장 수집기 외에도 여러 개의 수집기를 등록하여 고성능 클러스터 또는 클라우드-엣지 협업 시나리오에 활용할 수 있습니다.", + "collector.help.link": "https://hertzbeat.apache.org/docs/help/guide", + "collector.ip": "IP 주소", + "collector.mode": "실행 모드", + "collector.mode.private": "프라이빗 클라우드-엣지", + "collector.mode.public": "퍼블릭 클러스터", + "collector.name": "수집기 이름", + "collector.name.placeholder": "수집기의 고유 이름을 설정하세요", + "collector.node": "노드 이름", + "collector.notify.no-select-offline": "오프라인 전환할 수집기를 선택하지 않았습니다!", + "collector.notify.no-select-online": "온라인 전환할 수집기를 선택하지 않았습니다!", + "collector.offline": "수집기 오프라인", + "collector.online": "수집기 온라인", + "collector.pinned": "고정된 작업", + "collector.start-time": "시작 시간", + "collector.status": "온라인 상태", + "collector.task": "전체 작업 수", + "collector.version": "버전", + "common.annotation": "주석", + "common.annotation.bind": "주석 바인딩", + "common.annotation.bind.tip": "주석을 사용하여 엔터티 정보를 표시할 수 있습니다. 예를 들어 리소스에 중요 이벤트 주석을 바인딩할 수 있습니다.", + "common.button.cancel": "취소", + "common.button.collapse": "접기", + "common.button.confirm": "확인", + "common.button.copy": "복사", + "common.button.copy.tip": "클릭하여 복사", + "common.button.delete": "삭제", + "common.button.detect": "감지", + "common.button.edit": "수정", + "common.button.expand": "펼치기", + "common.button.export": "내보내기", + "common.button.help": "도움말", + "common.button.import": "가져오기", + "common.button.new": "신규", + "common.button.ok": "확인", + "common.button.return": "돌아가기", + "common.button.setting": "설정", + "common.button.save": "저장", + "common.confirm.cancel": "모니터링을 일시중지하시겠습니까!", + "common.confirm.cancel-batch": "모니터링을 일괄 일시중지하시겠습니까!", + "common.confirm.clear-cache": "캐시를 삭제하시겠습니까!", + "common.confirm.delete": "삭제하시겠습니까!", + "common.confirm.delete-batch": "일괄 삭제하시겠습니까!", + "common.confirm.enable": "모니터링을 활성화하시겠습니까!", + "common.confirm.enable-batch": "모니터링을 일괄 활성화하시겠습니까!", + "common.copy": "클립보드에 복사", + "common.copy.button": "복사", + "common.disable": "비활성화", + "common.edit": "작업", + "common.edit-time": "수정 시간", + "common.enable": "활성화", + "common.file.select": "파일 선택", + "common.ignore": "무시", + "common.mute": "음소거", + "common.unmute": "음소거 해제", + "common.name": "메트릭 이름", + "common.new-time": "생성 시간", + "common.no": "아니오", + "common.preview.button": "미리보기", + "common.notice": "알림", + "common.notify.apply-fail": "적용 실패!", + "common.notify.apply-success": "적용 성공!", + "common.notify.cancel-fail": "취소 실패!", + "common.notify.cancel-success": "취소 성공!", + "common.notify.clear-fail": "삭제 실패!", + "common.notify.clear-success": "삭제 성공!", + "common.notify.copy-fail": "복사 실패!", + "common.notify.copy-success": "복사 성공!", + "common.notify.delete-fail": "삭제 실패!", + "common.notify.delete-success": "삭제 성공!", + "common.notify.edit-fail": "수정 실패!", + "common.notify.edit-success": "수정 성공!", + "common.notify.enable-fail": "활성화 실패!", + "common.notify.enable-success": "활성화 성공!", + "common.notify.export-fail": "내보내기 실패!", + "common.notify.export-success": "내보내기 성공!", + "common.notify.import-fail": "가져오기 실패!", + "common.notify.import-success": "가져오기 성공!", + "common.notify.import-fail-detail": "[{{taskName}}] 가져오기 실패: [{{errMsg}}]", + "common.notify.import-success-detail": "[{{taskName}}] 가져오기 성공!", + "common.notify.import-submitted": "[{{taskName}}] 가져오기 요청이 제출되었습니다!", + "common.notify.import-progress": "[{{taskName}}] 가져오는 중, 진행률: {{progress}}%", + "common.notify.mark-fail": "표시 실패!", + "common.notify.mark-success": "표시 성공!", + "common.notify.new-fail": "추가 실패!", + "common.notify.new-success": "추가 성공!", + "common.notify.no-select-cancel": "취소할 항목을 선택하지 않았습니다!", + "common.notify.no-select-delete": "삭제할 항목을 선택하지 않았습니다!", + "common.notify.no-select-edit": "수정할 항목을 선택하지 않았습니다!", + "common.notify.no-select-enable": "활성화할 항목을 선택하지 않았습니다!", + "common.notify.no-select-export": "내보낼 항목을 선택하지 않았습니다!", + "common.notify.one-select-edit": "한 번에 하나의 항목만 수정할 수 있습니다!", + "common.notify.operate-fail": "작업 실패!", + "common.notify.operate-success": "작업 성공!", + "common.notify.query-fail": "모니터링 조회 실패!", + "common.refresh": "새로고침", + "common.search": "검색", + "common.time.unit.second": "초", + "common.total": "합계", + "common.value": "메트릭 값", + "common.week.1": "월요일", + "common.week.2": "화요일", + "common.week.3": "수요일", + "common.week.4": "목요일", + "common.week.5": "금요일", + "common.week.6": "토요일", + "common.week.7": "일요일", + "common.yes": "예", + "dashboard.alerts.deal": "처리 중인 알람", + "dashboard.alerts.deal-percent": "처리율", + "dashboard.alerts.distribute": "알람 분포", + "dashboard.alerts.enter": "알람 센터로 이동", + "dashboard.alerts.no": "미처리 알람 없음", + "dashboard.alerts.num": "알람 수", + "dashboard.alerts.title": "최근 알람 목록", + "dashboard.alerts.title-no": "최근 미처리 알람", + "dashboard.monitors.distribute": "모니터링 분포", + "dashboard.monitors.formatter": " 개 모니터링 ", + "dashboard.monitors.sub-title": "모니터링 분포 현황", + "dashboard.monitors.title": "모니터링 개요", + "dashboard.monitors.total": "전체 모니터링 수", + "define.delete": "{{app}} 삭제", + "define.delete.confirm": "{{app}} 모니터링 유형을 삭제하시겠습니까? 삭제 후에는 이 유형의 모니터링을 추가할 수 없습니다.", + "define.disable": "{{app}} 비활성화", + "define.enable": "{{app}} 활성화", + "define.help": "모니터링 템플릿은 각 모니터링 유형, 파라미터 변수, 메트릭 정보, 수집 프로토콜 등을 정의합니다. 드롭다운 메뉴에서 기존 모니터링 템플릿을 선택한 후 필요에 맞게 수정할 수 있습니다. 좌측 하단은 비교 영역이며 우측 하단은 편집 영역입니다.
\"새 모니터링 유형\"을 클릭하여 새로운 유형을 커스텀 정의할 수도 있습니다. 현재 지원하는 프로토콜에는 HTTP, JDBC, SSH, JMX, SNMP 등이 있습니다. 모니터링 템플릿.", + "define.help.link": "https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-point/", + "define.hide-false.confirm": "이 메뉴를 숨기시겠습니까?", + "define.hide-false.tip": "현재 메인 메뉴에 표시 중입니다. 숨기시겠습니까", + "define.hide-true.confirm": "이 메뉴를 표시하시겠습니까?", + "define.hide-true.tip": "현재 메인 메뉴에 표시되지 않습니다. 표시하시겠습니까", + "define.new": "새 모니터링 유형", + "define.new.code": "# 아래에 YML 내용을 작성하여 새 모니터링 유형을 정의하세요. 문서 참고: https://hertzbeat.apache.org/docs/advanced/extend-point ", + "define.save-apply": "저장 및 적용", + "define.save-apply.confirm": "모니터링 정의를 업데이트하고 적용하시겠습니까? 이는 모니터링 대상에 영향을 줄 수 있습니다.", + "define.save-apply.no-code": "모니터링 유형 정의 내용은 비워둘 수 없습니다.", + "label": "라벨", + "label.bind": "라벨 바인딩", + "label.bind.tip": "라벨을 사용하여 분류 관리를 할 수 있습니다. 예: 운영 환경과 테스트 환경의 리소스에 각각 라벨을 지정합니다.", + "label.color": "색상", + "label.delete": "라벨 삭제", + "label.description": "설명", + "label.display": "표시", + "label.edit": "라벨 수정", + "label.id": "ID", + "label.name": "라벨 이름", + "label.new": "새 라벨", + "label.search": "라벨 검색", + "label.setting": "라벨", + "label.value": "라벨 값", + "labels.help": "라벨은 다양한 곳에서 활용됩니다. 리소스 그룹화, 규칙의 태그 매칭 등에 라벨을 적용할 수 있습니다. [라벨 관리]는 라벨의 추가, 삭제, 수정 등을 통합 관리하는 기능입니다.
라벨을 사용하여 운영 환경과 테스트 환경별로 각각 라벨을 바인딩하는 등 모니터링 리소스를 분류·관리할 수 있습니다.", + "labels.help.link": "https://hertzbeat.apache.org/zh-cn/docs/", + "log.help.integration": "통합 로그 관리, 외부 로그 소스의 로그 메시지를 연동·수집하여 저장, 알람, 분석 등을 수행합니다.", + "log.help.integration.link": "https://hertzbeat.apache.org", + "log.help.manage": "로그 관리 및 통계, 로그 조회, 통계, 삭제 등의 작업을 지원합니다.", + "log.help.manage.link": "https://hertzbeat.apache.org", + "log.help.stream": "실시간 로그 항목을 조회할 수 있는 실시간 로그 스트림 모니터링 화면으로, 필터링 및 검색 기능을 제공합니다.", + "log.help.stream.link": "https://hertzbeat.apache.org", + "log.integration.source": "연동된 로그 소스", + "log.integration.source.otlp": "OTLP 프로토콜", + "log.integration.token.desc": "생성된 토큰은 HertzBeat 로그 액세스 API에 접근하는 데 사용할 수 있습니다", + "log.integration.token.manage": "API 토큰 관리", + "log.integration.token.new": "클릭하여 토큰 생성", + "log.integration.token.notice": "이 내용은 한 번만 표시됩니다. 토큰을 안전하게 보관하고 타인에게 공개하지 마세요.", + "log.integration.token.title": "액세스 인증 토큰", + "log.manage.batch-delete": "일괄 삭제", + "log.manage.basic-information": "기본 정보", + "log.manage.clear": "삭제", + "log.manage.chart.log-trend": "로그 추이", + "log.manage.chart.severity-distribution": "심각도 분포", + "log.manage.chart.trace-coverage": "트레이스 커버리지", + "log.manage.chart.trace-coverage.complete-trace-info": "완전한 트레이스 정보", + "log.manage.chart.trace-coverage.with-span": "Span ID 포함", + "log.manage.chart.trace-coverage.with-trace": "Trace ID 포함", + "log.manage.chart.trace-coverage.without-trace": "Trace ID 없음", + "log.manage.column-control": "컬럼 표시 설정", + "log.manage.column-setting": "컬럼 설정", + "log.manage.complete-json-data": "전체 JSON 데이터", + "log.manage.error.unsupported-db": "데이터베이스가 로그 쿼리를 지원하지 않습니다!", + "log.manage.hide-statistics": "통계 숨기기", + "log.manage.log-entry-details": "로그 항목 상세", + "log.manage.overview.debug-logs": "디버그 로그", + "log.manage.overview.error-logs": "오류 로그", + "log.manage.overview.fatal-logs": "치명적 로그", + "log.manage.overview.info-logs": "정보 로그", + "log.manage.overview.total-logs": "전체 로그 수", + "log.manage.overview.warning-logs": "경고 로그", + "log.manage.reset-all-columns": "전체 컬럼 초기화", + "log.manage.search": "검색", + "log.manage.severity-number": "심각도 번호", + "log.manage.severity-text": "심각도", + "log.manage.show-statistics": "통계 표시", + "log.manage.span-id": "Span ID", + "log.manage.table.column.attributes": "속성", + "log.manage.table.column.body": "로그 내용", + "log.manage.table.column.dropped-count": "누락 수", + "log.manage.table.column.instrumentation": "계측 정보", + "log.manage.table.column.observed-time": "관측 시간", + "log.manage.table.column.resource": "리소스", + "log.manage.table.column.severity": "심각도", + "log.manage.table.column.span-id": "Span ID", + "log.manage.table.column.time": "시간", + "log.manage.table.column.trace-flags": "트레이스 플래그", + "log.manage.table.column.trace-id": "Trace ID", + "log.manage.table.title": "로그 목록", + "log.manage.timestamp": "타임스탬프", + "log.manage.title": "로그 관리 및 통계", + "log.manage.trace-id": "Trace ID", + "log.stream.apply-filters": "필터 적용", + "log.stream.apply-filters-tooltip": "필터 적용", + "log.stream.attributes": "속성", + "log.stream.basic-information": "기본 정보", + "log.stream.clear": "삭제", + "log.stream.clear-filters": "필터 초기화", + "log.stream.clear-filters-tooltip": "모든 필터 초기화", + "log.stream.complete-json-data": "전체 JSON 데이터", + "log.stream.connected": "연결됨", + "log.stream.connecting": "연결 중...", + "log.stream.copy-message": "메시지 복사", + "log.stream.disconnected": "연결 끊김", + "log.stream.hide-filters": "필터 숨기기", + "log.stream.live-logs": "실시간 로그", + "log.stream.log-entry-details": "로그 항목 상세", + "log.stream.logs": "로그", + "log.stream.message": "메시지", + "log.stream.no-logs": "표시할 로그 없음", + "log.stream.pause": "일시정지", + "log.stream.resource": "리소스", + "log.stream.resume": "재개", + "log.stream.scroll-to-top": "맨 위로 스크롤", + "log.stream.severity": "심각도:", + "log.stream.severity-number": "심각도 번호:", + "log.stream.severity-number-placeholder": "심각도 번호 입력", + "log.stream.severity-text": "심각도:", + "log.stream.severity-text-placeholder": "심각도 입력", + "log.stream.content": "로그 내용", + "log.stream.content-placeholder": "로그 내용 입력", + "log.stream.show-filters": "필터 표시", + "log.stream.span": "Span:", + "log.stream.span-id": "Span ID:", + "log.stream.span-id-full": "Span ID:", + "log.stream.span-id-placeholder": "Span ID 입력", + "log.stream.title": "로그 스트림", + "log.stream.timestamp": "타임스탬프:", + "log.stream.toggle-filters": "필터 전환", + "log.stream.trace": "Trace:", + "log.stream.trace-id": "Trace ID:", + "log.stream.trace-id-full": "Trace ID:", + "log.stream.trace-id-placeholder": "Trace ID 입력", + "log.stream.unknown": "알 수 없음", + "menu.account": "개인", + "menu.account.binding": "계정 연동", + "menu.account.center": "개인 센터", + "menu.account.logout": "로그아웃", + "menu.account.security": "보안 설정", + "menu.account.settings": "계정 설정", + "menu.account.trigger": "오류 발생 테스트", + "menu.advanced": "고급", + "menu.advanced.collector": "수집기", + "menu.advanced.define": "템플릿", + "menu.advanced.labels": "라벨", + "menu.advanced.plugins": "플러그인", + "menu.advanced.status": "상태 페이지", + "menu.advanced.mcp-server": "MCP 서버", + "menu.alert": "알람", + "menu.alert.center": "알람 센터", + "menu.alert.converge": "컨버전스", + "menu.alert.dispatch": "알림", + "menu.alert.group": "그룹", + "menu.alert.inhibit": "억제", + "menu.alert.integration": "연동", + "menu.alert.setting": "임계값", + "menu.alert.silence": "무음 처리", + "menu.clear.local.storage": "로컬 저장소 비우기", + "menu.dashboard": "대시보드", + "menu.extras": "더보기", + "menu.extras.about": "소개", + "menu.extras.ai.chat": "HertzBeat AI", + "menu.extras.help": "도움말", + "menu.extras.setting": "설정", + "menu.extras.settings": "설정", + "menu.fullscreen": "전체 화면", + "menu.fullscreen.exit": "종료", + "menu.lang": "언어", + "menu.link.guild": "사용자 가이드", + "menu.link.question": "자주 묻는 질문", + "menu.log": "로그", + "menu.log.integration": "연동", + "menu.log.manage": "로그 관리", + "menu.log.stream": "로그 스트림", + "menu.main": "메인", + "menu.monitor": "모니터링", + "menu.monitor.bigdata": "빅데이터 모니터링", + "menu.monitor.bulletin": "게시판", + "menu.monitor.cache": "캐시 모니터링", + "menu.monitor.center": "모니터링 목록", + "menu.monitor.cn": "클라우드 네이티브", + "menu.monitor.custom": "커스텀 모니터링", + "menu.monitor.db": "DB 모니터링", + "menu.monitor.llm": "AI LLM", + "menu.monitor.mid": "미들웨어 모니터링", + "menu.monitor.network": "네트워크 모니터링", + "menu.monitor.os": "OS 모니터링", + "menu.monitor.program": "애플리케이션 모니터링", + "menu.monitor.prometheus": "Prometheus 작업", + "menu.monitor.promql": "데이터 쿼리", + "menu.monitor.server": "서버 모니터링", + "menu.monitor.service": "서비스 모니터링", + "menu.monitor.webserver": "웹서버 모니터링", + "menu.more": "더보기", + "menu.search.placeholder": "작업 이름, 호스트 등 검색", + "monitor": "모니터링", + "monitor.advanced": "고급", + "monitor.advanced.tip": "고급 설정 파라미터", + "monitor.app": "모니터링 유형", + "monitor.app.api": "HTTP API", + "monitor.app.fullsite": "사이트맵 모니터링", + "monitor.app.http": "HTTP API", + "monitor.app.mysql": "MySQL", + "monitor.app.oracle": "Oracle", + "monitor.app.ping": "PING 연결", + "monitor.app.port": "포트 가용성", + "monitor.app.redis": "Redis", + "monitor.app.website": "웹사이트 모니터링", + "monitor.availability": "모니터링 가용성", + "monitor.cancel": "모니터링 일시중지", + "monitor.category": "카테고리", + "monitor.category.auto": "자동 작업", + "monitor.category.bigdata": "빅데이터", + "monitor.category.cache": "캐시", + "monitor.category.cn": "클라우드 네이티브", + "monitor.category.custom": "커스텀", + "monitor.category.db": "데이터베이스", + "monitor.category.mid": "미들웨어", + "monitor.category.network": "네트워크", + "monitor.category.os": "OS", + "monitor.category.program": "애플리케이션", + "monitor.category.server": "서버 모니터링", + "monitor.category.service": "서비스", + "monitor.category.webserver": "웹서버", + "monitor.center.help": "모니터링 센터는 모니터링 리소스를 관리하는 포털입니다. 현재 추가된 모니터링 목록을 표시하며, 라벨 그룹화, 쿼리 필터링, 상세 정보 조회 기능을 지원합니다.
모니터링의 추가, 수정, 삭제, 일시중지, 가져오기/내보내기, 일괄 관리 등의 작업을 수행할 수 있습니다.", + "monitor.center.help.link": "https://hertzbeat.apache.org/docs/", + "monitor.center.search.placeholder": "추가할 모니터링 유형 검색: Linux, Redis", + "monitor.coilRegisterAddresses.tip": "레지스터 주소 입력", + "monitor.collect.time": "수집 시간", + "monitor.collect.time.tip": "마지막 수집 시간", + "monitor.collector": "수집기", + "monitor.collector.status.offline": "오프라인", + "monitor.collector.status.online": "온라인", + "monitor.collector.system.default": "시스템 기본 할당", + "monitor.collector.tip": "이 모니터링을 할당할 수집기를 선택하세요", + "monitor.content.tip": "3025020101040", + "monitor.contentType.tip": "요청 본문 유형", + "monitor.copy": "모니터링 복사", + "monitor.copy-monitor": "모니터링 복사", + "monitor.copy.failed": "모니터링 복사 실패", + "monitor.copy.notify.one-select": "복사할 모니터링은 하나만 선택할 수 있습니다", + "monitor.copy.success": "모니터링 복사 성공", + "monitor.delete": "삭제", + "monitor.delete-monitor": "모니터링 삭제", + "monitor.description": "설명", + "monitor.description.tip": "설명 및 비고", + "monitor.detail": "모니터링 상세", + "monitor.detail.auto-refresh": "{{time}}초 후 자동 새로고침", + "monitor.detail.basic": "모니터링 기본 정보", + "monitor.detail.chart.back": "확대 초기화", + "monitor.detail.chart.no-data": "메트릭 데이터 없음", + "monitor.detail.chart.query-1d": "1일 조회", + "monitor.detail.chart.query-1h": "1시간 조회", + "monitor.detail.chart.query-1m": "1개월 조회", + "monitor.detail.chart.query-1w": "1주 조회", + "monitor.detail.chart.query-3m": "3개월 조회", + "monitor.detail.chart.query-6h": "6시간 조회", + "monitor.detail.chart.save": "이미지로 저장", + "monitor.detail.chart.unit": "단위", + "monitor.detail.chart.zoom": "확대", + "monitor.detail.chart.data-loading": "데이터 로딩 중", + "monitor.detail.chart.data-processing": "데이터 파싱 중", + "monitor.detail.close-refresh": "자동 새로고침 끄기", + "monitor.detail.config-refresh": "{{time}}초로 자동 새로고침 설정", + "monitor.detail.description": "설명", + "monitor.detail.history": "모니터링 히스토리 차트 상세", + "monitor.detail.name": "이름", + "monitor.detail.port": "포트", + "monitor.detail.realtime": "모니터링 실시간 상세", + "monitor.detail.show-basic": "기본 정보 표시", + "monitor.detail.status": "상태", + "monitor.detail.time-series.unavailable": "히스토리 차트를 제공할 수 없습니다. 시계열 데이터베이스를 설정하세요", + "monitor.detail.value.null": "값 없음", + "monitor.detect": "감지", + "monitor.detect.failed": "감지 실패", + "monitor.detect.success": "감지 성공", + "monitor.detect.tip": "모니터링 가용 상태를 확인하고 감지합니다", + "monitor.edit": "수정", + "monitor.edit-monitor": "모니터링 수정", + "monitor.edit.failed": "모니터링 업데이트 실패", + "monitor.edit.success": "모니터링 업데이트 성공", + "monitor.enable": "활성화", + "monitor.export": "선택 항목 내보내기", + "monitor.selected-count": "{{count}}개 선택됨", + "monitor.clear-selection": "선택 해제", + "monitor.select-current-page": "현재 페이지 선택", + "monitor.export-all": "전체 내보내기", + "monitor.export.switch-type": "내보내기 파일 형식을 선택하세요", + "monitor.export.use-type": "선택한 모니터링을 {{type}} 형식으로 내보내기", + "monitor.export-all.use-type": "전체 모니터링을 {{type}} 형식으로 내보내기", + "monitor.grafana.enabled.label": "Grafana 활성화", + "monitor.grafana.enabled.tip": "활성화하면 모니터링 데이터가 Grafana에 표시됩니다", + "monitor.grafana.upload.label": "Grafana 템플릿 업로드", + "monitor.grafana.upload.tip": "Grafana 템플릿 파일을 업로드하세요. .json 파일을 지원합니다", + "monitor.headerName.tip": "헤더 이름", + "monitor.headerValue.tip": "헤더 값", + "monitor.holdingRegisterAddresses.tip": "레지스터 주소 입력", + "monitor.host": "대상 호스트", + "monitor.host.tip": "대상 IP 또는 도메인 이름", + "monitor.help": "모니터링 및 관리 화면으로, 여기서 메트릭 데이터를 확인하고 모니터링 작업을 관리할 수 있습니다. 정상 서비스 상태는", + "monitor.icon.bigdata": "dot-chart", + "monitor.icon.cache": "group", + "monitor.icon.center": "laptop", + "monitor.icon.cn": "cloud-server", + "monitor.icon.custom": "project", + "monitor.icon.db": "console-sql", + "monitor.icon.mid": "cluster", + "monitor.icon.network": "global", + "monitor.icon.os": "windows", + "monitor.icon.program": "code", + "monitor.icon.service": "appstore", + "monitor.icon.webserver": "database", + "monitor.import": "모니터링 가져오기", + "monitor.intervals": "수집 주기", + "monitor.intervals.tip": "주기적 데이터 수집 간격(초 단위)", + "monitor.period": "모니터링 주기", + "monitor.period.tip": "모니터링 실행 주기 표현식 또는 시간 간격", + "monitor.scheduleType": "스케줄 유형", + "monitor.scheduleType.tip": "모니터링 스케줄 유형을 선택하세요", + "monitor.scheduleType.interval": "초 간격", + "monitor.scheduleType.cron": "Cron 표현식", + "monitor.cronExpression": "Cron 표현식", + "monitor.cronExpression.tip": "예: 0/30 * * * * ? 는 30초마다 실행됨을 의미합니다", + "monitor.cronExpression.invalid": "잘못된 Cron 표현식 형식입니다", + "monitor.keyword.tip": "모니터링할 키워드를 입력하세요", + "monitor.list": "모니터링 목록", + "monitor.name": "작업 이름", + "monitor.name.tip": "작업을 식별하는 고유 이름", + "monitor.new": "신규", + "monitor.new-monitor": "새 모니터링", + "monitor.new.failed": "모니터링 생성 실패", + "monitor.new.notify.change-to-http": "HTTPS가 비활성화되어 포트 번호가 자동으로 80으로 변경되었습니다. 참고하세요.", + "monitor.new.notify.change-to-https": "HTTPS가 활성화되어 포트 번호가 자동으로 443으로 변경되었습니다. 참고하세요.", + "monitor.new.notify.change-to-ftp": "SFTP가 비활성화되어 포트 번호가 자동으로 21로 변경되었습니다. 참고하세요.", + "monitor.new.notify.change-to-sftp": "SFTP가 활성화되어 포트 번호가 자동으로 22로 변경되었습니다. 참고하세요.", + "monitor.new.success": "모니터링 생성 성공", + "monitor.not-found": "해당 모니터링을 찾을 수 없습니다", + "monitor.item.unavailable": "이 모니터링 항목을 더 이상 사용할 수 없습니다. 서비스가 오프라인 상태일 수 있습니다. 목록 페이지로 돌아갑니다...", + "monitor.item.unavailable.refresh": "이 모니터링 항목을 더 이상 사용할 수 없습니다. 목록이 자동으로 새로고침됩니다", + "monitor.path.tip": "Exporter URL 엔드포인트 경로", + "monitor.payload.tip": "POST, PUT일 때 사용 가능", + "monitor.privateKey.tip": "BEGIN RSA PRIVATE KEY", + "monitor.search.app": "유형 필터", + "monitor.search.placeholder": "모니터링 검색", + "monitor.search.label": "라벨 필터", + "monitor.sitemap.tip": "웹 SITEMAP 예: /sitemap.xml", + "monitor.spinning-tip.detecting": "가용성 감지 중", + "monitor.status": "작업 상태", + "monitor.status.all": "전체 상태", + "monitor.status.down": "다운", + "monitor.status.paused": "일시중지", + "monitor.status.unreachable": "연결 불가", + "monitor.status.up": "정상", + "monitor.status.unavailable": "사용 불가", + "monitor.total": "합계", + "monitor.uri.tip": "웹사이트 URI 경로(IP·포트 제외) 예: /console", + "monitor.url.tip": "service:jmx:rmi:///jndi/rmi://host:port/jmxrmi", + "monitor.sshHost.tip": "SSH 터널 활성화 시 필수", + "monitor.sshPort.tip": "SSH 터널 활성화 시 필수", + "monitor.sshUsername.tip": "SSH 터널 활성화 시 필수", + "monitor.sshPrivateKey.tip": "BEGIN RSA PRIVATE KEY", + "monitor.scrape.type.static": "정적 스크레이핑", + "monitor.scrape.type.http_sd": "HTTP 서비스 디스커버리", + "monitor.scrape.type.nacos_sd": "Nacos 서비스 디스커버리", + "monitor.scrape.type.dns_sd": "DNS 서비스 디스커버리", + "monitor.scrape.type.eureka_sd": "Eureka 서비스 디스커버리", + "monitor.scrape.type.consul_sd": "Consul 서비스 디스커버리", + "monitor.scrape.type.zookeeper_sd": "Zookeeper 서비스 디스커버리", + "monitor.favorite.add.success": "즐겨찾기에 추가되었습니다", + "monitor.favorite.add.failed": "즐겨찾기 추가 실패", + "monitor.favorite.remove.success": "즐겨찾기에서 제거되었습니다", + "monitor.favorite.remove.failed": "즐겨찾기 제거 실패", + "monitor.detail.favorite": "즐겨찾기", + "monitor.favorite.empty": "즐겨찾기한 메트릭이 없습니다", + "monitor.favorite.empty.realtime": "즐겨찾기한 실시간 메트릭이 없습니다", + "monitor.favorite.empty.history": "즐겨찾기한 히스토리 차트가 없습니다", + "monitor.favorite.add": "즐겨찾기 추가", + "monitor.favorite.remove": "즐겨찾기 제거", + "placeholder.key": "키", + "placeholder.value": "값", + "plugin.delete": "플러그인 삭제", + "plugin.edit": "플러그인 수정", + "plugin.help": "플러그인 관리는 업로드, 활성화/비활성화 등 플러그인을 통합 관리하는 기능입니다. 플러그인 메커니즘을 사용하면 알람 발생 시 알림 외에 다른 후속 작업을 수행할 수 있습니다.
예를 들어 플러그인 메커니즘을 사용하여 알람 발생 후 특정 스크립트나 SQL을 실행할 수 있습니다.", + "plugin.help.link": "https://hertzbeat.apache.org/docs/help/plugin", + "plugin.jar.file": "Jar 파일", + "plugin.name": "플러그인 이름", + "plugin.param.edit": "파라미터 수정", + "plugin.search": "플러그인 검색", + "plugin.status": "활성화 상태", + "plugin.type": "플러그인 유형", + "plugin.type.POST_ALERT": "POST ALERT", + "plugin.type.POST_COLLECT": "POST COLLECT", + "plugin.upload": "플러그인 업로드", + "question.link": "https://hertzbeat.apache.org/docs/help/issue/", + "settings.object-store": "파일 서버 설정", + "settings.object-store.obs.accessKey": "AccessKey", + "settings.object-store.obs.accessKey.placeholder": "화웨이 클라우드의 Access Key ID", + "settings.object-store.obs.bucketName": "Bucket", + "settings.object-store.obs.bucketName.placeholder": "화웨이 클라우드 OBS에서 생성한 버킷 이름", + "settings.object-store.obs.endpoint": "EndPoint", + "settings.object-store.obs.endpoint.placeholder": "화웨이 클라우드 OBS 도메인 이름(버킷 이름 제외)", + "settings.object-store.obs.savePath": "SavePath", + "settings.object-store.obs.savePath.placeholder": "백업 파일을 저장할 경로입니다. 기본값은 hertzbeat입니다.", + "settings.object-store.obs.secretKey": "SecretKey", + "settings.object-store.obs.secretKey.placeholder": "화웨이 클라우드의 Access Key Secret", + "settings.object-store.type": "파일 서버 제공자", + "settings.object-store.type.database": "로컬 데이터베이스(기본값)", + "settings.object-store.type.file": "로컬 파일", + "settings.object-store.type.obs": "화웨이 클라우드 OBS", + "settings.server": "메시지 서버 설정", + "settings.server.email": "이메일 서버", + "settings.server.email.setting": "이메일 서버 설정", + "settings.server.sms": "SMS 서버", + "settings.server.sms.setting": "SMS 서버 설정", + "settings.system-config": "시스템 설정", + "settings.system-config.locale": "시스템 언어", + "settings.system-config.locale.en_US": "영어(en_US)", + "settings.system-config.locale.zh_CN": "중국어 간체(zh_CN)", + "settings.system-config.locale.zh_TW": "중국어 번체(zh_TW)", + "settings.system-config.locale.ja-JP": "일본어(ja_JP)", + "settings.system-config.locale.pt_BR": "포르투갈어(pt_BR)", + "settings.system-config.ok": "업데이트 확인", + "settings.system-config.theme": "시스템 테마", + "settings.system-config.theme.compact": "컴팩트 테마", + "settings.system-config.theme.dark": "다크 테마", + "settings.system-config.theme.default": "기본 테마", + "settings.system-config.timezone": "시스템 시간대", + "settings.token": "API 토큰 관리", + "settings.token.desc": "연동 액세스를 위한 장기 API 토큰을 관리합니다. 언제든지 토큰을 생성하거나 폐기할 수 있습니다.", + "settings.token.generate": "토큰 생성", + "settings.token.generate-title": "새 API 토큰 생성", + "settings.token.generate-fail": "토큰 생성 실패", + "settings.token.generated-title": "토큰 생성 완료", + "settings.token.name": "토큰 이름", + "settings.token.name-placeholder": "토큰 이름을 입력하세요", + "settings.token.value": "토큰 값", + "settings.token.creator": "생성자", + "settings.token.create-time": "생성일", + "settings.token.notice": "이 토큰은 한 번만 표시됩니다. 안전하게 보관하고 공유하지 마세요. 이 페이지에서 삭제하여 폐기할 수 있습니다.", + "settings.token.delete-confirm": "토큰 삭제 확인", + "settings.token.delete-confirm-content": "이 토큰을 사용하는 모든 연동이 액세스 권한을 잃게 됩니다. \"{{name}}\"을(를) 삭제하시겠습니까?", + "settings.token.empty": "아직 API 토큰이 없습니다. 위 버튼을 클릭하여 생성하세요.", + "settings.token.expire-time": "만료 시간", + "settings.token.expire.never": "만료 없음", + "settings.token.expire.7d": "7일", + "settings.token.expire.30d": "30일", + "settings.token.expire.90d": "90일", + "settings.token.expire.180d": "180일", + "settings.token.expire.365d": "365일", + "settings.token.expired": "만료됨", + "settings.token.last-used": "마지막 사용", + "status.component": "컴포넌트", + "status.component.config-state": "설정 상태", + "status.component.config-state.tip": "상태 계산 모드가 수동일 때 설정된 컴포넌트 서비스 상태입니다.", + "status.component.delete": "컴포넌트 삭제", + "status.component.desc": "컴포넌트 설명", + "status.component.desc.tip": "컴포넌트 서비스 설명 정보를 설정하세요", + "status.component.edit": "컴포넌트 수정", + "status.component.method": "상태 계산 모드", + "status.component.method.0": "자동 계산", + "status.component.method.1": "수동 설정", + "status.component.method.tip": "컴포넌트 서비스 상태 계산 방식으로, 태그 연결된 모니터링을 기반으로 가용성을 자동 계산하거나 상태를 수동으로 설정할 수 있습니다.", + "status.component.name": "서비스 컴포넌트", + "status.component.name.tip": "표시할 컴포넌트 서비스 이름을 설정하세요. 예: Gateway", + "status.component.new": "새 컴포넌트", + "status.component.notify.need-org": "먼저 조직 정보를 설정해 주세요!", + "status.component.state": "컴포넌트 상태", + "status.component.state.0": "정상", + "status.component.state.1": "비정상", + "status.component.state.2": "알 수 없음", + "status.component.tag": "일치 라벨", + "status.component.tag.tip": "상태 계산은 라벨과 연결되며, 해당 라벨과 연결된 모든 모니터링 가용성 상태를 데이터로 사용하여 이 컴포넌트의 서비스 상태를 계산합니다.", + "status.help": "HertzBeat를 기반으로 강력한 상태 페이지를 빠르게 구축하여 사용자에게 서비스의 실시간 상태를 쉽게 전달할 수 있습니다. 예를 들어 Github에서 제공하는 상태 페이지 https://www.githubstatus.com가 있습니다.
상태 페이지의 컴포넌트 상태와 모니터링 상태 연동·동기화, 장애 이벤트 관리 메커니즘 등을 지원합니다. 투명성과 전문성, 사용자 신뢰도를 높이고 커뮤니케이션 비용을 절감하세요.", + "status.help.link": "https://hertzbeat.apache.org/docs/help/status", + "status.incident": "장애", + "status.incident.component": "영향받는 컴포넌트", + "status.incident.delete": "장애 삭제", + "status.incident.history": "장애 이력", + "status.incident.message": "메시지 게시", + "status.incident.message-latest": "최신 메시지", + "status.incident.message.tip.0": "현재 이 장애를 조사 중입니다. 나중에 다시 확인해 주세요.", + "status.incident.message.tip.1": "장애 원인을 확인했으며 조치 중입니다.", + "status.incident.message.tip.2": "이 이벤트를 모니터링하며 조치 효과를 관찰하고 있습니다", + "status.incident.message.tip.3": "이 장애는 해결되었습니다. 양해와 협조에 감사드립니다.", + "status.incident.name": "장애 이름", + "status.incident.name.tip": "현재 장애 제목을 간략히 입력하세요", + "status.incident.new": "장애 게시", + "status.incident.public.process-time": "처리 시간", + "status.incident.public.start-at": "시작 시간", + "status.incident.public.update-at": "업데이트 시간", + "status.incident.state": "장애 상태", + "status.incident.state.0": "조사 중", + "status.incident.state.1": "원인 파악됨", + "status.incident.state.2": "모니터링 중", + "status.incident.state.3": "해결됨", + "status.incident.update": "장애 업데이트", + "status.org.color": "테마 색상", + "status.org.color.tip": "상태 페이지 테마 색상을 설정하세요", + "status.org.configured": "설정됨", + "status.org.desc": "소개", + "status.org.desc.tip": "상태 페이지에 표시될 조직 소개 정보", + "status.org.edit": "조직 정보 수정", + "status.org.empty.desc": "조직 이름, 로고, 테마 색상을 설정하여 사용자를 위한 브랜드 상태 페이지를 게시하세요.", + "status.org.empty.title": "아직 조직 정보가 설정되지 않았습니다", + "status.org.feedback": "피드백 링크", + "status.org.feedback.tip": "사용자 피드백 연락처를 설정하세요", + "status.org.home": "웹사이트 링크", + "status.org.home.tip": "조직의 웹사이트 홈페이지 주소를 설정하세요", + "status.org.logo": "로고 이미지", + "status.org.logo.tip": "조직 로고 이미지 URL 주소를 설정하세요. svg 형식을 권장합니다", + "status.org.name": "조직 이름", + "status.org.name.tip": "상태 페이지에 표시될 조직 이름입니다. 예: TanCloud", + "status.org.setup": "지금 설정하기", + "status.org.state": "조직 상태", + "status.org.title": "조직", + "status.preview": "상태 페이지 보기", + "status.page": "상태 페이지", + "status.public.30-day": "30일 전", + "status.public.feedback": "피드백 제출", + "status.public.org.state.0": "모든 시스템 정상 운영 중", + "status.public.org.state.1": "일부 시스템 비정상", + "status.public.org.state.2": "모든 시스템 비정상", + "status.public.power-by": "Apache HertzBeat™ 제공. Star를 눌러주세요!", + "status.public.to-component": "상태 페이지", + "status.public.to-incident": "장애 이력", + "status.public.today": "오늘", + "tag": "라벨", + "validation.confirm-password.required": "비밀번호를 확인해 주세요!", + "validation.date.required": "시작일과 종료일을 선택하세요", + "validation.email.invalid": "잘못된 이메일 주소입니다!", + "validation.email.required": "이메일을 입력하세요!", + "validation.email.wrong-format": "이메일 형식이 올바르지 않습니다!", + "validation.goal.required": "목표 설명을 입력하세요", + "validation.password.required": "비밀번호를 입력하세요!", + "validation.password.strength.medium": "강도: 보통", + "validation.password.strength.msg": "최소 6자 이상 입력하고, 쉽게 추측할 수 있는 비밀번호는 사용하지 마세요.", + "validation.password.strength.short": "강도: 너무 짧음", + "validation.password.strength.strong": "강도: 강함", + "validation.password.twice": "입력한 두 비밀번호가 일치하지 않습니다!", + "validation.phone-number.required": "전화번호를 입력하세요!", + "validation.phone-number.wrong-format": "전화번호 형식이 올바르지 않습니다!", + "validation.phone.invalid": "잘못된 전화번호입니다!", + "validation.required": "필수 항목을 입력해 주세요! ", + "validation.standard.required": "메트릭을 입력하세요", + "validation.title.required": "제목을 입력하세요", + "validation.verification-code.invalid": "잘못된 인증 코드입니다. 6자리여야 합니다!", + "validation.verification-code.required": "인증 코드를 입력하세요!", + "ai.bot.title": "AI 어시스턴트", + "ai.bot.greeting": "안녕하세요! 저는 AI 어시스턴트입니다. 무엇을 도와드릴까요?", + "ai.bot.input.placeholder": "질문을 입력하세요...", + "ai.bot.send": "전송", + "ai.bot.connect-fail": "죄송합니다. AI 어시스턴트 연결에 문제가 발생했습니다. 나중에 다시 시도해 주세요.", + "ai.chat.assistant": "AI 어시스턴트", + "ai.chat.config.api-key": "API 키", + "ai.chat.config.api-key.help": "제공자의 API 키입니다. 저장 시 유효성이 검증됩니다.", + "ai.chat.config.api-key.required": "API 키는 필수 항목입니다", + "ai.chat.config.base-url": "Base URL", + "ai.chat.config.base-url.help": "커스텀 API 엔드포인트 URL입니다. 비워두면 선택한 제공자의 기본값을 사용합니다.", + "ai.chat.config.cancel": "취소", + "ai.chat.config.model": "모델", + "ai.chat.config.model.help": "사용할 모델 이름입니다. 비워두면 선택한 제공자의 기본값을 사용합니다.", + "ai.chat.config.provider": "AI 제공자", + "ai.chat.config.provider.help": "AI 제공자를 선택하세요(OpenAI, ZhiPu, ZAI 등)", + "ai.chat.config.provider.required": "AI 제공자를 선택하세요", + "ai.chat.config.reset": "기본값으로 초기화", + "ai.chat.config.save": "저장", + "ai.chat.config.title": "AI 제공자 설정", + "ai.chat.input.hint": "Enter 키로 전송, Shift+Enter로 줄바꿈", + "ai.chat.input.placeholder": "옵저버빌리티에 대해 무엇이든 물어보세요...", + "ai.chat.loading": "대화 기록을 불러오는 중...", + "ai.chat.modify-api-key": "API 키 수정", + "ai.chat.new-chat": "새 대화", + "ai.chat.thinking": "AI가 생각 중...", + "ai.chat.title": "HertzBeat AI", + "ai.chat.typing": "입력 중...", + "ai.chat.user": "나", + "ai.chat.welcome.capabilities.alerts": "다양한 필터링을 통해 알람을 조회하고 분석합니다", + "ai.chat.welcome.capabilities.config": "알람 규칙과 임계값을 설정합니다", + "ai.chat.welcome.capabilities.manage": "상태, 유형, 라벨별로 모니터링을 조회하고 관리합니다", + "ai.chat.welcome.capabilities.metrics": "실시간 및 히스토리 메트릭 데이터에 접근합니다", + "ai.chat.welcome.capabilities.monitor": "웹사이트, API, 데이터베이스, 서비스에 대한 새 모니터링을 추가합니다", + "ai.chat.welcome.capabilities.troubleshoot": "인프라 전반의 성능 문제를 진단합니다", + "ai.chat.welcome.description": "저는 인프라 옵저버빌리티 관리와 최적화를 도와드리는 지능형 도우미입니다. 다음과 같은 요청을 할 수 있습니다:", + "ai.chat.welcome.title": "HertzBeat AI에 오신 것을 환영합니다!", + "ai.chat.conversation.created": "새 대화가 생성되었습니다", + "ai.chat.conversation.delete.title": "대화 삭제", + "ai.chat.conversation.delete.content": "이 대화를 삭제하시겠습니까?", + "ai.chat.conversation.delete.confirm": "삭제", + "ai.chat.conversation.delete.success": "대화가 삭제되었습니다", + "ai.chat.conversation.delete.failed": "대화 삭제 실패", + "ai.chat.config.required.title": "AI 모델 제공자 설정 필요", + "ai.chat.config.required.content": "AI 에이전트 채팅을 사용하려면 모델 제공자를 설정하세요.", + "ai.chat.config.required.error": "설정 문제:", + "ai.chat.config.required.button": "여기서 설정하기", + "ai.chat.config.validation.failed": "❌ API 키 검증 실패:", + "ai.chat.config.save.success": "모델 제공자 설정이 저장되었습니다!", + "ai.chat.config.save.failed": "설정 저장 실패:", + "ai.chat.error.api.key": "API 키를 입력하세요", + "ai.chat.error.provider": "제공자를 선택하세요", + "ai.chat.error.base.url": "Base URL을 입력하세요", + "ai.chat.error.model": "모델을 입력하세요", + "ai.chat.error.conversations.load": "대화 목록 불러오기 실패:", + "ai.chat.error.conversation.create": "새 대화 생성 실패:", + "ai.chat.error.conversation.history": "대화 기록 불러오기 실패", + "ai.chat.error.chat.response": "AI 응답 수신 실패:", + "ai.chat.error.processing": "죄송합니다. 요청 처리 중 오류가 발생했습니다. AI 에이전트 서비스가 실행 중인지 확인 후 다시 시도해 주세요.", + "ai.chat.offline.mode": "AI 채팅 서비스를 사용할 수 없습니다. 오프라인 모드로 실행 중입니다.", + "ai.chat.offline.response": "죄송합니다. 현재 AI 채팅 서비스를 사용할 수 없습니다. HertzBeat AI 모듈이 실행 중인지 확인한 후 다시 시도해 주세요.", + "ai.chat.security.form.title": "보안 폼", + "ai.chat.security.form.button": "비공개 파라미터 입력", + "ai.chat.security.form.complete": "완료", + "ai.chat.security.form.default.callback": "폼 작성 완료", + "ai.chat.config.participation.model": "AI 참여 모드", + "ai.chat.config.participation.model.help": "신뢰 모드: 모든 데이터를 LLM으로 전송하여 처리합니다. 보호 모드: 일부 AI 기능을 제한합니다. 예를 들어 민감한 데이터가 LLM으로 전송되어 처리되는 것을 방지합니다.", + "ai.chat.config.participation.model.protected": "보호 모드", + "ai.chat.config.participation.model.trusted": "신뢰 모드", + "ai.chat.schedule.title": "스케줄 설정", + "ai.chat.schedule.create": "스케줄 생성", + "ai.chat.schedule.add": "새 작업 추가", + "ai.chat.schedule.configured": "설정된 스케줄", + "ai.chat.schedule.skill": "스킬", + "ai.chat.schedule.skill.select": "스킬 선택", + "ai.chat.schedule.skill.placeholder": "실행할 스킬을 선택하세요", + "ai.chat.schedule.cron": "실행 시간", + "ai.chat.schedule.cron.label": "실행 시간(Cron 표현식)", + "ai.chat.schedule.cron.help": "형식: 초 분 시 일 월 요일", + "ai.chat.schedule.cron.example.daily": "예: 0 0 9 * * ? (매일 오전 9시)", + "ai.chat.schedule.cron.example.weekly": "예: 0 0 9 ? * MON (매주 월요일 오전 9시)", + "ai.chat.schedule.cron.common": "자주 사용: 매일 오전 9시", + "ai.chat.schedule.cron.monday": "매주 월요일 오전 9시", + "ai.chat.schedule.status": "상태", + "ai.chat.schedule.action": "작업", + "ai.chat.schedule.create.success": "스케줄이 생성되었습니다", + "ai.chat.schedule.create.failed": "스케줄 생성 실패", + "ai.chat.schedule.delete.success": "스케줄이 삭제되었습니다", + "ai.chat.schedule.delete.failed": "스케줄 삭제 실패", + "ai.chat.schedule.toggle.success": "스케줄 상태가 업데이트되었습니다", + "ai.chat.schedule.toggle.failed": "스케줄 상태 전환 실패", + "ai.chat.schedule.push": "예약 발송", + "ai.chat.schedule.button": "스케줄", + "ai.chat.schedule.tooltip": "예약 발송 작업을 설정합니다", + "ai.chat.schedule.edit": "스케줄 수정", + "ai.chat.schedule.update.success": "스케줄이 업데이트되었습니다", + "ai.chat.schedule.update.failed": "스케줄 업데이트 실패", + "setting.drawer.theme.color": "테마 색상", + "setting.drawer.settings": "설정", + "setting.drawer.top": "상단", + "setting.drawer.sidebar": "사이드바", + "setting.drawer.content": "콘텐츠", + "setting.drawer.other": "기타", + "setting.drawer.height": "높이", + "setting.drawer.background.color": "배경 색상", + "setting.drawer.background.color.default": "기본값은 메인 컬러 시스템과 동일", + "setting.drawer.top.padding": "상단 좌우 여백", + "setting.drawer.fixed.header.sidebar": "헤더와 사이드바 고정", + "setting.drawer.colorblind.mode": "색맹 모드", + "setting.drawer.preview": "미리보기", + "setting.drawer.reset": "초기화", + "setting.drawer.copy": "복사", + "setting.drawer.info.message": "이 설정 패널은 개발 환경에서 미리보기 용도로만 제공되며, 운영 환경에서는 표시되지 않습니다. src/styles/theme.less 파일을 복사하여 직접 수정해 주세요" +}