This is an automated email from the ASF dual-hosted git repository.

tomsun28 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git


The following commit(s) were added to refs/heads/master by this push:
     new 31bc7d8a51 [feature] Add Korean i18n (#4197)
31bc7d8a51 is described below

commit 31bc7d8a51a3f719e76e454ddbe4cd2ac93031fb
Author: moduvoice <[email protected]>
AuthorDate: Fri Jul 17 20:51:27 2026 +0700

    [feature] Add Korean i18n (#4197)
    
    Co-authored-by: Claude Sonnet 5 <[email protected]>
    Co-authored-by: Duansg <[email protected]>
    Co-authored-by: Tomsun28 <[email protected]>
---
 home/docusaurus.config.js                          |    2 +-
 home/i18n/ko/code.json                             |  504 ++++++++
 .../ko/docusaurus-plugin-content-blog/options.json |   14 +
 .../ko/docusaurus-plugin-content-docs/current.json |  166 +++
 .../version-1.8.0.json                             |  166 +++
 home/i18n/ko/docusaurus-theme-classic/footer.json  |   50 +
 home/i18n/ko/docusaurus-theme-classic/navbar.json  |  162 +++
 web-app/src/app/core/i18n/i18n.service.ts          |   15 +-
 .../setting-drawer-i18n.directive.spec.ts          |   10 +-
 .../directives/setting-drawer-i18n.directive.ts    |    2 +-
 web-app/src/assets/i18n/ko-KR.json                 | 1243 ++++++++++++++++++++
 11 files changed, 2328 insertions(+), 6 deletions(-)

diff --git a/home/docusaurus.config.js b/home/docusaurus.config.js
index efecd876a2..f83fe184b1 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 0000000000..c3447e1b63
--- /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 0000000000..1aa61e8b7e
--- /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 0000000000..b339ac7d05
--- /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 0000000000..0d297babdd
--- /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 0000000000..442bcee787
--- /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 0000000000..fc9eff5087
--- /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 ffbc004a29..4f44fdb462 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 55519cc87f..84fc9c8fbd 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 3e45a41605..a9b7822ebb 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<HTMLElement>,
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 0000000000..68e3e21f57
--- /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": "그룹 컨버전스는 지정한 그룹 라벨을 기준으로 알람을 그룹화·병합하고, 동일 기간 내 중복된 알람을 
제거하는 기능을 지원합니다. \"<i>그룹화 정책 추가</i>\"를 클릭하여 설정할 수 있습니다.<br>임계값 규칙이 알람을 발생시키거나 외부 
알람이 수신되면 그룹 컨버전스를 거쳐 알람을 그룹화하고 중복을 제거함으로써, 대량의 알람 메시지로 인한 알람 폭주를 방지합니다.",
+  "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 등 지원)으로 수신자에게 전송됩니다. <a 
href='https://hertzbeat.apache.org/zh-cn/docs/help/alert_webhook'>설정 절차는 여기를 
클릭하세요.</a>.<br>\"<i>알림 템플릿</i>\"은 메시지 내용의 구조를 정의하는 템플릿입니다. 기본적으로 내장 템플릿을 사용하며, 
필요에 따라 템플릿을 커스터마이징하여 메시지 알림 구조를 변경할 수 있습니다.<br><span 
class='help_module_span'>주의⚠️: \"<i>수신자</i>\"를 설정한 후에는 어떤 메시지를 어떤 수신자에게 보낼지 
지정하기 위해 \"<i>알림 정책</i>\"도 함께 설정해야 합니다.</span><a 
href='https://hertzbeat.apache.org/doc [...]
+  "alert.help.notice.link": 
"https://hertzbeat.apache.org/docs/help/alert_email";,
+  "alert.help.setting": "임계값 규칙은 메트릭 알람 임계값 규칙을 관리하는 기능입니다. \"<i>새 임계값</i>\"을 
클릭하여 모니터링 메트릭의 알람 임계값을 설정하세요. HertzBeat는 임계값과 메트릭 데이터를 기반으로 알람을 
발생시킵니다.<br>주의⚠️: 발생한 알람 메시지는 [알람 센터]에서 확인할 수 있으며, [알림]에서 알림 방식과 담당자를 설정할 수 
있습니다.",
+  "alert.help.setting.link": 
"https://hertzbeat.apache.org/docs/help/alert_threshold";,
+  "alert.help.silence": "알람 무음 처리는 시스템 유지보수 중이거나 야간·주말에 알림을 받고 싶지 않을 때 사용합니다. 
<br> \"<i>새 무음 처리 전략</i>\"을 클릭하고 시간대를 설정하여 휴식 중 메시지 방해를 차단하세요.",
+  "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 쿼리 언어<br/><br/>예시:<br/>• 
<code>cpu_usage > 80</code><br/>• <code>cpu_usage{instance=\"server1\"} > 
80</code><br/>• <code>rate(http_requests_total[5m]) > 100</code><br/>• 
<code>cpu > 80 and memory > 70</code>",
+  "alert.setting.sql.description": "SQL 쿼리 언어<br/><br/>예시:<br/>• <code>SELECT 
COUNT(*) FROM hertzbeat_logs WHERE severity_text = 'ERROR'</code><br/>• 
<code>SELECT service_name, COUNT(*) FROM hertzbeat_logs GROUP BY 
service_name</code><br/>• <code>SELECT * FROM hertzbeat_logs WHERE 
time_unix_nano >= NOW() - INTERVAL '5 minute'</code>",
+  "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": "수집기 클러스터는 등록된 수집기 클러스터 노드를 관리하며, 현재 수집기 상태와 스케줄링 작업 분배 
현황을 표시하고, 배포·삭제·오프라인 등의 작업을 지원합니다.<br>내장 수집기 외에도 여러 개의 수집기를 등록하여 <strong>고성능 
클러스터</strong> 또는 <strong>클라우드-엣지 협업</strong> 시나리오에 활용할 수 있습니다.",
+  "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": "모니터링 템플릿은 각 모니터링 유형, 파라미터 변수, 메트릭 정보, 수집 프로토콜 등을 정의합니다. 드롭다운 
메뉴에서 기존 모니터링 템플릿을 선택한 후 필요에 맞게 수정할 수 있습니다. 좌측 하단은 비교 영역이며 우측 하단은 편집 영역입니다. <br> 
\"새 모니터링 유형\"을 클릭하여 새로운 유형을 커스텀 정의할 수도 있습니다. 현재 지원하는 프로토콜에는 <a 
href='https://hertzbeat.apache.org/docs/advanced/extend-http'> HTTP</a>, <a 
href='https://hertzbeat.apache.org/docs/advanced/extend-jdbc'>JDBC</a>, <a 
href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'>SSH</a>, <a 
href='https://hertzbeat.apache.org/docs/advanc [...]
+  "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": "라벨은 다양한 곳에서 활용됩니다. 리소스 그룹화, 규칙의 태그 매칭 등에 라벨을 적용할 수 있습니다. [라벨 
관리]는 라벨의 추가, 삭제, 수정 등을 통합 관리하는 기능입니다. <br>라벨을 사용하여 운영 환경과 테스트 환경별로 각각 라벨을 바인딩하는 
등 모니터링 리소스를 분류·관리할 수 있습니다.",
+  "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": "모니터링 센터는 모니터링 리소스를 관리하는 포털입니다. 현재 추가된 모니터링 목록을 표시하며, 
라벨 그룹화, 쿼리 필터링, 상세 정보 조회 기능을 지원합니다. <br> 모니터링의 추가, 수정, 삭제, 일시중지, 가져오기/내보내기, 일괄 
관리 등의 작업을 수행할 수 있습니다.",
+  "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": "플러그인 관리는 업로드, 활성화/비활성화 등 플러그인을 통합 관리하는 기능입니다. 플러그인 메커니즘을 
사용하면 알람 발생 시 알림 외에 다른 후속 작업을 수행할 수 있습니다. <br>예를 들어 플러그인 메커니즘을 사용하여 알람 발생 후 특정 
스크립트나 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에서 제공하는 상태 페이지 <a href='https://www.githubstatus.com'> 
https://www.githubstatus.com</a>가 있습니다. <br>상태 페이지의 컴포넌트 상태와 모니터링 상태 연동·동기화, 장애 
이벤트 관리 메커니즘 등을 지원합니다. 투명성과 전문성, 사용자 신뢰도를 높이고 커뮤니케이션 비용을 절감하세요.",
+  "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 파일을 복사하여 직접 수정해 주세요"
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to