
From 56b2c6487706fbfc21ced93134fa14fff84c75c5 Mon Sep 17 00:00:00 2001
From: Eli Bosley <11823237+elibosley@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:21:23 -0400
Subject: [PATCH 038/437] New translations cache-pools.mdx (German)
---
.../using-unraid-to/manage-storage/cache-pools.mdx | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/manage-storage/cache-pools.mdx b/i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/manage-storage/cache-pools.mdx
index c4684e20206..790bf87a424 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/manage-storage/cache-pools.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/manage-storage/cache-pools.mdx
@@ -211,11 +211,11 @@ Für erweiterte %%BTRFS|btrfs%% Konfigurationsdetails siehe das [BTRFS-Wiki](htt

From d14dcca700e4b8c003c1b8b6183ab97dd395f4f6 Mon Sep 17 00:00:00 2001
From: Eli Bosley <11823237+elibosley@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:21:50 -0400
Subject: [PATCH 039/437] New translations community-applications.mdx (German)
---
.../run-docker-containers/community-applications.mdx | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx b/i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx
index ed6e4cb6a28..a9ab1a6af7b 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/run-docker-containers/community-applications.mdx
@@ -46,11 +46,11 @@ Um das Community-Anwendungs-Plugin zu installieren:

From 07bef351238d0589d808ba446daffc12e048fa0a Mon Sep 17 00:00:00 2001
From: Eli Bosley <11823237+elibosley@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:22:03 -0400
Subject: [PATCH 040/437] New translations removing-disks-from-array.mdx
(German)
---
.../manage-storage/array/removing-disks-from-array.mdx | 1 +
1 file changed, 1 insertion(+)
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/manage-storage/array/removing-disks-from-array.mdx b/i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/manage-storage/array/removing-disks-from-array.mdx
index d3500b633d0..14052101ba8 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/manage-storage/array/removing-disks-from-array.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/unraid-os/using-unraid-to/manage-storage/array/removing-disks-from-array.mdx
@@ -67,6 +67,7 @@ So verwenden Sie die Paritäts-PresErve-Methode:
- Für Unraid 6.12 oder später: `dd bs=1M if=/dev/zero of=/dev/mdXp1 status=progress`
- Für Unraid 6.11 und früher: `dd bs=1M if=/dev/zero of=/dev/mdX status=progress`
Ersetzen Sie `X` durch die spezifische Nummer der Datenfestplatte, die Sie entfernen möchten.
+ Ersetzen Sie `X` durch die spezifische Nummer der Datenfestplatte, die Sie entfernen möchten.
Ersetzen Sie `X` durch die spezifische Nummer der Datenfestplatte, die Sie entfernen möchten.
7. Stoppen Sie das Array, sobald das Nullsetzen abgeschlossen ist.
8. Setzen Sie die Array-Konfiguration zurück, wobei alle aktuellen Zuweisungen beibehalten werden.
From ccefbe96031d1a4dbfc77b0e0639f1880b95a51f Mon Sep 17 00:00:00 2001
From: Eli Bosley <11823237+elibosley@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:22:50 -0400
Subject: [PATCH 041/437] New translations zfs-storage.mdx (Chinese Simplified)
---
.../optimize-storage/zfs-storage.mdx | 28 +++++++++----------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/unraid-os/advanced-configurations/optimize-storage/zfs-storage.mdx b/i18n/zh/docusaurus-plugin-content-docs/current/unraid-os/advanced-configurations/optimize-storage/zfs-storage.mdx
index 731fe9a24bd..9d0917bf09c 100644
--- a/i18n/zh/docusaurus-plugin-content-docs/current/unraid-os/advanced-configurations/optimize-storage/zfs-storage.mdx
+++ b/i18n/zh/docusaurus-plugin-content-docs/current/unraid-os/advanced-configurations/optimize-storage/zfs-storage.mdx
@@ -39,7 +39,7 @@ Unraid supports %%ZFS|zfs%% for any storage pool. You can create a new %%ZFS|zfs
:::
- 
+ 
:::note
@@ -59,7 +59,7 @@ Unraid supports %%ZFS|zfs%% for any storage pool. You can create a new %%ZFS|zfs
:::
- 
+ 
---
@@ -72,7 +72,7 @@ Unraid supports %%ZFS|zfs%% for any storage pool. You can create a new %%ZFS|zfs
2. 点击**添加池**。
- 
+ 
3. 为您的存储池选择一个名称(例如,`raptor`)。
@@ -91,14 +91,14 @@ Unraid supports %%ZFS|zfs%% for any storage pool. You can create a new %%ZFS|zfs
5. 如果需要,可以启用压缩(推荐用于大多数工作负载)。
- 
+ 
6. 点击池名称(例如 `raptor`)以打开其配置屏幕。
7. 将文件系统类型设置为 `zfs` 或 `zfs-encrypted`(用于 LUKS 加密)。
- 
+ 
8. 选择您的分配配置文件 - 这会决定您的池的冗余和性能。
@@ -114,7 +114,7 @@ Unraid supports %%ZFS|zfs%% for any storage pool. You can create a new %%ZFS|zfs
- 
+ 
9. 如果需要,可以启用压缩(推荐用于大多数工作负载)。
@@ -145,13 +145,13 @@ Unraid supports %%ZFS|zfs%% for any storage pool. You can create a new %%ZFS|zfs
4. 选择您要添加的磁盘。
- 
+ 
5. 在 **文件系统** 下,选择 `zfs` 或 `zfs-encrypted`。
- 
+ 
6. 点击 **应用**。
@@ -164,7 +164,7 @@ Unraid supports %%ZFS|zfs%% for any storage pool. You can create a new %%ZFS|zfs
当您设置 %%ZFS|zfs%% 池时,您的分配配置文件将决定您的数据如何受到保护、池的性能以及其可扩展性。以下是一些简单的比较帮助您决定哪个配置文件适合您的需求:
- 
+ 
| 配置 | 冗余 | 性能 | 扩展 | 空间效率 | 典型用例 | 每个 vdev 的推荐硬盘数量 |
@@ -204,7 +204,7 @@ Unraid supports %%ZFS|zfs%% for any storage pool. You can create a new %%ZFS|zfs
您如何将磁盘分组到 vdevs 中会影响数据安全性和速度。
- 
+ 
- 如果您将所有磁盘放入一个大型 RAIDZ2 vdev,您可以在不丢失数据的情况下丢失任意两个磁盘。然而,扩展意味着需要添加另一个完整的 vdev。
@@ -232,7 +232,7 @@ Unraid supports %%ZFS|zfs%% for any storage pool. You can create a new %%ZFS|zfs
- **提高性能:** 写入和读取较少数据可以导致更快的操作,特别是在现代 CPU 上。
- 
+ 
:::tip
@@ -249,7 +249,7 @@ Unraid supports %%ZFS|zfs%% for any storage pool. You can create a new %%ZFS|zfs
Unraid 自动限制 %%ZFS|zfs%% 使用系统内存的一部分(通常是总 RAM 的 1/8)。这使 %%ZFS|zfs%% 可以良好运作,而不会影响到 Docker 容器、%%VMs|vm%% 或 Unraid 操作系统。
- 
+ 
@@ -287,7 +287,7 @@ Unraid 可以轻松导入其他平台上创建的 %%ZFS|zfs%% 池。
- 在 **池状态** 下,检查状态并点击 **Scrub**。
- 
+ 
@@ -298,7 +298,7 @@ Unraid 可以轻松导入其他平台上创建的 %%ZFS|zfs%% 池。
Unraid 将 %%ZFS|zfs%% 支持 vdevs 称作子池。大多数用户**不**需要这些,但有经验的用户可能会使用:
- 
+ 
| 支持的 vdev(子池) | 描述 | 详细信息/示例 |
From 019dd549bd6d5d4632de1ae3436593651de3bb09 Mon Sep 17 00:00:00 2001
From: Eli Bosley <11823237+elibosley@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:25:06 -0400
Subject: [PATCH 042/437] New translations code.json (Japanese)
---
i18n/ja/code.json | 476 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 476 insertions(+)
create mode 100644 i18n/ja/code.json
diff --git a/i18n/ja/code.json b/i18n/ja/code.json
new file mode 100644
index 00000000000..e48165ddf0d
--- /dev/null
+++ b/i18n/ja/code.json
@@ -0,0 +1,476 @@
+{
+ "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.ErrorPageContent.title": {
+ "message": "このページはクラッシュしました。",
+ "description": "The title of the fallback page 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.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.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.tags.tagsPageLink": {
+ "message": "すべてのタグを表示",
+ "description": "The label of the link targeting the tag list page"
+ },
+ "theme.docs.breadcrumbs.navAriaLabel": {
+ "message": "パンくずリスト",
+ "description": "The ARIA label for the breadcrumbs"
+ },
+ "theme.docs.DocCard.categoryDescription.plurals": {
+ "message": "1件の項目|{count}件の項目",
+ "description": "The default description for a category card in the generated index about how many items this category includes"
+ },
+ "theme.colorToggle.ariaLabel": {
+ "message": "ダークモードとライトモードを切り替える(現在は{mode})",
+ "description": "The ARIA label for the 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.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.tagDocListPageTitle.nDocsTagged": {
+ "message": "1件のドキュメントにタグ付け済み|{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": "{nDocsTagged}件(\"{tagName}\")",
+ "description": "The title of the page for a docs tag"
+ },
+ "theme.docs.versionBadge.label": {
+ "message": "バージョン: {versionLabel}"
+ },
+ "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": "{heading} への直接リンク",
+ "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.navbar.mobileVersionsDropdown.label": {
+ "message": "バージョン",
+ "description": "The label for the navbar versions dropdown on mobile view"
+ },
+ "theme.AnnouncementBar.closeButtonAriaLabel": {
+ "message": "閉じる",
+ "description": "The ARIA label for close button of announcement bar"
+ },
+ "theme.tags.tagsListLabel": {
+ "message": "タグ:",
+ "description": "The label alongside a tag list"
+ },
+ "theme.admonition.caution": {
+ "message": "注意",
+ "description": "The default label used for the Caution admonition (:::caution)"
+ },
+ "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.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.warning": {
+ "message": "警告",
+ "description": "The default label used for the Warning admonition (:::warning)"
+ },
+ "theme.blog.sidebar.navAriaLabel": {
+ "message": "ブログの最近の投稿ナビゲーション",
+ "description": "The ARIA label for recent posts in the blog sidebar"
+ },
+ "theme.CodeBlock.copied": {
+ "message": "コピーしました",
+ "description": "The copied button label on code blocks"
+ },
+ "theme.CodeBlock.copyButtonAriaLabel": {
+ "message": "コードをクリップボードにコピー",
+ "description": "The ARIA label for copy code blocks button"
+ },
+ "theme.CodeBlock.copy": {
+ "message": "コピー",
+ "description": "The copy button label on code blocks"
+ },
+ "theme.CodeBlock.wordWrapToggle": {
+ "message": "折り返しを切り替え",
+ "description": "The title attribute for toggle word wrapping button of code block lines"
+ },
+ "theme.DocSidebarItem.expandCategoryAriaLabel": {
+ "message": "サイドバーのカテゴリ '{label}' を展開",
+ "description": "The ARIA label to expand the sidebar category"
+ },
+ "theme.DocSidebarItem.collapseCategoryAriaLabel": {
+ "message": "サイドバーのカテゴリ '{label}' を折りたたむ",
+ "description": "The ARIA label to collapse the sidebar category"
+ },
+ "theme.NavBar.navAriaLabel": {
+ "message": "メイン",
+ "description": "The ARIA label for the main navigation"
+ },
+ "theme.blog.post.readMore": {
+ "message": "続きを読む",
+ "description": "The label used in blog post item excerpts to link to full blog posts"
+ },
+ "theme.blog.post.readMoreLabel": {
+ "message": "{title} についてさらに読む",
+ "description": "The ARIA label for the link to full blog posts from excerpts"
+ },
+ "theme.navbar.mobileLanguageDropdown.label": {
+ "message": "言語",
+ "description": "The label for the mobile language switcher dropdown"
+ },
+ "theme.TOCCollapsible.toggleButtonLabel": {
+ "message": "このページ内",
+ "description": "The label used by the button on the collapsible TOC component"
+ },
+ "theme.blog.post.readingTime.plurals": {
+ "message": "1分で読める|{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.docs.breadcrumbs.home": {
+ "message": "ホームページ",
+ "description": "The ARIA label for the home page in the breadcrumbs"
+ },
+ "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.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.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.docs.sidebar.toggleSidebarButtonAriaLabel": {
+ "message": "ナビゲーションバーを切り替え",
+ "description": "The ARIA label for hamburger menu button of mobile navigation"
+ },
+ "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.SearchBar.seeAll": {
+ "message": "すべての{count}件の結果を見る"
+ },
+ "theme.SearchPage.documentsFound.plurals": {
+ "message": "1件のドキュメントが見つかりました|{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.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": "Escapeキー",
+ "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": "「{query}」の検索結果はありません",
+ "description": "The text explains that there are no results for the following search"
+ },
+ "theme.SearchModal.noResultsScreen.suggestedQueryText": {
+ "message": "「{query}」を検索してみてください",
+ "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"
+ },
+ "theme.blog.post.plurals": {
+ "message": "1件の投稿|{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.blog.author.pageTitle": {
+ "message": "{authorName} - {nPosts}",
+ "description": "The title of the page for a blog author"
+ },
+ "theme.blog.authorsList.pageTitle": {
+ "message": "著者",
+ "description": "The title of the authors page"
+ },
+ "theme.blog.authorsList.viewAll": {
+ "message": "すべての著者を表示",
+ "description": "The label of the link targeting the blog authors page"
+ },
+ "theme.blog.author.noPosts": {
+ "message": "この著者はまだ投稿を書いていません。",
+ "description": "The text for authors with 0 blog post"
+ },
+ "theme.contentVisibility.unlistedBanner.title": {
+ "message": "非一覧ページ",
+ "description": "The unlisted content banner title"
+ },
+ "theme.contentVisibility.unlistedBanner.message": {
+ "message": "このページは非一覧です。検索エンジンはインデックスせず、直接リンクを持つユーザーのみアクセスできます。",
+ "description": "The unlisted content banner message"
+ },
+ "theme.contentVisibility.draftBanner.title": {
+ "message": "下書きページ",
+ "description": "The draft content banner title"
+ },
+ "theme.contentVisibility.draftBanner.message": {
+ "message": "このページは下書きです。dev でのみ表示され、本番ビルドからは除外されます。",
+ "description": "The draft content banner message"
+ },
+ "theme.ErrorPageContent.tryAgain": {
+ "message": "もう一度試す",
+ "description": "The label of the button to try again rendering when the React error boundary captures an error"
+ },
+ "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.tags.tagsPageTitle": {
+ "message": "タグ",
+ "description": "The title of the tag list page"
+ },
+ "theme.colorToggle.ariaLabel.mode.system": {
+ "message": "システムモード",
+ "description": "The name for the system color mode"
+ },
+ "theme.navbar.mobileDropdown.collapseButton.expandAriaLabel": {
+ "message": "ドロップダウンを展開",
+ "description": "The ARIA label of the button to expand the mobile dropdown navbar item"
+ },
+ "theme.navbar.mobileDropdown.collapseButton.collapseAriaLabel": {
+ "message": "ドロップダウンを折りたたむ",
+ "description": "The ARIA label of the button to collapse the mobile dropdown navbar item"
+ }
+}
From ed75161341891cca874a50b20b01a75e1cb0969e Mon Sep 17 00:00:00 2001
From: Eli Bosley <11823237+elibosley@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:25:07 -0400
Subject: [PATCH 043/437] New translations options.json (Japanese)
---
.../ja/docusaurus-plugin-content-blog/options.json | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 i18n/ja/docusaurus-plugin-content-blog/options.json
diff --git a/i18n/ja/docusaurus-plugin-content-blog/options.json b/i18n/ja/docusaurus-plugin-content-blog/options.json
new file mode 100644
index 00000000000..7abfbdd6766
--- /dev/null
+++ b/i18n/ja/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"
+ }
+}
From 8c6877ea64617771afea760642be93ec815e6b10 Mon Sep 17 00:00:00 2001
From: Eli Bosley <11823237+elibosley@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:25:09 -0400
Subject: [PATCH 044/437] New translations current.json (Japanese)
---
.../current.json | 130 ++++++++++++++++++
1 file changed, 130 insertions(+)
create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current.json
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current.json b/i18n/ja/docusaurus-plugin-content-docs/current.json
new file mode 100644
index 00000000000..0def7167971
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current.json
@@ -0,0 +1,130 @@
+{
+ "version.label": {
+ "message": "次へ",
+ "description": "The label for version current"
+ },
+ "sidebar.unraidSidebar.category.Unraid OS": {
+ "message": "Unraid OS",
+ "description": "The label for category Unraid OS in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Getting started with Unraid": {
+ "message": "Unraid の使い始め",
+ "description": "The label for category Getting started with Unraid in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Set up Unraid": {
+ "message": "Unraid のセットアップ",
+ "description": "The label for category Set up Unraid in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Explore the user interface": {
+ "message": "ユーザーインターフェースを探る",
+ "description": "The label for category Explore the user interface in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Using Unraid to": {
+ "message": "Unraid を使って",
+ "description": "The label for category Using Unraid to in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Manage storage": {
+ "message": "ストレージを管理する",
+ "description": "The label for category Manage storage in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Run Docker containers": {
+ "message": "Docker コンテナを実行する",
+ "description": "The label for category Run Docker containers in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Create virtual machines": {
+ "message": "仮想マシンを作成する",
+ "description": "The label for category Create virtual machines in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Customize your experience": {
+ "message": "使い心地をカスタマイズする",
+ "description": "The label for category Customize your experience in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.System administration": {
+ "message": "システム管理",
+ "description": "The label for category System administration in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Monitor performance": {
+ "message": "パフォーマンスを監視する",
+ "description": "The label for category Monitor performance in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Maintain and update": {
+ "message": "保守と更新",
+ "description": "The label for category Maintain and update in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Secure your server": {
+ "message": "サーバーを保護する",
+ "description": "The label for category Secure your server in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Advanced tools": {
+ "message": "高度なツール",
+ "description": "The label for category Advanced tools in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Advanced configurations": {
+ "message": "高度な構成",
+ "description": "The label for category Advanced configurations in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Optimize storage": {
+ "message": "ストレージを最適化する",
+ "description": "The label for category Optimize storage in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Troubleshooting": {
+ "message": "トラブルシューティング",
+ "description": "The label for category Troubleshooting in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Common issues": {
+ "message": "よくある問題",
+ "description": "The label for category Common issues in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Diagnostics": {
+ "message": "診断",
+ "description": "The label for category Diagnostics in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Release notes": {
+ "message": "リリースノート",
+ "description": "The label for category Release notes in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Release notes.link.generated-index.description": {
+ "message": "Unraid リリースノート",
+ "description": "The generated-index page description for category Release notes in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.7.2": {
+ "message": "7.2",
+ "description": "The label for category 7.2 in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.7.1": {
+ "message": "7.1",
+ "description": "The label for category 7.1 in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.7.0": {
+ "message": "7.0",
+ "description": "The label for category 7.0 in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.6.12": {
+ "message": "6.12",
+ "description": "The label for category 6.12 in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.6.11": {
+ "message": "6.11",
+ "description": "The label for category 6.11 in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.6.10": {
+ "message": "6.10",
+ "description": "The label for category 6.10 in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.6.9": {
+ "message": "6.9",
+ "description": "The label for category 6.9 in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Unraid Connect": {
+ "message": "Unraid Connect",
+ "description": "The label for category Unraid Connect in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Unraid API": {
+ "message": "Unraid API",
+ "description": "The label for category Unraid API in sidebar unraidSidebar"
+ },
+ "sidebar.unraidSidebar.category.Contribute": {
+ "message": "貢献する",
+ "description": "The label for category Contribute in sidebar unraidSidebar"
+ }
+}
From e8f10f02e417c1c13dd1b8e69fc29509935c3138 Mon Sep 17 00:00:00 2001
From: Eli Bosley <11823237+elibosley@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:25:10 -0400
Subject: [PATCH 045/437] New translations footer.json (Japanese)
---
i18n/ja/docusaurus-theme-classic/footer.json | 62 ++++++++++++++++++++
1 file changed, 62 insertions(+)
create mode 100644 i18n/ja/docusaurus-theme-classic/footer.json
diff --git a/i18n/ja/docusaurus-theme-classic/footer.json b/i18n/ja/docusaurus-theme-classic/footer.json
new file mode 100644
index 00000000000..d6db1d825d4
--- /dev/null
+++ b/i18n/ja/docusaurus-theme-classic/footer.json
@@ -0,0 +1,62 @@
+{
+ "link.title.Documentation": {
+ "message": "ドキュメント",
+ "description": "The title of the footer links column with title=Documentation in the footer"
+ },
+ "link.title.Community": {
+ "message": "コミュニティ",
+ "description": "The title of the footer links column with title=Community in the footer"
+ },
+ "link.title.More": {
+ "message": "もっと",
+ "description": "The title of the footer links column with title=More in the footer"
+ },
+ "link.title.License": {
+ "message": "License",
+ "description": "The title of the footer links column with title=License in the footer"
+ },
+ "link.item.label.Home": {
+ "message": "ホーム",
+ "description": "The label of footer link with label=Home linking to /"
+ },
+ "link.item.label.Contribute on Github": {
+ "message": "Githubで貢献する",
+ "description": "The label of footer link with label=Contribute on Github linking to https://github.com/unraid/docs"
+ },
+ "link.item.label.Forums": {
+ "message": "フォーラム",
+ "description": "The label of footer link with label=Forums linking to https://forums.unraid.net"
+ },
+ "link.item.label.Discord": {
+ "message": "Discord",
+ "description": "The label of footer link with label=Discord linking to https://discord.unraid.net/"
+ },
+ "link.item.label.Unraid Home": {
+ "message": "Unraid ホーム",
+ "description": "The label of footer link with label=Unraid Home linking to https://unraid.net"
+ },
+ "link.item.label.Unraid Connect": {
+ "message": "Unraid Connect",
+ "description": "The label of footer link with label=Unraid Connect linking to https://connect.myunraid.net"
+ },
+ "link.item.label.Newsletter": {
+ "message": "ニュースレター",
+ "description": "The label of footer link with label=Newsletter linking to https://newsletter.unraid.net"
+ },
+ "link.item.label.Blog": {
+ "message": "ブログ",
+ "description": "The label of footer link with label=Blog linking to https://unraid.net/blog"
+ },
+ "link.item.label.CC BY-SA 4.0": {
+ "message": "CC BY-SA 4.0",
+ "description": "The label of footer link with label=CC BY-SA 4.0 linking to https://creativecommons.org/licenses/by-sa/4.0/"
+ },
+ "copyright": {
+ "message": "
Copyright © 2005-{currentYear} Lime Technology, Inc.
Unraid® is a registered trademark of Lime Technology, Inc.",
+ "description": "The footer copyright"
+ },
+ "logo.alt": {
+ "message": "Unraid ロゴ",
+ "description": "The alt text of footer logo"
+ }
+}
From 4aff5d0574b91ee6ea5a82555c4c4024fb00b99c Mon Sep 17 00:00:00 2001
From: Eli Bosley <11823237+elibosley@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:25:11 -0400
Subject: [PATCH 046/437] New translations navbar.json (Japanese)
---
i18n/ja/docusaurus-theme-classic/navbar.json | 26 ++++++++++++++++++++
1 file changed, 26 insertions(+)
create mode 100644 i18n/ja/docusaurus-theme-classic/navbar.json
diff --git a/i18n/ja/docusaurus-theme-classic/navbar.json b/i18n/ja/docusaurus-theme-classic/navbar.json
new file mode 100644
index 00000000000..1df3d280b98
--- /dev/null
+++ b/i18n/ja/docusaurus-theme-classic/navbar.json
@@ -0,0 +1,26 @@
+{
+ "title": {
+ "message": "Unraid ドキュメント",
+ "description": "The title in the navbar"
+ },
+ "logo.alt": {
+ "message": "サイトのロゴ",
+ "description": "The alt text of navbar logo"
+ },
+ "item.label.More": {
+ "message": "もっと",
+ "description": "Navbar item with label More"
+ },
+ "item.label.Unraid Home": {
+ "message": "Unraid ホーム",
+ "description": "Navbar item with label Unraid Home"
+ },
+ "item.label.Forums": {
+ "message": "フォーラム",
+ "description": "Navbar item with label Forums"
+ },
+ "item.label.Docs Github": {
+ "message": "Docs GitHub",
+ "description": "Navbar item with label Docs Github"
+ }
+}
From 0833335979a52df03087d5071d9ea6feace41e74 Mon Sep 17 00:00:00 2001
From: Eli Bosley <11823237+elibosley@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:25:12 -0400
Subject: [PATCH 047/437] New translations _category_.json (Japanese)
---
.../current/API/_category_.json | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/API/_category_.json
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/_category_.json b/i18n/ja/docusaurus-plugin-content-docs/current/API/_category_.json
new file mode 100644
index 00000000000..1e4ded6ca34
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Unraid API",
+ "position": 4
+}
\ No newline at end of file
From 901a251194aa459dedaeae90efca643fe0becb74 Mon Sep 17 00:00:00 2001
From: Eli Bosley <11823237+elibosley@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:25:14 -0400
Subject: [PATCH 048/437] New translations
api-key-app-developer-authorization-flow.mdx (Japanese)
---
...i-key-app-developer-authorization-flow.mdx | 82 +++++++++++++++++++
1 file changed, 82 insertions(+)
create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/API/api-key-app-developer-authorization-flow.mdx
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/api-key-app-developer-authorization-flow.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/API/api-key-app-developer-authorization-flow.mdx
new file mode 100644
index 00000000000..189b6552150
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/api-key-app-developer-authorization-flow.mdx
@@ -0,0 +1,82 @@
+# API key authorization flow
+
+このドキュメントでは、サードパーティ製アプリケーション向けのセルフサービス API キー作成フローについて説明します。
+
+## 概要
+
+アプリケーションは、ユーザーを特別な認可ページにリダイレクトすることで Unraid サーバーへの API アクセスを要求できます。ユーザーはそこで要求された権限を確認し、ワンクリックで API キーを作成できます。
+
+## フロー
+
+1. **アプリケーションが要求を開始**: アプリはユーザーを次のページにリダイレクトします:
+
+ ```text
+ https://[unraid-server]/ApiKeyAuthorize?name=MyApp&scopes=docker:read,vm:*&redirect_uri=https://myapp.com/callback&state=abc123
+ ```
+
+2. **User authentication**: If not already logged in, the user is redirected to login first (standard Unraid auth).
+
+3. **同意画面**: ユーザーに表示される内容:
+ - アプリケーション名と説明
+ - 要求された権限(特定のスコープを承認/拒否するためのチェックボックス付き)
+ - API キー名フィールド(事前入力済み)
+ - Authorize および Cancel ボタン
+
+4. **API キーの作成**: 認可後:
+ - API key is created with approved scopes.
+ - Key is displayed to the user.
+ - If `redirect_uri` is provided, user is redirected back with the key.
+
+5. **コールバック**: アプリは API キーを受け取ります:
+
+ ```text
+ https://myapp.com/callback?api_key=xxx&state=abc123
+ ```
+
+## Query parameters
+
+- `name`(必須): 要求元アプリケーションの名前
+- `description`(任意): アプリケーションの説明
+- `scopes`(必須): カンマ区切りの要求スコープ一覧
+- `redirect_uri`(任意): 認可後にリダイレクトする URL
+- `state`(任意): 状態を維持するための不透明な値
+
+## Scope format
+
+Scopes follow the pattern: `resource:action`. Examples include `docker:read` (read access to Docker), `vm:*` (full access to VMs), `system:update` (update access to system), `role:viewer` (viewer role access), and `role:admin` (admin role access).
+
+Available resources include `docker`, `vm`, `system`, `share`, `user`, `network`, `disk`, and others. Available actions are `create`, `read`, `update`, `delete`, or `*` for all.
+
+Redirect URIs must use HTTPS (except localhost for development). Users explicitly approve each permission, and the flow uses existing Unraid authentication sessions. API keys are shown once and must be saved securely.
+
+## Example integration
+
+```javascript
+// JavaScript example
+const unraidServer = 'tower.local';
+const appName = 'My Docker Manager';
+const scopes = 'docker:*,system:read';
+const redirectUri = 'https://myapp.com/unraid/callback';
+const state = generateRandomState();
+
+// Store state for verification
+sessionStorage.setItem('oauth_state', state);
+
+// Redirect user to authorization page
+window.location.href =
+ `https://${unraidServer}/ApiKeyAuthorize?` +
+ `name=${encodeURIComponent(appName)}&` +
+ `scopes=${encodeURIComponent(scopes)}&` +
+ `redirect_uri=${encodeURIComponent(redirectUri)}&` +
+ `state=${encodeURIComponent(state)}`;
+
+// Handle callback
+const urlParams = new URLSearchParams(window.location.search);
+const apiKey = urlParams.get('api_key');
+const returnedState = urlParams.get('state');
+
+if (returnedState === sessionStorage.getItem('oauth_state')) {
+ // Save API key securely
+ saveApiKey(apiKey);
+}
+```
From 802537aa85dd9e7594514e88daf611b67f2317c4 Mon Sep 17 00:00:00 2001
From: Eli Bosley <11823237+elibosley@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:25:15 -0400
Subject: [PATCH 049/437] New translations cli.mdx (Japanese)
---
.../current/API/cli.mdx | 218 ++++++++++++++++++
1 file changed, 218 insertions(+)
create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/API/cli.mdx
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/cli.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/API/cli.mdx
new file mode 100644
index 00000000000..0f5425f37ef
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/cli.mdx
@@ -0,0 +1,218 @@
+---
+title: CLIリファレンス
+description: すべてのUnraid API CLIコマンドの完全なリファレンス
+sidebar_position: 4
+---
+
+# CLIコマンド
+
+:::info[Command 構造]
+
+All commands follow the pattern: `unraid-api
[options]`
+
+:::
+
+## 🚀 Service Management
+
+### 開始
+
+```bash
+unraid-api start [--log-level ]
+```
+
+Starts the Unraid API service.
+
+Options:
+
+- `--log-level`: Set logging level (trace|debug|info|warn|error|fatal)
+
+Alternative: You can also set the log level using the `LOG_LEVEL` environment variable:
+
+```bash
+LOG_LEVEL=trace unraid-api start
+```
+
+### 停止
+
+```bash
+unraid-api stop [--delete]
+```
+
+Stops the Unraid API service.
+
+- `--delete`: Optional. Delete the PM2 home directory
+
+### 再起動
+
+```bash
+unraid-api restart [--log-level ]
+```
+
+Restarts the Unraid API service.
+
+Options:
+
+- `--log-level`: Set logging level (trace|debug|info|warn|error|fatal)
+
+Alternative: You can also set the log level using the `LOG_LEVEL` environment variable:
+
+```bash
+LOG_LEVEL=trace unraid-api restart
+```
+
+### ログ
+
+```bash
+unraid-api logs [-l ]
+```
+
+View the API logs.
+
+- `-l, --lines`: Optional. Number of lines to tail (default: 100)
+
+## ⚙️ Configuration Commands
+
+### Config
+
+```bash
+unraid-api config
+```
+
+Displays current configuration values.
+
+### Switch Environment
+
+```bash
+unraid-api switch-env [-e ]
+```
+
+Switch between production and staging environments.
+
+- `-e, --environment`: Optional. Target environment (production|staging)
+
+### Developer Mode
+
+:::tip[Web GUI Management]
+
+You can also manage developer options through the web interface at **Settings** → **Management Access** → **Developer Options**
+
+:::
+
+```bash
+unraid-api developer # Interactive prompt for tools
+unraid-api developer --sandbox true # Enable GraphQL sandbox
+unraid-api developer --sandbox false # Disable GraphQL sandbox
+unraid-api developer --enable-modal # Enable modal testing tool
+unraid-api developer --disable-modal # Disable modal testing tool
+```
+
+Configure developer features for the API:
+
+- **GraphQL Sandbox**: Enable/disable Apollo GraphQL sandbox at `/graphql`
+- **Modal Testing Tool**: Enable/disable UI modal testing in the Unraid menu
+
+## API Key Management
+
+:::tip[Web GUI Management]
+
+You can also manage API keys through the web interface at **Settings** → **Management Access** → **API Keys**
+
+:::
+
+### API Key Commands
+
+```bash
+unraid-api apikey [options]
+```
+
+Create and manage API keys via CLI.
+
+Options:
+
+- `--name `: Name of the key
+- `--create`: Create a new key
+- `-r, --roles `: Comma-separated list of roles
+- `-p, --permissions `: Comma-separated list of permissions
+- `-d, --description `: Description for the key
+
+## SSO (Single Sign-On) Management
+
+:::info[OIDC Configuration]
+
+For OIDC/SSO provider configuration, see the web interface at **Settings** → **Management Access** → **API** → **OIDC** or refer to the [OIDC Provider Setup](./oidc-provider-setup.mdx) guide.
+
+:::
+
+### SSO Base Command
+
+```bash
+unraid-api sso
+```
+
+#### Add SSO User
+
+```bash
+unraid-api sso add-user
+# or
+unraid-api sso add
+# or
+unraid-api sso a
+```
+
+Add a new user for SSO authentication.
+
+#### Remove SSO User
+
+```bash
+unraid-api sso remove-user
+# or
+unraid-api sso remove
+# or
+unraid-api sso r
+```
+
+Remove a user (or all users) from SSO.
+
+#### List SSO Users
+
+```bash
+unraid-api sso list-users
+# or
+unraid-api sso list
+# or
+unraid-api sso l
+```
+
+List all configured SSO users.
+
+#### Validate SSO Token
+
+```bash
+unraid-api sso validate-token
+# or
+unraid-api sso validate
+# or
+unraid-api sso v
+```
+
+Validates an SSO token and returns its status.
+
+## Report Generation
+
+### Generate Report
+
+```bash
+unraid-api report [-r] [-j]
+```
+
+Generate a system report.
+
+- `-r, --raw`: Display raw command output
+- `-j, --json`: Display output in JSON format
+
+## 注記
+
+1. Most commands require appropriate permissions to modify system state
+2. Some commands require the API to be running or stopped
+3. Store API keys securely as they provide system access
+4. SSO configuration changes may require a service restart
From 1cdf61adb2d1baf8791aa5ea010a93eb1a4fff59 Mon Sep 17 00:00:00 2001
From: Eli Bosley <11823237+elibosley@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:25:17 -0400
Subject: [PATCH 050/437] New translations how-to-use-the-api.mdx (Japanese)
---
.../current/API/how-to-use-the-api.mdx | 253 ++++++++++++++++++
1 file changed, 253 insertions(+)
create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/API/how-to-use-the-api.mdx
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/how-to-use-the-api.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/API/how-to-use-the-api.mdx
new file mode 100644
index 00000000000..a91cc7fcabc
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/how-to-use-the-api.mdx
@@ -0,0 +1,253 @@
+---
+title: Unraid API の使用
+description: GraphQL API を通じて Unraid サーバーとやり取りする方法を学びます
+sidebar_position: 2
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+import ManageApiKeysGui from './partials/manage-api-keys-gui.mdx';
+import ManageApiKeysCli from './partials/manage-api-keys-cli.mdx';
+
+# Unraid API の使用
+
+:::tip[Quick 開始]
+
+The Unraid API provides a powerful GraphQL interface for managing your server. This guide covers authentication, common queries, and best practices.
+
+:::
+
+The Unraid API provides a GraphQL interface that allows you to interact with your Unraid server. This guide will help you get started with exploring and using the API.
+
+## 🎮 Enabling the GraphQL Sandbox
+
+### Web GUI Method (Recommended)
+
+:::info[Preferred Method]
+
+Using the Web GUI is the easiest way to enable the GraphQL sandbox.
+
+:::
+
+1. Navigate to **Settings** → **Management Access** → **Developer Options**
+2. Enable the **GraphQL Sandbox** toggle
+3. Access the GraphQL playground by navigating to:
+
+ ```txt
+ http://YOUR_SERVER_IP/graphql
+ ```
+
+### CLI Method
+
+Alternatively, you can enable developer mode using the CLI:
+
+```bash
+unraid-api developer --sandbox true
+```
+
+Or use the interactive mode:
+
+```bash
+unraid-api developer
+```
+
+## 🔑 Authentication
+
+:::warning[Required for Most Operations]
+
+Most queries and mutations require authentication. Always include appropriate credentials in your requests.
+
+:::
+
+You can authenticate using:
+
+1. **API Keys** - For programmatic access
+2. **Cookies** - Automatic when signed into the WebGUI
+3. **SSO/OIDC** - When configured with external providers
+
+### Managing API Keys
+
+
+
+
+
+
+
+
+
+
+
+### Using API Keys
+
+The generated API key should be included in your GraphQL requests as a header:
+
+```json
+{
+ "x-api-key": "YOUR_API_KEY"
+}
+```
+
+## 📊 Available Schemas
+
+The API provides access to various aspects of your Unraid server:
+
+### System Information
+
+- Query system details including CPU, memory, and OS information
+- Monitor system status and health
+- Access baseboard and hardware information
+
+### Array Management
+
+- Query array status and configuration
+- Manage array operations (start/stop)
+- Monitor disk status and health
+- Perform parity checks
+
+### Docker Management
+
+- List and manage Docker containers
+- Monitor container status
+- Manage Docker networks
+
+### Remote Access
+
+- Configure and manage remote access settings
+- Handle SSO configuration
+- Manage allowed origins
+
+### 💻 Example Queries
+
+#### Check System Status
+
+```graphql
+query {
+ info {
+ os {
+ platform
+ distro
+ release
+ uptime
+ }
+ cpu {
+ manufacturer
+ brand
+ cores
+ threads
+ }
+ }
+}
+```
+
+#### Monitor Array Status
+
+```graphql
+query {
+ array {
+ state
+ capacity {
+ disks {
+ free
+ used
+ total
+ }
+ }
+ disks {
+ name
+ size
+ status
+ temp
+ }
+ }
+}
+```
+
+#### List Docker Containers
+
+```graphql
+query {
+ dockerContainers {
+ id
+ names
+ state
+ status
+ autoStart
+ }
+}
+```
+
+## 🏗️ Schema Types
+
+The API includes several core types:
+
+### Base Types
+
+- `Node`: Interface for objects with unique IDs - please see [Object Identification](https://graphql.org/learn/global-object-identification/)
+- `JSON`: For complex JSON data
+- `DateTime`: For timestamp values
+- `Long`: For 64-bit integers
+
+### Resource Types
+
+- `Array`: Array and disk management
+- `Docker`: Container and network management
+- `Info`: System information
+- `Config`: Server configuration
+- `Connect`: Remote access settings
+
+### Role-Based Access
+
+Available roles:
+
+- `admin`: Full access
+- `connect`: Remote access features
+- `guest`: Limited read access
+
+## ✨ Best Practices
+
+:::tip[Pro Tips]
+
+1. Use the Apollo Sandbox to explore the schema and test queries
+2. Start with small queries and gradually add fields as needed
+3. Monitor your query complexity to maintain performance
+4. Use appropriate roles and permissions for your API keys
+5. Keep your API keys secure and rotate them periodically
+
+:::
+
+## ⏱️ Rate Limiting
+
+:::caution[Rate Limits]
+
+The API implements rate limiting to prevent abuse. Ensure your applications handle rate limit responses appropriately.
+
+:::
+
+## 🚨 Error Handling
+
+The API returns standard GraphQL errors in the following format:
+
+```json
+{
+ "errors": [
+ {
+ "message": "Error description",
+ "locations": [...],
+ "path": [...]
+ }
+ ]
+}
+```
+
+## 📚 Additional Resources
+
+:::info[Learn More]
+
+- Use the Apollo Sandbox's schema explorer to browse all available types and fields
+- Check the documentation tab in Apollo Sandbox for detailed field descriptions
+- Monitor the API's health using `unraid-api status`
+- Generate reports using `unraid-api report` for troubleshooting
+
+For more information about specific commands and configuration options, refer to the [CLI documentation](cli.mdx) or run `unraid-api --help`.
+
+:::
From 3f848611adb21ece0df13dde5e14b7acca7e4f28 Mon Sep 17 00:00:00 2001
From: Eli Bosley <11823237+elibosley@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:25:18 -0400
Subject: [PATCH 051/437] New translations advanced-rules.png (Japanese)
---
.../current/API/images/advanced-rules.png | Bin 0 -> 103268 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/API/images/advanced-rules.png
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/images/advanced-rules.png b/i18n/ja/docusaurus-plugin-content-docs/current/API/images/advanced-rules.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd60e6dc0d62443c8e07980846f7762929219f87
GIT binary patch
literal 103268
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