From 9bb1559041179200eaa4bf96c4faf9a7c062307d Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Tue, 17 Feb 2026 15:24:23 +0100 Subject: [PATCH 1/6] add config for Korean translations --- docusaurus.config.js | 4 +- docusaurus.config.ko.js | 322 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 325 insertions(+), 1 deletion(-) create mode 100644 docusaurus.config.ko.js diff --git a/docusaurus.config.js b/docusaurus.config.js index 5b0f5873cd2..7d41045d079 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -2,6 +2,7 @@ import enConfig from "./docusaurus.config.en.js"; import jpConfig from "./docusaurus.config.jp.js"; import zhConfig from "./docusaurus.config.zh.js"; import ruConfig from "./docusaurus.config.ru.js"; +import koConfig from "./docusaurus.config.ko.js"; const env = process.env.DOCUSUARUS_LOCALE || "en"; // Default to "en" @@ -9,7 +10,8 @@ const configMap = { en: enConfig, jp: jpConfig, zh: zhConfig, - ru: ruConfig + ru: ruConfig, + ko: koConfig }; // Export the selected config, defaulting to English if the environment variable is invalid diff --git a/docusaurus.config.ko.js b/docusaurus.config.ko.js new file mode 100644 index 00000000000..ff1ef06c9e8 --- /dev/null +++ b/docusaurus.config.ko.js @@ -0,0 +1,322 @@ +import { themes } from "prism-react-renderer"; +import math from "remark-math"; +import katex from "rehype-katex"; +import chHeader from "./plugins/header.js"; +import fixLinks from "./src/hooks/fixLinks.js"; +import prismLight from "./src/utils/prismLight"; +import prismDark from "./src/utils/prismDark"; +import glossaryTransformer from "./plugins/glossary-transformer.js"; +const remarkCustomBlocks = require('./plugins/remark-custom-blocks'); + +// Helper function to skip over index.md files. +function skipIndex(items) { + return items.filter(({ type, id }) => { + return type !== "doc" || !id.match(/index$/); + }); +} + +/** @type {import('@docusaurus/types').Config} */ +const config = { + scripts: [ + { + src: "/docs/ko/js/kapa_config.js", + async: false, + }, + { + src: "/docs/ko/js/kapa_widget.js", + async: true, + defer: true, // execute after document parsing, but before firing DOMContentLoaded event + } + ], + clientModules: [ + require.resolve('./src/clientModules/utmPersistence.js') + ], + // Settings for Docusaurus Faster - build optimizations + future: { + experimental_faster: { + swcJsLoader: true, + swcJsMinimizer: true, + swcHtmlMinimizer: true, + lightningCssMinimizer: true, + rspackBundler: true, + mdxCrossCompilerCache: true, + }, + }, + title: "ClickHouse Docs", + tagline: + "我们提供文档、快速入门指南、用户指南、技术参考、常见问题解答等多种信息。", + url: "https://clickhouse.com", + // url: process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : 'https://bookish-disco-5997zvo.pages.github.io', + baseUrl: "/docs/ko/", + baseUrlIssueBanner: true, + onBrokenLinks: "warn", + onBrokenMarkdownLinks: "warn", + onDuplicateRoutes: "throw", + onBrokenAnchors: "warn", + favicon: "img/docs_favicon.ico", + organizationName: "ClickHouse", + trailingSlash: false, + i18n: { + defaultLocale: "ko", + locales: ["en", "jp", "zh", "ru", "ko"], + path: "i18n", + localeConfigs: { + en: { + label: "English", + htmlLang: "en", + path: "en", + }, + jp: { + label: "日本語", + htmlLang: "jp", + path: "jp", + }, + zh: { + label: "中文", + htmlLang: "zh", + path: "zh", + }, + ru: { + label: "Русский", + htmlLang: "ru", + path: "ru", + }, + ko: { + label: "Korean", + htmlLang: "ko", + path: "ko", + } + }, + }, + staticDirectories: ["static"], + projectName: "clickhouse-docs", + markdown: { + mermaid: true, + }, + themes: ["@docusaurus/theme-mermaid"], + presets: [ + [ + "classic", + /** @type {import('@docusaurus/preset-classic').Options} */ + ({ + docs: { + admonitions: { + keywords: [ + "note", + "tip", + "info", + "caution", + "danger", + "experimental", + "obsolete", + "warning", + "success", + "important", + "secondary", + ], + }, + sidebarPath: require.resolve("./sidebars.js"), + // Implements a custom sidebar to override default behaviour where index.md page shows underneath the category name. + // With this sidebar the category name is clickable to show the index.md contents. + async sidebarItemsGenerator({ + defaultSidebarItemsGenerator, + ...args + }) { + const sidebarItems = await defaultSidebarItemsGenerator(args); + return skipIndex(sidebarItems); + }, + editCurrentVersion: false, + breadcrumbs: true, + showLastUpdateTime: false, + sidebarCollapsed: true, + routeBasePath: "/", + remarkPlugins: [math, remarkCustomBlocks], + beforeDefaultRemarkPlugins: [fixLinks], + rehypePlugins: [katex], + }, + blog: { + path: "knowledgebase", + blogTitle: "ClickHouse 知识库", + blogDescription: "知识库", + blogSidebarTitle: "所有KB文章", + routeBasePath: "/knowledgebase", + postsPerPage: 10, + blogSidebarCount: "ALL", + feedOptions: { + type: "all", + title: "ClickHouse 知识库信息流", + description: "在ClickHouse知识库中发布的文章信息流", + copyright: `Copyright © 2016–${new Date().getFullYear()} ClickHouse, Inc. ClickHouse Docs provided under the Creative Commons CC BY-NC-SA 4.0 license. ClickHouse® is a registered trademark of ClickHouse, Inc.`, + language: "en", + createFeedItems: async (params) => { + const { blogPosts, defaultCreateFeedItems, ...rest } = params; + return defaultCreateFeedItems({ + // keep only the 10 most recent blog posts in the feed + blogPosts: blogPosts.filter((item, index) => index < 10), + ...rest, + }); + }, + }, + editUrl: ({ blogPath }) => { + return ( + "https://github.com/ClickHouse/clickhouse-docs/blob/main/knowledgebase/" + + blogPath + ); + }, + remarkPlugins: [math, remarkCustomBlocks, glossaryTransformer], + beforeDefaultRemarkPlugins: [fixLinks], + rehypePlugins: [katex], + }, + theme: { + customCss: [require.resolve("./src/css/custom.scss")], + }, + ...(process.env.VERCEL_ENV !== 'preview' && { + googleTagManager: { + containerId: 'GTM-WTNTDT7W', + }, + }), + }), + ], + ], + // Inserts tags into the + headTags: [ + { + // Ask AI component + tagName: "link", + attributes: { + href: "https://widget.kapa.ai", + rel: "preconnect", // preemptively initiate a connection to resource + }, + }, + { + // Google's CDN. Caches all 'static' files in a server near to you + // to reduce load times. + tagName: "link", + attributes: { + href: "https://www.gstatic.com", + rel: "preconnect", + crossorigin: "use-credentials", + }, + }, + { + tagName: "link", + attributes: { + href: "https://www.googletagmanager.com", + rel: "preconnect", + }, + }, + ], + themeConfig: + /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + ({ + metadata: [ + {name: 'Accept-Language', content: 'ko-KR,ko;q=0.9'}, + ], + algolia: { + appId: "5H9UG7CX5W", + apiKey: "4a7bf25cf3edbef29d78d5e1eecfdca5", + indexName: "clickhouse-ko", + contextualSearch: false, + searchPagePath: "search", + }, + image: "img/docs_social_share.png", + icon: "/img/gareth.png", + docs: { + sidebar: { + autoCollapseCategories: true, + }, + }, + // autoCollapseSidebarCategories: true, + navbar: { + hideOnScroll: false, + logo: { + alt: "ClickHouse", + src: "img/ch_logo_docs.svg", + srcDark: "img/ch_logo_docs_dark.svg", + href: "https://clickhouse.com/", + }, + items: [], + }, + footer: { + style: "light", + links: [ + { + label: "商标", + to: "https://clickhouse.com/legal/trademark-policy", + }, + { + label: "隐私", + to: "https://clickhouse.com/legal/privacy-policy", + }, + { + label: "安全", + to: "https://trust.clickhouse.com/", + }, + { + label: "服务条款", + to: "https://clickhouse.com/legal/agreements/terms-of-service", + }, + ], + copyright: `© 2016–${new Date().getFullYear()} ClickHouse, Inc.`, + }, + prism: { + theme: prismLight, + darkTheme: prismDark, + additionalLanguages: ["java", "cpp", "rust", "python", "javascript", "yaml", "bash", "docker"], + magicComments: [ + // Remember to extend the default highlight class name as well! + { + className: "theme-code-block-highlighted-line", + line: "highlight-next-line", + block: { start: "highlight-start", end: "highlight-end" }, + }, + ], + }, + colorMode: { + disableSwitch: false, + respectPrefersColorScheme: true, + defaultMode: "dark", + }, + }), + + plugins: [ + "docusaurus-plugin-sass", + function (context, options) { + return { + name: "docusaurus-plugin", + async postBuild({ siteConfig = {}, routesPaths = [], outDir }) { + // Print out to console all the rendered routes. + routesPaths.map((route) => { + //console.log(route) + }); + }, + }; + }, + chHeader, + ['./plugins/tailwind-config.js', {}], + ], + customFields: { + blogSidebarLink: "/docs/knowledgebase", // Used for KB article page + galaxyApiEndpoint: + process.env.NEXT_PUBLIC_GALAXY_API_ENDPOINT || "http://localhost:3000", + secondaryNavItems: [ + { + type: "dropdown", + hoverable: "false", + html: + '\n' + + '\n' + + "", + position: "right", + items: [ + { + label: "English", + to: "/", + }, + ], + }, + ], + }, +}; + +module.exports = config; From c14d1b4f73108abc077af92ce1e423cd8859b0a0 Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Tue, 17 Feb 2026 16:18:01 +0100 Subject: [PATCH 2/6] update translations in docusaurus.config.ko.js --- docusaurus.config.ko.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docusaurus.config.ko.js b/docusaurus.config.ko.js index ff1ef06c9e8..6a93e2a4513 100644 --- a/docusaurus.config.ko.js +++ b/docusaurus.config.ko.js @@ -44,7 +44,7 @@ const config = { }, title: "ClickHouse Docs", tagline: - "我们提供文档、快速入门指南、用户指南、技术参考、常见问题解答等多种信息。", + "다양한 정보를 제공합니다: 문서, 빠른 시작 가이드, 사용자 가이드, 기술 참조, 자주 묻는 질문 등.", url: "https://clickhouse.com", // url: process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : 'https://bookish-disco-5997zvo.pages.github.io', baseUrl: "/docs/ko/", @@ -136,16 +136,16 @@ const config = { }, blog: { path: "knowledgebase", - blogTitle: "ClickHouse 知识库", - blogDescription: "知识库", - blogSidebarTitle: "所有KB文章", + blogTitle: "ClickHouse 지식베이스", + blogDescription: "지식베이스", + blogSidebarTitle: "모든 KB 문서", routeBasePath: "/knowledgebase", postsPerPage: 10, blogSidebarCount: "ALL", feedOptions: { type: "all", - title: "ClickHouse 知识库信息流", - description: "在ClickHouse知识库中发布的文章信息流", + title: "ClickHouse 지식베이스 피드", + description: "ClickHouse 지식베이스에 게시된 문서 피드", copyright: `Copyright © 2016–${new Date().getFullYear()} ClickHouse, Inc. ClickHouse Docs provided under the Creative Commons CC BY-NC-SA 4.0 license. ClickHouse® is a registered trademark of ClickHouse, Inc.`, language: "en", createFeedItems: async (params) => { @@ -241,19 +241,19 @@ const config = { style: "light", links: [ { - label: "商标", + label: "상표", to: "https://clickhouse.com/legal/trademark-policy", }, { - label: "隐私", + label: "개인정보 보호", to: "https://clickhouse.com/legal/privacy-policy", }, { - label: "安全", + label: "보안", to: "https://trust.clickhouse.com/", }, { - label: "服务条款", + label: "서비스 약관", to: "https://clickhouse.com/legal/agreements/terms-of-service", }, ], From 8bda24f4345e30f08dd72e363e46197176fbdf40 Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Tue, 17 Feb 2026 16:57:49 +0100 Subject: [PATCH 3/6] updates to custom components to support Korean translations --- docusaurus.config.en.js | 1 - docusaurus.config.jp.js | 1 - docusaurus.config.ko.js | 1 - docusaurus.config.ru.js | 1 - docusaurus.config.zh.js | 1 - src/components/MobileSideBarMenu/Content.jsx | 6 +++--- .../MobileSideBarMenu/MobileLanguagePicker.jsx | 10 ++++++---- src/theme/DocItem/Layout/index.js | 3 ++- 8 files changed, 11 insertions(+), 13 deletions(-) diff --git a/docusaurus.config.en.js b/docusaurus.config.en.js index 3de49018f92..cd1301ab362 100644 --- a/docusaurus.config.en.js +++ b/docusaurus.config.en.js @@ -54,7 +54,6 @@ const config = { tagline: "Documentation, quick starts, user guides, technical references, FAQs and more...", url: "https://clickhouse.com", - // url: process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : 'https://bookish-disco-5997zvo.pages.github.io', baseUrl: "/docs/", baseUrlIssueBanner: true, onBrokenLinks: "warn", diff --git a/docusaurus.config.jp.js b/docusaurus.config.jp.js index 4fab3d5cd53..0828df5ab45 100644 --- a/docusaurus.config.jp.js +++ b/docusaurus.config.jp.js @@ -46,7 +46,6 @@ const config = { tagline: "ドキュメント、クイックスタートガイド、ユーザーガイド、技術リファレンス、FAQ など、多様な情報をご提供します。", url: "https://clickhouse.com", - // url: process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : 'https://bookish-disco-5997zvo.pages.github.io', baseUrl: "/docs/jp/", baseUrlIssueBanner: true, onBrokenLinks: "warn", diff --git a/docusaurus.config.ko.js b/docusaurus.config.ko.js index 6a93e2a4513..a35cf60439d 100644 --- a/docusaurus.config.ko.js +++ b/docusaurus.config.ko.js @@ -46,7 +46,6 @@ const config = { tagline: "다양한 정보를 제공합니다: 문서, 빠른 시작 가이드, 사용자 가이드, 기술 참조, 자주 묻는 질문 등.", url: "https://clickhouse.com", - // url: process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : 'https://bookish-disco-5997zvo.pages.github.io', baseUrl: "/docs/ko/", baseUrlIssueBanner: true, onBrokenLinks: "warn", diff --git a/docusaurus.config.ru.js b/docusaurus.config.ru.js index 75876c38100..8aafef6d030 100644 --- a/docusaurus.config.ru.js +++ b/docusaurus.config.ru.js @@ -46,7 +46,6 @@ const config = { tagline: "Документация, быстрые старты, руководства пользователя, технические справочники, часто задаваемые вопросы и многое другое…", url: "https://clickhouse.com", - // url: process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : 'https://bookish-disco-5997zvo.pages.github.io', baseUrl: "/docs/ru/", baseUrlIssueBanner: true, onBrokenLinks: "warn", diff --git a/docusaurus.config.zh.js b/docusaurus.config.zh.js index 702fa201b84..431fb5ca49b 100644 --- a/docusaurus.config.zh.js +++ b/docusaurus.config.zh.js @@ -46,7 +46,6 @@ const config = { tagline: "我们提供文档、快速入门指南、用户指南、技术参考、常见问题解答等多种信息。", url: "https://clickhouse.com", - // url: process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : 'https://bookish-disco-5997zvo.pages.github.io', baseUrl: "/docs/zh/", baseUrlIssueBanner: true, onBrokenLinks: "warn", diff --git a/src/components/MobileSideBarMenu/Content.jsx b/src/components/MobileSideBarMenu/Content.jsx index 66cce4a2de4..12318e2c873 100644 --- a/src/components/MobileSideBarMenu/Content.jsx +++ b/src/components/MobileSideBarMenu/Content.jsx @@ -29,7 +29,7 @@ const MobileSideBarMenuContents = ({ className, onClick, onClose, sidebar, path, // Get current locale from URL const getCurrentLocale = () => { const pathname = location.pathname; - const docsLocaleMatch = pathname.match(/^\/docs\/(jp|ja|ru|zh|zh-CN)(?=\/|$)/); + const docsLocaleMatch = pathname.match(/^\/docs\/(jp|ja|ko|ru|zh|zh-CN)(?=\/|$)/); return docsLocaleMatch ? docsLocaleMatch[1] : 'en'; }; @@ -37,7 +37,7 @@ const MobileSideBarMenuContents = ({ className, onClick, onClose, sidebar, path, const normalizePath = (path) => { if (!path) return ''; // Remove locale prefix from path for comparison - return path.replace(/^\/docs\/(jp|ja|ru|zh|zh-CN)/, '/docs'); + return path.replace(/^\/docs\/(jp|ja|ko|ru|zh|zh-CN)/, '/docs'); }; // Check if the current path exists in the sidebar @@ -71,7 +71,7 @@ const MobileSideBarMenuContents = ({ className, onClick, onClose, sidebar, path, // Check if we're on a docs root page (should show only top-level menu) const isDocsRootPage = () => { - const docsRootPaths = ['/docs/', '/docs/jp/', '/docs/ru/', '/docs/zh/']; + const docsRootPaths = ['/docs/', '/docs/jp/', '/docs/ko/', '/docs/ru/', '/docs/zh/']; return docsRootPaths.includes(location.pathname); }; diff --git a/src/components/MobileSideBarMenu/MobileLanguagePicker.jsx b/src/components/MobileSideBarMenu/MobileLanguagePicker.jsx index 0c46c95039d..3ad034efb75 100644 --- a/src/components/MobileSideBarMenu/MobileLanguagePicker.jsx +++ b/src/components/MobileSideBarMenu/MobileLanguagePicker.jsx @@ -15,13 +15,13 @@ const MobileLanguagePicker = ({ onLanguageChange }) => { const pathname = location.pathname; // Check if we're in a docs path with locale - const docsLocaleMatch = pathname.match(/^\/docs\/(jp|ja|ru|zh|zh-CN)(?=\/|$)/); + const docsLocaleMatch = pathname.match(/^\/docs\/(jp|ja|ko|ru|zh|zh-CN)(?=\/|$)/); if (docsLocaleMatch) { return docsLocaleMatch[1]; } // Check for root-level locale - const rootLocaleMatch = pathname.match(/^\/(jp|ja|ru|zh|zh-CN)(?=\/|$)/); + const rootLocaleMatch = pathname.match(/^\/(jp|ja|ko|ru|zh|zh-CN)(?=\/|$)/); if (rootLocaleMatch) { return rootLocaleMatch[1]; } @@ -61,6 +61,7 @@ const MobileLanguagePicker = ({ onLanguageChange }) => { en: 'EN', jp: 'JP', ja: 'JP', // Handle both jp and ja for Japanese + ko: 'KO', ru: 'RU', zh: 'ZH', 'zh-CN': 'ZH', @@ -76,6 +77,7 @@ const MobileLanguagePicker = ({ onLanguageChange }) => { en: 'English', jp: '日本語', ja: '日本語', // Handle both jp and ja for Japanese + ko: '한국어', ru: 'Русский', zh: '中文', 'zh-CN': '中文', @@ -165,7 +167,7 @@ const MobileLanguagePicker = ({ onLanguageChange }) => { } } else { // Remove existing locale from docs path if present - let cleanPath = currentPath.replace(/^\/docs\/(jp|ja|ru|zh|zh-CN)(?=\/|$)/, '/docs'); + let cleanPath = currentPath.replace(/^\/docs\/(jp|ja|ko|ru|zh|zh-CN)(?=\/|$)/, '/docs'); // Build new URL with target locale if (locale === i18n.defaultLocale || locale === 'en') { @@ -178,7 +180,7 @@ const MobileLanguagePicker = ({ onLanguageChange }) => { } else { // Handle non-docs paths (like home page, blog, etc.) // Remove any existing locale prefix first - let cleanPath = currentPath.replace(/^\/(jp|ja|ru|zh|zh-CN)(?=\/|$)/, ''); + let cleanPath = currentPath.replace(/^\/(jp|ja|ko|ru|zh|zh-CN)(?=\/|$)/, ''); // If nothing was removed, we're on a clean path already if (cleanPath === currentPath) { diff --git a/src/theme/DocItem/Layout/index.js b/src/theme/DocItem/Layout/index.js index d10fe18cbb6..91658cfe2c9 100644 --- a/src/theme/DocItem/Layout/index.js +++ b/src/theme/DocItem/Layout/index.js @@ -55,7 +55,8 @@ export default function DocItemLayout({children}) { if ( location.pathname.endsWith('/docs/jp/') || location.pathname.endsWith('/docs/ru/') || - location.pathname.endsWith('/docs/zh/') + location.pathname.endsWith('/docs/zh/') || + location.pathname.endsWith('/docs/ko/') ) { isDocsHome = true } From c5fcde4a744a4a5d73a3b8bd060af36ccf9c2801 Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Tue, 17 Feb 2026 18:27:31 +0100 Subject: [PATCH 4/6] add missing vercel rewrite --- vercel.json | 1 + 1 file changed, 1 insertion(+) diff --git a/vercel.json b/vercel.json index a1fa050a464..8049d8e87c2 100644 --- a/vercel.json +++ b/vercel.json @@ -1,6 +1,7 @@ { "rewrites": [ { "source": "/docs/jp/:path*", "destination": "/:path*" }, + { "source": "/docs/ko/:path*", "destination": "/:path*" }, { "source": "/docs/zh/:path*", "destination": "/:path*" }, { "source": "/docs/ru/:path*", "destination": "/:path*" }, { "source": "/docs/:path*", "destination": "/:path*" } From 0dc632a16174de6c073a091a420d47ae77f07640 Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Tue, 17 Feb 2026 22:14:55 +0100 Subject: [PATCH 5/6] Fix build errors for Korean translations --- docusaurus.config.ko.js | 2 +- .../current/managing-data/core-concepts/academic_overview.mdx | 2 +- .../current/use-cases/AI_ML/MCP/05_open-webui.md | 2 +- .../ingesting-data/integration-examples/jvm-metrics.md | 2 +- .../ingesting-data/integration-examples/kafka-metrics.md | 2 +- .../ingesting-data/integration-examples/nodejs-traces.md | 4 ++-- .../ingesting-data/integration-examples/temporal.md | 2 ++ 7 files changed, 9 insertions(+), 7 deletions(-) diff --git a/docusaurus.config.ko.js b/docusaurus.config.ko.js index a35cf60439d..f06e09f9437 100644 --- a/docusaurus.config.ko.js +++ b/docusaurus.config.ko.js @@ -81,7 +81,7 @@ const config = { path: "ru", }, ko: { - label: "Korean", + label: "한국어", htmlLang: "ko", path: "ko", } diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/managing-data/core-concepts/academic_overview.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/managing-data/core-concepts/academic_overview.mdx index 78009957afc..2ae86af12c8 100644 --- a/i18n/ko/docusaurus-plugin-content-docs/current/managing-data/core-concepts/academic_overview.mdx +++ b/i18n/ko/docusaurus-plugin-content-docs/current/managing-data/core-concepts/academic_overview.mdx @@ -447,7 +447,7 @@ DuckDB [[67]](#page-13-6)는 호스트 프로세스에 내장되어 사용되도 * [58] Patrick E. O'Neil, Edward Y. C. Cheng, Dieter Gawlick 및 Elizabeth J. O'Neil. 1996년. The log-structured Merge-Tree (LSM-tree). Acta Informatica 33 (1996), 351–385. https://doi.org/10.1007/s002360050048 * [59] Diego Ongaro와 John Ousterhout. 2014. 이해하기 쉬운 합의 알고리즘을 찾아서(In Search of an Understandable Consensus Algorithm). 2014 USENIX Conference on USENIX Annual Technical Conference (USENIX ATC'14) 논문집, 305–320쪽. [https://doi.org/doi/10.](https://doi.org/doi/10.5555/2643634.2643666) [5555/2643634.2643666](https://doi.org/doi/10.5555/2643634.2643666) * [60] Patrick O'Neil, Edward Cheng, Dieter Gawlick, and Elizabeth O'Neil. 1996. 로그 구조 병합 트리(Log-Structured Merge-Tree, LSM-Tree). Acta Inf. 33, 4 (1996), 351–385. [https:](https://doi.org/10.1007/s002360050048) [//doi.org/10.1007/s002360050048](https://doi.org/10.1007/s002360050048) -* [61] Pandas. 2024. Pandas 데이터프레임. 2024-06-20에 https://pandas.([https://pandas.pydata.org/](https://pandas.pydata.org/)) [pydata.org/](https://pandas.pydata.org/)에서 검색함. +* [61] Pandas. 2024. Pandas 데이터프레임. 2024-06-20에 [https://pandas.pydata.org/](https://pandas.pydata.org/) [pydata.org/](https://pandas.pydata.org/)에서 검색함. * [62] Pedro Pedreira, Orri Erling, Masha Basmanova, Kevin Wilfong, Laith Sakka, Krishna Pai, Wei He, 그리고 Biswapesh Chattopadhyay. 2022. Velox: Meta's Unified Execution Engine. Proc. VLDB Endow. 15, 12 (2022년 8월), 3372–3384. [https:](https://doi.org/10.14778/3554821.3554829) [//doi.org/10.14778/3554821.3554829](https://doi.org/10.14778/3554821.3554829) * [63] Tuomas Pelkonen, Scott Franklin, Justin Teller, Paul Cavallaro, Qi Huang, Justin Meza, 그리고 Kaushik Veeraraghavan. 2015. Gorilla: 빠르고 확장 가능한 인메모리 시계열 데이터베이스. Proceedings of the VLDB Endowment 8, 12 (2015), 1816–1827. https://doi.org/10.14778/2824032.2824078 * [64] Orestis Polychroniou, Arun Raghavan, and Kenneth A. Ross. 2015. 「Rethinking SIMD Vectorization for In-Memory Databases」. 2015년 ACM SIGMOD International Conference on Management of Data (SIGMOD '15) 논문집에 수록, 1493–1508쪽. https://doi.org/10.1145/2723372.2747645 diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/AI_ML/MCP/05_open-webui.md b/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/AI_ML/MCP/05_open-webui.md index 143f76cba52..525867cadb9 100644 --- a/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/AI_ML/MCP/05_open-webui.md +++ b/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/AI_ML/MCP/05_open-webui.md @@ -81,7 +81,7 @@ http://localhost:8000/docs로 이동하면 생성된 엔드포인트 목록을 Open WebUI 도구 -도구 URL로 http://localhost:8000을(를) 추가합니다: +도구 URL로 `http://localhost:8000`을(를) 추가합니다: Open WebUI 도구 diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/jvm-metrics.md b/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/jvm-metrics.md index a75a3fc1454..6e6d3cdb25b 100644 --- a/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/jvm-metrics.md +++ b/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/jvm-metrics.md @@ -129,7 +129,7 @@ OpenTelemetry Java 에이전트는 다음 JVM 메트릭을 자동으로 수집 애플리케이션이 에이전트와 함께 실행 중이면, 메트릭이 ClickStack으로 전송되는지 확인합니다. -1. http://localhost:8080(또는 ClickStack URL)에서 HyperDX를 엽니다. +1. `http://localhost:8080`(또는 ClickStack URL)에서 HyperDX를 엽니다. 2. **Chart Explorer**로 이동합니다. 3. `jvm.`으로 시작하는 메트릭을 검색합니다(예: `jvm.memory.used`, `jvm.gc.duration`, `jvm.thread.count`). diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/kafka-metrics.md b/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/kafka-metrics.md index d09f1741499..3d554cac44f 100644 --- a/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/kafka-metrics.md +++ b/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/kafka-metrics.md @@ -50,7 +50,7 @@ OpenTelemetry JMX Metric Gatherer 컨테이너를 실행하여 메트릭을 수 JMX Metric Gatherer는 ClickStack의 OTLP 엔드포인트로 데이터를 전송하며, 이 엔드포인트는 인증을 필요로 합니다. - 1. ClickStack URL(예: http://localhost:8080)에서 HyperDX를 엽니다 + 1. ClickStack URL(예: `http://localhost:8080`)에서 HyperDX를 엽니다 2. 계정이 없으면 새로 만들고, 있으면 로그인하십시오 3. **Team Settings → API Keys**로 이동하십시오 4. **수집 API key**를 복사하십시오 diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/nodejs-traces.md b/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/nodejs-traces.md index bb8a949a8c3..331af918bec 100644 --- a/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/nodejs-traces.md +++ b/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/nodejs-traces.md @@ -58,7 +58,7 @@ import { TrackedLink } from '@site/src/components/GalaxyTrackedLink/GalaxyTracke ClickStack의 OTLP 엔드포인트로 트레이스를 전송하기 위한 수집 API key입니다. -1. ClickStack URL에서 HyperDX를 엽니다 (예: http://localhost:8080) +1. ClickStack URL에서 HyperDX를 엽니다 (예: `http://localhost:8080`) 2. 필요하면 계정을 생성하거나 로그인합니다. 3. **Team Settings → API Keys**로 이동합니다. 4. **Ingestion API Key**를 복사합니다. @@ -129,7 +129,7 @@ docker run -d --name clickstack-demo \ ClickStack의 OTLP 엔드포인트로 트레이스를 전송하려면 API key가 필요합니다. -1. ClickStack URL(예: http://localhost:8080)에서 HyperDX를 엽니다. +1. ClickStack URL(예: `http://localhost:8080`)에서 HyperDX를 엽니다. 2. 필요하다면 계정을 생성하거나 로그인합니다. 3. **Team Settings → API Keys**로 이동합니다. 4. **Ingestion API Key(수집 API key)**를 복사합니다. diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/temporal.md b/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/temporal.md index ce5fae0f306..e82894ab86d 100644 --- a/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/temporal.md +++ b/i18n/ko/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/ingesting-data/integration-examples/temporal.md @@ -112,6 +112,8 @@ Temporal은 단순하면서도 정교하고 복원력이 높은 애플리케이 * `resource` 프로세서는 OpenTelemetry 시맨틱 컨벤션에 따라 필수 `service.name` 속성 값을 설정합니다 * 여러 Temporal Cloud 계정이 있는 경우, 이를 구분할 수 있도록 `service.name` 값을 다르게 설정하십시오(예: `"temporal-prod"`, `"temporal-dev"`). + ::: + #### ClickStack에서 사용자 정의 구성 로드 설정하기 기존 ClickStack 배포에서 사용자 정의 수집기 구성을 활성화하려면 다음 작업을 수행하십시오: From 52f2e577f696692fbda1fb073fb72df4b65065c2 Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Tue, 17 Feb 2026 22:25:49 +0100 Subject: [PATCH 6/6] Fix code block which closes prematurely causing build issue --- .../current/interfaces/formats/Prometheus.md | 26 +++++++------------ 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/interfaces/formats/Prometheus.md b/i18n/ko/docusaurus-plugin-content-docs/current/interfaces/formats/Prometheus.md index f96f8381bcb..93ce29b93e6 100644 --- a/i18n/ko/docusaurus-plugin-content-docs/current/interfaces/formats/Prometheus.md +++ b/i18n/ko/docusaurus-plugin-content-docs/current/interfaces/formats/Prometheus.md @@ -70,8 +70,6 @@ http_request_duration_seconds_bucket{le="1"} 133988 http_request_duration_seconds_bucket{le="+Inf"} 144320 http_request_duration_seconds_sum 53423 http_request_duration_seconds_count 144320 -``` - # HELP http_requests_total HTTP 요청 총 횟수 # TYPE http_requests_total counter @@ -80,23 +78,17 @@ http_requests_total{code="400",method="post"} 3 1395066363000 metric_without_timestamp_and_labels 12.47 - - # HELP rpc_duration_seconds RPC 지속 시간(초)에 대한 요약입니다. - # TYPE rpc_duration_seconds summary - -rpc_duration_seconds{quantile="0.01"} 3102 -rpc_duration_seconds{quantile="0.05"} 3272 -rpc_duration_seconds{quantile="0.5"} 4773 -rpc_duration_seconds{quantile="0.9"} 9001 -rpc_duration_seconds{quantile="0.99"} 76656 -rpc_duration_seconds_sum 17560473 -rpc_duration_seconds_count 2693 - -something_weird{problem="0으로 나누기 오류"} +Inf -3982045 - -``` +rpc_duration_seconds{quantile="0.01"} 3102 +rpc_duration_seconds{quantile="0.05"} 3272 +rpc_duration_seconds{quantile="0.5"} 4773 +rpc_duration_seconds{quantile="0.9"} 9001 +rpc_duration_seconds{quantile="0.99"} 76656 +rpc_duration_seconds_sum 17560473 +rpc_duration_seconds_count 2693 + +something_weird{problem="0으로 나누기 오류"} +Inf -3982045 ```