Browse Source

refactor: self check

Jacky 2 months ago
parent
commit
63824d5724
34 changed files with 4133 additions and 2420 deletions
  1. 16 3
      app/src/api/self_check.ts
  2. 5 6
      app/src/components/SelfCheck/SelfCheck.vue
  3. 2 2
      app/src/components/SelfCheck/SelfCheckHeaderBanner.vue
  4. 29 4
      app/src/components/SelfCheck/store.ts
  5. 0 39
      app/src/components/SelfCheck/tasks/backend/index.ts
  6. 9 32
      app/src/components/SelfCheck/tasks/frontend/https-check.ts
  7. 14 27
      app/src/components/SelfCheck/tasks/frontend/websocket.ts
  8. 3 86
      app/src/components/SelfCheck/tasks/index.ts
  9. 5 18
      app/src/components/SelfCheck/tasks/types.ts
  10. 21 14
      app/src/constants/errors/self_check.ts
  11. 254 140
      app/src/language/ar/app.po
  12. 1 1
      app/src/language/container.ts
  13. 282 168
      app/src/language/de_DE/app.po
  14. 146 78
      app/src/language/en/app.po
  15. 273 162
      app/src/language/es/app.po
  16. 255 141
      app/src/language/fr_FR/app.po
  17. 40 18
      app/src/language/generate.ts
  18. 1 0
      app/src/language/index.ts
  19. 238 134
      app/src/language/ja_JP/app.po
  20. 269 143
      app/src/language/ko_KR/app.po
  21. 142 74
      app/src/language/messages.pot
  22. 249 144
      app/src/language/pt_PT/app.po
  23. 265 156
      app/src/language/ru_RU/app.po
  24. 278 166
      app/src/language/tr_TR/app.po
  25. 233 141
      app/src/language/uk_UA/app.po
  26. 248 140
      app/src/language/vi_VN/app.po
  27. 283 182
      app/src/language/zh_CN/app.po
  28. 312 157
      app/src/language/zh_TW/app.po
  29. 72 10
      cmd/translation/gettext.go
  30. 21 14
      internal/self_check/errors.go
  31. 78 0
      internal/self_check/nginx.go
  32. 1 1
      internal/self_check/nginx_conf.go
  33. 11 5
      internal/self_check/self_check.go
  34. 77 14
      internal/self_check/tasks.go

+ 16 - 3
app/src/api/self_check.ts

@@ -1,14 +1,27 @@
+import type { Container } from '@/language'
 import type { CosyError } from '@/lib/http'
 import type { CosyError } from '@/lib/http'
 import http from '@/lib/http'
 import http from '@/lib/http'
 import ws from '@/lib/websocket'
 import ws from '@/lib/websocket'
 
 
-export interface Report {
-  name: string
+export const ReportStatus = {
+  Success: 'success',
+  Warning: 'warning',
+  Error: 'error',
+} as const
+
+export type ReportStatusType = typeof ReportStatus[keyof typeof ReportStatus]
+
+export interface TaskReport {
+  key: string
+  name: Container
+  description: Container
+  fixable?: boolean
   err?: CosyError
   err?: CosyError
+  status: ReportStatusType
 }
 }
 
 
 const selfCheck = {
 const selfCheck = {
-  run(): Promise<Report[]> {
+  run(): Promise<TaskReport[]> {
     return http.get('/self_check')
     return http.get('/self_check')
   },
   },
   fix(taskName: string) {
   fix(taskName: string) {

+ 5 - 6
app/src/components/SelfCheck/SelfCheck.vue

@@ -1,7 +1,6 @@
 <script setup lang="ts">
 <script setup lang="ts">
 import { CheckCircleOutlined, CloseCircleOutlined, WarningOutlined } from '@ant-design/icons-vue'
 import { CheckCircleOutlined, CloseCircleOutlined, WarningOutlined } from '@ant-design/icons-vue'
 import { useSelfCheckStore } from './store'
 import { useSelfCheckStore } from './store'
-import { taskManager } from './tasks'
 
 
 const store = useSelfCheckStore()
 const store = useSelfCheckStore()
 
 
@@ -26,22 +25,22 @@ onMounted(() => {
     </template>
     </template>
     <AList>
     <AList>
       <AListItem v-for="(item, index) in data" :key="index">
       <AListItem v-for="(item, index) in data" :key="index">
-        <template v-if="item.status === 'error'" #actions>
-          <AButton type="link" size="small" :loading="fixing[item.name]" @click="store.fix(item.name)">
+        <template v-if="item.status === 'error' && item.fixable" #actions>
+          <AButton type="link" size="small" :loading="fixing[item.key]" @click="store.fix(item.key)">
             {{ $gettext('Attempt to fix') }}
             {{ $gettext('Attempt to fix') }}
           </AButton>
           </AButton>
         </template>
         </template>
         <AListItemMeta>
         <AListItemMeta>
           <template #title>
           <template #title>
-            {{ taskManager.getTask(item.name)?.name?.() }}
+            {{ item.name?.() }}
           </template>
           </template>
           <template #description>
           <template #description>
             <div>
             <div>
-              {{ taskManager.getTask(item.name)?.description?.() }}
+              {{ item.description?.() }}
             </div>
             </div>
             <div v-if="item.status !== 'success'" class="mt-1">
             <div v-if="item.status !== 'success'" class="mt-1">
               <ATag :color="item.status === 'warning' ? 'warning' : 'error'">
               <ATag :color="item.status === 'warning' ? 'warning' : 'error'">
-                {{ item.message || item.err?.message || $gettext('Unknown issue') }}
+                {{ item.err?.message || $gettext('Unknown issue') }}
               </ATag>
               </ATag>
             </div>
             </div>
           </template>
           </template>

+ 2 - 2
app/src/components/SelfCheck/SelfCheckHeaderBanner.vue

@@ -11,7 +11,7 @@ const props = defineProps<{
 
 
 const router = useRouter()
 const router = useRouter()
 const selfCheckStore = useSelfCheckStore()
 const selfCheckStore = useSelfCheckStore()
-const { hasError } = storeToRefs(selfCheckStore)
+const { hasError, loading } = storeToRefs(selfCheckStore)
 
 
 const alertEl = useTemplateRef('alertEl')
 const alertEl = useTemplateRef('alertEl')
 const { width: alertWidth } = useElementSize(alertEl)
 const { width: alertWidth } = useElementSize(alertEl)
@@ -32,7 +32,7 @@ onMounted(() => {
 </script>
 </script>
 
 
 <template>
 <template>
-  <div v-show="hasError">
+  <div v-show="hasError && !loading">
     <div ref="alertEl" class="self-check-alert" :style="{ visibility: shouldHideAlert ? 'hidden' : 'visible' }">
     <div ref="alertEl" class="self-check-alert" :style="{ visibility: shouldHideAlert ? 'hidden' : 'visible' }">
       <AAlert type="error" show-icon :message="$gettext('Self check failed, Nginx UI may not work properly')">
       <AAlert type="error" show-icon :message="$gettext('Self check failed, Nginx UI may not work properly')">
         <template #action>
         <template #action>

+ 29 - 4
app/src/components/SelfCheck/store.ts

@@ -1,6 +1,7 @@
 import type { TaskReport } from './tasks'
 import type { TaskReport } from './tasks'
+import selfCheck, { ReportStatus } from '@/api/self_check'
 import { debounce } from 'lodash'
 import { debounce } from 'lodash'
-import { taskManager } from './tasks'
+import frontendTasks from './tasks/frontend'
 
 
 export const useSelfCheckStore = defineStore('selfCheck', () => {
 export const useSelfCheckStore = defineStore('selfCheck', () => {
   const data = ref<TaskReport[]>([])
   const data = ref<TaskReport[]>([])
@@ -14,7 +15,30 @@ export const useSelfCheckStore = defineStore('selfCheck', () => {
 
 
     loading.value = true
     loading.value = true
     try {
     try {
-      data.value = await taskManager.runAllChecks()
+      const backendReports = (await selfCheck.run()).map(r => {
+        return {
+          key: r.key,
+          name: () => $gettext(r.name.message, r.name.args),
+          description: () => $gettext(r.description.message, r.description.args),
+          type: 'backend' as const,
+          status: r.status,
+          fixable: r.fixable,
+          err: r.err,
+        }
+      })
+      const frontendReports = await Promise.all(
+        Object.entries(frontendTasks).map(async ([key, task]) => {
+          return {
+            key,
+            name: task.name,
+            description: task.description,
+            type: 'frontend' as const,
+            status: await task.check(),
+            fixable: false,
+          }
+        }),
+      )
+      data.value = [...backendReports, ...frontendReports]
     }
     }
     catch (error) {
     catch (error) {
       console.error(error)
       console.error(error)
@@ -38,7 +62,8 @@ export const useSelfCheckStore = defineStore('selfCheck', () => {
 
 
     fixing[taskName] = true
     fixing[taskName] = true
     try {
     try {
-      await taskManager.fixTask(taskName)
+      await selfCheck.fix(taskName)
+      await nextTick()
       check()
       check()
     }
     }
     finally {
     finally {
@@ -47,7 +72,7 @@ export const useSelfCheckStore = defineStore('selfCheck', () => {
   }
   }
 
 
   const hasError = computed(() => {
   const hasError = computed(() => {
-    return requestError.value || data.value?.some(item => item.status === 'error')
+    return requestError.value || data.value?.some(item => item.status === ReportStatus.Error)
   })
   })
 
 
   return { data, loading, fixing, hasError, check, fix }
   return { data, loading, fixing, hasError, check, fix }

+ 0 - 39
app/src/components/SelfCheck/tasks/backend/index.ts

@@ -1,39 +0,0 @@
-import type { BackendTask } from '../types'
-
-const backendTasks: Record<string, BackendTask> = {
-  'Directory-Sites': {
-    name: () => $gettext('Sites Directory'),
-    description: () => $gettext('Check if the sites-available and sites-enabled directories are under the nginx configuration directory.'),
-    type: 'backend',
-  },
-  'Directory-Streams': {
-    name: () => $gettext('Streams Directory'),
-    description: () => $gettext('Check if the streams-available and streams-enabled directories are under the nginx configuration directory.'),
-    type: 'backend',
-  },
-  'NginxConf-Sites-Enabled': {
-    name: () => $gettext('Nginx Conf Include Sites Enabled'),
-    description: () => $gettext('Check if the nginx.conf includes the sites-enabled directory.'),
-    type: 'backend',
-  },
-  'NginxConf-Streams-Enabled': {
-    name: () => $gettext('Nginx Conf Include Streams Enabled'),
-    description: () => $gettext('Check if the nginx.conf includes the streams-enabled directory.'),
-    type: 'backend',
-  },
-  'NginxConf-ConfD': {
-    name: () => $gettext('Nginx Conf Include Conf.d'),
-    description: () => $gettext('Check if the nginx.conf includes the conf.d directory.'),
-    type: 'backend',
-  },
-  'Docker-Socket': {
-    name: () => $gettext('Docker Socket'),
-    description: () => $gettext('Check if /var/run/docker.sock exists. '
-      + 'If you are using Nginx UI Official Docker Image, '
-      + 'please make sure the docker socket is mounted like this: '
-      + '`-v /var/run/docker.sock:/var/run/docker.sock`.'),
-    type: 'backend',
-  },
-}
-
-export default backendTasks

+ 9 - 32
app/src/components/SelfCheck/tasks/frontend/https-check.ts

@@ -1,4 +1,6 @@
-import type { FrontendTask, TaskReport } from '../types'
+import type { ReportStatusType } from '@/api/self_check'
+import type { FrontendTask } from '../types'
+import { ReportStatus } from '@/api/self_check'
 
 
 /**
 /**
  * HTTPS Check Task
  * HTTPS Check Task
@@ -7,44 +9,19 @@ import type { FrontendTask, TaskReport } from '../types'
  * Warns (not errors) when HTTP is used outside of localhost/127.0.0.1
  * Warns (not errors) when HTTP is used outside of localhost/127.0.0.1
  */
  */
 const HttpsCheckTask: FrontendTask = {
 const HttpsCheckTask: FrontendTask = {
+  key: 'https-check',
   name: () => $gettext('HTTPS Protocol'),
   name: () => $gettext('HTTPS Protocol'),
-  description: () => $gettext('Check if HTTPS is enabled. Using HTTP outside localhost is insecure and prevents using Passkeys and clipboard features.'),
-  type: 'frontend',
-  check: async (): Promise<TaskReport> => {
+  description: () => $gettext('Check if HTTPS is enabled. Using HTTP outside localhost is insecure and prevents using Passkeys and clipboard features'),
+  check: async (): Promise<ReportStatusType> => {
     // Get current protocol and hostname
     // Get current protocol and hostname
     const isSecure = window.location.protocol === 'https:'
     const isSecure = window.location.protocol === 'https:'
     const isLocalhost = ['localhost', '127.0.0.1'].includes(window.location.hostname)
     const isLocalhost = ['localhost', '127.0.0.1'].includes(window.location.hostname)
-
-    // Task name for the report
-    const name = 'Frontend-HttpsCheck'
-
     // Check result
     // Check result
-    if (isSecure) {
-      return {
-        name,
-        status: 'success',
-        type: 'frontend',
-        message: 'HTTPS protocol is enabled.',
-      }
-    }
-
-    if (isLocalhost) {
-      return {
-        name,
-        status: 'success',
-        type: 'frontend',
-        message: 'HTTP is acceptable for localhost.',
-      }
+    if (isSecure || isLocalhost) {
+      return ReportStatus.Success
     }
     }
-
     // Return warning for non-localhost HTTP
     // Return warning for non-localhost HTTP
-    return {
-      name,
-      status: 'warning',
-      type: 'frontend',
-      message: 'HTTP protocol detected. Consider enabling HTTPS for security features.',
-      err: new Error('HTTP protocol detected. Consider enabling HTTPS for security features.'),
-    }
+    return ReportStatus.Warning
   },
   },
 }
 }
 
 

+ 14 - 27
app/src/components/SelfCheck/tasks/frontend/websocket.ts

@@ -1,17 +1,20 @@
-import type { FrontendTask, TaskReport } from '../types'
-import selfCheck from '@/api/self_check'
+import type { ReportStatusType } from '@/api/self_check'
+import type { FrontendTask } from '../types'
+import selfCheck, { ReportStatus } from '@/api/self_check'
 
 
+/**
+ * WebSocket Task
+ *
+ * Checks if the application is able to connect to the backend through the WebSocket protocol
+ */
 const WebsocketTask: FrontendTask = {
 const WebsocketTask: FrontendTask = {
+  key: 'websocket',
   name: () => 'WebSocket',
   name: () => 'WebSocket',
   description: () => $gettext('Support communication with the backend through the WebSocket protocol. '
   description: () => $gettext('Support communication with the backend through the WebSocket protocol. '
     + 'If your Nginx UI is being used via an Nginx reverse proxy, '
     + 'If your Nginx UI is being used via an Nginx reverse proxy, '
     + 'please refer to this link to write the corresponding configuration file: '
     + 'please refer to this link to write the corresponding configuration file: '
     + 'https://nginxui.com/guide/nginx-proxy-example.html'),
     + 'https://nginxui.com/guide/nginx-proxy-example.html'),
-  type: 'frontend',
-  check: async (): Promise<TaskReport> => {
-    // Task name for the report
-    const name = 'Frontend-Websocket'
-
+  check: async (): Promise<ReportStatusType> => {
     try {
     try {
       const connected = await new Promise<boolean>(resolve => {
       const connected = await new Promise<boolean>(resolve => {
         const ws = selfCheck.websocket()
         const ws = selfCheck.websocket()
@@ -28,31 +31,15 @@ const WebsocketTask: FrontendTask = {
       })
       })
 
 
       if (connected) {
       if (connected) {
-        return {
-          name,
-          status: 'success',
-          type: 'frontend',
-          message: 'WebSocket connection successful.',
-        }
+        return ReportStatus.Success
       }
       }
       else {
       else {
-        return {
-          name,
-          status: 'error',
-          type: 'frontend',
-          message: 'WebSocket connection failed.',
-          err: new Error('WebSocket connection failed.'),
-        }
+        return ReportStatus.Error
       }
       }
     }
     }
     catch (error) {
     catch (error) {
-      return {
-        name,
-        status: 'error',
-        type: 'frontend',
-        message: 'WebSocket connection error.',
-        err: error instanceof Error ? error : new Error(String(error)),
-      }
+      console.error(error)
+      return ReportStatus.Error
     }
     }
   },
   },
 }
 }

+ 3 - 86
app/src/components/SelfCheck/tasks/index.ts

@@ -1,88 +1,5 @@
-import type { TaskDefinition, TaskReport, TaskStatus } from './types'
-import selfCheck from '@/api/self_check'
-import backendTasks from './backend'
-import frontendTasks from './frontend'
+import type { TaskReport } from './types'
 
 
-// Combine all tasks
-const allTasks: Record<string, TaskDefinition> = {
-  ...backendTasks,
-  ...frontendTasks,
+export {
+  type TaskReport,
 }
 }
-
-// Task manager
-export const taskManager = {
-  // Get all task definitions
-  getAllTasks() {
-    return allTasks
-  },
-
-  // Execute all self-checks
-  async runAllChecks(): Promise<TaskReport[]> {
-    // Execute backend checks
-    const backendReports = await selfCheck.run()
-
-    // Convert backend reports to include status field
-    const convertedBackendReports = backendReports.map(report => {
-      const status: TaskStatus = report.err ? 'error' : 'success'
-      return {
-        ...report,
-        type: 'backend' as const,
-        status,
-      }
-    })
-
-    // Execute frontend checks - they now directly return TaskReport objects
-    const frontendReports = await Promise.all(
-      Object.entries(frontendTasks).map(async ([key, task]) => {
-        try {
-          return await task.check()
-        }
-        catch (err) {
-          // Fallback error handling in case a task throws instead of returning a report
-          return {
-            name: key,
-            type: 'frontend' as const,
-            status: 'error' as const,
-            message: 'Task execution failed',
-            err: err instanceof Error ? err : new Error(String(err)),
-          }
-        }
-      }),
-    )
-
-    // Merge results
-    return [
-      ...convertedBackendReports,
-      ...frontendReports,
-    ]
-  },
-
-  // Fix task
-  async fixTask(taskName: string): Promise<boolean> {
-    // Backend task
-    if (taskName in backendTasks) {
-      await selfCheck.fix(taskName)
-      return true
-    }
-
-    // Frontend task
-    if (taskName in frontendTasks) {
-      const task = frontendTasks[taskName]
-      if (task.fix) {
-        return await task.fix()
-      }
-      return false
-    }
-
-    return false
-  },
-
-  // Get task definition
-  getTask(taskName: string) {
-    return allTasks[taskName]
-  },
-}
-
-export default allTasks
-
-export * from './types'

+ 5 - 18
app/src/components/SelfCheck/tasks/types.ts

@@ -1,27 +1,14 @@
-import type { CosyError } from '@/lib/http'
+import type { ReportStatusType, TaskReport as SelfCheckTaskReport } from '@/api/self_check'
 
 
-export type TaskStatus = 'success' | 'warning' | 'error'
-
-export interface TaskDefinition {
+export interface TaskDefinition extends Pick<SelfCheckTaskReport, 'key' | 'fixable' | 'err'> {
   name: () => string
   name: () => string
   description: () => string
   description: () => string
-  type: 'backend' | 'frontend'
-}
-
-export interface BackendTask extends TaskDefinition {
-  type: 'backend'
 }
 }
 
 
 export interface FrontendTask extends TaskDefinition {
 export interface FrontendTask extends TaskDefinition {
-  type: 'frontend'
-  check: () => Promise<TaskReport>
-  fix?: () => Promise<boolean>
+  check: () => Promise<ReportStatusType>
 }
 }
 
 
-export interface TaskReport {
-  name: string
-  status: TaskStatus
-  message?: string
-  err?: CosyError | Error
-  type: 'backend' | 'frontend'
+export interface TaskReport extends TaskDefinition {
+  status: ReportStatusType
 }
 }

+ 21 - 14
app/src/constants/errors/self_check.ts

@@ -1,16 +1,23 @@
 export default {
 export default {
-  4040: () => $gettext('Task not found'),
-  4041: () => $gettext('Failed to read nginx.conf'),
-  5001: () => $gettext('Failed to parse nginx.conf'),
-  4042: () => $gettext('Nginx conf no http block'),
-  4043: () => $gettext('Nginx conf not include sites-enabled'),
-  4044: () => $gettext('Nginx conf no stream block'),
-  4045: () => $gettext('Nginx conf not include stream-enabled'),
-  5002: () => $gettext('Failed to create backup'),
-  4046: () => $gettext('Sites-available directory not exist'),
-  4047: () => $gettext('Sites-enabled directory not exist'),
-  4048: () => $gettext('Streams-available directory not exist'),
-  4049: () => $gettext('Streams-enabled directory not exist'),
-  4050: () => $gettext('Nginx conf not include conf.d directory'),
-  4051: () => $gettext('Docker socket not exist'),
+  40400: () => $gettext('Task not found'),
+  40401: () => $gettext('Task is not fixable'),
+  40402: () => $gettext('Failed to read nginx.conf'),
+  50001: () => $gettext('Failed to parse nginx.conf'),
+  40403: () => $gettext('Nginx conf no http block'),
+  40404: () => $gettext('Nginx conf not include sites-enabled'),
+  40405: () => $gettext('Nginx conf no stream block'),
+  40406: () => $gettext('Nginx conf not include stream-enabled'),
+  50002: () => $gettext('Failed to create backup'),
+  40407: () => $gettext('Sites-available directory not exist'),
+  40408: () => $gettext('Sites-enabled directory not exist'),
+  40409: () => $gettext('Streams-available directory not exist'),
+  40410: () => $gettext('Streams-enabled directory not exist'),
+  40411: () => $gettext('Nginx conf not include conf.d directory'),
+  40412: () => $gettext('Docker socket not exist'),
+  40413: () => $gettext('Config directory not exist'),
+  40414: () => $gettext('Config entry file not exist'),
+  40415: () => $gettext('PID path not exist'),
+  40416: () => $gettext('Sbin path not exist'),
+  40417: () => $gettext('Access log path not exist'),
+  40418: () => $gettext('Error log path not exist'),
 }
 }

+ 254 - 140
app/src/language/ar/app.po

@@ -4,59 +4,60 @@ msgid ""
 msgstr ""
 msgstr ""
 "PO-Revision-Date: 2024-10-29 14:39+0000\n"
 "PO-Revision-Date: 2024-10-29 14:39+0000\n"
 "Last-Translator: mosaati <mohammed.saati@gmail.com>\n"
 "Last-Translator: mosaati <mohammed.saati@gmail.com>\n"
-"Language-Team: Arabic "
-"<https://weblate.nginxui.com/projects/nginx-ui/frontend/ar/>\n"
+"Language-Team: Arabic <https://weblate.nginxui.com/projects/nginx-ui/"
+"frontend/ar/>\n"
 "Language: ar\n"
 "Language: ar\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
 "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
 "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
 "X-Generator: Weblate 5.6.2\n"
 "X-Generator: Weblate 5.6.2\n"
 
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:47
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 msgstr ""
 "[Nginx UI] مستخدم ACME: %{name}، البريد الإلكتروني: %{email}، دليل CA: "
 "[Nginx UI] مستخدم ACME: %{name}، البريد الإلكتروني: %{email}، دليل CA: "
 "%{caDir}"
 "%{caDir}"
 
 
-#: src/language/generate.ts:13
+#: src/language/generate.ts:49
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr "[Nginx UI] يتم إنشاء نسخة احتياطية من الشهادة الحالية لإلغائها لاحقًا"
 msgstr "[Nginx UI] يتم إنشاء نسخة احتياطية من الشهادة الحالية لإلغائها لاحقًا"
 
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:6
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "تم المسح بنجاح"
 msgstr "تم المسح بنجاح"
 
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:37
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "تم إعادة تشغيل Nginx بنجاح"
 msgstr "تم إعادة تشغيل Nginx بنجاح"
 
 
-#: src/language/generate.ts:29
-msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
+#: src/language/generate.ts:13
+msgid ""
+"[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr "[Nginx UI] تم استخدام الشهادة للخادم، إعادة تحميل شهادة TLS للخادم"
 msgstr "[Nginx UI] تم استخدام الشهادة للخادم، إعادة تحميل شهادة TLS للخادم"
 
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:35
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "يؤدي إنشاء العميل إلى تسهيل الاتصال بخادم CA"
 msgstr "يؤدي إنشاء العميل إلى تسهيل الاتصال بخادم CA"
 
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:36
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "تم تنظيف متغيرات البيئة"
 msgstr "تم تنظيف متغيرات البيئة"
 
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:28
 msgid "[Nginx UI] Finished"
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] تم الانتهاء"
 msgstr "[Nginx UI] تم الانتهاء"
 
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:25
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Issued certificate successfully"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "تم إصدار الشهادة بنجاح"
 msgstr "تم إصدار الشهادة بنجاح"
 
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:50
 msgid "[Nginx UI] Obtaining certificate"
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] الحصول على الشهادة"
 msgstr "[Nginx UI] الحصول على الشهادة"
 
 
@@ -64,44 +65,44 @@ msgstr "[Nginx UI] الحصول على الشهادة"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] التحضير لإلغاء الشهادة"
 msgstr "[Nginx UI] التحضير لإلغاء الشهادة"
 
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:46
 msgid "[Nginx UI] Preparing lego configurations"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] إعداد تكوينات ليغو"
 msgstr "[Nginx UI] إعداد تكوينات ليغو"
 
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:19
 msgid "[Nginx UI] Reloading nginx"
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] إعادة تحميل nginx"
 msgstr "[Nginx UI] إعادة تحميل nginx"
 
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:14
 msgid "[Nginx UI] Revocation completed"
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] اكتمال الإلغاء"
 msgstr "[Nginx UI] اكتمال الإلغاء"
 
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Revoking certificate"
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] إلغاء الشهادة"
 msgstr "[Nginx UI] إلغاء الشهادة"
 
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:29
 msgid "[Nginx UI] Revoking old certificate"
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] إبطال الشهادة القديمة"
 msgstr "[Nginx UI] إبطال الشهادة القديمة"
 
 
-#: src/language/generate.ts:20
+#: src/language/generate.ts:18
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] تعيين موفر تحدي DNS01"
 msgstr "[Nginx UI] تعيين موفر تحدي DNS01"
 
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:27
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Setting environment variables"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "تعيين متغيرات البيئة"
 msgstr "تعيين متغيرات البيئة"
 
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] تعيين موفر تحدي HTTP01"
 msgstr "[Nginx UI] تعيين موفر تحدي HTTP01"
 
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:12
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] كتابة مفتاح الشهادة الخاص إلى القرص"
 msgstr "[Nginx UI] كتابة مفتاح الشهادة الخاص إلى القرص"
 
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:51
 msgid "[Nginx UI] Writing certificate to disk"
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] كتابة الشهادة على القرص"
 msgstr "[Nginx UI] كتابة الشهادة على القرص"
 
 
@@ -122,6 +123,10 @@ msgstr "عن"
 msgid "Access Log"
 msgid "Access Log"
 msgstr "سجلات الدخول"
 msgstr "سجلات الدخول"
 
 
+#: src/constants/errors/self_check.ts:21
+msgid "Access log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
 #: src/routes/modules/nginx_log.ts:17
 msgid "Access Logs"
 msgid "Access Logs"
@@ -337,7 +342,7 @@ msgstr "اطلب المساعدة من ChatGPT"
 msgid "Assistant"
 msgid "Assistant"
 msgstr "المساعد"
 msgstr "المساعد"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:31
+#: src/components/SelfCheck/SelfCheck.vue:30
 #, fuzzy
 #, fuzzy
 msgid "Attempt to fix"
 msgid "Attempt to fix"
 msgstr "محاولات"
 msgstr "محاولات"
@@ -498,7 +503,8 @@ msgstr "ذاكرة التخزين المؤقت"
 
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
 msgid "Cache items not accessed within this time will be removed"
 msgid "Cache items not accessed within this time will be removed"
-msgstr "سيتم إزالة عناصر الذاكرة المؤقتة التي لم يتم الوصول إليها خلال هذا الوقت"
+msgstr ""
+"سيتم إزالة عناصر الذاكرة المؤقتة التي لم يتم الوصول إليها خلال هذا الوقت"
 
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
 msgid "Cache loader processing time threshold"
 msgid "Cache loader processing time threshold"
@@ -618,7 +624,7 @@ msgstr "انتهت صلاحية الشهادة"
 msgid "Certificate Expiring Soon"
 msgid "Certificate Expiring Soon"
 msgstr "شهادة على وشك الانتهاء"
 msgstr "شهادة على وشك الانتهاء"
 
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:33
 #, fuzzy
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgid "Certificate not found: %{error}"
 msgstr "خطأ في فك تشفير الشهادة"
 msgstr "خطأ في فك تشفير الشهادة"
@@ -645,7 +651,7 @@ msgstr "الفاصل الزمني لتجديد الشهادة"
 msgid "Certificate renewed successfully"
 msgid "Certificate renewed successfully"
 msgstr "تم المسح بنجاح"
 msgstr "تم المسح بنجاح"
 
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:11
 #, fuzzy
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgid "Certificate revoked successfully"
 msgstr "تمت إزالة الشهادة بنجاح"
 msgstr "تمت إزالة الشهادة بنجاح"
@@ -713,48 +719,70 @@ msgstr "تحقق مرة أخرى"
 msgid "Check again"
 msgid "Check again"
 msgstr "تحقق مرة أخرى"
 msgstr "تحقق مرة أخرى"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:31
-msgid ""
-"Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
-"Docker Image, please make sure the docker socket is mounted like this: `-v "
-"/var/run/docker.sock:/var/run/docker.sock`."
-msgstr ""
-"تحقق مما إذا كان /var/run/docker.sock موجودًا. إذا كنت تستخدم صورة Docker "
-"الرسمية لـ Nginx UI، يرجى التأكد من أن مقبس Docker مثبت بهذه الطريقة: `-v "
-"/var/run/docker.sock:/var/run/docker.sock`."
-
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:11
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:14
+#, fuzzy
 msgid ""
 msgid ""
 "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
 "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
-"prevents using Passkeys and clipboard features."
+"prevents using Passkeys and clipboard features"
 msgstr ""
 msgstr ""
 "تحقق مما إذا كان HTTPS ممكّنًا. استخدام HTTP خارج localhost غير آمن ويمنع "
 "تحقق مما إذا كان HTTPS ممكّنًا. استخدام HTTP خارج localhost غير آمن ويمنع "
 "استخدام ميزات Passkeys والحافظة."
 "استخدام ميزات Passkeys والحافظة."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:26
-msgid "Check if the nginx.conf includes the conf.d directory."
+#: src/language/generate.ts:40
+msgid "Check if the docker socket exists."
+msgstr ""
+
+#: src/language/generate.ts:20
+msgid "Check if the nginx access log path exists"
+msgstr ""
+
+#: src/language/generate.ts:44
+#, fuzzy
+msgid "Check if the nginx configuration directory exists"
+msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل conf.d."
+
+#: src/language/generate.ts:9
+#, fuzzy
+msgid "Check if the nginx configuration entry file exists"
 msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل conf.d."
 msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل conf.d."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:16
-msgid "Check if the nginx.conf includes the sites-enabled directory."
+#: src/language/generate.ts:32
+msgid "Check if the nginx error log path exists"
+msgstr ""
+
+#: src/language/generate.ts:24
+msgid "Check if the nginx PID path exists"
+msgstr ""
+
+#: src/language/generate.ts:43
+#, fuzzy
+msgid "Check if the nginx.conf includes the conf.d directory"
+msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل conf.d."
+
+#: src/language/generate.ts:23
+#, fuzzy
+msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل sites-enabled."
 msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل sites-enabled."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:21
-msgid "Check if the nginx.conf includes the streams-enabled directory."
+#: src/language/generate.ts:5
+#, fuzzy
+msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل streams-enabled."
 msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل streams-enabled."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:6
+#: src/language/generate.ts:30
+#, fuzzy
 msgid ""
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
 "Check if the sites-available and sites-enabled directories are under the "
-"nginx configuration directory."
+"nginx configuration directory"
 msgstr ""
 msgstr ""
 "تحقق مما إذا كانت الدلائل sites-available و sites-enabled موجودة ضمن دليل "
 "تحقق مما إذا كانت الدلائل sites-available و sites-enabled موجودة ضمن دليل "
 "تكوين nginx."
 "تكوين nginx."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:11
+#: src/language/generate.ts:38
+#, fuzzy
 msgid ""
 msgid ""
-"Check if the streams-available and streams-enabled directories are under "
-"the nginx configuration directory."
+"Check if the streams-available and streams-enabled directories are under the "
+"nginx configuration directory"
 msgstr ""
 msgstr ""
 "تحقق مما إذا كانت الدلائل streams-available و streams-enabled موجودة ضمن "
 "تحقق مما إذا كانت الدلائل streams-available و streams-enabled موجودة ضمن "
 "دليل تكوين nginx."
 "دليل تكوين nginx."
@@ -855,6 +883,16 @@ msgstr "قارن مع التيار"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "مستوى الضغط ، 1 هو أدنى ، 9 هو الأعلى"
 msgstr "مستوى الضغط ، 1 هو أدنى ، 9 هو الأعلى"
 
 
+#: src/constants/errors/self_check.ts:17
+#, fuzzy
+msgid "Config directory not exist"
+msgstr "قائمة السماح لمجلد سجلات Nginx"
+
+#: src/constants/errors/self_check.ts:18
+#, fuzzy
+msgid "Config entry file not exist"
+msgstr "قائمة السماح لمجلد سجلات Nginx"
+
 #: src/constants/errors/backup.ts:14
 #: src/constants/errors/backup.ts:14
 #, fuzzy
 #, fuzzy
 msgid "Config path is empty"
 msgid "Config path is empty"
@@ -1346,11 +1384,11 @@ msgstr "هل تريد إزالة هذا المصدر؟"
 msgid "Docker client not initialized"
 msgid "Docker client not initialized"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:30
-msgid "Docker Socket"
+#: src/language/generate.ts:10
+msgid "Docker socket exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:15
+#: src/constants/errors/self_check.ts:16
 msgid "Docker socket not exist"
 msgid "Docker socket not exist"
 msgstr ""
 msgstr ""
 
 
@@ -1392,8 +1430,8 @@ msgid ""
 "Due to the security policies of some browsers, you cannot use passkeys on "
 "Due to the security policies of some browsers, you cannot use passkeys on "
 "non-HTTPS websites, except when running on localhost."
 "non-HTTPS websites, except when running on localhost."
 msgstr ""
 msgstr ""
-"نظرًا لسياسات الأمان لبعض المتصفحات، لا يمكنك استخدام مفاتيح المرور على "
-"مواقع الويب غير HTTPS، إلا عند التشغيل على localhost."
+"نظرًا لسياسات الأمان لبعض المتصفحات، لا يمكنك استخدام مفاتيح المرور على مواقع "
+"الويب غير HTTPS، إلا عند التشغيل على localhost."
 
 
 #: src/views/site/site_list/SiteDuplicate.vue:72
 #: src/views/site/site_list/SiteDuplicate.vue:72
 #: src/views/site/site_list/SiteList.vue:117
 #: src/views/site/site_list/SiteList.vue:117
@@ -1596,6 +1634,10 @@ msgstr ""
 msgid "Error Log"
 msgid "Error Log"
 msgstr "سجلات الأخطاء"
 msgstr "سجلات الأخطاء"
 
 
+#: src/constants/errors/self_check.ts:22
+msgid "Error log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/routes/modules/nginx_log.ts:24
 #: src/routes/modules/nginx_log.ts:24
 msgid "Error Logs"
 msgid "Error Logs"
@@ -1688,7 +1730,7 @@ msgstr ""
 msgid "Failed to copy Nginx config directory: {0}"
 msgid "Failed to copy Nginx config directory: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:9
+#: src/constants/errors/self_check.ts:10
 #, fuzzy
 #, fuzzy
 msgid "Failed to create backup"
 msgid "Failed to create backup"
 msgstr "فشل في التفعيل %{msg}"
 msgstr "فشل في التفعيل %{msg}"
@@ -1785,7 +1827,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgid "Failed to delete certificate"
 msgstr "فشل في الحصول على الشهادة"
 msgstr "فشل في الحصول على الشهادة"
 
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 #, fuzzy
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "فشل في الحصول على الشهادة"
 msgstr "فشل في الحصول على الشهادة"
@@ -1904,7 +1946,7 @@ msgstr "فشل في التفعيل %{msg}"
 msgid "Failed to open zip file: {0}"
 msgid "Failed to open zip file: {0}"
 msgstr "فشل في التفعيل %{msg}"
 msgstr "فشل في التفعيل %{msg}"
 
 
-#: src/constants/errors/self_check.ts:4
+#: src/constants/errors/self_check.ts:5
 msgid "Failed to parse nginx.conf"
 msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -1928,7 +1970,7 @@ msgstr "فشل في التفعيل %{msg}"
 msgid "Failed to read hash info file: {0}"
 msgid "Failed to read hash info file: {0}"
 msgstr "فشل في التفعيل %{msg}"
 msgstr "فشل في التفعيل %{msg}"
 
 
-#: src/constants/errors/self_check.ts:3
+#: src/constants/errors/self_check.ts:4
 #, fuzzy
 #, fuzzy
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
 msgstr "فشل في التفعيل %{msg}"
 msgstr "فشل في التفعيل %{msg}"
@@ -2140,7 +2182,7 @@ msgstr "منفذ تحدي HTTP"
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr "HTTP01"
 msgstr "HTTP01"
 
 
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:10
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:13
 msgid "HTTPS Protocol"
 msgid "HTTPS Protocol"
 msgstr ""
 msgstr ""
 
 
@@ -2154,8 +2196,8 @@ msgstr "إذا تُرك فارغًا، سيتم استخدام دليل CA ال
 
 
 #: src/views/nginx_log/NginxLogList.vue:81
 #: src/views/nginx_log/NginxLogList.vue:81
 msgid ""
 msgid ""
-"If logs are not indexed, please check if the log file is under the "
-"directory in Nginx.LogDirWhiteList."
+"If logs are not indexed, please check if the log file is under the directory "
+"in Nginx.LogDirWhiteList."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/AuthSettings.vue:145
 #: src/views/preference/tabs/AuthSettings.vue:145
@@ -2499,8 +2541,11 @@ msgstr "أماكن"
 msgid "Log"
 msgid "Log"
 msgstr "سجل"
 msgstr "سجل"
 
 
-#: src/language/generate.ts:23
-msgid "Log file %{log_path} is not a regular file. "
+#: src/language/generate.ts:34
+msgid ""
+"Log file %{log_path} is not a regular file. If you are using nginx-ui in "
+"docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
+"nginx-log.html for more information."
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
@@ -2526,19 +2571,19 @@ msgstr "تدوير السجلات"
 
 
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 msgid ""
 msgid ""
-"Logrotate, by default, is enabled in most mainstream Linux distributions "
-"for users who install Nginx UI on the host machine, so you don't need to "
-"modify the parameters on this page. For users who install Nginx UI using "
-"Docker containers, you can manually enable this option. The crontab task "
-"scheduler of Nginx UI will execute the logrotate command at the interval "
-"you set in minutes."
+"Logrotate, by default, is enabled in most mainstream Linux distributions for "
+"users who install Nginx UI on the host machine, so you don't need to modify "
+"the parameters on this page. For users who install Nginx UI using Docker "
+"containers, you can manually enable this option. The crontab task scheduler "
+"of Nginx UI will execute the logrotate command at the interval you set in "
+"minutes."
 msgstr ""
 msgstr ""
 "بشكل افتراضي، يتم تفعيل تدوير السجلات في معظم توزيعات لينكس الرئيسية "
 "بشكل افتراضي، يتم تفعيل تدوير السجلات في معظم توزيعات لينكس الرئيسية "
 "للمستخدمين الذين يقومون بتثبيت واجهة Nginx UI على الجهاز المضيف، لذا لا "
 "للمستخدمين الذين يقومون بتثبيت واجهة Nginx UI على الجهاز المضيف، لذا لا "
-"تحتاج إلى تعديل معايير في هذه الصفحة. بالنسبة للمستخدمين الذين يقومون "
-"بتثبيت واجهة Nginx UI باستخدام حاويات Docker، يمكنك تمكين هذا الخيار "
-"يدويًا. سيقوم مجدول المهام crontab الخاص بواجهة Nginx UI بتنفيذ أمر تدوير "
-"السجلات في الفاصل الزمني الذي تحدده بالدقائق."
+"تحتاج إلى تعديل معايير في هذه الصفحة. بالنسبة للمستخدمين الذين يقومون بتثبيت "
+"واجهة Nginx UI باستخدام حاويات Docker، يمكنك تمكين هذا الخيار يدويًا. سيقوم "
+"مجدول المهام crontab الخاص بواجهة Nginx UI بتنفيذ أمر تدوير السجلات في "
+"الفاصل الزمني الذي تحدده بالدقائق."
 
 
 #: src/views/site/components/SiteStatusSegmented.vue:138
 #: src/views/site/components/SiteStatusSegmented.vue:138
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:68
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:68
@@ -2794,37 +2839,29 @@ msgstr "Nginx"
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr "مسار سجل الوصول لـ Nginx"
 msgstr "مسار سجل الوصول لـ Nginx"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:25
+#: src/language/generate.ts:16
 #, fuzzy
 #, fuzzy
-msgid "Nginx Conf Include Conf.d"
-msgstr "أمر إعادة تشغيل Nginx"
-
-#: src/components/SelfCheck/tasks/backend/index.ts:15
-msgid "Nginx Conf Include Sites Enabled"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:20
-msgid "Nginx Conf Include Streams Enabled"
-msgstr ""
+msgid "Nginx access log path exists"
+msgstr "مسار سجل الوصول لـ Nginx"
 
 
-#: src/constants/errors/self_check.ts:5
+#: src/constants/errors/self_check.ts:6
 msgid "Nginx conf no http block"
 msgid "Nginx conf no http block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:7
+#: src/constants/errors/self_check.ts:8
 msgid "Nginx conf no stream block"
 msgid "Nginx conf no stream block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:14
+#: src/constants/errors/self_check.ts:15
 #, fuzzy
 #, fuzzy
 msgid "Nginx conf not include conf.d directory"
 msgid "Nginx conf not include conf.d directory"
 msgstr "أمر إعادة تشغيل Nginx"
 msgstr "أمر إعادة تشغيل Nginx"
 
 
-#: src/constants/errors/self_check.ts:6
+#: src/constants/errors/self_check.ts:7
 msgid "Nginx conf not include sites-enabled"
 msgid "Nginx conf not include sites-enabled"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:8
+#: src/constants/errors/self_check.ts:9
 msgid "Nginx conf not include stream-enabled"
 msgid "Nginx conf not include stream-enabled"
 msgstr ""
 msgstr ""
 
 
@@ -2833,6 +2870,16 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgid "Nginx config directory is not set"
 msgstr "قائمة السماح لمجلد سجلات Nginx"
 msgstr "قائمة السماح لمجلد سجلات Nginx"
 
 
+#: src/language/generate.ts:31
+#, fuzzy
+msgid "Nginx configuration directory exists"
+msgstr "مجلد تكوينات Nginx"
+
+#: src/language/generate.ts:15
+#, fuzzy
+msgid "Nginx configuration entry file exists"
+msgstr "خطأ في تحليل تكوين Nginx"
+
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #, fuzzy
 #, fuzzy
 msgid "Nginx configuration has been restored"
 msgid "Nginx configuration has been restored"
@@ -2870,6 +2917,11 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr "مسار سجل أخطاء Nginx"
 msgstr "مسار سجل أخطاء Nginx"
 
 
+#: src/language/generate.ts:21
+#, fuzzy
+msgid "Nginx error log path exists"
+msgstr "مسار سجل أخطاء Nginx"
+
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/composables/useNginxPerformance.ts:43
 #: src/composables/useNginxPerformance.ts:43
 #: src/views/dashboard/NginxDashBoard.vue:112
 #: src/views/dashboard/NginxDashBoard.vue:112
@@ -2905,6 +2957,11 @@ msgstr ""
 msgid "Nginx PID Path"
 msgid "Nginx PID Path"
 msgstr "مسار PID لـ Nginx"
 msgstr "مسار PID لـ Nginx"
 
 
+#: src/language/generate.ts:45
+#, fuzzy
+msgid "Nginx PID path exists"
+msgstr "مسار PID لـ Nginx"
+
 #: src/views/preference/tabs/NginxSettings.vue:40
 #: src/views/preference/tabs/NginxSettings.vue:40
 msgid "Nginx Reload Command"
 msgid "Nginx Reload Command"
 msgstr "أمر إعادة تحميل Nginx"
 msgstr "أمر إعادة تحميل Nginx"
@@ -2963,10 +3020,25 @@ msgstr "خطأ في تحليل تكوين Nginx"
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
-"Nginx UI configuration has been restored and will restart automatically in "
-"a few seconds."
+"Nginx UI configuration has been restored and will restart automatically in a "
+"few seconds."
 msgstr "خطأ في تحليل تكوين Nginx"
 msgstr "خطأ في تحليل تكوين Nginx"
 
 
+#: src/language/generate.ts:8
+#, fuzzy
+msgid "Nginx.conf includes conf.d directory"
+msgstr "أمر إعادة تشغيل Nginx"
+
+#: src/language/generate.ts:42
+#, fuzzy
+msgid "Nginx.conf includes sites-enabled directory"
+msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل sites-enabled."
+
+#: src/language/generate.ts:39
+#, fuzzy
+msgid "Nginx.conf includes streams-enabled directory"
+msgstr "تحقق مما إذا كان ملف nginx.conf يتضمن دليل streams-enabled."
+
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
@@ -3307,6 +3379,10 @@ msgstr "تم التعطيل بنجاح"
 msgid "Performing core upgrade"
 msgid "Performing core upgrade"
 msgstr "تنفيذ ترقية النواة"
 msgstr "تنفيذ ترقية النواة"
 
 
+#: src/constants/errors/self_check.ts:19
+msgid "PID path not exist"
+msgstr ""
+
 #: src/constants/errors/crypto.ts:2
 #: src/constants/errors/crypto.ts:2
 msgid "Plain text is empty"
 msgid "Plain text is empty"
 msgstr ""
 msgstr ""
@@ -3321,7 +3397,8 @@ msgstr ""
 msgid ""
 msgid ""
 "Please enter a name for the passkey you wish to create and click the OK "
 "Please enter a name for the passkey you wish to create and click the OK "
 "button below."
 "button below."
-msgstr "يرجى إدخال اسم لمفتاح المرور الذي ترغب في إنشائه ثم انقر على زر موافق أدناه."
+msgstr ""
+"يرجى إدخال اسم لمفتاح المرور الذي ترغب في إنشائه ثم انقر على زر موافق أدناه."
 
 
 #: src/components/TwoFA/Authorization.vue:85
 #: src/components/TwoFA/Authorization.vue:85
 msgid "Please enter the OTP code:"
 msgid "Please enter the OTP code:"
@@ -3358,8 +3435,8 @@ msgstr ""
 #: src/components/Notification/notifications.ts:166
 #: src/components/Notification/notifications.ts:166
 #: src/language/constants.ts:59
 #: src/language/constants.ts:59
 msgid ""
 msgid ""
-"Please generate new recovery codes in the preferences immediately to "
-"prevent lockout."
+"Please generate new recovery codes in the preferences immediately to prevent "
+"lockout."
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
@@ -3401,7 +3478,8 @@ msgid "Please log in."
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/DNSCredential.vue:62
 #: src/views/certificate/DNSCredential.vue:62
-msgid "Please note that the unit of time configurations below are all in seconds."
+msgid ""
+"Please note that the unit of time configurations below are all in seconds."
 msgstr "يرجى ملاحظة أن تكوين وحدات الوقت أدناه كلها بالثواني."
 msgstr "يرجى ملاحظة أن تكوين وحدات الوقت أدناه كلها بالثواني."
 
 
 #: src/views/install/components/InstallView.vue:100
 #: src/views/install/components/InstallView.vue:100
@@ -3510,7 +3588,7 @@ msgstr "يقرأ"
 msgid "Receive"
 msgid "Receive"
 msgstr "يستقبل"
 msgstr "يستقبل"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:24
+#: src/components/SelfCheck/SelfCheck.vue:23
 msgid "Recheck"
 msgid "Recheck"
 msgstr ""
 msgstr ""
 
 
@@ -3968,6 +4046,10 @@ msgstr "تم الحفظ بنجاح"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "تم الحفظ بنجاح"
 msgstr "تم الحفظ بنجاح"
 
 
+#: src/constants/errors/self_check.ts:20
+msgid "Sbin path not exist"
+msgstr ""
+
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr "امسح رمز الاستجابة السريعة بهاتفك المحمول لإضافة الحساب إلى التطبيق."
 msgstr "امسح رمز الاستجابة السريعة بهاتفك المحمول لإضافة الحساب إلى التطبيق."
@@ -3998,7 +4080,7 @@ msgstr ""
 msgid "Selector"
 msgid "Selector"
 msgstr "المحدد"
 msgstr "المحدد"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:16 src/routes/modules/system.ts:19
+#: src/components/SelfCheck/SelfCheck.vue:15 src/routes/modules/system.ts:19
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
@@ -4069,14 +4151,14 @@ msgstr "تعيين موفر تحدي HTTP01"
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/views/install/components/InstallView.vue:64
 #: src/views/install/components/InstallView.vue:64
@@ -4123,21 +4205,21 @@ msgstr "سجلات الموقع"
 msgid "Site not found"
 msgid "Site not found"
 msgstr "لم يتم العثور على الملف"
 msgstr "لم يتم العثور على الملف"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:5
+#: src/language/generate.ts:7
 #, fuzzy
 #, fuzzy
-msgid "Sites Directory"
+msgid "Sites directory exists"
 msgstr "مجلد"
 msgstr "مجلد"
 
 
 #: src/routes/modules/sites.ts:19
 #: src/routes/modules/sites.ts:19
 msgid "Sites List"
 msgid "Sites List"
 msgstr "قائمة المواقع"
 msgstr "قائمة المواقع"
 
 
-#: src/constants/errors/self_check.ts:10
+#: src/constants/errors/self_check.ts:11
 #, fuzzy
 #, fuzzy
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
 msgstr "مجلد"
 msgstr "مجلد"
 
 
-#: src/constants/errors/self_check.ts:11
+#: src/constants/errors/self_check.ts:12
 #, fuzzy
 #, fuzzy
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
 msgstr "مجلد"
 msgstr "مجلد"
@@ -4245,17 +4327,17 @@ msgstr "معطل"
 msgid "Stream not found"
 msgid "Stream not found"
 msgstr "لم يتم العثور على الملف"
 msgstr "لم يتم العثور على الملف"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:10
+#: src/language/generate.ts:41
 #, fuzzy
 #, fuzzy
-msgid "Streams Directory"
+msgid "Streams directory exists"
 msgstr "مجلد"
 msgstr "مجلد"
 
 
-#: src/constants/errors/self_check.ts:12
+#: src/constants/errors/self_check.ts:13
 #, fuzzy
 #, fuzzy
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
 msgstr "مجلد"
 msgstr "مجلد"
 
 
-#: src/constants/errors/self_check.ts:13
+#: src/constants/errors/self_check.ts:14
 #, fuzzy
 #, fuzzy
 msgid "Streams-enabled directory not exist"
 msgid "Streams-enabled directory not exist"
 msgstr "مجلد"
 msgstr "مجلد"
@@ -4268,12 +4350,12 @@ msgstr ""
 msgid "Success"
 msgid "Success"
 msgstr "نجاح"
 msgstr "نجاح"
 
 
-#: src/components/SelfCheck/tasks/frontend/websocket.ts:6
+#: src/components/SelfCheck/tasks/frontend/websocket.ts:13
 msgid ""
 msgid ""
 "Support communication with the backend through the WebSocket protocol. If "
 "Support communication with the backend through the WebSocket protocol. If "
-"your Nginx UI is being used via an Nginx reverse proxy, please refer to "
-"this link to write the corresponding configuration file: "
-"https://nginxui.com/guide/nginx-proxy-example.html"
+"your Nginx UI is being used via an Nginx reverse proxy, please refer to this "
+"link to write the corresponding configuration file: https://nginxui.com/"
+"guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
@@ -4387,6 +4469,11 @@ msgstr "نظام"
 msgid "System restored successfully."
 msgid "System restored successfully."
 msgstr "تم إعادة تشغيل Nginx بنجاح"
 msgstr "تم إعادة تشغيل Nginx بنجاح"
 
 
+#: src/constants/errors/self_check.ts:3
+#, fuzzy
+msgid "Task is not fixable"
+msgstr "الرمز غير صالح"
+
 #: src/constants/errors/self_check.ts:2
 #: src/constants/errors/self_check.ts:2
 #, fuzzy
 #, fuzzy
 msgid "Task not found"
 msgid "Task not found"
@@ -4437,8 +4524,7 @@ msgstr "المدخل ليس مفتاح شهادة SSL"
 
 
 #: src/constants/errors/nginx_log.ts:2
 #: src/constants/errors/nginx_log.ts:2
 msgid ""
 msgid ""
-"The log path is not under the paths in "
-"settings.NginxSettings.LogDirWhiteList"
+"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList"
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:23
 #: src/views/preference/tabs/OpenAISettings.vue:23
@@ -4450,7 +4536,8 @@ msgid ""
 msgstr "يجب أن يحتوي اسم النموذج على حروف وأرقام ويونيكود وشرطات ونقاط فقط."
 msgstr "يجب أن يحتوي اسم النموذج على حروف وأرقام ويونيكود وشرطات ونقاط فقط."
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:90
 #: src/views/preference/tabs/OpenAISettings.vue:90
-msgid "The model used for code completion, if not set, the chat model will be used."
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/NodeSettings.vue:18
 #: src/views/preference/tabs/NodeSettings.vue:18
@@ -4558,7 +4645,8 @@ msgid "This field should not be empty"
 msgstr "يجب ألا يكون هذا الحقل فارغًا"
 msgstr "يجب ألا يكون هذا الحقل فارغًا"
 
 
 #: src/constants/form_errors.ts:6
 #: src/constants/form_errors.ts:6
-msgid "This field should only contain letters, unicode characters, numbers, and -_."
+msgid ""
+"This field should only contain letters, unicode characters, numbers, and -_."
 msgstr "يجب أن يحتوي هذا الحقل على حروف وأحرف يونيكود وأرقام و-_. فقط."
 msgstr "يجب أن يحتوي هذا الحقل على حروف وأحرف يونيكود وأرقام و-_. فقط."
 
 
 #: src/views/dashboard/NginxDashBoard.vue:153
 #: src/views/dashboard/NginxDashBoard.vue:153
@@ -4598,7 +4686,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/environments/list/BatchUpgrader.vue:182
 #: src/views/environments/list/BatchUpgrader.vue:182
-msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
+msgid ""
+"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 msgstr "سيتم ترقية أو إعادة تثبيت Nginx UI على %{nodeNames} إلى %{version}."
 msgstr "سيتم ترقية أو إعادة تثبيت Nginx UI على %{nodeNames} إلى %{version}."
 
 
 #: src/views/preference/tabs/AuthSettings.vue:124
 #: src/views/preference/tabs/AuthSettings.vue:124
@@ -4646,8 +4735,8 @@ msgstr ""
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 msgid ""
 msgid ""
 "To make sure the certification auto-renewal can work normally, we need to "
 "To make sure the certification auto-renewal can work normally, we need to "
-"add a location which can proxy the request from authority to backend, and "
-"we need to save this file and reload the Nginx. Are you sure you want to "
+"add a location which can proxy the request from authority to backend, and we "
+"need to save this file and reload the Nginx. Are you sure you want to "
 "continue?"
 "continue?"
 msgstr ""
 msgstr ""
 "لضمان عمل تجديد الشهادة التلقائي بشكل طبيعي، نحتاج إلى إضافة موقع يمكنه "
 "لضمان عمل تجديد الشهادة التلقائي بشكل طبيعي، نحتاج إلى إضافة موقع يمكنه "
@@ -4662,8 +4751,8 @@ msgid ""
 "local API."
 "local API."
 msgstr ""
 msgstr ""
 "لاستخدام نموذج كبير محلي، قم بنشره باستخدام vllm أو lmdeploy. فهي توفر نقطة "
 "لاستخدام نموذج كبير محلي، قم بنشره باستخدام vllm أو lmdeploy. فهي توفر نقطة "
-"نهاية API متوافقة مع OpenAI، لذا قم فقط بتعيين baseUrl إلىAPI المحلية "
-"الخاصة بك."
+"نهاية API متوافقة مع OpenAI، لذا قم فقط بتعيين baseUrl إلىAPI المحلية الخاصة "
+"بك."
 
 
 #: src/views/dashboard/NginxDashBoard.vue:57
 #: src/views/dashboard/NginxDashBoard.vue:57
 #, fuzzy
 #, fuzzy
@@ -4742,7 +4831,7 @@ msgstr "نوع"
 msgid "Unknown"
 msgid "Unknown"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:44
+#: src/components/SelfCheck/SelfCheck.vue:43
 msgid "Unknown issue"
 msgid "Unknown issue"
 msgstr ""
 msgstr ""
 
 
@@ -4910,8 +4999,8 @@ msgstr "سنضيف سجل أو أكثر من سجلات TXT إلى سجلات DN
 
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 msgid ""
 msgid ""
-"We will remove the HTTPChallenge configuration from this file and reload "
-"the Nginx. Are you sure you want to continue?"
+"We will remove the HTTPChallenge configuration from this file and reload the "
+"Nginx. Are you sure you want to continue?"
 msgstr ""
 msgstr ""
 "سنقوم بإزالة تكوين HTTPChallenge من هذا الملف وإعادة تحميل Nginx. هل أنت "
 "سنقوم بإزالة تكوين HTTPChallenge من هذا الملف وإعادة تحميل Nginx. هل أنت "
 "متأكد أنك تريد المتابعة؟"
 "متأكد أنك تريد المتابعة؟"
@@ -5003,8 +5092,8 @@ msgstr "نعم"
 
 
 #: src/views/terminal/Terminal.vue:135
 #: src/views/terminal/Terminal.vue:135
 msgid ""
 msgid ""
-"You are accessing this terminal over an insecure HTTP connection on a "
-"non-localhost domain. This may expose sensitive information."
+"You are accessing this terminal over an insecure HTTP connection on a non-"
+"localhost domain. This may expose sensitive information."
 msgstr ""
 msgstr ""
 
 
 #: src/views/system/Upgrade.vue:202
 #: src/views/system/Upgrade.vue:202
@@ -5030,7 +5119,8 @@ msgid ""
 msgstr "لم تقم بتكوين إعدادات Webauthn، لذا لا يمكنك إضافة مفتاح مرور."
 msgstr "لم تقم بتكوين إعدادات Webauthn، لذا لا يمكنك إضافة مفتاح مرور."
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
-msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
+msgid ""
+"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
@@ -5052,6 +5142,23 @@ msgstr ""
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr "مفاتيح المرور الخاصة بك"
 msgstr "مفاتيح المرور الخاصة بك"
 
 
+#~ msgid ""
+#~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
+#~ "Docker Image, please make sure the docker socket is mounted like this: `-"
+#~ "v /var/run/docker.sock:/var/run/docker.sock`."
+#~ msgstr ""
+#~ "تحقق مما إذا كان /var/run/docker.sock موجودًا. إذا كنت تستخدم صورة Docker "
+#~ "الرسمية لـ Nginx UI، يرجى التأكد من أن مقبس Docker مثبت بهذه الطريقة: `-"
+#~ "v /var/run/docker.sock:/var/run/docker.sock`."
+
+#, fuzzy
+#~ msgid "Nginx Conf Include Conf.d"
+#~ msgstr "أمر إعادة تشغيل Nginx"
+
+#, fuzzy
+#~ msgid "Sites Directory"
+#~ msgstr "مجلد"
+
 #~ msgid "Format error %{msg}"
 #~ msgid "Format error %{msg}"
 #~ msgstr "خطأ في التنسيق %{msg}"
 #~ msgstr "خطأ في التنسيق %{msg}"
 
 
@@ -5060,8 +5167,8 @@ msgstr "مفاتيح المرور الخاصة بك"
 
 
 #, fuzzy
 #, fuzzy
 #~ msgid ""
 #~ msgid ""
-#~ "When you enable/disable, delete, or save this stream, the nodes set in the "
-#~ "Node Group and the nodes selected below will be synchronized."
+#~ "When you enable/disable, delete, or save this stream, the nodes set in "
+#~ "the Node Group and the nodes selected below will be synchronized."
 #~ msgstr ""
 #~ msgstr ""
 #~ "عند تفعيل/تعطيل، حذف، أو حفظ هذا الموقع، سيتم مزامنة العقد المحددة في فئة "
 #~ "عند تفعيل/تعطيل، حذف، أو حفظ هذا الموقع، سيتم مزامنة العقد المحددة في فئة "
 #~ "الموقع والعقد المحددة أدناه."
 #~ "الموقع والعقد المحددة أدناه."
@@ -5128,12 +5235,15 @@ msgstr "مفاتيح المرور الخاصة بك"
 #~ msgid "Please upgrade the remote Nginx UI to the latest version"
 #~ msgid "Please upgrade the remote Nginx UI to the latest version"
 #~ msgstr "يرجى ترقية واجهة Nginx البعيدة إلى أحدث إصدار"
 #~ msgstr "يرجى ترقية واجهة Nginx البعيدة إلى أحدث إصدار"
 
 
-#~ msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}"
+#~ msgid ""
+#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: "
+#~ "%{resp}"
 #~ msgstr ""
 #~ msgstr ""
 #~ "فشل إعادة تسمية %{orig_path} إلى %{new_path} على %{env_name}، الاستجابة: "
 #~ "فشل إعادة تسمية %{orig_path} إلى %{new_path} على %{env_name}، الاستجابة: "
 #~ "%{resp}"
 #~ "%{resp}"
 
 
-#~ msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}"
+#~ msgid ""
+#~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}"
 #~ msgstr ""
 #~ msgstr ""
 #~ "خطأ في إعادة تسمية الموقع %{site} إلى %{new_site} على %{node}، الاستجابة: "
 #~ "خطأ في إعادة تسمية الموقع %{site} إلى %{new_site} على %{node}، الاستجابة: "
 #~ "%{resp}"
 #~ "%{resp}"
@@ -5148,18 +5258,20 @@ msgstr "مفاتيح المرور الخاصة بك"
 #~ "فشل مزامنة الشهادة %{cert_name} إلى %{env_name}، يرجى ترقية واجهة Nginx "
 #~ "فشل مزامنة الشهادة %{cert_name} إلى %{env_name}، يرجى ترقية واجهة Nginx "
 #~ "البعيدة إلى أحدث إصدار"
 #~ "البعيدة إلى أحدث إصدار"
 
 
-#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
+#~ msgid ""
+#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
 #~ msgstr "فشل مزامنة الشهادة %{cert_name} إلى %{env_name}، الاستجابة: %{resp}"
 #~ msgstr "فشل مزامنة الشهادة %{cert_name} إلى %{env_name}، الاستجابة: %{resp}"
 
 
 #~ msgid "Sync config %{config_name} to %{env_name} failed, response: %{resp}"
 #~ msgid "Sync config %{config_name} to %{env_name} failed, response: %{resp}"
-#~ msgstr "فشل مزامنة التكوين %{config_name} إلى %{env_name}، الاستجابة: %{resp}"
+#~ msgstr ""
+#~ "فشل مزامنة التكوين %{config_name} إلى %{env_name}، الاستجابة: %{resp}"
 
 
 #~ msgid "Target"
 #~ msgid "Target"
 #~ msgstr "الهدف"
 #~ msgstr "الهدف"
 
 
 #~ msgid ""
 #~ msgid ""
-#~ "If you lose your mobile phone, you can use the recovery code to reset your "
-#~ "2FA."
+#~ "If you lose your mobile phone, you can use the recovery code to reset "
+#~ "your 2FA."
 #~ msgstr ""
 #~ msgstr ""
 #~ "إذا فقدت هاتفك المحمول، يمكنك استخدام رمز الاسترداد لإعادة تعيين المصادقة "
 #~ "إذا فقدت هاتفك المحمول، يمكنك استخدام رمز الاسترداد لإعادة تعيين المصادقة "
 #~ "الثنائية."
 #~ "الثنائية."
@@ -5167,7 +5279,8 @@ msgstr "مفاتيح المرور الخاصة بك"
 #~ msgid "Recovery Code:"
 #~ msgid "Recovery Code:"
 #~ msgstr "رمز الاسترداد:"
 #~ msgstr "رمز الاسترداد:"
 
 
-#~ msgid "The recovery code is only displayed once, please save it in a safe place."
+#~ msgid ""
+#~ "The recovery code is only displayed once, please save it in a safe place."
 #~ msgstr "رمز الاسترداد يُعرض مرة واحدة فقط، يرجى حفظه في مكان آمن."
 #~ msgstr "رمز الاسترداد يُعرض مرة واحدة فقط، يرجى حفظه في مكان آمن."
 
 
 #~ msgid "Can't scan? Use text key binding"
 #~ msgid "Can't scan? Use text key binding"
@@ -5183,4 +5296,5 @@ msgstr "مفاتيح المرور الخاصة بك"
 #~ msgstr "اسم المستخدم أو كلمة المرور غير صحيحة"
 #~ msgstr "اسم المستخدم أو كلمة المرور غير صحيحة"
 
 
 #~ msgid "Too many login failed attempts, please try again later"
 #~ msgid "Too many login failed attempts, please try again later"
-#~ msgstr "عدد كبير جدًا من محاولات تسجيل الدخول الفاشلة، يرجى المحاولة مرة أخرى لاحقًا"
+#~ msgstr ""
+#~ "عدد كبير جدًا من محاولات تسجيل الدخول الفاشلة، يرجى المحاولة مرة أخرى لاحقًا"

+ 1 - 1
app/src/language/container.ts

@@ -1,7 +1,7 @@
 export interface Container {
 export interface Container {
   message: string
   message: string
   // eslint-disable-next-line ts/no-explicit-any
   // eslint-disable-next-line ts/no-explicit-any
-  args: Record<string, any>
+  args?: Record<string, any>
 }
 }
 
 
 function T(container: Container): string {
 function T(container: Container): string {

File diff suppressed because it is too large
+ 282 - 168
app/src/language/de_DE/app.po


+ 146 - 78
app/src/language/en/app.po

@@ -1,41 +1,41 @@
-#: src/language/generate.ts:19
+#: src/language/generate.ts:47
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:13
+#: src/language/generate.ts:49
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:6
 msgid "[Nginx UI] Certificate renewed successfully"
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:37
 msgid "[Nginx UI] Certificate successfully revoked"
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:29
+#: src/language/generate.ts:13
 msgid ""
 msgid ""
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:35
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:36
 msgid "[Nginx UI] Environment variables cleaned"
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:28
 msgid "[Nginx UI] Finished"
 msgid "[Nginx UI] Finished"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Issued certificate successfully"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:50
 msgid "[Nginx UI] Obtaining certificate"
 msgid "[Nginx UI] Obtaining certificate"
 msgstr ""
 msgstr ""
 
 
@@ -43,43 +43,43 @@ msgstr ""
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:46
 msgid "[Nginx UI] Preparing lego configurations"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:19
 msgid "[Nginx UI] Reloading nginx"
 msgid "[Nginx UI] Reloading nginx"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:14
 msgid "[Nginx UI] Revocation completed"
 msgid "[Nginx UI] Revocation completed"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Revoking certificate"
 msgid "[Nginx UI] Revoking certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:29
 msgid "[Nginx UI] Revoking old certificate"
 msgid "[Nginx UI] Revoking old certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:20
+#: src/language/generate.ts:18
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Setting environment variables"
 msgid "[Nginx UI] Setting environment variables"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:12
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:51
 msgid "[Nginx UI] Writing certificate to disk"
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr ""
 msgstr ""
 
 
@@ -99,6 +99,10 @@ msgstr ""
 msgid "Access Log"
 msgid "Access Log"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:21
+msgid "Access log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
 #: src/routes/modules/nginx_log.ts:17
 msgid "Access Logs"
 msgid "Access Logs"
@@ -307,7 +311,7 @@ msgstr ""
 msgid "Assistant"
 msgid "Assistant"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:31
+#: src/components/SelfCheck/SelfCheck.vue:30
 msgid "Attempt to fix"
 msgid "Attempt to fix"
 msgstr ""
 msgstr ""
 
 
@@ -578,7 +582,7 @@ msgstr ""
 msgid "Certificate Expiring Soon"
 msgid "Certificate Expiring Soon"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:33
 msgid "Certificate not found: %{error}"
 msgid "Certificate not found: %{error}"
 msgstr ""
 msgstr ""
 
 
@@ -603,7 +607,7 @@ msgstr ""
 msgid "Certificate renewed successfully"
 msgid "Certificate renewed successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:11
 msgid "Certificate revoked successfully"
 msgid "Certificate revoked successfully"
 msgstr ""
 msgstr ""
 
 
@@ -661,41 +665,58 @@ msgstr ""
 msgid "Check again"
 msgid "Check again"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:31
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:14
 msgid ""
 msgid ""
-"Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
-"Docker Image, please make sure the docker socket is mounted like this: `-v /"
-"var/run/docker.sock:/var/run/docker.sock`."
+"Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
+"prevents using Passkeys and clipboard features"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:11
-msgid ""
-"Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
-"prevents using Passkeys and clipboard features."
+#: src/language/generate.ts:40
+msgid "Check if the docker socket exists."
+msgstr ""
+
+#: src/language/generate.ts:20
+msgid "Check if the nginx access log path exists"
+msgstr ""
+
+#: src/language/generate.ts:44
+msgid "Check if the nginx configuration directory exists"
+msgstr ""
+
+#: src/language/generate.ts:9
+msgid "Check if the nginx configuration entry file exists"
+msgstr ""
+
+#: src/language/generate.ts:32
+msgid "Check if the nginx error log path exists"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:26
-msgid "Check if the nginx.conf includes the conf.d directory."
+#: src/language/generate.ts:24
+msgid "Check if the nginx PID path exists"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:16
-msgid "Check if the nginx.conf includes the sites-enabled directory."
+#: src/language/generate.ts:43
+msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:21
-msgid "Check if the nginx.conf includes the streams-enabled directory."
+#: src/language/generate.ts:23
+msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:6
+#: src/language/generate.ts:5
+msgid "Check if the nginx.conf includes the streams-enabled directory"
+msgstr ""
+
+#: src/language/generate.ts:30
 msgid ""
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
 "Check if the sites-available and sites-enabled directories are under the "
-"nginx configuration directory."
+"nginx configuration directory"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:11
+#: src/language/generate.ts:38
 msgid ""
 msgid ""
 "Check if the streams-available and streams-enabled directories are under the "
 "Check if the streams-available and streams-enabled directories are under the "
-"nginx configuration directory."
+"nginx configuration directory"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/crypto.ts:3
 #: src/constants/errors/crypto.ts:3
@@ -793,6 +814,14 @@ msgstr ""
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:17
+msgid "Config directory not exist"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:18
+msgid "Config entry file not exist"
+msgstr ""
+
 #: src/constants/errors/backup.ts:14
 #: src/constants/errors/backup.ts:14
 msgid "Config path is empty"
 msgid "Config path is empty"
 msgstr ""
 msgstr ""
@@ -1254,11 +1283,11 @@ msgstr ""
 msgid "Docker client not initialized"
 msgid "Docker client not initialized"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:30
-msgid "Docker Socket"
+#: src/language/generate.ts:10
+msgid "Docker socket exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:15
+#: src/constants/errors/self_check.ts:16
 msgid "Docker socket not exist"
 msgid "Docker socket not exist"
 msgstr ""
 msgstr ""
 
 
@@ -1483,6 +1512,10 @@ msgstr ""
 msgid "Error Log"
 msgid "Error Log"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:22
+msgid "Error log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/routes/modules/nginx_log.ts:24
 #: src/routes/modules/nginx_log.ts:24
 msgid "Error Logs"
 msgid "Error Logs"
@@ -1570,7 +1603,7 @@ msgstr ""
 msgid "Failed to copy Nginx config directory: {0}"
 msgid "Failed to copy Nginx config directory: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:9
+#: src/constants/errors/self_check.ts:10
 msgid "Failed to create backup"
 msgid "Failed to create backup"
 msgstr ""
 msgstr ""
 
 
@@ -1650,7 +1683,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgid "Failed to delete certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid "Failed to delete certificate from database: %{error}"
 msgid "Failed to delete certificate from database: %{error}"
 msgstr ""
 msgstr ""
 
 
@@ -1750,7 +1783,7 @@ msgstr ""
 msgid "Failed to open zip file: {0}"
 msgid "Failed to open zip file: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:4
+#: src/constants/errors/self_check.ts:5
 msgid "Failed to parse nginx.conf"
 msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -1770,7 +1803,7 @@ msgstr ""
 msgid "Failed to read hash info file: {0}"
 msgid "Failed to read hash info file: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:3
+#: src/constants/errors/self_check.ts:4
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -1965,7 +1998,7 @@ msgstr ""
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:10
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:13
 msgid "HTTPS Protocol"
 msgid "HTTPS Protocol"
 msgstr ""
 msgstr ""
 
 
@@ -2303,8 +2336,11 @@ msgstr ""
 msgid "Log"
 msgid "Log"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:23
-msgid "Log file %{log_path} is not a regular file. "
+#: src/language/generate.ts:34
+msgid ""
+"Log file %{log_path} is not a regular file. If you are using nginx-ui in "
+"docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
+"nginx-log.html for more information."
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
@@ -2581,35 +2617,27 @@ msgstr ""
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:25
-msgid "Nginx Conf Include Conf.d"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:15
-msgid "Nginx Conf Include Sites Enabled"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:20
-msgid "Nginx Conf Include Streams Enabled"
+#: src/language/generate.ts:16
+msgid "Nginx access log path exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:5
+#: src/constants/errors/self_check.ts:6
 msgid "Nginx conf no http block"
 msgid "Nginx conf no http block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:7
+#: src/constants/errors/self_check.ts:8
 msgid "Nginx conf no stream block"
 msgid "Nginx conf no stream block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:14
+#: src/constants/errors/self_check.ts:15
 msgid "Nginx conf not include conf.d directory"
 msgid "Nginx conf not include conf.d directory"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:6
+#: src/constants/errors/self_check.ts:7
 msgid "Nginx conf not include sites-enabled"
 msgid "Nginx conf not include sites-enabled"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:8
+#: src/constants/errors/self_check.ts:9
 msgid "Nginx conf not include stream-enabled"
 msgid "Nginx conf not include stream-enabled"
 msgstr ""
 msgstr ""
 
 
@@ -2617,6 +2645,14 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgid "Nginx config directory is not set"
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:31
+msgid "Nginx configuration directory exists"
+msgstr ""
+
+#: src/language/generate.ts:15
+msgid "Nginx configuration entry file exists"
+msgstr ""
+
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 msgid "Nginx configuration has been restored"
 msgid "Nginx configuration has been restored"
 msgstr ""
 msgstr ""
@@ -2651,6 +2687,10 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:21
+msgid "Nginx error log path exists"
+msgstr ""
+
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/composables/useNginxPerformance.ts:43
 #: src/composables/useNginxPerformance.ts:43
 #: src/views/dashboard/NginxDashBoard.vue:112
 #: src/views/dashboard/NginxDashBoard.vue:112
@@ -2684,6 +2724,10 @@ msgstr ""
 msgid "Nginx PID Path"
 msgid "Nginx PID Path"
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:45
+msgid "Nginx PID path exists"
+msgstr ""
+
 #: src/views/preference/tabs/NginxSettings.vue:40
 #: src/views/preference/tabs/NginxSettings.vue:40
 msgid "Nginx Reload Command"
 msgid "Nginx Reload Command"
 msgstr ""
 msgstr ""
@@ -2740,6 +2784,18 @@ msgid ""
 "few seconds."
 "few seconds."
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:8
+msgid "Nginx.conf includes conf.d directory"
+msgstr ""
+
+#: src/language/generate.ts:42
+msgid "Nginx.conf includes sites-enabled directory"
+msgstr ""
+
+#: src/language/generate.ts:39
+msgid "Nginx.conf includes streams-enabled directory"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
@@ -3061,6 +3117,10 @@ msgstr ""
 msgid "Performing core upgrade"
 msgid "Performing core upgrade"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:19
+msgid "PID path not exist"
+msgstr ""
+
 #: src/constants/errors/crypto.ts:2
 #: src/constants/errors/crypto.ts:2
 msgid "Plain text is empty"
 msgid "Plain text is empty"
 msgstr ""
 msgstr ""
@@ -3256,7 +3316,7 @@ msgstr ""
 msgid "Receive"
 msgid "Receive"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:24
+#: src/components/SelfCheck/SelfCheck.vue:23
 msgid "Recheck"
 msgid "Recheck"
 msgstr ""
 msgstr ""
 
 
@@ -3682,6 +3742,10 @@ msgstr ""
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:20
+msgid "Sbin path not exist"
+msgstr ""
+
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
@@ -3711,7 +3775,7 @@ msgstr ""
 msgid "Selector"
 msgid "Selector"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:16 src/routes/modules/system.ts:19
+#: src/components/SelfCheck/SelfCheck.vue:15 src/routes/modules/system.ts:19
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
@@ -3827,19 +3891,19 @@ msgstr ""
 msgid "Site not found"
 msgid "Site not found"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:5
-msgid "Sites Directory"
+#: src/language/generate.ts:7
+msgid "Sites directory exists"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/sites.ts:19
 #: src/routes/modules/sites.ts:19
 msgid "Sites List"
 msgid "Sites List"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:10
+#: src/constants/errors/self_check.ts:11
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:11
+#: src/constants/errors/self_check.ts:12
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
 msgstr ""
 msgstr ""
 
 
@@ -3940,15 +4004,15 @@ msgstr ""
 msgid "Stream not found"
 msgid "Stream not found"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:10
-msgid "Streams Directory"
+#: src/language/generate.ts:41
+msgid "Streams directory exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:12
+#: src/constants/errors/self_check.ts:13
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:13
+#: src/constants/errors/self_check.ts:14
 msgid "Streams-enabled directory not exist"
 msgid "Streams-enabled directory not exist"
 msgstr ""
 msgstr ""
 
 
@@ -3960,7 +4024,7 @@ msgstr ""
 msgid "Success"
 msgid "Success"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/frontend/websocket.ts:6
+#: src/components/SelfCheck/tasks/frontend/websocket.ts:13
 msgid ""
 msgid ""
 "Support communication with the backend through the WebSocket protocol. If "
 "Support communication with the backend through the WebSocket protocol. If "
 "your Nginx UI is being used via an Nginx reverse proxy, please refer to this "
 "your Nginx UI is being used via an Nginx reverse proxy, please refer to this "
@@ -4072,6 +4136,10 @@ msgstr ""
 msgid "System restored successfully."
 msgid "System restored successfully."
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:3
+msgid "Task is not fixable"
+msgstr ""
+
 #: src/constants/errors/self_check.ts:2
 #: src/constants/errors/self_check.ts:2
 msgid "Task not found"
 msgid "Task not found"
 msgstr ""
 msgstr ""
@@ -4393,7 +4461,7 @@ msgstr ""
 msgid "Unknown"
 msgid "Unknown"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:44
+#: src/components/SelfCheck/SelfCheck.vue:43
 msgid "Unknown issue"
 msgid "Unknown issue"
 msgstr ""
 msgstr ""
 
 

File diff suppressed because it is too large
+ 273 - 162
app/src/language/es/app.po


+ 255 - 141
app/src/language/fr_FR/app.po

@@ -5,61 +5,63 @@ msgstr ""
 "POT-Creation-Date: \n"
 "POT-Creation-Date: \n"
 "PO-Revision-Date: 2025-02-13 01:42+0000\n"
 "PO-Revision-Date: 2025-02-13 01:42+0000\n"
 "Last-Translator: Picman <laforgejames@gmail.com>\n"
 "Last-Translator: Picman <laforgejames@gmail.com>\n"
-"Language-Team: French "
-"<https://weblate.nginxui.com/projects/nginx-ui/frontend/fr/>\n"
+"Language-Team: French <https://weblate.nginxui.com/projects/nginx-ui/"
+"frontend/fr/>\n"
 "Language: fr_FR\n"
 "Language: fr_FR\n"
 "MIME-Version: 1.0\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
 "X-Generator: Weblate 5.9.2\n"
 "X-Generator: Weblate 5.9.2\n"
 
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:47
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 msgstr ""
 "[Nginx UI] Utilisateur ACME : %{name}, Email : %{email}, Répertoire CA : "
 "[Nginx UI] Utilisateur ACME : %{name}, Email : %{email}, Répertoire CA : "
 "%{caDir}"
 "%{caDir}"
 
 
-#: src/language/generate.ts:13
+#: src/language/generate.ts:49
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgid "[Nginx UI] Backing up current certificate for later revocation"
-msgstr "[Nginx UI] Sauvegarde du certificat actuel pour une révocation ultérieure"
+msgstr ""
+"[Nginx UI] Sauvegarde du certificat actuel pour une révocation ultérieure"
 
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:6
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "Désactivé avec succès"
 msgstr "Désactivé avec succès"
 
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:37
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Nginx a redémarré avec succès"
 msgstr "Nginx a redémarré avec succès"
 
 
-#: src/language/generate.ts:29
-msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
+#: src/language/generate.ts:13
+msgid ""
+"[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 msgstr ""
 "[Nginx UI] Le certificat a été utilisé pour le serveur, rechargement du "
 "[Nginx UI] Le certificat a été utilisé pour le serveur, rechargement du "
 "certificat TLS du serveur"
 "certificat TLS du serveur"
 
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:35
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "La création du client facilite la communication avec le serveur CA"
 msgstr "La création du client facilite la communication avec le serveur CA"
 
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:36
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "Définition des variables d'environnement"
 msgstr "Définition des variables d'environnement"
 
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:28
 msgid "[Nginx UI] Finished"
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] Terminé"
 msgstr "[Nginx UI] Terminé"
 
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:25
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Issued certificate successfully"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "Certificat délivré avec succès"
 msgstr "Certificat délivré avec succès"
 
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:50
 msgid "[Nginx UI] Obtaining certificate"
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] Obtention du certificat"
 msgstr "[Nginx UI] Obtention du certificat"
 
 
@@ -67,44 +69,44 @@ msgstr "[Nginx UI] Obtention du certificat"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] Préparation de la révocation du certificat"
 msgstr "[Nginx UI] Préparation de la révocation du certificat"
 
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:46
 msgid "[Nginx UI] Preparing lego configurations"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] Préparation des configurations lego"
 msgstr "[Nginx UI] Préparation des configurations lego"
 
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:19
 msgid "[Nginx UI] Reloading nginx"
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] Rechargement de nginx"
 msgstr "[Nginx UI] Rechargement de nginx"
 
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:14
 msgid "[Nginx UI] Revocation completed"
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] Révocation terminée"
 msgstr "[Nginx UI] Révocation terminée"
 
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Revoking certificate"
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] Révoquer le certificat"
 msgstr "[Nginx UI] Révoquer le certificat"
 
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:29
 msgid "[Nginx UI] Revoking old certificate"
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] Révoquer l'ancien certificat"
 msgstr "[Nginx UI] Révoquer l'ancien certificat"
 
 
-#: src/language/generate.ts:20
+#: src/language/generate.ts:18
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] Configuration du fournisseur de défi DNS01"
 msgstr "[Nginx UI] Configuration du fournisseur de défi DNS01"
 
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:27
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Setting environment variables"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "Définition des variables d'environnement"
 msgstr "Définition des variables d'environnement"
 
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] Configuration du fournisseur de défi HTTP01"
 msgstr "[Nginx UI] Configuration du fournisseur de défi HTTP01"
 
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:12
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] Écriture de la clé privée du certificat sur le disque"
 msgstr "[Nginx UI] Écriture de la clé privée du certificat sur le disque"
 
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:51
 msgid "[Nginx UI] Writing certificate to disk"
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] Écriture du certificat sur le disque"
 msgstr "[Nginx UI] Écriture du certificat sur le disque"
 
 
@@ -125,6 +127,10 @@ msgstr "À propos"
 msgid "Access Log"
 msgid "Access Log"
 msgstr "Journaux d'accès"
 msgstr "Journaux d'accès"
 
 
+#: src/constants/errors/self_check.ts:21
+msgid "Access log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
 #: src/routes/modules/nginx_log.ts:17
 msgid "Access Logs"
 msgid "Access Logs"
@@ -356,7 +362,7 @@ msgstr "Modèle ChatGPT"
 msgid "Assistant"
 msgid "Assistant"
 msgstr "Assistant"
 msgstr "Assistant"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:31
+#: src/components/SelfCheck/SelfCheck.vue:30
 msgid "Attempt to fix"
 msgid "Attempt to fix"
 msgstr "Tenter de corriger"
 msgstr "Tenter de corriger"
 
 
@@ -409,7 +415,8 @@ msgstr "\"Redémarrage Automatique\""
 
 
 #: src/views/nginx_log/NginxLogList.vue:79
 #: src/views/nginx_log/NginxLogList.vue:79
 msgid "Automatically indexed from site and stream configurations."
 msgid "Automatically indexed from site and stream configurations."
-msgstr "\"Indexé automatiquement à partir des configurations de site et de flux.\""
+msgstr ""
+"\"Indexé automatiquement à partir des configurations de site et de flux.\""
 
 
 #: src/views/certificate/CertificateEditor.vue:259
 #: src/views/certificate/CertificateEditor.vue:259
 #: src/views/config/ConfigEditor.vue:266 src/views/config/ConfigList.vue:112
 #: src/views/config/ConfigEditor.vue:266 src/views/config/ConfigList.vue:112
@@ -435,8 +442,8 @@ msgstr "Retour"
 #: src/components/SystemRestore/SystemRestoreContent.vue:155
 #: src/components/SystemRestore/SystemRestoreContent.vue:155
 msgid "Backup file integrity check failed, it may have been tampered with"
 msgid "Backup file integrity check failed, it may have been tampered with"
 msgstr ""
 msgstr ""
-"La vérification de l'intégrité du fichier de sauvegarde a échoué, il a "
-"peut-être été falsifié"
+"La vérification de l'intégrité du fichier de sauvegarde a échoué, il a peut-"
+"être été falsifié"
 
 
 #: src/constants/errors/backup.ts:41
 #: src/constants/errors/backup.ts:41
 msgid "Backup file not found: {0}"
 msgid "Backup file not found: {0}"
@@ -501,7 +508,8 @@ msgstr "Mettre à niveau"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:70
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:70
 msgid "Belows are selected items that you want to batch modify"
 msgid "Belows are selected items that you want to batch modify"
-msgstr "Ci-dessous sont sélectionnés les éléments que vous voulez modifier en masse"
+msgstr ""
+"Ci-dessous sont sélectionnés les éléments que vous voulez modifier en masse"
 
 
 #: src/constants/errors/nginx.ts:2
 #: src/constants/errors/nginx.ts:2
 msgid "Block is nil"
 msgid "Block is nil"
@@ -521,7 +529,8 @@ msgstr "Cache"
 
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
 msgid "Cache items not accessed within this time will be removed"
 msgid "Cache items not accessed within this time will be removed"
-msgstr "Les éléments du cache non consultés pendant cette période seront supprimés"
+msgstr ""
+"Les éléments du cache non consultés pendant cette période seront supprimés"
 
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
 msgid "Cache loader processing time threshold"
 msgid "Cache loader processing time threshold"
@@ -642,7 +651,7 @@ msgstr "Certificat expiré"
 msgid "Certificate Expiring Soon"
 msgid "Certificate Expiring Soon"
 msgstr "Certificat expirant bientôt"
 msgstr "Certificat expirant bientôt"
 
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:33
 #, fuzzy
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgid "Certificate not found: %{error}"
 msgstr "Erreur de décodage du certificat"
 msgstr "Erreur de décodage du certificat"
@@ -670,7 +679,7 @@ msgstr "Le certificat est valide"
 msgid "Certificate renewed successfully"
 msgid "Certificate renewed successfully"
 msgstr "Désactivé avec succès"
 msgstr "Désactivé avec succès"
 
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:11
 #, fuzzy
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgid "Certificate revoked successfully"
 msgstr "Certificat supprimé avec succès"
 msgstr "Certificat supprimé avec succès"
@@ -735,50 +744,71 @@ msgstr "Revérifier"
 msgid "Check again"
 msgid "Check again"
 msgstr "Revérifier"
 msgstr "Revérifier"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:31
-msgid ""
-"Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
-"Docker Image, please make sure the docker socket is mounted like this: `-v "
-"/var/run/docker.sock:/var/run/docker.sock`."
-msgstr ""
-"Vérifiez si /var/run/docker.sock existe. Si vous utilisez l'image Docker "
-"officielle de Nginx UI, assurez-vous que le socket Docker est monté comme "
-"ceci : `-v /var/run/docker.sock:/var/run/docker.sock`."
-
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:11
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:14
+#, fuzzy
 msgid ""
 msgid ""
 "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
 "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
-"prevents using Passkeys and clipboard features."
+"prevents using Passkeys and clipboard features"
 msgstr ""
 msgstr ""
 "Vérifiez si HTTPS est activé. L'utilisation de HTTP en dehors de localhost "
 "Vérifiez si HTTPS est activé. L'utilisation de HTTP en dehors de localhost "
 "est non sécurisée et empêche l'utilisation des fonctionnalités Passkeys et "
 "est non sécurisée et empêche l'utilisation des fonctionnalités Passkeys et "
 "presse-papiers."
 "presse-papiers."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:26
+#: src/language/generate.ts:40
+msgid "Check if the docker socket exists."
+msgstr ""
+
+#: src/language/generate.ts:20
+msgid "Check if the nginx access log path exists"
+msgstr ""
+
+#: src/language/generate.ts:44
 #, fuzzy
 #, fuzzy
-msgid "Check if the nginx.conf includes the conf.d directory."
+msgid "Check if the nginx configuration directory exists"
 msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
 msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:16
-msgid "Check if the nginx.conf includes the sites-enabled directory."
+#: src/language/generate.ts:9
+#, fuzzy
+msgid "Check if the nginx configuration entry file exists"
 msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
 msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:21
-msgid "Check if the nginx.conf includes the streams-enabled directory."
+#: src/language/generate.ts:32
+msgid "Check if the nginx error log path exists"
+msgstr ""
+
+#: src/language/generate.ts:24
+msgid "Check if the nginx PID path exists"
+msgstr ""
+
+#: src/language/generate.ts:43
+#, fuzzy
+msgid "Check if the nginx.conf includes the conf.d directory"
+msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
+
+#: src/language/generate.ts:23
+#, fuzzy
+msgid "Check if the nginx.conf includes the sites-enabled directory"
+msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
+
+#: src/language/generate.ts:5
+#, fuzzy
+msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "Vérifie si le nginx.conf inclus le répertoire streams-enabled."
 msgstr "Vérifie si le nginx.conf inclus le répertoire streams-enabled."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:6
+#: src/language/generate.ts:30
+#, fuzzy
 msgid ""
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
 "Check if the sites-available and sites-enabled directories are under the "
-"nginx configuration directory."
+"nginx configuration directory"
 msgstr ""
 msgstr ""
 "Vérifie si les répertoires sites-available et sites-enabled sont dans le "
 "Vérifie si les répertoires sites-available et sites-enabled sont dans le "
 "répertoire de configuration nginx."
 "répertoire de configuration nginx."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:11
+#: src/language/generate.ts:38
+#, fuzzy
 msgid ""
 msgid ""
-"Check if the streams-available and streams-enabled directories are under "
-"the nginx configuration directory."
+"Check if the streams-available and streams-enabled directories are under the "
+"nginx configuration directory"
 msgstr ""
 msgstr ""
 "Vérifie si les répertoires streams-available et strams-enabled sont dans le "
 "Vérifie si les répertoires streams-available et strams-enabled sont dans le "
 "répertoire de configuration nginx."
 "répertoire de configuration nginx."
@@ -885,6 +915,16 @@ msgstr "Comparez avec le courant"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "Le niveau de compression, 1 est le plus bas, 9 est le plus élevé"
 msgstr "Le niveau de compression, 1 est le plus bas, 9 est le plus élevé"
 
 
+#: src/constants/errors/self_check.ts:17
+#, fuzzy
+msgid "Config directory not exist"
+msgstr "Erreur d'analyse de configuration Nginx"
+
+#: src/constants/errors/self_check.ts:18
+#, fuzzy
+msgid "Config entry file not exist"
+msgstr "Erreur d'analyse de configuration Nginx"
+
 #: src/constants/errors/backup.ts:14
 #: src/constants/errors/backup.ts:14
 #, fuzzy
 #, fuzzy
 msgid "Config path is empty"
 msgid "Config path is empty"
@@ -1083,7 +1123,8 @@ msgstr "Custom"
 msgid ""
 msgid ""
 "Customize the name of local node to be displayed in the environment "
 "Customize the name of local node to be displayed in the environment "
 "indicator."
 "indicator."
-msgstr "Personnaliser le nom du nœud local affiché dans l'indicateur d'environnement"
+msgstr ""
+"Personnaliser le nom du nœud local affiché dans l'indicateur d'environnement"
 
 
 #: src/routes/modules/dashboard.ts:10 src/views/config/ConfigEditor.vue:110
 #: src/routes/modules/dashboard.ts:10 src/views/config/ConfigEditor.vue:110
 #: src/views/config/ConfigEditor.vue:161 src/views/config/ConfigList.vue:67
 #: src/views/config/ConfigEditor.vue:161 src/views/config/ConfigList.vue:67
@@ -1358,7 +1399,8 @@ msgstr "DNS01"
 
 
 #: src/components/AutoCertForm/AutoCertForm.vue:97
 #: src/components/AutoCertForm/AutoCertForm.vue:97
 msgid "Do not enable this option unless you are sure that you need it."
 msgid "Do not enable this option unless you are sure that you need it."
-msgstr "N'activez pas cette option sauf si vous êtes sûr d'en avoir avez besoin."
+msgstr ""
+"N'activez pas cette option sauf si vous êtes sûr d'en avoir avez besoin."
 
 
 #: src/views/site/components/SiteStatusSegmented.vue:93
 #: src/views/site/components/SiteStatusSegmented.vue:93
 #, fuzzy
 #, fuzzy
@@ -1397,11 +1439,11 @@ msgstr "Voulez-vous supprimer ce serveur ?"
 msgid "Docker client not initialized"
 msgid "Docker client not initialized"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:30
-msgid "Docker Socket"
+#: src/language/generate.ts:10
+msgid "Docker socket exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:15
+#: src/constants/errors/self_check.ts:16
 msgid "Docker socket not exist"
 msgid "Docker socket not exist"
 msgstr ""
 msgstr ""
 
 
@@ -1658,6 +1700,10 @@ msgstr ""
 msgid "Error Log"
 msgid "Error Log"
 msgstr "Journaux d'erreurs"
 msgstr "Journaux d'erreurs"
 
 
+#: src/constants/errors/self_check.ts:22
+msgid "Error log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/routes/modules/nginx_log.ts:24
 #: src/routes/modules/nginx_log.ts:24
 msgid "Error Logs"
 msgid "Error Logs"
@@ -1752,7 +1798,7 @@ msgstr ""
 msgid "Failed to copy Nginx config directory: {0}"
 msgid "Failed to copy Nginx config directory: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:9
+#: src/constants/errors/self_check.ts:10
 #, fuzzy
 #, fuzzy
 msgid "Failed to create backup"
 msgid "Failed to create backup"
 msgstr "Impossible d'activer %{msg}"
 msgstr "Impossible d'activer %{msg}"
@@ -1849,7 +1895,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgid "Failed to delete certificate"
 msgstr "Obtenir un certificat"
 msgstr "Obtenir un certificat"
 
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 #, fuzzy
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "Obtenir un certificat"
 msgstr "Obtenir un certificat"
@@ -1968,7 +2014,7 @@ msgstr "Impossible d'activer %{msg}"
 msgid "Failed to open zip file: {0}"
 msgid "Failed to open zip file: {0}"
 msgstr "Impossible d'activer %{msg}"
 msgstr "Impossible d'activer %{msg}"
 
 
-#: src/constants/errors/self_check.ts:4
+#: src/constants/errors/self_check.ts:5
 #, fuzzy
 #, fuzzy
 msgid "Failed to parse nginx.conf"
 msgid "Failed to parse nginx.conf"
 msgstr "Erreur lecture nginx.conf"
 msgstr "Erreur lecture nginx.conf"
@@ -1993,7 +2039,7 @@ msgstr "Impossible d'activer %{msg}"
 msgid "Failed to read hash info file: {0}"
 msgid "Failed to read hash info file: {0}"
 msgstr "Impossible d'activer %{msg}"
 msgstr "Impossible d'activer %{msg}"
 
 
-#: src/constants/errors/self_check.ts:3
+#: src/constants/errors/self_check.ts:4
 #, fuzzy
 #, fuzzy
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
 msgstr "Impossible d'activer %{msg}"
 msgstr "Impossible d'activer %{msg}"
@@ -2209,7 +2255,7 @@ msgstr "Port de challenge HTTP"
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr "HTTP01"
 msgstr "HTTP01"
 
 
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:10
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:13
 msgid "HTTPS Protocol"
 msgid "HTTPS Protocol"
 msgstr ""
 msgstr ""
 
 
@@ -2223,8 +2269,8 @@ msgstr "Si vide, le répertoire CA sera utilisé."
 
 
 #: src/views/nginx_log/NginxLogList.vue:81
 #: src/views/nginx_log/NginxLogList.vue:81
 msgid ""
 msgid ""
-"If logs are not indexed, please check if the log file is under the "
-"directory in Nginx.LogDirWhiteList."
+"If logs are not indexed, please check if the log file is under the directory "
+"in Nginx.LogDirWhiteList."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/AuthSettings.vue:145
 #: src/views/preference/tabs/AuthSettings.vue:145
@@ -2243,8 +2289,8 @@ msgid ""
 "If you want to automatically revoke the old certificate, please enable this "
 "If you want to automatically revoke the old certificate, please enable this "
 "option."
 "option."
 msgstr ""
 msgstr ""
-"Si votre domaine possède des entrées CNAME et que vous ne pouvez pas "
-"obtenir de certificats, activez cette option."
+"Si votre domaine possède des entrées CNAME et que vous ne pouvez pas obtenir "
+"de certificats, activez cette option."
 
 
 #: src/views/preference/components/AuthSettings/AddPasskey.vue:70
 #: src/views/preference/components/AuthSettings/AddPasskey.vue:70
 #, fuzzy
 #, fuzzy
@@ -2258,8 +2304,8 @@ msgid ""
 "If your domain has CNAME records and you cannot obtain certificates, you "
 "If your domain has CNAME records and you cannot obtain certificates, you "
 "need to enable this option."
 "need to enable this option."
 msgstr ""
 msgstr ""
-"Si votre domaine possède des entrées CNAME et que vous ne pouvez pas "
-"obtenir de certificats, activez cette option."
+"Si votre domaine possède des entrées CNAME et que vous ne pouvez pas obtenir "
+"de certificats, activez cette option."
 
 
 #: src/views/certificate/CertificateList/Certificate.vue:22
 #: src/views/certificate/CertificateList/Certificate.vue:22
 #, fuzzy
 #, fuzzy
@@ -2589,8 +2635,11 @@ msgstr "Localisations"
 msgid "Log"
 msgid "Log"
 msgstr "Connexion"
 msgstr "Connexion"
 
 
-#: src/language/generate.ts:23
-msgid "Log file %{log_path} is not a regular file. "
+#: src/language/generate.ts:34
+msgid ""
+"Log file %{log_path} is not a regular file. If you are using nginx-ui in "
+"docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
+"nginx-log.html for more information."
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
@@ -2616,12 +2665,12 @@ msgstr ""
 
 
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 msgid ""
 msgid ""
-"Logrotate, by default, is enabled in most mainstream Linux distributions "
-"for users who install Nginx UI on the host machine, so you don't need to "
-"modify the parameters on this page. For users who install Nginx UI using "
-"Docker containers, you can manually enable this option. The crontab task "
-"scheduler of Nginx UI will execute the logrotate command at the interval "
-"you set in minutes."
+"Logrotate, by default, is enabled in most mainstream Linux distributions for "
+"users who install Nginx UI on the host machine, so you don't need to modify "
+"the parameters on this page. For users who install Nginx UI using Docker "
+"containers, you can manually enable this option. The crontab task scheduler "
+"of Nginx UI will execute the logrotate command at the interval you set in "
+"minutes."
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/components/SiteStatusSegmented.vue:138
 #: src/views/site/components/SiteStatusSegmented.vue:138
@@ -2646,8 +2695,8 @@ msgid ""
 "Make sure you have configured a reverse proxy for .well-known directory to "
 "Make sure you have configured a reverse proxy for .well-known directory to "
 "HTTPChallengePort before obtaining the certificate."
 "HTTPChallengePort before obtaining the certificate."
 msgstr ""
 msgstr ""
-"Assurez vous d'avoir configuré un reverse proxy pour le répertoire "
-".well-known vers HTTPChallengePort avant d'obtenir le certificat."
+"Assurez vous d'avoir configuré un reverse proxy pour le répertoire .well-"
+"known vers HTTPChallengePort avant d'obtenir le certificat."
 
 
 #: src/routes/modules/config.ts:10 src/views/config/ConfigEditor.vue:115
 #: src/routes/modules/config.ts:10 src/views/config/ConfigEditor.vue:115
 #: src/views/config/ConfigEditor.vue:166 src/views/config/ConfigList.vue:72
 #: src/views/config/ConfigEditor.vue:166 src/views/config/ConfigList.vue:72
@@ -2887,37 +2936,29 @@ msgstr "Journal Nginx"
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr "Chemin du journal d'accès Nginx"
 msgstr "Chemin du journal d'accès Nginx"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:25
+#: src/language/generate.ts:16
 #, fuzzy
 #, fuzzy
-msgid "Nginx Conf Include Conf.d"
-msgstr "Commande de démarrage du terminal"
-
-#: src/components/SelfCheck/tasks/backend/index.ts:15
-msgid "Nginx Conf Include Sites Enabled"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:20
-msgid "Nginx Conf Include Streams Enabled"
-msgstr ""
+msgid "Nginx access log path exists"
+msgstr "Chemin du journal d'accès Nginx"
 
 
-#: src/constants/errors/self_check.ts:5
+#: src/constants/errors/self_check.ts:6
 msgid "Nginx conf no http block"
 msgid "Nginx conf no http block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:7
+#: src/constants/errors/self_check.ts:8
 msgid "Nginx conf no stream block"
 msgid "Nginx conf no stream block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:14
+#: src/constants/errors/self_check.ts:15
 #, fuzzy
 #, fuzzy
 msgid "Nginx conf not include conf.d directory"
 msgid "Nginx conf not include conf.d directory"
 msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
 msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
 
 
-#: src/constants/errors/self_check.ts:6
+#: src/constants/errors/self_check.ts:7
 msgid "Nginx conf not include sites-enabled"
 msgid "Nginx conf not include sites-enabled"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:8
+#: src/constants/errors/self_check.ts:9
 msgid "Nginx conf not include stream-enabled"
 msgid "Nginx conf not include stream-enabled"
 msgstr ""
 msgstr ""
 
 
@@ -2926,6 +2967,16 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgid "Nginx config directory is not set"
 msgstr "Erreur d'analyse de configuration Nginx"
 msgstr "Erreur d'analyse de configuration Nginx"
 
 
+#: src/language/generate.ts:31
+#, fuzzy
+msgid "Nginx configuration directory exists"
+msgstr "Erreur d'analyse de configuration Nginx"
+
+#: src/language/generate.ts:15
+#, fuzzy
+msgid "Nginx configuration entry file exists"
+msgstr "Erreur d'analyse de configuration Nginx"
+
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #, fuzzy
 #, fuzzy
 msgid "Nginx configuration has been restored"
 msgid "Nginx configuration has been restored"
@@ -2964,6 +3015,11 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr "Chemin du journal des erreurs Nginx"
 msgstr "Chemin du journal des erreurs Nginx"
 
 
+#: src/language/generate.ts:21
+#, fuzzy
+msgid "Nginx error log path exists"
+msgstr "Chemin du journal des erreurs Nginx"
+
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/composables/useNginxPerformance.ts:43
 #: src/composables/useNginxPerformance.ts:43
 #: src/views/dashboard/NginxDashBoard.vue:112
 #: src/views/dashboard/NginxDashBoard.vue:112
@@ -2999,6 +3055,11 @@ msgstr ""
 msgid "Nginx PID Path"
 msgid "Nginx PID Path"
 msgstr "Chemin du journal des erreurs Nginx"
 msgstr "Chemin du journal des erreurs Nginx"
 
 
+#: src/language/generate.ts:45
+#, fuzzy
+msgid "Nginx PID path exists"
+msgstr "Chemin du journal des erreurs Nginx"
+
 #: src/views/preference/tabs/NginxSettings.vue:40
 #: src/views/preference/tabs/NginxSettings.vue:40
 #, fuzzy
 #, fuzzy
 msgid "Nginx Reload Command"
 msgid "Nginx Reload Command"
@@ -3058,10 +3119,25 @@ msgstr "Erreur d'analyse de configuration Nginx"
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
-"Nginx UI configuration has been restored and will restart automatically in "
-"a few seconds."
+"Nginx UI configuration has been restored and will restart automatically in a "
+"few seconds."
 msgstr "Erreur d'analyse de configuration Nginx"
 msgstr "Erreur d'analyse de configuration Nginx"
 
 
+#: src/language/generate.ts:8
+#, fuzzy
+msgid "Nginx.conf includes conf.d directory"
+msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
+
+#: src/language/generate.ts:42
+#, fuzzy
+msgid "Nginx.conf includes sites-enabled directory"
+msgstr "Vérifie si le nginx.conf inclus le répertoire sites-enabled."
+
+#: src/language/generate.ts:39
+#, fuzzy
+msgid "Nginx.conf includes streams-enabled directory"
+msgstr "Vérifie si le nginx.conf inclus le répertoire streams-enabled."
+
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
@@ -3396,6 +3472,10 @@ msgstr "Désactivé avec succès"
 msgid "Performing core upgrade"
 msgid "Performing core upgrade"
 msgstr "Exécution de la mise à niveau du core"
 msgstr "Exécution de la mise à niveau du core"
 
 
+#: src/constants/errors/self_check.ts:19
+msgid "PID path not exist"
+msgstr ""
+
 #: src/constants/errors/crypto.ts:2
 #: src/constants/errors/crypto.ts:2
 msgid "Plain text is empty"
 msgid "Plain text is empty"
 msgstr ""
 msgstr ""
@@ -3449,8 +3529,8 @@ msgstr ""
 #: src/components/Notification/notifications.ts:166
 #: src/components/Notification/notifications.ts:166
 #: src/language/constants.ts:59
 #: src/language/constants.ts:59
 msgid ""
 msgid ""
-"Please generate new recovery codes in the preferences immediately to "
-"prevent lockout."
+"Please generate new recovery codes in the preferences immediately to prevent "
+"lockout."
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
@@ -3496,7 +3576,8 @@ msgid "Please log in."
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/DNSCredential.vue:62
 #: src/views/certificate/DNSCredential.vue:62
-msgid "Please note that the unit of time configurations below are all in seconds."
+msgid ""
+"Please note that the unit of time configurations below are all in seconds."
 msgstr ""
 msgstr ""
 
 
 #: src/views/install/components/InstallView.vue:100
 #: src/views/install/components/InstallView.vue:100
@@ -3607,7 +3688,7 @@ msgstr "Lectures"
 msgid "Receive"
 msgid "Receive"
 msgstr "Recevoir"
 msgstr "Recevoir"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:24
+#: src/components/SelfCheck/SelfCheck.vue:23
 msgid "Recheck"
 msgid "Recheck"
 msgstr ""
 msgstr ""
 
 
@@ -4088,6 +4169,10 @@ msgstr "Sauvegarde réussie"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "Enregistré avec succès"
 msgstr "Enregistré avec succès"
 
 
+#: src/constants/errors/self_check.ts:20
+msgid "Sbin path not exist"
+msgstr ""
+
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
@@ -4118,7 +4203,7 @@ msgstr ""
 msgid "Selector"
 msgid "Selector"
 msgstr "Sélecteur"
 msgstr "Sélecteur"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:16 src/routes/modules/system.ts:19
+#: src/components/SelfCheck/SelfCheck.vue:15 src/routes/modules/system.ts:19
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
@@ -4189,14 +4274,14 @@ msgstr "Utilisation du fournisseur de challenge HTTP01"
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/views/install/components/InstallView.vue:64
 #: src/views/install/components/InstallView.vue:64
@@ -4243,21 +4328,21 @@ msgstr "Journaux du site"
 msgid "Site not found"
 msgid "Site not found"
 msgstr "Fichier introuvable"
 msgstr "Fichier introuvable"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:5
+#: src/language/generate.ts:7
 #, fuzzy
 #, fuzzy
-msgid "Sites Directory"
+msgid "Sites directory exists"
 msgstr "Directive"
 msgstr "Directive"
 
 
 #: src/routes/modules/sites.ts:19
 #: src/routes/modules/sites.ts:19
 msgid "Sites List"
 msgid "Sites List"
 msgstr "Liste des sites"
 msgstr "Liste des sites"
 
 
-#: src/constants/errors/self_check.ts:10
+#: src/constants/errors/self_check.ts:11
 #, fuzzy
 #, fuzzy
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
 msgstr "Directive"
 msgstr "Directive"
 
 
-#: src/constants/errors/self_check.ts:11
+#: src/constants/errors/self_check.ts:12
 #, fuzzy
 #, fuzzy
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
 msgstr "Directive"
 msgstr "Directive"
@@ -4369,17 +4454,17 @@ msgstr "Auto Cert"
 msgid "Stream not found"
 msgid "Stream not found"
 msgstr "Fichier introuvable"
 msgstr "Fichier introuvable"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:10
+#: src/language/generate.ts:41
 #, fuzzy
 #, fuzzy
-msgid "Streams Directory"
+msgid "Streams directory exists"
 msgstr "Directive"
 msgstr "Directive"
 
 
-#: src/constants/errors/self_check.ts:12
+#: src/constants/errors/self_check.ts:13
 #, fuzzy
 #, fuzzy
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
 msgstr "Directive"
 msgstr "Directive"
 
 
-#: src/constants/errors/self_check.ts:13
+#: src/constants/errors/self_check.ts:14
 #, fuzzy
 #, fuzzy
 msgid "Streams-enabled directory not exist"
 msgid "Streams-enabled directory not exist"
 msgstr "Directive"
 msgstr "Directive"
@@ -4392,12 +4477,12 @@ msgstr ""
 msgid "Success"
 msgid "Success"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/frontend/websocket.ts:6
+#: src/components/SelfCheck/tasks/frontend/websocket.ts:13
 msgid ""
 msgid ""
 "Support communication with the backend through the WebSocket protocol. If "
 "Support communication with the backend through the WebSocket protocol. If "
-"your Nginx UI is being used via an Nginx reverse proxy, please refer to "
-"this link to write the corresponding configuration file: "
-"https://nginxui.com/guide/nginx-proxy-example.html"
+"your Nginx UI is being used via an Nginx reverse proxy, please refer to this "
+"link to write the corresponding configuration file: https://nginxui.com/"
+"guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
@@ -4520,6 +4605,11 @@ msgstr "Système"
 msgid "System restored successfully."
 msgid "System restored successfully."
 msgstr "Nginx a redémarré avec succès"
 msgstr "Nginx a redémarré avec succès"
 
 
+#: src/constants/errors/self_check.ts:3
+#, fuzzy
+msgid "Task is not fixable"
+msgstr "Fichier introuvable"
+
 #: src/constants/errors/self_check.ts:2
 #: src/constants/errors/self_check.ts:2
 #, fuzzy
 #, fuzzy
 msgid "Task not found"
 msgid "Task not found"
@@ -4570,8 +4660,7 @@ msgstr "Chemin de la clé du certificat SSL"
 
 
 #: src/constants/errors/nginx_log.ts:2
 #: src/constants/errors/nginx_log.ts:2
 msgid ""
 msgid ""
-"The log path is not under the paths in "
-"settings.NginxSettings.LogDirWhiteList"
+"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList"
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:23
 #: src/views/preference/tabs/OpenAISettings.vue:23
@@ -4582,7 +4671,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:90
 #: src/views/preference/tabs/OpenAISettings.vue:90
-msgid "The model used for code completion, if not set, the chat model will be used."
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/NodeSettings.vue:18
 #: src/views/preference/tabs/NodeSettings.vue:18
@@ -4689,7 +4779,8 @@ msgid "This field should not be empty"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/form_errors.ts:6
 #: src/constants/form_errors.ts:6
-msgid "This field should only contain letters, unicode characters, numbers, and -_."
+msgid ""
+"This field should only contain letters, unicode characters, numbers, and -_."
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/NginxDashBoard.vue:153
 #: src/views/dashboard/NginxDashBoard.vue:153
@@ -4730,7 +4821,8 @@ msgstr ""
 
 
 #: src/views/environments/list/BatchUpgrader.vue:182
 #: src/views/environments/list/BatchUpgrader.vue:182
 #, fuzzy
 #, fuzzy
-msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
+msgid ""
+"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 msgstr "Dupliqué avec succès"
 msgstr "Dupliqué avec succès"
 
 
 #: src/views/preference/tabs/AuthSettings.vue:124
 #: src/views/preference/tabs/AuthSettings.vue:124
@@ -4774,12 +4866,12 @@ msgstr ""
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 msgid ""
 msgid ""
 "To make sure the certification auto-renewal can work normally, we need to "
 "To make sure the certification auto-renewal can work normally, we need to "
-"add a location which can proxy the request from authority to backend, and "
-"we need to save this file and reload the Nginx. Are you sure you want to "
+"add a location which can proxy the request from authority to backend, and we "
+"need to save this file and reload the Nginx. Are you sure you want to "
 "continue?"
 "continue?"
 msgstr ""
 msgstr ""
-"Pour nous assurer que le renouvellement automatique de la certification "
-"peut fonctionner normalement, nous devons ajouter un emplacement qui peut "
+"Pour nous assurer que le renouvellement automatique de la certification peut "
+"fonctionner normalement, nous devons ajouter un emplacement qui peut "
 "transmettre la demande de l'autorité au backend, et nous devons enregistrer "
 "transmettre la demande de l'autorité au backend, et nous devons enregistrer "
 "ce fichier et recharger le Nginx. Êtes-vous sûr de vouloir continuer?"
 "ce fichier et recharger le Nginx. Êtes-vous sûr de vouloir continuer?"
 
 
@@ -4861,7 +4953,7 @@ msgstr "Type"
 msgid "Unknown"
 msgid "Unknown"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:44
+#: src/components/SelfCheck/SelfCheck.vue:43
 msgid "Unknown issue"
 msgid "Unknown issue"
 msgstr ""
 msgstr ""
 
 
@@ -5034,8 +5126,8 @@ msgstr ""
 
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 msgid ""
 msgid ""
-"We will remove the HTTPChallenge configuration from this file and reload "
-"the Nginx. Are you sure you want to continue?"
+"We will remove the HTTPChallenge configuration from this file and reload the "
+"Nginx. Are you sure you want to continue?"
 msgstr ""
 msgstr ""
 "Nous allons supprimer la configuration HTTPChallenge de ce fichier et "
 "Nous allons supprimer la configuration HTTPChallenge de ce fichier et "
 "recharger le Nginx. Êtes-vous sûr de vouloir continuer?"
 "recharger le Nginx. Êtes-vous sûr de vouloir continuer?"
@@ -5121,8 +5213,8 @@ msgstr "Oui"
 
 
 #: src/views/terminal/Terminal.vue:135
 #: src/views/terminal/Terminal.vue:135
 msgid ""
 msgid ""
-"You are accessing this terminal over an insecure HTTP connection on a "
-"non-localhost domain. This may expose sensitive information."
+"You are accessing this terminal over an insecure HTTP connection on a non-"
+"localhost domain. This may expose sensitive information."
 msgstr ""
 msgstr ""
 
 
 #: src/views/system/Upgrade.vue:202
 #: src/views/system/Upgrade.vue:202
@@ -5148,7 +5240,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
-msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
+msgid ""
+"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
@@ -5170,6 +5263,23 @@ msgstr ""
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr ""
 msgstr ""
 
 
+#~ msgid ""
+#~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
+#~ "Docker Image, please make sure the docker socket is mounted like this: `-"
+#~ "v /var/run/docker.sock:/var/run/docker.sock`."
+#~ msgstr ""
+#~ "Vérifiez si /var/run/docker.sock existe. Si vous utilisez l'image Docker "
+#~ "officielle de Nginx UI, assurez-vous que le socket Docker est monté comme "
+#~ "ceci : `-v /var/run/docker.sock:/var/run/docker.sock`."
+
+#, fuzzy
+#~ msgid "Nginx Conf Include Conf.d"
+#~ msgstr "Commande de démarrage du terminal"
+
+#, fuzzy
+#~ msgid "Sites Directory"
+#~ msgstr "Directive"
+
 #~ msgid "Format error %{msg}"
 #~ msgid "Format error %{msg}"
 #~ msgstr "Erreur de format %{msg}"
 #~ msgstr "Erreur de format %{msg}"
 
 
@@ -5243,11 +5353,14 @@ msgstr ""
 #~ msgstr "Dupliqué avec succès"
 #~ msgstr "Dupliqué avec succès"
 
 
 #, fuzzy
 #, fuzzy
-#~ msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}"
+#~ msgid ""
+#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: "
+#~ "%{resp}"
 #~ msgstr "Dupliqué avec succès"
 #~ msgstr "Dupliqué avec succès"
 
 
 #, fuzzy
 #, fuzzy
-#~ msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}"
+#~ msgid ""
+#~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}"
 #~ msgstr "Dupliqué avec succès"
 #~ msgstr "Dupliqué avec succès"
 
 
 #, fuzzy
 #, fuzzy
@@ -5261,7 +5374,8 @@ msgstr ""
 #~ msgstr "Dupliqué avec succès"
 #~ msgstr "Dupliqué avec succès"
 
 
 #, fuzzy
 #, fuzzy
-#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
+#~ msgid ""
+#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
 #~ msgstr "Dupliqué avec succès"
 #~ msgstr "Dupliqué avec succès"
 
 
 #, fuzzy
 #, fuzzy
@@ -5350,8 +5464,8 @@ msgstr ""
 #~ "Please note that the unit of time configurations below are all in seconds."
 #~ "Please note that the unit of time configurations below are all in seconds."
 #~ msgstr ""
 #~ msgstr ""
 #~ "Veuillez remplir les identifiants d'authentification de l'API fournis par "
 #~ "Veuillez remplir les identifiants d'authentification de l'API fournis par "
-#~ "votre fournisseur DNS. Nous ajouterons un ou plusieurs enregistrements TXT "
-#~ "aux enregistrements DNS de votre domaine pour la vérification de la "
+#~ "votre fournisseur DNS. Nous ajouterons un ou plusieurs enregistrements "
+#~ "TXT aux enregistrements DNS de votre domaine pour la vérification de la "
 #~ "propriété. Une fois la vérification terminée, les enregistrements seront "
 #~ "propriété. Une fois la vérification terminée, les enregistrements seront "
 #~ "supprimés. Veuillez noter que les configurations de temps ci-dessous sont "
 #~ "supprimés. Veuillez noter que les configurations de temps ci-dessous sont "
 #~ "toutes en secondes."
 #~ "toutes en secondes."

+ 40 - 18
app/src/language/generate.ts

@@ -1,30 +1,52 @@
 // This file is auto-generated. DO NOT EDIT MANUALLY.
 // This file is auto-generated. DO NOT EDIT MANUALLY.
 
 
 export const msg = [
 export const msg = [
-  $gettext('[Nginx UI] Issued certificate successfully'),
-  $gettext('Certificate not found: %{error}'),
-  $gettext('[Nginx UI] Setting environment variables'),
-  $gettext('[Nginx UI] Revoking certificate'),
-  $gettext('[Nginx UI] Certificate successfully revoked'),
-  $gettext('Failed to delete certificate from database: %{error}'),
-  $gettext('Certificate revoked successfully'),
+  $gettext('Nginx configuration directory exists'),
+  $gettext('Check if the nginx PID path exists'),
+  $gettext('Nginx access log path exists'),
   $gettext('[Nginx UI] Setting HTTP01 challenge provider'),
   $gettext('[Nginx UI] Setting HTTP01 challenge provider'),
-  $gettext('[Nginx UI] Environment variables cleaned'),
-  $gettext('[Nginx UI] Backing up current certificate for later revocation'),
-  $gettext('[Nginx UI] Obtaining certificate'),
-  $gettext('[Nginx UI] Writing certificate private key to disk'),
-  $gettext('[Nginx UI] Revocation completed'),
+  $gettext('[Nginx UI] Reloading nginx'),
+  $gettext('[Nginx UI] Certificate was used for server, reloading server TLS certificate'),
+  $gettext('[Nginx UI] Revoking certificate'),
+  $gettext('Sites directory exists'),
+  $gettext('Nginx error log path exists'),
+  $gettext('[Nginx UI] Issued certificate successfully'),
   $gettext('Failed to revoke certificate: %{error}'),
   $gettext('Failed to revoke certificate: %{error}'),
+  $gettext('[Nginx UI] Setting DNS01 challenge provider'),
+  $gettext('Check if the nginx.conf includes the sites-enabled directory'),
+  $gettext('Nginx configuration entry file exists'),
+  $gettext('Check if the nginx access log path exists'),
+  $gettext('Certificate not found: %{error}'),
   $gettext('[Nginx UI] Preparing lego configurations'),
   $gettext('[Nginx UI] Preparing lego configurations'),
   $gettext('[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}'),
   $gettext('[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}'),
-  $gettext('[Nginx UI] Setting DNS01 challenge provider'),
-  $gettext('[Nginx UI] Finished'),
-  $gettext('[Nginx UI] Preparing for certificate revocation'),
-  $gettext('Log file %{log_path} is not a regular file. '),
   $gettext('[Nginx UI] Creating client facilitates communication with the CA server'),
   $gettext('[Nginx UI] Creating client facilitates communication with the CA server'),
-  $gettext('[Nginx UI] Reloading nginx'),
+  $gettext('[Nginx UI] Environment variables cleaned'),
+  $gettext('[Nginx UI] Writing certificate private key to disk'),
+  $gettext('Nginx.conf includes conf.d directory'),
+  $gettext('Check if the nginx.conf includes the conf.d directory'),
+  $gettext('[Nginx UI] Finished'),
   $gettext('[Nginx UI] Revoking old certificate'),
   $gettext('[Nginx UI] Revoking old certificate'),
+  $gettext('Check if the nginx configuration directory exists'),
+  $gettext('Nginx PID path exists'),
+  $gettext('Check if the nginx error log path exists'),
+  $gettext('[Nginx UI] Backing up current certificate for later revocation'),
+  $gettext('Check if the nginx configuration entry file exists'),
+  $gettext('Failed to delete certificate from database: %{error}'),
+  $gettext('[Nginx UI] Preparing for certificate revocation'),
+  $gettext('Nginx.conf includes sites-enabled directory'),
+  $gettext('Docker socket exists'),
+  $gettext('Check if the docker socket exists.'),
+  $gettext('Certificate revoked successfully'),
+  $gettext('Log file %{log_path} is not a regular file. If you are using nginx-ui in docker container, please refer to https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information.'),
+  $gettext('[Nginx UI] Obtaining certificate'),
   $gettext('[Nginx UI] Writing certificate to disk'),
   $gettext('[Nginx UI] Writing certificate to disk'),
+  $gettext('[Nginx UI] Revocation completed'),
+  $gettext('[Nginx UI] Certificate successfully revoked'),
+  $gettext('Nginx.conf includes streams-enabled directory'),
+  $gettext('Check if the nginx.conf includes the streams-enabled directory'),
+  $gettext('[Nginx UI] Setting environment variables'),
   $gettext('[Nginx UI] Certificate renewed successfully'),
   $gettext('[Nginx UI] Certificate renewed successfully'),
-  $gettext('[Nginx UI] Certificate was used for server, reloading server TLS certificate'),
+  $gettext('Check if the sites-available and sites-enabled directories are under the nginx configuration directory'),
+  $gettext('Streams directory exists'),
+  $gettext('Check if the streams-available and streams-enabled directories are under the nginx configuration directory'),
 ]
 ]

+ 1 - 0
app/src/language/index.ts

@@ -1 +1,2 @@
 export { default as T } from './container'
 export { default as T } from './container'
+export type { Container } from './container'

+ 238 - 134
app/src/language/ja_JP/app.po

@@ -5,55 +5,60 @@ msgid ""
 msgstr ""
 msgstr ""
 "PO-Revision-Date: 2024-09-23 19:14+0000\n"
 "PO-Revision-Date: 2024-09-23 19:14+0000\n"
 "Last-Translator: Kohki Makimoto <kohki.makimoto@gmail.com>\n"
 "Last-Translator: Kohki Makimoto <kohki.makimoto@gmail.com>\n"
-"Language-Team: Japanese "
-"<https://weblate.nginxui.com/projects/nginx-ui/frontend/ja/>\n"
+"Language-Team: Japanese <https://weblate.nginxui.com/projects/nginx-ui/"
+"frontend/ja/>\n"
 "Language: ja_JP\n"
 "Language: ja_JP\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: Weblate 5.6.2\n"
 "X-Generator: Weblate 5.6.2\n"
 
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:47
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
-msgstr "[Nginx UI] ACME ユーザー: %{name}、メール: %{email}、CA ディレクトリ: %{caDir}"
+msgstr ""
+"[Nginx UI] ACME ユーザー: %{name}、メール: %{email}、CA ディレクトリ: "
+"%{caDir}"
 
 
-#: src/language/generate.ts:13
+#: src/language/generate.ts:49
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr "[Nginx UI] 現在の証明書を後で失効させるためにバックアップ中"
 msgstr "[Nginx UI] 現在の証明書を後で失効させるためにバックアップ中"
 
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:6
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "正常に削除しました"
 msgstr "正常に削除しました"
 
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:37
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "証明書の削除に成功しました"
 msgstr "証明書の削除に成功しました"
 
 
-#: src/language/generate.ts:29
-msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
-msgstr "[Nginx UI] サーバーで証明書が使用されました、サーバーのTLS証明書を再読み込み中"
+#: src/language/generate.ts:13
+msgid ""
+"[Nginx UI] Certificate was used for server, reloading server TLS certificate"
+msgstr ""
+"[Nginx UI] サーバーで証明書が使用されました、サーバーのTLS証明書を再読み込み"
+"中"
 
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:35
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "[Nginx UI] CA サーバーとの通信を容易にするクライアントを作成中"
 msgstr "[Nginx UI] CA サーバーとの通信を容易にするクライアントを作成中"
 
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:36
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "環境変数を削除する"
 msgstr "環境変数を削除する"
 
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:28
 msgid "[Nginx UI] Finished"
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] 完了しました"
 msgstr "[Nginx UI] 完了しました"
 
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:25
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Issued certificate successfully"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "証明書の削除に成功しました"
 msgstr "証明書の削除に成功しました"
 
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:50
 msgid "[Nginx UI] Obtaining certificate"
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] 証明書を取得中"
 msgstr "[Nginx UI] 証明書を取得中"
 
 
@@ -61,44 +66,44 @@ msgstr "[Nginx UI] 証明書を取得中"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] 証明書の失効準備中"
 msgstr "[Nginx UI] 証明書の失効準備中"
 
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:46
 msgid "[Nginx UI] Preparing lego configurations"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] Lego 設定の準備中"
 msgstr "[Nginx UI] Lego 設定の準備中"
 
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:19
 msgid "[Nginx UI] Reloading nginx"
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] Nginx を再読み込み中"
 msgstr "[Nginx UI] Nginx を再読み込み中"
 
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:14
 msgid "[Nginx UI] Revocation completed"
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] 失効が完了しました"
 msgstr "[Nginx UI] 失効が完了しました"
 
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Revoking certificate"
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] 証明書を失効中"
 msgstr "[Nginx UI] 証明書を失効中"
 
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:29
 msgid "[Nginx UI] Revoking old certificate"
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] 古い証明書を失効中"
 msgstr "[Nginx UI] 古い証明書を失効中"
 
 
-#: src/language/generate.ts:20
+#: src/language/generate.ts:18
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] DNS01 チャレンジプロバイダーを設定中"
 msgstr "[Nginx UI] DNS01 チャレンジプロバイダーを設定中"
 
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:27
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Setting environment variables"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "環境変数を削除する"
 msgstr "環境変数を削除する"
 
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] HTTP01 チャレンジプロバイダーの設定"
 msgstr "[Nginx UI] HTTP01 チャレンジプロバイダーの設定"
 
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:12
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] 証明書の秘密鍵をディスクに書き込んでいます"
 msgstr "[Nginx UI] 証明書の秘密鍵をディスクに書き込んでいます"
 
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:51
 msgid "[Nginx UI] Writing certificate to disk"
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] 証明書をディスクに書き込み中"
 msgstr "[Nginx UI] 証明書をディスクに書き込み中"
 
 
@@ -119,6 +124,10 @@ msgstr "Nginx UI について"
 msgid "Access Log"
 msgid "Access Log"
 msgstr "アクセスログ"
 msgstr "アクセスログ"
 
 
+#: src/constants/errors/self_check.ts:21
+msgid "Access log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
 #: src/routes/modules/nginx_log.ts:17
 msgid "Access Logs"
 msgid "Access Logs"
@@ -335,7 +344,7 @@ msgstr "ChatGPTに助けを求める"
 msgid "Assistant"
 msgid "Assistant"
 msgstr "アシスタント"
 msgstr "アシスタント"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:31
+#: src/components/SelfCheck/SelfCheck.vue:30
 #, fuzzy
 #, fuzzy
 msgid "Attempt to fix"
 msgid "Attempt to fix"
 msgstr "試行回数"
 msgstr "試行回数"
@@ -413,7 +422,9 @@ msgstr "\"戻る\""
 
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:155
 #: src/components/SystemRestore/SystemRestoreContent.vue:155
 msgid "Backup file integrity check failed, it may have been tampered with"
 msgid "Backup file integrity check failed, it may have been tampered with"
-msgstr "「バックアップファイルの整合性チェックに失敗しました。改ざんされている可能性があります」"
+msgstr ""
+"「バックアップファイルの整合性チェックに失敗しました。改ざんされている可能性"
+"があります」"
 
 
 #: src/constants/errors/backup.ts:41
 #: src/constants/errors/backup.ts:41
 msgid "Backup file not found: {0}"
 msgid "Backup file not found: {0}"
@@ -538,8 +549,8 @@ msgid ""
 "Calculated based on worker_processes * worker_connections. Actual "
 "Calculated based on worker_processes * worker_connections. Actual "
 "performance depends on hardware, configuration, and workload"
 "performance depends on hardware, configuration, and workload"
 msgstr ""
 msgstr ""
-"worker_processes * worker_connections "
-"に基づいて計算されます。実際のパフォーマンスはハードウェア、設定、およびワークロードに依存します"
+"worker_processes * worker_connections に基づいて計算されます。実際のパフォー"
+"マンスはハードウェア、設定、およびワークロードに依存します"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/NgxConfigEditor/NgxServer.vue:54
 #: src/components/NgxConfigEditor/NgxServer.vue:54
@@ -613,7 +624,7 @@ msgstr "証明書の有効期限が切れました"
 msgid "Certificate Expiring Soon"
 msgid "Certificate Expiring Soon"
 msgstr "証明書の有効期限が近づいています"
 msgstr "証明書の有効期限が近づいています"
 
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:33
 #, fuzzy
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgid "Certificate not found: %{error}"
 msgstr "証明書のデコードエラー"
 msgstr "証明書のデコードエラー"
@@ -640,7 +651,7 @@ msgstr "証明書更新間隔"
 msgid "Certificate renewed successfully"
 msgid "Certificate renewed successfully"
 msgstr "正常に削除しました"
 msgstr "正常に削除しました"
 
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:11
 #, fuzzy
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgid "Certificate revoked successfully"
 msgstr "証明書の削除に成功しました"
 msgstr "証明書の削除に成功しました"
@@ -698,47 +709,73 @@ msgstr "再確認"
 msgid "Check again"
 msgid "Check again"
 msgstr "再確認"
 msgstr "再確認"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:31
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:14
+#, fuzzy
 msgid ""
 msgid ""
-"Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
-"Docker Image, please make sure the docker socket is mounted like this: `-v "
-"/var/run/docker.sock:/var/run/docker.sock`."
+"Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
+"prevents using Passkeys and clipboard features"
 msgstr ""
 msgstr ""
-"/var/run/docker.sock が存在するか確認してください。Nginx UI 公式 Docker "
-"イメージを使用している場合は、Docker ソケットが次のようにマウントされていることを確認してください: `-v "
-"/var/run/docker.sock:/var/run/docker.sock`."
+"HTTPS が有効かどうかを確認します。localhost 以外で HTTP を使用すると安全では"
+"なく、Passkeys やクリップボード機能の使用が妨げられます。"
 
 
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:11
-msgid ""
-"Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
-"prevents using Passkeys and clipboard features."
+#: src/language/generate.ts:40
+msgid "Check if the docker socket exists."
+msgstr ""
+
+#: src/language/generate.ts:20
+msgid "Check if the nginx access log path exists"
 msgstr ""
 msgstr ""
-"HTTPS が有効かどうかを確認します。localhost 以外で HTTP を使用すると安全ではなく、Passkeys "
-"やクリップボード機能の使用が妨げられます。"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:26
-msgid "Check if the nginx.conf includes the conf.d directory."
+#: src/language/generate.ts:44
+#, fuzzy
+msgid "Check if the nginx configuration directory exists"
+msgstr "nginx.conf に conf.d ディレクトリが含まれているか確認します。"
+
+#: src/language/generate.ts:9
+#, fuzzy
+msgid "Check if the nginx configuration entry file exists"
 msgstr "nginx.conf に conf.d ディレクトリが含まれているか確認します。"
 msgstr "nginx.conf に conf.d ディレクトリが含まれているか確認します。"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:16
-msgid "Check if the nginx.conf includes the sites-enabled directory."
+#: src/language/generate.ts:32
+msgid "Check if the nginx error log path exists"
+msgstr ""
+
+#: src/language/generate.ts:24
+msgid "Check if the nginx PID path exists"
+msgstr ""
+
+#: src/language/generate.ts:43
+#, fuzzy
+msgid "Check if the nginx.conf includes the conf.d directory"
+msgstr "nginx.conf に conf.d ディレクトリが含まれているか確認します。"
+
+#: src/language/generate.ts:23
+#, fuzzy
+msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "nginx.conf に sites-enabled ディレクトリが含まれているか確認します。"
 msgstr "nginx.conf に sites-enabled ディレクトリが含まれているか確認します。"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:21
-msgid "Check if the nginx.conf includes the streams-enabled directory."
+#: src/language/generate.ts:5
+#, fuzzy
+msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "nginx.conf に streams-enabled ディレクトリが含まれているか確認します。"
 msgstr "nginx.conf に streams-enabled ディレクトリが含まれているか確認します。"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:6
+#: src/language/generate.ts:30
+#, fuzzy
 msgid ""
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
 "Check if the sites-available and sites-enabled directories are under the "
-"nginx configuration directory."
-msgstr "sites-available と sites-enabled ディレクトリが nginx の設定ディレクトリ配下にあるか確認します。"
+"nginx configuration directory"
+msgstr ""
+"sites-available と sites-enabled ディレクトリが nginx の設定ディレクトリ配下"
+"にあるか確認します。"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:11
+#: src/language/generate.ts:38
+#, fuzzy
 msgid ""
 msgid ""
-"Check if the streams-available and streams-enabled directories are under "
-"the nginx configuration directory."
-msgstr "streams-available と streams-enabled ディレクトリが nginx の設定ディレクトリ配下にあるか確認します。"
+"Check if the streams-available and streams-enabled directories are under the "
+"nginx configuration directory"
+msgstr ""
+"streams-available と streams-enabled ディレクトリが nginx の設定ディレクトリ"
+"配下にあるか確認します。"
 
 
 #: src/constants/errors/crypto.ts:3
 #: src/constants/errors/crypto.ts:3
 msgid "Cipher text is too short"
 msgid "Cipher text is too short"
@@ -762,7 +799,8 @@ msgstr "正常に削除しました"
 #: src/components/SystemRestore/SystemRestoreContent.vue:194
 #: src/components/SystemRestore/SystemRestoreContent.vue:194
 #: src/components/SystemRestore/SystemRestoreContent.vue:271
 #: src/components/SystemRestore/SystemRestoreContent.vue:271
 msgid "Click or drag backup file to this area to upload"
 msgid "Click or drag backup file to this area to upload"
-msgstr "この領域にバックアップファイルをクリックまたはドラッグしてアップロードします"
+msgstr ""
+"この領域にバックアップファイルをクリックまたはドラッグしてアップロードします"
 
 
 #: src/views/preference/components/AuthSettings/TOTP.vue:110
 #: src/views/preference/components/AuthSettings/TOTP.vue:110
 msgid "Click to copy"
 msgid "Click to copy"
@@ -836,6 +874,14 @@ msgstr "電流と比較してください"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "圧縮レベル、1は最も低く、9は最高です"
 msgstr "圧縮レベル、1は最も低く、9は最高です"
 
 
+#: src/constants/errors/self_check.ts:17
+msgid "Config directory not exist"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:18
+msgid "Config entry file not exist"
+msgstr ""
+
 #: src/constants/errors/backup.ts:14
 #: src/constants/errors/backup.ts:14
 #, fuzzy
 #, fuzzy
 msgid "Config path is empty"
 msgid "Config path is empty"
@@ -932,7 +978,8 @@ msgstr "CPU使用率"
 
 
 #: src/views/dashboard/components/ResourceUsageCard.vue:38
 #: src/views/dashboard/components/ResourceUsageCard.vue:38
 msgid "CPU usage is relatively high, consider optimizing Nginx configuration"
 msgid "CPU usage is relatively high, consider optimizing Nginx configuration"
-msgstr "CPU使用率が比較的高いため、Nginxの設定を最適化することを検討してください"
+msgstr ""
+"CPU使用率が比較的高いため、Nginxの設定を最適化することを検討してください"
 
 
 #: src/views/dashboard/ServerAnalytic.vue:195
 #: src/views/dashboard/ServerAnalytic.vue:195
 msgid "CPU:"
 msgid "CPU:"
@@ -963,7 +1010,9 @@ msgstr "フォルダーを作成"
 msgid ""
 msgid ""
 "Create system backups including Nginx configuration and Nginx UI settings. "
 "Create system backups including Nginx configuration and Nginx UI settings. "
 "Backup files will be automatically downloaded to your computer."
 "Backup files will be automatically downloaded to your computer."
-msgstr "Nginx 設定と Nginx UI 設定を含むシステムバックアップを作成します。バックアップファイルは自動的にコンピュータにダウンロードされます。"
+msgstr ""
+"Nginx 設定と Nginx UI 設定を含むシステムバックアップを作成します。バックアッ"
+"プファイルは自動的にコンピュータにダウンロードされます。"
 
 
 #: src/views/environments/group/columns.ts:31
 #: src/views/environments/group/columns.ts:31
 #: src/views/notification/notificationColumns.tsx:59
 #: src/views/notification/notificationColumns.tsx:59
@@ -1067,13 +1116,11 @@ msgstr "証明書"
 msgid "Delete Permanently"
 msgid "Delete Permanently"
 msgstr "完全に削除"
 msgstr "完全に削除"
 
 
-#: src/components/Notification/notifications.ts:69
-#: src/language/constants.ts:50
+#: src/components/Notification/notifications.ts:69 src/language/constants.ts:50
 msgid "Delete Remote Site Error"
 msgid "Delete Remote Site Error"
 msgstr "リモートサイト削除エラー"
 msgstr "リモートサイト削除エラー"
 
 
-#: src/components/Notification/notifications.ts:73
-#: src/language/constants.ts:49
+#: src/components/Notification/notifications.ts:73 src/language/constants.ts:49
 msgid "Delete Remote Site Success"
 msgid "Delete Remote Site Success"
 msgstr "リモートサイトの削除に成功しました"
 msgstr "リモートサイトの削除に成功しました"
 
 
@@ -1310,11 +1357,11 @@ msgstr ""
 msgid "Docker client not initialized"
 msgid "Docker client not initialized"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:30
-msgid "Docker Socket"
+#: src/language/generate.ts:10
+msgid "Docker socket exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:15
+#: src/constants/errors/self_check.ts:16
 msgid "Docker socket not exist"
 msgid "Docker socket not exist"
 msgstr ""
 msgstr ""
 
 
@@ -1539,6 +1586,10 @@ msgstr ""
 msgid "Error Log"
 msgid "Error Log"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:22
+msgid "Error log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/routes/modules/nginx_log.ts:24
 #: src/routes/modules/nginx_log.ts:24
 msgid "Error Logs"
 msgid "Error Logs"
@@ -1626,7 +1677,7 @@ msgstr ""
 msgid "Failed to copy Nginx config directory: {0}"
 msgid "Failed to copy Nginx config directory: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:9
+#: src/constants/errors/self_check.ts:10
 msgid "Failed to create backup"
 msgid "Failed to create backup"
 msgstr ""
 msgstr ""
 
 
@@ -1706,7 +1757,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgid "Failed to delete certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid "Failed to delete certificate from database: %{error}"
 msgid "Failed to delete certificate from database: %{error}"
 msgstr ""
 msgstr ""
 
 
@@ -1806,7 +1857,7 @@ msgstr ""
 msgid "Failed to open zip file: {0}"
 msgid "Failed to open zip file: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:4
+#: src/constants/errors/self_check.ts:5
 msgid "Failed to parse nginx.conf"
 msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -1826,7 +1877,7 @@ msgstr ""
 msgid "Failed to read hash info file: {0}"
 msgid "Failed to read hash info file: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:3
+#: src/constants/errors/self_check.ts:4
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -2023,7 +2074,7 @@ msgstr ""
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:10
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:13
 msgid "HTTPS Protocol"
 msgid "HTTPS Protocol"
 msgstr ""
 msgstr ""
 
 
@@ -2037,8 +2088,8 @@ msgstr ""
 
 
 #: src/views/nginx_log/NginxLogList.vue:81
 #: src/views/nginx_log/NginxLogList.vue:81
 msgid ""
 msgid ""
-"If logs are not indexed, please check if the log file is under the "
-"directory in Nginx.LogDirWhiteList."
+"If logs are not indexed, please check if the log file is under the directory "
+"in Nginx.LogDirWhiteList."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/AuthSettings.vue:145
 #: src/views/preference/tabs/AuthSettings.vue:145
@@ -2365,8 +2416,11 @@ msgstr ""
 msgid "Log"
 msgid "Log"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:23
-msgid "Log file %{log_path} is not a regular file. "
+#: src/language/generate.ts:34
+msgid ""
+"Log file %{log_path} is not a regular file. If you are using nginx-ui in "
+"docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
+"nginx-log.html for more information."
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
@@ -2391,12 +2445,12 @@ msgstr ""
 
 
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 msgid ""
 msgid ""
-"Logrotate, by default, is enabled in most mainstream Linux distributions "
-"for users who install Nginx UI on the host machine, so you don't need to "
-"modify the parameters on this page. For users who install Nginx UI using "
-"Docker containers, you can manually enable this option. The crontab task "
-"scheduler of Nginx UI will execute the logrotate command at the interval "
-"you set in minutes."
+"Logrotate, by default, is enabled in most mainstream Linux distributions for "
+"users who install Nginx UI on the host machine, so you don't need to modify "
+"the parameters on this page. For users who install Nginx UI using Docker "
+"containers, you can manually enable this option. The crontab task scheduler "
+"of Nginx UI will execute the logrotate command at the interval you set in "
+"minutes."
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/components/SiteStatusSegmented.vue:138
 #: src/views/site/components/SiteStatusSegmented.vue:138
@@ -2647,35 +2701,27 @@ msgstr ""
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:25
-msgid "Nginx Conf Include Conf.d"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:15
-msgid "Nginx Conf Include Sites Enabled"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:20
-msgid "Nginx Conf Include Streams Enabled"
+#: src/language/generate.ts:16
+msgid "Nginx access log path exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:5
+#: src/constants/errors/self_check.ts:6
 msgid "Nginx conf no http block"
 msgid "Nginx conf no http block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:7
+#: src/constants/errors/self_check.ts:8
 msgid "Nginx conf no stream block"
 msgid "Nginx conf no stream block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:14
+#: src/constants/errors/self_check.ts:15
 msgid "Nginx conf not include conf.d directory"
 msgid "Nginx conf not include conf.d directory"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:6
+#: src/constants/errors/self_check.ts:7
 msgid "Nginx conf not include sites-enabled"
 msgid "Nginx conf not include sites-enabled"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:8
+#: src/constants/errors/self_check.ts:9
 msgid "Nginx conf not include stream-enabled"
 msgid "Nginx conf not include stream-enabled"
 msgstr ""
 msgstr ""
 
 
@@ -2683,6 +2729,16 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgid "Nginx config directory is not set"
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:31
+#, fuzzy
+msgid "Nginx configuration directory exists"
+msgstr "設定"
+
+#: src/language/generate.ts:15
+#, fuzzy
+msgid "Nginx configuration entry file exists"
+msgstr "設定"
+
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 msgid "Nginx configuration has been restored"
 msgid "Nginx configuration has been restored"
 msgstr ""
 msgstr ""
@@ -2719,6 +2775,10 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:21
+msgid "Nginx error log path exists"
+msgstr ""
+
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/composables/useNginxPerformance.ts:43
 #: src/composables/useNginxPerformance.ts:43
 #: src/views/dashboard/NginxDashBoard.vue:112
 #: src/views/dashboard/NginxDashBoard.vue:112
@@ -2752,6 +2812,10 @@ msgstr ""
 msgid "Nginx PID Path"
 msgid "Nginx PID Path"
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:45
+msgid "Nginx PID path exists"
+msgstr ""
+
 #: src/views/preference/tabs/NginxSettings.vue:40
 #: src/views/preference/tabs/NginxSettings.vue:40
 msgid "Nginx Reload Command"
 msgid "Nginx Reload Command"
 msgstr ""
 msgstr ""
@@ -2804,10 +2868,25 @@ msgstr ""
 
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 msgid ""
 msgid ""
-"Nginx UI configuration has been restored and will restart automatically in "
-"a few seconds."
+"Nginx UI configuration has been restored and will restart automatically in a "
+"few seconds."
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:8
+#, fuzzy
+msgid "Nginx.conf includes conf.d directory"
+msgstr "nginx.conf に conf.d ディレクトリが含まれているか確認します。"
+
+#: src/language/generate.ts:42
+#, fuzzy
+msgid "Nginx.conf includes sites-enabled directory"
+msgstr "nginx.conf に sites-enabled ディレクトリが含まれているか確認します。"
+
+#: src/language/generate.ts:39
+#, fuzzy
+msgid "Nginx.conf includes streams-enabled directory"
+msgstr "nginx.conf に streams-enabled ディレクトリが含まれているか確認します。"
+
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
@@ -3132,6 +3211,10 @@ msgstr "正常に作成されました"
 msgid "Performing core upgrade"
 msgid "Performing core upgrade"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:19
+msgid "PID path not exist"
+msgstr ""
+
 #: src/constants/errors/crypto.ts:2
 #: src/constants/errors/crypto.ts:2
 msgid "Plain text is empty"
 msgid "Plain text is empty"
 msgstr ""
 msgstr ""
@@ -3180,8 +3263,8 @@ msgstr ""
 #: src/components/Notification/notifications.ts:166
 #: src/components/Notification/notifications.ts:166
 #: src/language/constants.ts:59
 #: src/language/constants.ts:59
 msgid ""
 msgid ""
-"Please generate new recovery codes in the preferences immediately to "
-"prevent lockout."
+"Please generate new recovery codes in the preferences immediately to prevent "
+"lockout."
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
@@ -3223,7 +3306,8 @@ msgid "Please log in."
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/DNSCredential.vue:62
 #: src/views/certificate/DNSCredential.vue:62
-msgid "Please note that the unit of time configurations below are all in seconds."
+msgid ""
+"Please note that the unit of time configurations below are all in seconds."
 msgstr ""
 msgstr ""
 
 
 #: src/views/install/components/InstallView.vue:100
 #: src/views/install/components/InstallView.vue:100
@@ -3328,7 +3412,7 @@ msgstr ""
 msgid "Receive"
 msgid "Receive"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:24
+#: src/components/SelfCheck/SelfCheck.vue:23
 msgid "Recheck"
 msgid "Recheck"
 msgstr ""
 msgstr ""
 
 
@@ -3759,6 +3843,10 @@ msgstr ""
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:20
+msgid "Sbin path not exist"
+msgstr ""
+
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
@@ -3788,7 +3876,7 @@ msgstr ""
 msgid "Selector"
 msgid "Selector"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:16 src/routes/modules/system.ts:19
+#: src/components/SelfCheck/SelfCheck.vue:15 src/routes/modules/system.ts:19
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
@@ -3854,14 +3942,14 @@ msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/views/install/components/InstallView.vue:64
 #: src/views/install/components/InstallView.vue:64
@@ -3905,20 +3993,20 @@ msgstr ""
 msgid "Site not found"
 msgid "Site not found"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:5
+#: src/language/generate.ts:7
 #, fuzzy
 #, fuzzy
-msgid "Sites Directory"
+msgid "Sites directory exists"
 msgstr "ディレクトリ"
 msgstr "ディレクトリ"
 
 
 #: src/routes/modules/sites.ts:19
 #: src/routes/modules/sites.ts:19
 msgid "Sites List"
 msgid "Sites List"
 msgstr "サイト一覧"
 msgstr "サイト一覧"
 
 
-#: src/constants/errors/self_check.ts:10
+#: src/constants/errors/self_check.ts:11
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:11
+#: src/constants/errors/self_check.ts:12
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
 msgstr ""
 msgstr ""
 
 
@@ -4019,16 +4107,16 @@ msgstr ""
 msgid "Stream not found"
 msgid "Stream not found"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:10
+#: src/language/generate.ts:41
 #, fuzzy
 #, fuzzy
-msgid "Streams Directory"
+msgid "Streams directory exists"
 msgstr "ディレクトリ"
 msgstr "ディレクトリ"
 
 
-#: src/constants/errors/self_check.ts:12
+#: src/constants/errors/self_check.ts:13
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:13
+#: src/constants/errors/self_check.ts:14
 msgid "Streams-enabled directory not exist"
 msgid "Streams-enabled directory not exist"
 msgstr ""
 msgstr ""
 
 
@@ -4040,12 +4128,12 @@ msgstr ""
 msgid "Success"
 msgid "Success"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/frontend/websocket.ts:6
+#: src/components/SelfCheck/tasks/frontend/websocket.ts:13
 msgid ""
 msgid ""
 "Support communication with the backend through the WebSocket protocol. If "
 "Support communication with the backend through the WebSocket protocol. If "
-"your Nginx UI is being used via an Nginx reverse proxy, please refer to "
-"this link to write the corresponding configuration file: "
-"https://nginxui.com/guide/nginx-proxy-example.html"
+"your Nginx UI is being used via an Nginx reverse proxy, please refer to this "
+"link to write the corresponding configuration file: https://nginxui.com/"
+"guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
@@ -4156,6 +4244,10 @@ msgstr "システム"
 msgid "System restored successfully."
 msgid "System restored successfully."
 msgstr "正常に作成されました"
 msgstr "正常に作成されました"
 
 
+#: src/constants/errors/self_check.ts:3
+msgid "Task is not fixable"
+msgstr ""
+
 #: src/constants/errors/self_check.ts:2
 #: src/constants/errors/self_check.ts:2
 msgid "Task not found"
 msgid "Task not found"
 msgstr ""
 msgstr ""
@@ -4200,8 +4292,7 @@ msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:2
 #: src/constants/errors/nginx_log.ts:2
 msgid ""
 msgid ""
-"The log path is not under the paths in "
-"settings.NginxSettings.LogDirWhiteList"
+"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList"
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:23
 #: src/views/preference/tabs/OpenAISettings.vue:23
@@ -4212,7 +4303,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:90
 #: src/views/preference/tabs/OpenAISettings.vue:90
-msgid "The model used for code completion, if not set, the chat model will be used."
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/NodeSettings.vue:18
 #: src/views/preference/tabs/NodeSettings.vue:18
@@ -4309,7 +4401,8 @@ msgid "This field should not be empty"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/form_errors.ts:6
 #: src/constants/form_errors.ts:6
-msgid "This field should only contain letters, unicode characters, numbers, and -_."
+msgid ""
+"This field should only contain letters, unicode characters, numbers, and -_."
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/NginxDashBoard.vue:153
 #: src/views/dashboard/NginxDashBoard.vue:153
@@ -4349,7 +4442,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/environments/list/BatchUpgrader.vue:182
 #: src/views/environments/list/BatchUpgrader.vue:182
-msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
+msgid ""
+"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/AuthSettings.vue:124
 #: src/views/preference/tabs/AuthSettings.vue:124
@@ -4393,8 +4487,8 @@ msgstr ""
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 msgid ""
 msgid ""
 "To make sure the certification auto-renewal can work normally, we need to "
 "To make sure the certification auto-renewal can work normally, we need to "
-"add a location which can proxy the request from authority to backend, and "
-"we need to save this file and reload the Nginx. Are you sure you want to "
+"add a location which can proxy the request from authority to backend, and we "
+"need to save this file and reload the Nginx. Are you sure you want to "
 "continue?"
 "continue?"
 msgstr ""
 msgstr ""
 
 
@@ -4474,7 +4568,7 @@ msgstr ""
 msgid "Unknown"
 msgid "Unknown"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:44
+#: src/components/SelfCheck/SelfCheck.vue:43
 msgid "Unknown issue"
 msgid "Unknown issue"
 msgstr ""
 msgstr ""
 
 
@@ -4641,8 +4735,8 @@ msgstr ""
 
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 msgid ""
 msgid ""
-"We will remove the HTTPChallenge configuration from this file and reload "
-"the Nginx. Are you sure you want to continue?"
+"We will remove the HTTPChallenge configuration from this file and reload the "
+"Nginx. Are you sure you want to continue?"
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/AuthSettings.vue:97
 #: src/views/preference/tabs/AuthSettings.vue:97
@@ -4725,8 +4819,8 @@ msgstr "はい"
 
 
 #: src/views/terminal/Terminal.vue:135
 #: src/views/terminal/Terminal.vue:135
 msgid ""
 msgid ""
-"You are accessing this terminal over an insecure HTTP connection on a "
-"non-localhost domain. This may expose sensitive information."
+"You are accessing this terminal over an insecure HTTP connection on a non-"
+"localhost domain. This may expose sensitive information."
 msgstr ""
 msgstr ""
 
 
 #: src/views/system/Upgrade.vue:202
 #: src/views/system/Upgrade.vue:202
@@ -4752,7 +4846,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
-msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
+msgid ""
+"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
@@ -4773,3 +4868,12 @@ msgstr ""
 #: src/views/preference/components/AuthSettings/Passkey.vue:75
 #: src/views/preference/components/AuthSettings/Passkey.vue:75
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr ""
 msgstr ""
+
+#~ msgid ""
+#~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
+#~ "Docker Image, please make sure the docker socket is mounted like this: `-"
+#~ "v /var/run/docker.sock:/var/run/docker.sock`."
+#~ msgstr ""
+#~ "/var/run/docker.sock が存在するか確認してください。Nginx UI 公式 Docker イ"
+#~ "メージを使用している場合は、Docker ソケットが次のようにマウントされている"
+#~ "ことを確認してください: `-v /var/run/docker.sock:/var/run/docker.sock`."

+ 269 - 143
app/src/language/ko_KR/app.po

@@ -5,57 +5,60 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Project-Id-Version: PACKAGE VERSION\n"
 "PO-Revision-Date: 2025-04-07 12:21+0000\n"
 "PO-Revision-Date: 2025-04-07 12:21+0000\n"
 "Last-Translator: jkh0kr <admin@jkh.kr>\n"
 "Last-Translator: jkh0kr <admin@jkh.kr>\n"
-"Language-Team: Korean "
-"<https://weblate.nginxui.com/projects/nginx-ui/frontend/ko/>\n"
+"Language-Team: Korean <https://weblate.nginxui.com/projects/nginx-ui/"
+"frontend/ko/>\n"
 "Language: ko_KR\n"
 "Language: ko_KR\n"
 "MIME-Version: 1.0\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Weblate 5.10.4\n"
 "X-Generator: Weblate 5.10.4\n"
 
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:47
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
-msgstr "[Nginx UI] ACME 사용자: %{name}, 이메일: %{email}, CA 디렉터리: %{caDir}"
+msgstr ""
+"[Nginx UI] ACME 사용자: %{name}, 이메일: %{email}, CA 디렉터리: %{caDir}"
 
 
-#: src/language/generate.ts:13
+#: src/language/generate.ts:49
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr "[Nginx UI] 현재 인증서를 나중에 취소하기 위해 백업 중"
 msgstr "[Nginx UI] 현재 인증서를 나중에 취소하기 위해 백업 중"
 
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:6
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "성공적으로 제거됨"
 msgstr "성공적으로 제거됨"
 
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:37
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Nginx가 성공적으로 재시작됨"
 msgstr "Nginx가 성공적으로 재시작됨"
 
 
-#: src/language/generate.ts:29
-msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
-msgstr "[Nginx UI] 서버에 인증서가 사용되었습니다, 서버 TLS 인증서 다시 불러오는 중"
+#: src/language/generate.ts:13
+msgid ""
+"[Nginx UI] Certificate was used for server, reloading server TLS certificate"
+msgstr ""
+"[Nginx UI] 서버에 인증서가 사용되었습니다, 서버 TLS 인증서 다시 불러오는 중"
 
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:35
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "클라이언트 생성은 CA 서버와의 통신을 용이하게 합니다"
 msgstr "클라이언트 생성은 CA 서버와의 통신을 용이하게 합니다"
 
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:36
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "환경 변수 설정"
 msgstr "환경 변수 설정"
 
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:28
 msgid "[Nginx UI] Finished"
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] 완료됨"
 msgstr "[Nginx UI] 완료됨"
 
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:25
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Issued certificate successfully"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "성공적으로 활성화됨"
 msgstr "성공적으로 활성화됨"
 
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:50
 msgid "[Nginx UI] Obtaining certificate"
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] 인증서 획득 중"
 msgstr "[Nginx UI] 인증서 획득 중"
 
 
@@ -63,44 +66,44 @@ msgstr "[Nginx UI] 인증서 획득 중"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] 인증서 해지 준비 중"
 msgstr "[Nginx UI] 인증서 해지 준비 중"
 
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:46
 msgid "[Nginx UI] Preparing lego configurations"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] 레고 구성 준비 중"
 msgstr "[Nginx UI] 레고 구성 준비 중"
 
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:19
 msgid "[Nginx UI] Reloading nginx"
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] Nginx 다시 로드 중"
 msgstr "[Nginx UI] Nginx 다시 로드 중"
 
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:14
 msgid "[Nginx UI] Revocation completed"
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] 해지 완료"
 msgstr "[Nginx UI] 해지 완료"
 
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Revoking certificate"
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] 인증서 취소 중"
 msgstr "[Nginx UI] 인증서 취소 중"
 
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:29
 msgid "[Nginx UI] Revoking old certificate"
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] 이전 인증서 취소 중"
 msgstr "[Nginx UI] 이전 인증서 취소 중"
 
 
-#: src/language/generate.ts:20
+#: src/language/generate.ts:18
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] DNS01 챌린지 공급자 설정 중"
 msgstr "[Nginx UI] DNS01 챌린지 공급자 설정 중"
 
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:27
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Setting environment variables"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "환경 변수 설정"
 msgstr "환경 변수 설정"
 
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] HTTP01 챌린지 공급자 설정 중"
 msgstr "[Nginx UI] HTTP01 챌린지 공급자 설정 중"
 
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:12
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] 인증서 개인 키를 디스크에 기록 중"
 msgstr "[Nginx UI] 인증서 개인 키를 디스크에 기록 중"
 
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:51
 msgid "[Nginx UI] Writing certificate to disk"
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] 인증서를 디스크에 작성 중"
 msgstr "[Nginx UI] 인증서를 디스크에 작성 중"
 
 
@@ -121,6 +124,10 @@ msgstr "대하여"
 msgid "Access Log"
 msgid "Access Log"
 msgstr "접근 로그"
 msgstr "접근 로그"
 
 
+#: src/constants/errors/self_check.ts:21
+msgid "Access log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
 #: src/routes/modules/nginx_log.ts:17
 msgid "Access Logs"
 msgid "Access Logs"
@@ -331,7 +338,7 @@ msgstr "ChatGPT에게 도움 요청"
 msgid "Assistant"
 msgid "Assistant"
 msgstr "어시스턴트"
 msgstr "어시스턴트"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:31
+#: src/components/SelfCheck/SelfCheck.vue:30
 msgid "Attempt to fix"
 msgid "Attempt to fix"
 msgstr "수정 시도"
 msgstr "수정 시도"
 
 
@@ -534,8 +541,8 @@ msgid ""
 "Calculated based on worker_processes * worker_connections. Actual "
 "Calculated based on worker_processes * worker_connections. Actual "
 "performance depends on hardware, configuration, and workload"
 "performance depends on hardware, configuration, and workload"
 msgstr ""
 msgstr ""
-"worker_processes * worker_connections를 기반으로 계산되었습니다. 실제 성능은 하드웨어, 구성 및 작업량에 "
-"따라 달라집니다"
+"worker_processes * worker_connections를 기반으로 계산되었습니다. 실제 성능은 "
+"하드웨어, 구성 및 작업량에 따라 달라집니다"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/ChatGPT/ChatGPT.vue:356
 #: src/components/NgxConfigEditor/NgxServer.vue:54
 #: src/components/NgxConfigEditor/NgxServer.vue:54
@@ -611,7 +618,7 @@ msgstr "인증서 만료됨"
 msgid "Certificate Expiring Soon"
 msgid "Certificate Expiring Soon"
 msgstr "인증서 만료 임박"
 msgstr "인증서 만료 임박"
 
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:33
 #, fuzzy
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgid "Certificate not found: %{error}"
 msgstr "인증서 디코드 오류"
 msgstr "인증서 디코드 오류"
@@ -638,7 +645,7 @@ msgstr "인증서 갱신 간격"
 msgid "Certificate renewed successfully"
 msgid "Certificate renewed successfully"
 msgstr "성공적으로 제거됨"
 msgstr "성공적으로 제거됨"
 
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:11
 #, fuzzy
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgid "Certificate revoked successfully"
 msgstr "인증서가 성공적으로 제거되었습니다"
 msgstr "인증서가 성공적으로 제거되었습니다"
@@ -700,46 +707,73 @@ msgstr "다시 확인"
 msgid "Check again"
 msgid "Check again"
 msgstr "다시 확인"
 msgstr "다시 확인"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:31
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:14
+#, fuzzy
 msgid ""
 msgid ""
-"Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
-"Docker Image, please make sure the docker socket is mounted like this: `-v "
-"/var/run/docker.sock:/var/run/docker.sock`."
+"Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
+"prevents using Passkeys and clipboard features"
 msgstr ""
 msgstr ""
-"/var/run/docker.sock이 존재하는지 확인하세요. Nginx UI 공식 Docker 이미지를 사용 중이라면 Docker "
-"소켓이 다음과 같이 마운트되었는지 확인하세요: `-v /var/run/docker.sock:/var/run/docker.sock`."
+"HTTPS가 활성화되었는지 확인하세요. localhost 외부에서 HTTP를 사용하는 것은 안"
+"전하지 않으며 Passkeys 및 클립보드 기능 사용을 방해요."
 
 
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:11
-msgid ""
-"Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
-"prevents using Passkeys and clipboard features."
+#: src/language/generate.ts:40
+msgid "Check if the docker socket exists."
+msgstr ""
+
+#: src/language/generate.ts:20
+msgid "Check if the nginx access log path exists"
 msgstr ""
 msgstr ""
-"HTTPS가 활성화되었는지 확인하세요. localhost 외부에서 HTTP를 사용하는 것은 안전하지 않으며 Passkeys 및 클립보드 "
-"기능 사용을 방해요."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:26
-msgid "Check if the nginx.conf includes the conf.d directory."
+#: src/language/generate.ts:44
+#, fuzzy
+msgid "Check if the nginx configuration directory exists"
 msgstr "nginx.conf에 conf.d 디렉터리가 포함되어 있는지 확인하세요."
 msgstr "nginx.conf에 conf.d 디렉터리가 포함되어 있는지 확인하세요."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:16
-msgid "Check if the nginx.conf includes the sites-enabled directory."
+#: src/language/generate.ts:9
+#, fuzzy
+msgid "Check if the nginx configuration entry file exists"
+msgstr "nginx.conf에 conf.d 디렉터리가 포함되어 있는지 확인하세요."
+
+#: src/language/generate.ts:32
+msgid "Check if the nginx error log path exists"
+msgstr ""
+
+#: src/language/generate.ts:24
+msgid "Check if the nginx PID path exists"
+msgstr ""
+
+#: src/language/generate.ts:43
+#, fuzzy
+msgid "Check if the nginx.conf includes the conf.d directory"
+msgstr "nginx.conf에 conf.d 디렉터리가 포함되어 있는지 확인하세요."
+
+#: src/language/generate.ts:23
+#, fuzzy
+msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "nginx.conf에 sites-enabled 디렉터리가 포함되어 있는지 확인하세요."
 msgstr "nginx.conf에 sites-enabled 디렉터리가 포함되어 있는지 확인하세요."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:21
-msgid "Check if the nginx.conf includes the streams-enabled directory."
+#: src/language/generate.ts:5
+#, fuzzy
+msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "nginx.conf에 streams-enabled 디렉터리가 포함되어 있는지 확인하세요."
 msgstr "nginx.conf에 streams-enabled 디렉터리가 포함되어 있는지 확인하세요."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:6
+#: src/language/generate.ts:30
+#, fuzzy
 msgid ""
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
 "Check if the sites-available and sites-enabled directories are under the "
-"nginx configuration directory."
-msgstr "sites-available 및 sites-enabled 디렉터리가 nginx 구성 디렉터리 아래에 있는지 확인합니다."
+"nginx configuration directory"
+msgstr ""
+"sites-available 및 sites-enabled 디렉터리가 nginx 구성 디렉터리 아래에 있는"
+"지 확인합니다."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:11
+#: src/language/generate.ts:38
+#, fuzzy
 msgid ""
 msgid ""
-"Check if the streams-available and streams-enabled directories are under "
-"the nginx configuration directory."
-msgstr "streams-available 및 streams-enabled 디렉터리가 nginx 구성 디렉터리 아래에 있는지 확인합니다."
+"Check if the streams-available and streams-enabled directories are under the "
+"nginx configuration directory"
+msgstr ""
+"streams-available 및 streams-enabled 디렉터리가 nginx 구성 디렉터리 아래에 있"
+"는지 확인합니다."
 
 
 #: src/constants/errors/crypto.ts:3
 #: src/constants/errors/crypto.ts:3
 msgid "Cipher text is too short"
 msgid "Cipher text is too short"
@@ -837,6 +871,16 @@ msgstr "현재와 ​​비교하십시오"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "압축 수준, 1은 가장 낮고 9는 가장 높습니다"
 msgstr "압축 수준, 1은 가장 낮고 9는 가장 높습니다"
 
 
+#: src/constants/errors/self_check.ts:17
+#, fuzzy
+msgid "Config directory not exist"
+msgstr "Nginx 구성 오류름"
+
+#: src/constants/errors/self_check.ts:18
+#, fuzzy
+msgid "Config entry file not exist"
+msgstr "Nginx 구성 오류름"
+
 #: src/constants/errors/backup.ts:14
 #: src/constants/errors/backup.ts:14
 #, fuzzy
 #, fuzzy
 msgid "Config path is empty"
 msgid "Config path is empty"
@@ -965,7 +1009,9 @@ msgstr "다른 것 생성하기"
 msgid ""
 msgid ""
 "Create system backups including Nginx configuration and Nginx UI settings. "
 "Create system backups including Nginx configuration and Nginx UI settings. "
 "Backup files will be automatically downloaded to your computer."
 "Backup files will be automatically downloaded to your computer."
-msgstr "Nginx 구성 및 Nginx UI 설정을 포함한 시스템 백업을 생성합니다. 백업 파일은 자동으로 컴퓨터에 다운로드됩니다."
+msgstr ""
+"Nginx 구성 및 Nginx UI 설정을 포함한 시스템 백업을 생성합니다. 백업 파일은 자"
+"동으로 컴퓨터에 다운로드됩니다."
 
 
 #: src/views/environments/group/columns.ts:31
 #: src/views/environments/group/columns.ts:31
 #: src/views/notification/notificationColumns.tsx:59
 #: src/views/notification/notificationColumns.tsx:59
@@ -1331,11 +1377,11 @@ msgstr "이 업스트림을 제거하시겠습니까?"
 msgid "Docker client not initialized"
 msgid "Docker client not initialized"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:30
-msgid "Docker Socket"
+#: src/language/generate.ts:10
+msgid "Docker socket exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:15
+#: src/constants/errors/self_check.ts:16
 msgid "Docker socket not exist"
 msgid "Docker socket not exist"
 msgstr ""
 msgstr ""
 
 
@@ -1353,7 +1399,8 @@ msgstr "도메인"
 
 
 #: src/views/certificate/CertificateEditor.vue:112
 #: src/views/certificate/CertificateEditor.vue:112
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
-msgstr "도메인 목록이 비어 있습니다. %{config}에 대한 자동 인증서를 다시 열어보세요"
+msgstr ""
+"도메인 목록이 비어 있습니다. %{config}에 대한 자동 인증서를 다시 열어보세요"
 
 
 #: src/language/constants.ts:27
 #: src/language/constants.ts:27
 msgid "Download latest release error"
 msgid "Download latest release error"
@@ -1581,6 +1628,10 @@ msgstr ""
 msgid "Error Log"
 msgid "Error Log"
 msgstr "오류 로그"
 msgstr "오류 로그"
 
 
+#: src/constants/errors/self_check.ts:22
+msgid "Error log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/routes/modules/nginx_log.ts:24
 #: src/routes/modules/nginx_log.ts:24
 msgid "Error Logs"
 msgid "Error Logs"
@@ -1674,7 +1725,7 @@ msgstr ""
 msgid "Failed to copy Nginx config directory: {0}"
 msgid "Failed to copy Nginx config directory: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:9
+#: src/constants/errors/self_check.ts:10
 #, fuzzy
 #, fuzzy
 msgid "Failed to create backup"
 msgid "Failed to create backup"
 msgstr "%{msg} 활성화 실패"
 msgstr "%{msg} 활성화 실패"
@@ -1771,7 +1822,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgid "Failed to delete certificate"
 msgstr "인증서 획득 실패"
 msgstr "인증서 획득 실패"
 
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 #, fuzzy
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "인증서 획득 실패"
 msgstr "인증서 획득 실패"
@@ -1890,7 +1941,7 @@ msgstr "%{msg} 활성화 실패"
 msgid "Failed to open zip file: {0}"
 msgid "Failed to open zip file: {0}"
 msgstr "%{msg} 활성화 실패"
 msgstr "%{msg} 활성화 실패"
 
 
-#: src/constants/errors/self_check.ts:4
+#: src/constants/errors/self_check.ts:5
 msgid "Failed to parse nginx.conf"
 msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -1912,7 +1963,7 @@ msgstr "%{msg} 활성화 실패"
 msgid "Failed to read hash info file: {0}"
 msgid "Failed to read hash info file: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:3
+#: src/constants/errors/self_check.ts:4
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -2123,7 +2174,7 @@ msgstr "HTTP 검증 포트"
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr "HTTP01"
 msgstr "HTTP01"
 
 
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:10
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:13
 msgid "HTTPS Protocol"
 msgid "HTTPS Protocol"
 msgstr ""
 msgstr ""
 
 
@@ -2137,8 +2188,8 @@ msgstr ""
 
 
 #: src/views/nginx_log/NginxLogList.vue:81
 #: src/views/nginx_log/NginxLogList.vue:81
 msgid ""
 msgid ""
-"If logs are not indexed, please check if the log file is under the "
-"directory in Nginx.LogDirWhiteList."
+"If logs are not indexed, please check if the log file is under the directory "
+"in Nginx.LogDirWhiteList."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/AuthSettings.vue:145
 #: src/views/preference/tabs/AuthSettings.vue:145
@@ -2486,8 +2537,11 @@ msgstr "위치들"
 msgid "Log"
 msgid "Log"
 msgstr "로그인"
 msgstr "로그인"
 
 
-#: src/language/generate.ts:23
-msgid "Log file %{log_path} is not a regular file. "
+#: src/language/generate.ts:34
+msgid ""
+"Log file %{log_path} is not a regular file. If you are using nginx-ui in "
+"docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
+"nginx-log.html for more information."
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
@@ -2512,16 +2566,18 @@ msgstr "로그관리"
 
 
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 msgid ""
 msgid ""
-"Logrotate, by default, is enabled in most mainstream Linux distributions "
-"for users who install Nginx UI on the host machine, so you don't need to "
-"modify the parameters on this page. For users who install Nginx UI using "
-"Docker containers, you can manually enable this option. The crontab task "
-"scheduler of Nginx UI will execute the logrotate command at the interval "
-"you set in minutes."
-msgstr ""
-"Logrotate는 대부분의 주류 리눅스 배포판에서Nginx UI를 호스트 머신에 설치하는 사용자에게 기본적으로 활성화되어 있으므로이 "
-"페이지의 매개 변수를 수정할 필요가 없습니다. 도커 컨테이너를 사용하여 Nginx UI를 설치하는사용자는이 옵션을 수동으로 활성화할 수 "
-"있습니다. Nginx UI의 크론탭 작업 스케줄러는설정한 간격 (분 단위)에서 logrotate 명령을 실행합니다."
+"Logrotate, by default, is enabled in most mainstream Linux distributions for "
+"users who install Nginx UI on the host machine, so you don't need to modify "
+"the parameters on this page. For users who install Nginx UI using Docker "
+"containers, you can manually enable this option. The crontab task scheduler "
+"of Nginx UI will execute the logrotate command at the interval you set in "
+"minutes."
+msgstr ""
+"Logrotate는 대부분의 주류 리눅스 배포판에서Nginx UI를 호스트 머신에 설치하는 "
+"사용자에게 기본적으로 활성화되어 있으므로이 페이지의 매개 변수를 수정할 필요"
+"가 없습니다. 도커 컨테이너를 사용하여 Nginx UI를 설치하는사용자는이 옵션을 수"
+"동으로 활성화할 수 있습니다. Nginx UI의 크론탭 작업 스케줄러는설정한 간격 "
+"(분 단위)에서 logrotate 명령을 실행합니다."
 
 
 #: src/views/site/components/SiteStatusSegmented.vue:138
 #: src/views/site/components/SiteStatusSegmented.vue:138
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:68
 #: src/views/site/site_edit/components/SiteEditor/SiteEditor.vue:68
@@ -2545,8 +2601,8 @@ msgid ""
 "Make sure you have configured a reverse proxy for .well-known directory to "
 "Make sure you have configured a reverse proxy for .well-known directory to "
 "HTTPChallengePort before obtaining the certificate."
 "HTTPChallengePort before obtaining the certificate."
 msgstr ""
 msgstr ""
-"인증서를 획득하기 전에 .well-known 디렉토리에 대한역방향 프록시를 HTTPChallengePort(기본값: 9180)로 "
-"구성했는지 확인하세요."
+"인증서를 획득하기 전에 .well-known 디렉토리에 대한역방향 프록시를 "
+"HTTPChallengePort(기본값: 9180)로 구성했는지 확인하세요."
 
 
 #: src/routes/modules/config.ts:10 src/views/config/ConfigEditor.vue:115
 #: src/routes/modules/config.ts:10 src/views/config/ConfigEditor.vue:115
 #: src/views/config/ConfigEditor.vue:166 src/views/config/ConfigList.vue:72
 #: src/views/config/ConfigEditor.vue:166 src/views/config/ConfigList.vue:72
@@ -2787,37 +2843,29 @@ msgstr "Nginx"
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr "Nginx 접근 로그 경로"
 msgstr "Nginx 접근 로그 경로"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:25
+#: src/language/generate.ts:16
 #, fuzzy
 #, fuzzy
-msgid "Nginx Conf Include Conf.d"
-msgstr "터미널 시작 명령"
-
-#: src/components/SelfCheck/tasks/backend/index.ts:15
-msgid "Nginx Conf Include Sites Enabled"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:20
-msgid "Nginx Conf Include Streams Enabled"
-msgstr ""
+msgid "Nginx access log path exists"
+msgstr "Nginx 접근 로그 경로"
 
 
-#: src/constants/errors/self_check.ts:5
+#: src/constants/errors/self_check.ts:6
 msgid "Nginx conf no http block"
 msgid "Nginx conf no http block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:7
+#: src/constants/errors/self_check.ts:8
 msgid "Nginx conf no stream block"
 msgid "Nginx conf no stream block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:14
+#: src/constants/errors/self_check.ts:15
 #, fuzzy
 #, fuzzy
 msgid "Nginx conf not include conf.d directory"
 msgid "Nginx conf not include conf.d directory"
 msgstr "터미널 시작 명령"
 msgstr "터미널 시작 명령"
 
 
-#: src/constants/errors/self_check.ts:6
+#: src/constants/errors/self_check.ts:7
 msgid "Nginx conf not include sites-enabled"
 msgid "Nginx conf not include sites-enabled"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:8
+#: src/constants/errors/self_check.ts:9
 msgid "Nginx conf not include stream-enabled"
 msgid "Nginx conf not include stream-enabled"
 msgstr ""
 msgstr ""
 
 
@@ -2826,6 +2874,16 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgid "Nginx config directory is not set"
 msgstr "Nginx 구성 오류름"
 msgstr "Nginx 구성 오류름"
 
 
+#: src/language/generate.ts:31
+#, fuzzy
+msgid "Nginx configuration directory exists"
+msgstr "Nginx 구성 오류름"
+
+#: src/language/generate.ts:15
+#, fuzzy
+msgid "Nginx configuration entry file exists"
+msgstr "Nginx 구성 오류름"
+
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #, fuzzy
 #, fuzzy
 msgid "Nginx configuration has been restored"
 msgid "Nginx configuration has been restored"
@@ -2865,6 +2923,11 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr "Nginx 오류 로그 경로"
 msgstr "Nginx 오류 로그 경로"
 
 
+#: src/language/generate.ts:21
+#, fuzzy
+msgid "Nginx error log path exists"
+msgstr "Nginx 오류 로그 경로"
+
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/composables/useNginxPerformance.ts:43
 #: src/composables/useNginxPerformance.ts:43
 #: src/views/dashboard/NginxDashBoard.vue:112
 #: src/views/dashboard/NginxDashBoard.vue:112
@@ -2899,6 +2962,11 @@ msgstr ""
 msgid "Nginx PID Path"
 msgid "Nginx PID Path"
 msgstr "Nginx 오류 로그 경로"
 msgstr "Nginx 오류 로그 경로"
 
 
+#: src/language/generate.ts:45
+#, fuzzy
+msgid "Nginx PID path exists"
+msgstr "Nginx 오류 로그 경로"
+
 #: src/views/preference/tabs/NginxSettings.vue:40
 #: src/views/preference/tabs/NginxSettings.vue:40
 msgid "Nginx Reload Command"
 msgid "Nginx Reload Command"
 msgstr ""
 msgstr ""
@@ -2959,10 +3027,25 @@ msgstr "Nginx 구성 오류름"
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
-"Nginx UI configuration has been restored and will restart automatically in "
-"a few seconds."
+"Nginx UI configuration has been restored and will restart automatically in a "
+"few seconds."
 msgstr "Nginx 구성 오류름"
 msgstr "Nginx 구성 오류름"
 
 
+#: src/language/generate.ts:8
+#, fuzzy
+msgid "Nginx.conf includes conf.d directory"
+msgstr "터미널 시작 명령"
+
+#: src/language/generate.ts:42
+#, fuzzy
+msgid "Nginx.conf includes sites-enabled directory"
+msgstr "nginx.conf에 sites-enabled 디렉터리가 포함되어 있는지 확인하세요."
+
+#: src/language/generate.ts:39
+#, fuzzy
+msgid "Nginx.conf includes streams-enabled directory"
+msgstr "nginx.conf에 streams-enabled 디렉터리가 포함되어 있는지 확인하세요."
+
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
@@ -3299,6 +3382,10 @@ msgstr "성공적으로 비활성화됨"
 msgid "Performing core upgrade"
 msgid "Performing core upgrade"
 msgstr "핵심 업그레이드 수행 중"
 msgstr "핵심 업그레이드 수행 중"
 
 
+#: src/constants/errors/self_check.ts:19
+msgid "PID path not exist"
+msgstr ""
+
 #: src/constants/errors/crypto.ts:2
 #: src/constants/errors/crypto.ts:2
 msgid "Plain text is empty"
 msgid "Plain text is empty"
 msgstr ""
 msgstr ""
@@ -3342,13 +3429,15 @@ msgstr ""
 msgid ""
 msgid ""
 "Please first add credentials in Certification > DNS Credentials, and then "
 "Please first add credentials in Certification > DNS Credentials, and then "
 "select one of the credentialsbelow to request the API of the DNS provider."
 "select one of the credentialsbelow to request the API of the DNS provider."
-msgstr "먼저 인증서 > DNS 자격 증명에 자격 증명을 추가한 다음,DNS 제공자의 API를 요청하려면 아래 자격 증명 중 하나를 선택해주세요."
+msgstr ""
+"먼저 인증서 > DNS 자격 증명에 자격 증명을 추가한 다음,DNS 제공자의 API를 요청"
+"하려면 아래 자격 증명 중 하나를 선택해주세요."
 
 
 #: src/components/Notification/notifications.ts:166
 #: src/components/Notification/notifications.ts:166
 #: src/language/constants.ts:59
 #: src/language/constants.ts:59
 msgid ""
 msgid ""
-"Please generate new recovery codes in the preferences immediately to "
-"prevent lockout."
+"Please generate new recovery codes in the preferences immediately to prevent "
+"lockout."
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
@@ -3393,7 +3482,8 @@ msgid "Please log in."
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/DNSCredential.vue:62
 #: src/views/certificate/DNSCredential.vue:62
-msgid "Please note that the unit of time configurations below are all in seconds."
+msgid ""
+"Please note that the unit of time configurations below are all in seconds."
 msgstr "아래의 시간 설정 단위는 모두 초 단위임을 유의해주세요."
 msgstr "아래의 시간 설정 단위는 모두 초 단위임을 유의해주세요."
 
 
 #: src/views/install/components/InstallView.vue:100
 #: src/views/install/components/InstallView.vue:100
@@ -3505,7 +3595,7 @@ msgstr "읽기"
 msgid "Receive"
 msgid "Receive"
 msgstr "수신"
 msgstr "수신"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:24
+#: src/components/SelfCheck/SelfCheck.vue:23
 msgid "Recheck"
 msgid "Recheck"
 msgstr ""
 msgstr ""
 
 
@@ -3989,6 +4079,10 @@ msgstr "성공적으로 저장됨"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "성공적으로 저장됨"
 msgstr "성공적으로 저장됨"
 
 
+#: src/constants/errors/self_check.ts:20
+msgid "Sbin path not exist"
+msgstr ""
+
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
@@ -4018,7 +4112,7 @@ msgstr ""
 msgid "Selector"
 msgid "Selector"
 msgstr "선택"
 msgstr "선택"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:16 src/routes/modules/system.ts:19
+#: src/components/SelfCheck/SelfCheck.vue:15 src/routes/modules/system.ts:19
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
@@ -4087,14 +4181,14 @@ msgstr "HTTP01 공급자 설정"
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/views/install/components/InstallView.vue:64
 #: src/views/install/components/InstallView.vue:64
@@ -4142,20 +4236,20 @@ msgstr "사이트 로그"
 msgid "Site not found"
 msgid "Site not found"
 msgstr "파일을 찾을 수 없음"
 msgstr "파일을 찾을 수 없음"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:5
+#: src/language/generate.ts:7
 #, fuzzy
 #, fuzzy
-msgid "Sites Directory"
+msgid "Sites directory exists"
 msgstr "디렉토리"
 msgstr "디렉토리"
 
 
 #: src/routes/modules/sites.ts:19
 #: src/routes/modules/sites.ts:19
 msgid "Sites List"
 msgid "Sites List"
 msgstr "사이트 목록"
 msgstr "사이트 목록"
 
 
-#: src/constants/errors/self_check.ts:10
+#: src/constants/errors/self_check.ts:11
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:11
+#: src/constants/errors/self_check.ts:12
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
 msgstr ""
 msgstr ""
 
 
@@ -4267,16 +4361,16 @@ msgstr "비활성화됨"
 msgid "Stream not found"
 msgid "Stream not found"
 msgstr "파일을 찾을 수 없음"
 msgstr "파일을 찾을 수 없음"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:10
+#: src/language/generate.ts:41
 #, fuzzy
 #, fuzzy
-msgid "Streams Directory"
+msgid "Streams directory exists"
 msgstr "디렉토리"
 msgstr "디렉토리"
 
 
-#: src/constants/errors/self_check.ts:12
+#: src/constants/errors/self_check.ts:13
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:13
+#: src/constants/errors/self_check.ts:14
 #, fuzzy
 #, fuzzy
 msgid "Streams-enabled directory not exist"
 msgid "Streams-enabled directory not exist"
 msgstr "디렉토리"
 msgstr "디렉토리"
@@ -4289,12 +4383,12 @@ msgstr ""
 msgid "Success"
 msgid "Success"
 msgstr "성공"
 msgstr "성공"
 
 
-#: src/components/SelfCheck/tasks/frontend/websocket.ts:6
+#: src/components/SelfCheck/tasks/frontend/websocket.ts:13
 msgid ""
 msgid ""
 "Support communication with the backend through the WebSocket protocol. If "
 "Support communication with the backend through the WebSocket protocol. If "
-"your Nginx UI is being used via an Nginx reverse proxy, please refer to "
-"this link to write the corresponding configuration file: "
-"https://nginxui.com/guide/nginx-proxy-example.html"
+"your Nginx UI is being used via an Nginx reverse proxy, please refer to this "
+"link to write the corresponding configuration file: https://nginxui.com/"
+"guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
@@ -4415,6 +4509,11 @@ msgstr "시스템"
 msgid "System restored successfully."
 msgid "System restored successfully."
 msgstr "Nginx가 성공적으로 재시작됨"
 msgstr "Nginx가 성공적으로 재시작됨"
 
 
+#: src/constants/errors/self_check.ts:3
+#, fuzzy
+msgid "Task is not fixable"
+msgstr "토큰이 유효하지 않습니다"
+
 #: src/constants/errors/self_check.ts:2
 #: src/constants/errors/self_check.ts:2
 #, fuzzy
 #, fuzzy
 msgid "Task not found"
 msgid "Task not found"
@@ -4439,7 +4538,9 @@ msgid ""
 "The certificate for the domain will be checked 30 minutes, and will be "
 "The certificate for the domain will be checked 30 minutes, and will be "
 "renewed if it has been more than 1 week or the period you set in settings "
 "renewed if it has been more than 1 week or the period you set in settings "
 "since it was last issued."
 "since it was last issued."
-msgstr "도메인의 인증서는 매 시간 확인되며,마지막으로 발급된 지 1개월이 경과한 경우 갱신됩니다."
+msgstr ""
+"도메인의 인증서는 매 시간 확인되며,마지막으로 발급된 지 1개월이 경과한 경우 "
+"갱신됩니다."
 
 
 #: src/views/install/components/InstallForm.vue:48
 #: src/views/install/components/InstallForm.vue:48
 msgid "The filename cannot contain the following characters: %{c}"
 msgid "The filename cannot contain the following characters: %{c}"
@@ -4462,8 +4563,7 @@ msgstr "Certificate Status"
 
 
 #: src/constants/errors/nginx_log.ts:2
 #: src/constants/errors/nginx_log.ts:2
 msgid ""
 msgid ""
-"The log path is not under the paths in "
-"settings.NginxSettings.LogDirWhiteList"
+"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList"
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:23
 #: src/views/preference/tabs/OpenAISettings.vue:23
@@ -4474,7 +4574,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:90
 #: src/views/preference/tabs/OpenAISettings.vue:90
-msgid "The model used for code completion, if not set, the chat model will be used."
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/NodeSettings.vue:18
 #: src/views/preference/tabs/NodeSettings.vue:18
@@ -4580,7 +4681,8 @@ msgid "This field should not be empty"
 msgstr "이 필드는 비워둘 수 없습니다"
 msgstr "이 필드는 비워둘 수 없습니다"
 
 
 #: src/constants/form_errors.ts:6
 #: src/constants/form_errors.ts:6
-msgid "This field should only contain letters, unicode characters, numbers, and -_."
+msgid ""
+"This field should only contain letters, unicode characters, numbers, and -_."
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/NginxDashBoard.vue:153
 #: src/views/dashboard/NginxDashBoard.vue:153
@@ -4620,7 +4722,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/environments/list/BatchUpgrader.vue:182
 #: src/views/environments/list/BatchUpgrader.vue:182
-msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
+msgid ""
+"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/AuthSettings.vue:124
 #: src/views/preference/tabs/AuthSettings.vue:124
@@ -4664,12 +4767,13 @@ msgstr ""
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 msgid ""
 msgid ""
 "To make sure the certification auto-renewal can work normally, we need to "
 "To make sure the certification auto-renewal can work normally, we need to "
-"add a location which can proxy the request from authority to backend, and "
-"we need to save this file and reload the Nginx. Are you sure you want to "
+"add a location which can proxy the request from authority to backend, and we "
+"need to save this file and reload the Nginx. Are you sure you want to "
 "continue?"
 "continue?"
 msgstr ""
 msgstr ""
-"인증서 자동 갱신이 정상적으로 작동하도록 하려면,권한에서 백엔드로 요청을 프록시할 수 있는 위치를 추가해야 하며,이 파일을 저장하고 "
-"Nginx를 다시로드해야 합니다.계속하시겠습니까?"
+"인증서 자동 갱신이 정상적으로 작동하도록 하려면,권한에서 백엔드로 요청을 프록"
+"시할 수 있는 위치를 추가해야 하며,이 파일을 저장하고 Nginx를 다시로드해야 합"
+"니다.계속하시겠습니까?"
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:36
 #: src/views/preference/tabs/OpenAISettings.vue:36
 msgid ""
 msgid ""
@@ -4749,7 +4853,7 @@ msgstr "유형"
 msgid "Unknown"
 msgid "Unknown"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:44
+#: src/components/SelfCheck/SelfCheck.vue:43
 msgid "Unknown issue"
 msgid "Unknown issue"
 msgstr ""
 msgstr ""
 
 
@@ -4921,13 +5025,17 @@ msgstr ""
 msgid ""
 msgid ""
 "We will add one or more TXT records to the DNS records of your domain for "
 "We will add one or more TXT records to the DNS records of your domain for "
 "ownership verification."
 "ownership verification."
-msgstr "도메인 소유권 검증을 위해 도메인의 DNS레코드에 하나 이상의 TXT 레코드를 추가할 것입니다."
+msgstr ""
+"도메인 소유권 검증을 위해 도메인의 DNS레코드에 하나 이상의 TXT 레코드를 추가"
+"할 것입니다."
 
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 msgid ""
 msgid ""
-"We will remove the HTTPChallenge configuration from this file and reload "
-"the Nginx. Are you sure you want to continue?"
-msgstr "이 파일에서 HTTPChallenge 구성을 제거하고 Nginx를 다시 로드할 예정입니다. 계속하시겠습니까?"
+"We will remove the HTTPChallenge configuration from this file and reload the "
+"Nginx. Are you sure you want to continue?"
+msgstr ""
+"이 파일에서 HTTPChallenge 구성을 제거하고 Nginx를 다시 로드할 예정입니다. 계"
+"속하시겠습니까?"
 
 
 #: src/views/preference/tabs/AuthSettings.vue:97
 #: src/views/preference/tabs/AuthSettings.vue:97
 msgid "Webauthn"
 msgid "Webauthn"
@@ -5010,8 +5118,8 @@ msgstr "예"
 
 
 #: src/views/terminal/Terminal.vue:135
 #: src/views/terminal/Terminal.vue:135
 msgid ""
 msgid ""
-"You are accessing this terminal over an insecure HTTP connection on a "
-"non-localhost domain. This may expose sensitive information."
+"You are accessing this terminal over an insecure HTTP connection on a non-"
+"localhost domain. This may expose sensitive information."
 msgstr ""
 msgstr ""
 
 
 #: src/views/system/Upgrade.vue:202
 #: src/views/system/Upgrade.vue:202
@@ -5037,7 +5145,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
-msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
+msgid ""
+"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
@@ -5059,6 +5168,19 @@ msgstr ""
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr ""
 msgstr ""
 
 
+#~ msgid ""
+#~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
+#~ "Docker Image, please make sure the docker socket is mounted like this: `-"
+#~ "v /var/run/docker.sock:/var/run/docker.sock`."
+#~ msgstr ""
+#~ "/var/run/docker.sock이 존재하는지 확인하세요. Nginx UI 공식 Docker 이미지"
+#~ "를 사용 중이라면 Docker 소켓이 다음과 같이 마운트되었는지 확인하세요: `-"
+#~ "v /var/run/docker.sock:/var/run/docker.sock`."
+
+#, fuzzy
+#~ msgid "Nginx Conf Include Conf.d"
+#~ msgstr "터미널 시작 명령"
+
 #, fuzzy
 #, fuzzy
 #~ msgid "Format error %{msg}"
 #~ msgid "Format error %{msg}"
 #~ msgstr "형식 오류 %{msg}"
 #~ msgstr "형식 오류 %{msg}"
@@ -5122,11 +5244,14 @@ msgstr ""
 #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함"
 #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함"
 
 
 #, fuzzy
 #, fuzzy
-#~ msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}"
+#~ msgid ""
+#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: "
+#~ "%{resp}"
 #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함"
 #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함"
 
 
 #, fuzzy
 #, fuzzy
-#~ msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}"
+#~ msgid ""
+#~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}"
 #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함"
 #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함"
 
 
 #, fuzzy
 #, fuzzy
@@ -5140,7 +5265,8 @@ msgstr ""
 #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함"
 #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함"
 
 
 #, fuzzy
 #, fuzzy
-#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
+#~ msgid ""
+#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
 #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함"
 #~ msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함"
 
 
 #, fuzzy
 #, fuzzy

+ 142 - 74
app/src/language/messages.pot

@@ -2,43 +2,43 @@ msgid ""
 msgstr ""
 msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:47
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:13
+#: src/language/generate.ts:49
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:6
 msgid "[Nginx UI] Certificate renewed successfully"
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:37
 msgid "[Nginx UI] Certificate successfully revoked"
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:29
+#: src/language/generate.ts:13
 msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:35
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:36
 msgid "[Nginx UI] Environment variables cleaned"
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:28
 msgid "[Nginx UI] Finished"
 msgid "[Nginx UI] Finished"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:25
 msgid "[Nginx UI] Issued certificate successfully"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:50
 msgid "[Nginx UI] Obtaining certificate"
 msgid "[Nginx UI] Obtaining certificate"
 msgstr ""
 msgstr ""
 
 
@@ -46,43 +46,43 @@ msgstr ""
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:46
 msgid "[Nginx UI] Preparing lego configurations"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:19
 msgid "[Nginx UI] Reloading nginx"
 msgid "[Nginx UI] Reloading nginx"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:14
 msgid "[Nginx UI] Revocation completed"
 msgid "[Nginx UI] Revocation completed"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Revoking certificate"
 msgid "[Nginx UI] Revoking certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:29
 msgid "[Nginx UI] Revoking old certificate"
 msgid "[Nginx UI] Revoking old certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:20
+#: src/language/generate.ts:18
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:27
 msgid "[Nginx UI] Setting environment variables"
 msgid "[Nginx UI] Setting environment variables"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:12
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:51
 msgid "[Nginx UI] Writing certificate to disk"
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr ""
 msgstr ""
 
 
@@ -102,6 +102,10 @@ msgstr ""
 msgid "Access Log"
 msgid "Access Log"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:21
+msgid "Access log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
 #: src/routes/modules/nginx_log.ts:17
 msgid "Access Logs"
 msgid "Access Logs"
@@ -314,7 +318,7 @@ msgstr ""
 msgid "Assistant"
 msgid "Assistant"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:31
+#: src/components/SelfCheck/SelfCheck.vue:30
 msgid "Attempt to fix"
 msgid "Attempt to fix"
 msgstr ""
 msgstr ""
 
 
@@ -585,7 +589,7 @@ msgstr ""
 msgid "Certificate Expiring Soon"
 msgid "Certificate Expiring Soon"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:33
 msgid "Certificate not found: %{error}"
 msgid "Certificate not found: %{error}"
 msgstr ""
 msgstr ""
 
 
@@ -610,7 +614,7 @@ msgstr ""
 msgid "Certificate renewed successfully"
 msgid "Certificate renewed successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:11
 msgid "Certificate revoked successfully"
 msgid "Certificate revoked successfully"
 msgstr ""
 msgstr ""
 
 
@@ -668,32 +672,52 @@ msgstr ""
 msgid "Check again"
 msgid "Check again"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:31
-msgid "Check if /var/run/docker.sock exists. If you are using Nginx UI Official Docker Image, please make sure the docker socket is mounted like this: `-v /var/run/docker.sock:/var/run/docker.sock`."
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:14
+msgid "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and prevents using Passkeys and clipboard features"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:11
-msgid "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and prevents using Passkeys and clipboard features."
+#: src/language/generate.ts:40
+msgid "Check if the docker socket exists."
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:26
-msgid "Check if the nginx.conf includes the conf.d directory."
+#: src/language/generate.ts:20
+msgid "Check if the nginx access log path exists"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:16
-msgid "Check if the nginx.conf includes the sites-enabled directory."
+#: src/language/generate.ts:44
+msgid "Check if the nginx configuration directory exists"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:21
-msgid "Check if the nginx.conf includes the streams-enabled directory."
+#: src/language/generate.ts:9
+msgid "Check if the nginx configuration entry file exists"
+msgstr ""
+
+#: src/language/generate.ts:32
+msgid "Check if the nginx error log path exists"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:6
-msgid "Check if the sites-available and sites-enabled directories are under the nginx configuration directory."
+#: src/language/generate.ts:24
+msgid "Check if the nginx PID path exists"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:11
-msgid "Check if the streams-available and streams-enabled directories are under the nginx configuration directory."
+#: src/language/generate.ts:43
+msgid "Check if the nginx.conf includes the conf.d directory"
+msgstr ""
+
+#: src/language/generate.ts:23
+msgid "Check if the nginx.conf includes the sites-enabled directory"
+msgstr ""
+
+#: src/language/generate.ts:5
+msgid "Check if the nginx.conf includes the streams-enabled directory"
+msgstr ""
+
+#: src/language/generate.ts:30
+msgid "Check if the sites-available and sites-enabled directories are under the nginx configuration directory"
+msgstr ""
+
+#: src/language/generate.ts:38
+msgid "Check if the streams-available and streams-enabled directories are under the nginx configuration directory"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/crypto.ts:3
 #: src/constants/errors/crypto.ts:3
@@ -791,6 +815,14 @@ msgstr ""
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:17
+msgid "Config directory not exist"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:18
+msgid "Config entry file not exist"
+msgstr ""
+
 #: src/constants/errors/backup.ts:14
 #: src/constants/errors/backup.ts:14
 msgid "Config path is empty"
 msgid "Config path is empty"
 msgstr ""
 msgstr ""
@@ -1257,11 +1289,11 @@ msgstr ""
 msgid "Docker client not initialized"
 msgid "Docker client not initialized"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:30
-msgid "Docker Socket"
+#: src/language/generate.ts:10
+msgid "Docker socket exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:15
+#: src/constants/errors/self_check.ts:16
 msgid "Docker socket not exist"
 msgid "Docker socket not exist"
 msgstr ""
 msgstr ""
 
 
@@ -1489,6 +1521,10 @@ msgstr ""
 msgid "Error Log"
 msgid "Error Log"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:22
+msgid "Error log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/routes/modules/nginx_log.ts:24
 #: src/routes/modules/nginx_log.ts:24
 msgid "Error Logs"
 msgid "Error Logs"
@@ -1576,7 +1612,7 @@ msgstr ""
 msgid "Failed to copy Nginx config directory: {0}"
 msgid "Failed to copy Nginx config directory: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:9
+#: src/constants/errors/self_check.ts:10
 msgid "Failed to create backup"
 msgid "Failed to create backup"
 msgstr ""
 msgstr ""
 
 
@@ -1656,7 +1692,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgid "Failed to delete certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid "Failed to delete certificate from database: %{error}"
 msgid "Failed to delete certificate from database: %{error}"
 msgstr ""
 msgstr ""
 
 
@@ -1756,7 +1792,7 @@ msgstr ""
 msgid "Failed to open zip file: {0}"
 msgid "Failed to open zip file: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:4
+#: src/constants/errors/self_check.ts:5
 msgid "Failed to parse nginx.conf"
 msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -1776,7 +1812,7 @@ msgstr ""
 msgid "Failed to read hash info file: {0}"
 msgid "Failed to read hash info file: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:3
+#: src/constants/errors/self_check.ts:4
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -1970,7 +2006,7 @@ msgstr ""
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:10
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:13
 msgid "HTTPS Protocol"
 msgid "HTTPS Protocol"
 msgstr ""
 msgstr ""
 
 
@@ -2297,8 +2333,8 @@ msgstr ""
 msgid "Log"
 msgid "Log"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:23
-msgid "Log file %{log_path} is not a regular file. "
+#: src/language/generate.ts:34
+msgid "Log file %{log_path} is not a regular file. If you are using nginx-ui in docker container, please refer to https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information."
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/nginx_log.ts:39
 #: src/routes/modules/nginx_log.ts:39
@@ -2578,35 +2614,27 @@ msgstr ""
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:25
-msgid "Nginx Conf Include Conf.d"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:15
-msgid "Nginx Conf Include Sites Enabled"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:20
-msgid "Nginx Conf Include Streams Enabled"
+#: src/language/generate.ts:16
+msgid "Nginx access log path exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:5
+#: src/constants/errors/self_check.ts:6
 msgid "Nginx conf no http block"
 msgid "Nginx conf no http block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:7
+#: src/constants/errors/self_check.ts:8
 msgid "Nginx conf no stream block"
 msgid "Nginx conf no stream block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:14
+#: src/constants/errors/self_check.ts:15
 msgid "Nginx conf not include conf.d directory"
 msgid "Nginx conf not include conf.d directory"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:6
+#: src/constants/errors/self_check.ts:7
 msgid "Nginx conf not include sites-enabled"
 msgid "Nginx conf not include sites-enabled"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:8
+#: src/constants/errors/self_check.ts:9
 msgid "Nginx conf not include stream-enabled"
 msgid "Nginx conf not include stream-enabled"
 msgstr ""
 msgstr ""
 
 
@@ -2614,6 +2642,14 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgid "Nginx config directory is not set"
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:31
+msgid "Nginx configuration directory exists"
+msgstr ""
+
+#: src/language/generate.ts:15
+msgid "Nginx configuration entry file exists"
+msgstr ""
+
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 msgid "Nginx configuration has been restored"
 msgid "Nginx configuration has been restored"
 msgstr ""
 msgstr ""
@@ -2648,6 +2684,10 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:21
+msgid "Nginx error log path exists"
+msgstr ""
+
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/composables/useNginxPerformance.ts:43
 #: src/composables/useNginxPerformance.ts:43
 #: src/views/dashboard/NginxDashBoard.vue:112
 #: src/views/dashboard/NginxDashBoard.vue:112
@@ -2682,6 +2722,10 @@ msgstr ""
 msgid "Nginx PID Path"
 msgid "Nginx PID Path"
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:45
+msgid "Nginx PID path exists"
+msgstr ""
+
 #: src/views/preference/tabs/NginxSettings.vue:40
 #: src/views/preference/tabs/NginxSettings.vue:40
 msgid "Nginx Reload Command"
 msgid "Nginx Reload Command"
 msgstr ""
 msgstr ""
@@ -2738,6 +2782,18 @@ msgstr ""
 msgid "Nginx UI configuration has been restored and will restart automatically in a few seconds."
 msgid "Nginx UI configuration has been restored and will restart automatically in a few seconds."
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:8
+msgid "Nginx.conf includes conf.d directory"
+msgstr ""
+
+#: src/language/generate.ts:42
+msgid "Nginx.conf includes sites-enabled directory"
+msgstr ""
+
+#: src/language/generate.ts:39
+msgid "Nginx.conf includes streams-enabled directory"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
@@ -3055,6 +3111,10 @@ msgstr ""
 msgid "Performing core upgrade"
 msgid "Performing core upgrade"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:19
+msgid "PID path not exist"
+msgstr ""
+
 #: src/constants/errors/crypto.ts:2
 #: src/constants/errors/crypto.ts:2
 msgid "Plain text is empty"
 msgid "Plain text is empty"
 msgstr ""
 msgstr ""
@@ -3239,7 +3299,7 @@ msgstr ""
 msgid "Receive"
 msgid "Receive"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:24
+#: src/components/SelfCheck/SelfCheck.vue:23
 msgid "Recheck"
 msgid "Recheck"
 msgstr ""
 msgstr ""
 
 
@@ -3659,6 +3719,10 @@ msgstr ""
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:20
+msgid "Sbin path not exist"
+msgstr ""
+
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
@@ -3688,7 +3752,7 @@ msgstr ""
 msgid "Selector"
 msgid "Selector"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:16
+#: src/components/SelfCheck/SelfCheck.vue:15
 #: src/routes/modules/system.ts:19
 #: src/routes/modules/system.ts:19
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
@@ -3800,19 +3864,19 @@ msgstr ""
 msgid "Site not found"
 msgid "Site not found"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:5
-msgid "Sites Directory"
+#: src/language/generate.ts:7
+msgid "Sites directory exists"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/sites.ts:19
 #: src/routes/modules/sites.ts:19
 msgid "Sites List"
 msgid "Sites List"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:10
+#: src/constants/errors/self_check.ts:11
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:11
+#: src/constants/errors/self_check.ts:12
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
 msgstr ""
 msgstr ""
 
 
@@ -3915,15 +3979,15 @@ msgstr ""
 msgid "Stream not found"
 msgid "Stream not found"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:10
-msgid "Streams Directory"
+#: src/language/generate.ts:41
+msgid "Streams directory exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:12
+#: src/constants/errors/self_check.ts:13
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:13
+#: src/constants/errors/self_check.ts:14
 msgid "Streams-enabled directory not exist"
 msgid "Streams-enabled directory not exist"
 msgstr ""
 msgstr ""
 
 
@@ -3936,7 +4000,7 @@ msgstr ""
 msgid "Success"
 msgid "Success"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/frontend/websocket.ts:6
+#: src/components/SelfCheck/tasks/frontend/websocket.ts:13
 msgid "Support communication with the backend through the WebSocket protocol. If your Nginx UI is being used via an Nginx reverse proxy, please refer to this link to write the corresponding configuration file: https://nginxui.com/guide/nginx-proxy-example.html"
 msgid "Support communication with the backend through the WebSocket protocol. If your Nginx UI is being used via an Nginx reverse proxy, please refer to this link to write the corresponding configuration file: https://nginxui.com/guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
@@ -4048,6 +4112,10 @@ msgstr ""
 msgid "System restored successfully."
 msgid "System restored successfully."
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:3
+msgid "Task is not fixable"
+msgstr ""
+
 #: src/constants/errors/self_check.ts:2
 #: src/constants/errors/self_check.ts:2
 msgid "Task not found"
 msgid "Task not found"
 msgstr ""
 msgstr ""
@@ -4321,7 +4389,7 @@ msgstr ""
 msgid "Unknown"
 msgid "Unknown"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:44
+#: src/components/SelfCheck/SelfCheck.vue:43
 msgid "Unknown issue"
 msgid "Unknown issue"
 msgstr ""
 msgstr ""
 
 

+ 249 - 144
app/src/language/pt_PT/app.po

@@ -4,60 +4,62 @@ msgid ""
 msgstr ""
 msgstr ""
 "PO-Revision-Date: 2024-08-12 17:09+0000\n"
 "PO-Revision-Date: 2024-08-12 17:09+0000\n"
 "Last-Translator: Kleiser Sarifo <kleiser.sarifo@gmail.com>\n"
 "Last-Translator: Kleiser Sarifo <kleiser.sarifo@gmail.com>\n"
-"Language-Team: Portuguese (Portugal) "
-"<https://weblate.nginxui.com/projects/nginx-ui/frontend/pt_PT/>\n"
+"Language-Team: Portuguese (Portugal) <https://weblate.nginxui.com/projects/"
+"nginx-ui/frontend/pt_PT/>\n"
 "Language: pt_PT\n"
 "Language: pt_PT\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
 "X-Generator: Weblate 5.6.2\n"
 "X-Generator: Weblate 5.6.2\n"
 
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:47
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
-msgstr "[Nginx UI] Utilizador ACME: %{name}, Email: %{email}, Diretório CA: %{caDir}"
+msgstr ""
+"[Nginx UI] Utilizador ACME: %{name}, Email: %{email}, Diretório CA: %{caDir}"
 
 
-#: src/language/generate.ts:13
+#: src/language/generate.ts:49
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr ""
 msgstr ""
 "[Nginx UI] A fazer cópia de segurança do certificado atual para posterior "
 "[Nginx UI] A fazer cópia de segurança do certificado atual para posterior "
 "revogação"
 "revogação"
 
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:6
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "Limpo com sucesso"
 msgstr "Limpo com sucesso"
 
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:37
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Nginx reiniciado com sucesso"
 msgstr "Nginx reiniciado com sucesso"
 
 
-#: src/language/generate.ts:29
-msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
+#: src/language/generate.ts:13
+msgid ""
+"[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 msgstr ""
 "[Nginx UI] O certificado foi usado para o servidor, a recarregar o "
 "[Nginx UI] O certificado foi usado para o servidor, a recarregar o "
 "certificado TLS do servidor"
 "certificado TLS do servidor"
 
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:35
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "Criar cliente facilita comunicação com o servidor CA"
 msgstr "Criar cliente facilita comunicação com o servidor CA"
 
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:36
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "Variáveis de ambiente limpas"
 msgstr "Variáveis de ambiente limpas"
 
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:28
 msgid "[Nginx UI] Finished"
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] Concluído"
 msgstr "[Nginx UI] Concluído"
 
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:25
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Issued certificate successfully"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "Certificado emitido com sucesso"
 msgstr "Certificado emitido com sucesso"
 
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:50
 msgid "[Nginx UI] Obtaining certificate"
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] A obter certificado"
 msgstr "[Nginx UI] A obter certificado"
 
 
@@ -65,44 +67,44 @@ msgstr "[Nginx UI] A obter certificado"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] Preparando para a revogação do certificado"
 msgstr "[Nginx UI] Preparando para a revogação do certificado"
 
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:46
 msgid "[Nginx UI] Preparing lego configurations"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] A preparar configurações do lego"
 msgstr "[Nginx UI] A preparar configurações do lego"
 
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:19
 msgid "[Nginx UI] Reloading nginx"
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] A recarregar o nginx"
 msgstr "[Nginx UI] A recarregar o nginx"
 
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:14
 msgid "[Nginx UI] Revocation completed"
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] Revogação concluída"
 msgstr "[Nginx UI] Revogação concluída"
 
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Revoking certificate"
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] Revogar certificado"
 msgstr "[Nginx UI] Revogar certificado"
 
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:29
 msgid "[Nginx UI] Revoking old certificate"
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] Revogar certificado antigo"
 msgstr "[Nginx UI] Revogar certificado antigo"
 
 
-#: src/language/generate.ts:20
+#: src/language/generate.ts:18
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] A configurar o fornecedor de desafio DNS01"
 msgstr "[Nginx UI] A configurar o fornecedor de desafio DNS01"
 
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:27
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Setting environment variables"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "Definindo variáveis de ambiente"
 msgstr "Definindo variáveis de ambiente"
 
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] A configurar o fornecedor de desafio HTTP01"
 msgstr "[Nginx UI] A configurar o fornecedor de desafio HTTP01"
 
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:12
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] A gravar a chave privada do certificado no disco"
 msgstr "[Nginx UI] A gravar a chave privada do certificado no disco"
 
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:51
 msgid "[Nginx UI] Writing certificate to disk"
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] A escrever o certificado no disco"
 msgstr "[Nginx UI] A escrever o certificado no disco"
 
 
@@ -123,6 +125,10 @@ msgstr "Sobre"
 msgid "Access Log"
 msgid "Access Log"
 msgstr "Logs de Acesso"
 msgstr "Logs de Acesso"
 
 
+#: src/constants/errors/self_check.ts:21
+msgid "Access log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
 #: src/routes/modules/nginx_log.ts:17
 msgid "Access Logs"
 msgid "Access Logs"
@@ -210,8 +216,7 @@ msgstr "Modo Avançado"
 #: src/views/preference/components/AuthSettings/AddPasskey.vue:99
 #: src/views/preference/components/AuthSettings/AddPasskey.vue:99
 msgid "Afterwards, refresh this page and click add passkey again."
 msgid "Afterwards, refresh this page and click add passkey again."
 msgstr ""
 msgstr ""
-"Depois, atualize esta página e clique em adicionar chave de acesso "
-"novamente."
+"Depois, atualize esta página e clique em adicionar chave de acesso novamente."
 
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
@@ -341,7 +346,7 @@ msgstr "Pedir ajuda ao ChatGPT"
 msgid "Assistant"
 msgid "Assistant"
 msgstr "Assistente"
 msgstr "Assistente"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:31
+#: src/components/SelfCheck/SelfCheck.vue:30
 #, fuzzy
 #, fuzzy
 msgid "Attempt to fix"
 msgid "Attempt to fix"
 msgstr "Tentativas"
 msgstr "Tentativas"
@@ -627,7 +632,7 @@ msgstr "Certificado expirado"
 msgid "Certificate Expiring Soon"
 msgid "Certificate Expiring Soon"
 msgstr "Certificado a expirar em breve"
 msgstr "Certificado a expirar em breve"
 
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:33
 #, fuzzy
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgid "Certificate not found: %{error}"
 msgstr "Erro de descodificação do certificado"
 msgstr "Erro de descodificação do certificado"
@@ -654,7 +659,7 @@ msgstr "Intervalo de Renovação do Certificado"
 msgid "Certificate renewed successfully"
 msgid "Certificate renewed successfully"
 msgstr "Limpo com sucesso"
 msgstr "Limpo com sucesso"
 
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:11
 #, fuzzy
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgid "Certificate revoked successfully"
 msgstr "Certificado removido com sucesso"
 msgstr "Certificado removido com sucesso"
@@ -714,48 +719,70 @@ msgstr "Verificar de novo"
 msgid "Check again"
 msgid "Check again"
 msgstr "Verificar de novo"
 msgstr "Verificar de novo"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:31
-msgid ""
-"Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
-"Docker Image, please make sure the docker socket is mounted like this: `-v "
-"/var/run/docker.sock:/var/run/docker.sock`."
-msgstr ""
-"Verifique se /var/run/docker.sock existe. Se estiver a utilizar a imagem "
-"Docker oficial do Nginx UI, certifique-se de que o socket Docker está "
-"montado da seguinte forma: `-v /var/run/docker.sock:/var/run/docker.sock`."
-
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:11
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:14
+#, fuzzy
 msgid ""
 msgid ""
 "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
 "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
-"prevents using Passkeys and clipboard features."
+"prevents using Passkeys and clipboard features"
 msgstr ""
 msgstr ""
 "Verifique se o HTTPS está ativado. Usar HTTP fora do localhost é inseguro e "
 "Verifique se o HTTPS está ativado. Usar HTTP fora do localhost é inseguro e "
 "impede a utilização de Passkeys e funcionalidades da área de transferência."
 "impede a utilização de Passkeys e funcionalidades da área de transferência."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:26
-msgid "Check if the nginx.conf includes the conf.d directory."
+#: src/language/generate.ts:40
+msgid "Check if the docker socket exists."
+msgstr ""
+
+#: src/language/generate.ts:20
+msgid "Check if the nginx access log path exists"
+msgstr ""
+
+#: src/language/generate.ts:44
+#, fuzzy
+msgid "Check if the nginx configuration directory exists"
+msgstr "Verifique se o nginx.conf inclui o diretório conf.d."
+
+#: src/language/generate.ts:9
+#, fuzzy
+msgid "Check if the nginx configuration entry file exists"
+msgstr "Verifique se o nginx.conf inclui o diretório conf.d."
+
+#: src/language/generate.ts:32
+msgid "Check if the nginx error log path exists"
+msgstr ""
+
+#: src/language/generate.ts:24
+msgid "Check if the nginx PID path exists"
+msgstr ""
+
+#: src/language/generate.ts:43
+#, fuzzy
+msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr "Verifique se o nginx.conf inclui o diretório conf.d."
 msgstr "Verifique se o nginx.conf inclui o diretório conf.d."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:16
-msgid "Check if the nginx.conf includes the sites-enabled directory."
+#: src/language/generate.ts:23
+#, fuzzy
+msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "Verifique se o nginx.conf inclui o diretório sites-enabled."
 msgstr "Verifique se o nginx.conf inclui o diretório sites-enabled."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:21
-msgid "Check if the nginx.conf includes the streams-enabled directory."
+#: src/language/generate.ts:5
+#, fuzzy
+msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "Verifique se o nginx.conf inclui o diretório streams-enabled."
 msgstr "Verifique se o nginx.conf inclui o diretório streams-enabled."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:6
+#: src/language/generate.ts:30
+#, fuzzy
 msgid ""
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
 "Check if the sites-available and sites-enabled directories are under the "
-"nginx configuration directory."
+"nginx configuration directory"
 msgstr ""
 msgstr ""
 "Verifique se os diretórios sites-available e sites-enabled estão no "
 "Verifique se os diretórios sites-available e sites-enabled estão no "
 "diretório de configuração do nginx."
 "diretório de configuração do nginx."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:11
+#: src/language/generate.ts:38
+#, fuzzy
 msgid ""
 msgid ""
-"Check if the streams-available and streams-enabled directories are under "
-"the nginx configuration directory."
+"Check if the streams-available and streams-enabled directories are under the "
+"nginx configuration directory"
 msgstr ""
 msgstr ""
 "Verifique se os diretórios streams-available e streams-enabled estão no "
 "Verifique se os diretórios streams-available e streams-enabled estão no "
 "diretório de configuração do nginx."
 "diretório de configuração do nginx."
@@ -782,7 +809,8 @@ msgstr "Limpo com sucesso"
 #: src/components/SystemRestore/SystemRestoreContent.vue:194
 #: src/components/SystemRestore/SystemRestoreContent.vue:194
 #: src/components/SystemRestore/SystemRestoreContent.vue:271
 #: src/components/SystemRestore/SystemRestoreContent.vue:271
 msgid "Click or drag backup file to this area to upload"
 msgid "Click or drag backup file to this area to upload"
-msgstr "Clique ou arraste o arquivo de backup para esta área para fazer o upload"
+msgstr ""
+"Clique ou arraste o arquivo de backup para esta área para fazer o upload"
 
 
 #: src/views/preference/components/AuthSettings/TOTP.vue:110
 #: src/views/preference/components/AuthSettings/TOTP.vue:110
 msgid "Click to copy"
 msgid "Click to copy"
@@ -856,6 +884,14 @@ msgstr "Compare com a corrente"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "O nível de compressão, 1 é mais baixo, 9 é mais alto"
 msgstr "O nível de compressão, 1 é mais baixo, 9 é mais alto"
 
 
+#: src/constants/errors/self_check.ts:17
+msgid "Config directory not exist"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:18
+msgid "Config entry file not exist"
+msgstr ""
+
 #: src/constants/errors/backup.ts:14
 #: src/constants/errors/backup.ts:14
 #, fuzzy
 #, fuzzy
 msgid "Config path is empty"
 msgid "Config path is empty"
@@ -1359,11 +1395,11 @@ msgstr "Remover este upstream?"
 msgid "Docker client not initialized"
 msgid "Docker client not initialized"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:30
-msgid "Docker Socket"
+#: src/language/generate.ts:10
+msgid "Docker socket exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:15
+#: src/constants/errors/self_check.ts:16
 msgid "Docker socket not exist"
 msgid "Docker socket not exist"
 msgstr ""
 msgstr ""
 
 
@@ -1381,7 +1417,8 @@ msgstr "Domínio"
 
 
 #: src/views/certificate/CertificateEditor.vue:112
 #: src/views/certificate/CertificateEditor.vue:112
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
-msgstr "A lista de domínios está vazia, tente reabrir o Auto Cert para %{config}"
+msgstr ""
+"A lista de domínios está vazia, tente reabrir o Auto Cert para %{config}"
 
 
 #: src/language/constants.ts:27
 #: src/language/constants.ts:27
 msgid "Download latest release error"
 msgid "Download latest release error"
@@ -1605,6 +1642,10 @@ msgstr ""
 msgid "Error Log"
 msgid "Error Log"
 msgstr "Logs de Erro"
 msgstr "Logs de Erro"
 
 
+#: src/constants/errors/self_check.ts:22
+msgid "Error log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/routes/modules/nginx_log.ts:24
 #: src/routes/modules/nginx_log.ts:24
 msgid "Error Logs"
 msgid "Error Logs"
@@ -1694,7 +1735,7 @@ msgstr ""
 msgid "Failed to copy Nginx config directory: {0}"
 msgid "Failed to copy Nginx config directory: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:9
+#: src/constants/errors/self_check.ts:10
 #, fuzzy
 #, fuzzy
 msgid "Failed to create backup"
 msgid "Failed to create backup"
 msgstr "Falha ao Activar %{msg}"
 msgstr "Falha ao Activar %{msg}"
@@ -1781,7 +1822,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgid "Failed to delete certificate"
 msgstr "Obtenção de Certificado Falhou"
 msgstr "Obtenção de Certificado Falhou"
 
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 #, fuzzy
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "Obtenção de Certificado Falhou"
 msgstr "Obtenção de Certificado Falhou"
@@ -1897,7 +1938,7 @@ msgstr "Falha ao Activar %{msg}"
 msgid "Failed to open zip file: {0}"
 msgid "Failed to open zip file: {0}"
 msgstr "Falha ao Activar %{msg}"
 msgstr "Falha ao Activar %{msg}"
 
 
-#: src/constants/errors/self_check.ts:4
+#: src/constants/errors/self_check.ts:5
 msgid "Failed to parse nginx.conf"
 msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -1919,7 +1960,7 @@ msgstr "Falha ao Activar %{msg}"
 msgid "Failed to read hash info file: {0}"
 msgid "Failed to read hash info file: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:3
+#: src/constants/errors/self_check.ts:4
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -2127,7 +2168,7 @@ msgstr "Porta para HTTP Challenge"
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr "HTTP01"
 msgstr "HTTP01"
 
 
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:10
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:13
 #, fuzzy
 #, fuzzy
 msgid "HTTPS Protocol"
 msgid "HTTPS Protocol"
 msgstr "HTTP Port"
 msgstr "HTTP Port"
@@ -2142,8 +2183,8 @@ msgstr "Se for deixado em branco, será utilizado o diretório CA padrão."
 
 
 #: src/views/nginx_log/NginxLogList.vue:81
 #: src/views/nginx_log/NginxLogList.vue:81
 msgid ""
 msgid ""
-"If logs are not indexed, please check if the log file is under the "
-"directory in Nginx.LogDirWhiteList."
+"If logs are not indexed, please check if the log file is under the directory "
+"in Nginx.LogDirWhiteList."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/AuthSettings.vue:145
 #: src/views/preference/tabs/AuthSettings.vue:145
@@ -2152,8 +2193,8 @@ msgid ""
 "ban threshold minutes, the ip will be banned for a period of time."
 "ban threshold minutes, the ip will be banned for a period of time."
 msgstr ""
 msgstr ""
 "Se o número de tentativas de início de sessão falhadas de um IP atingir o "
 "Se o número de tentativas de início de sessão falhadas de um IP atingir o "
-"máximo de tentativas em minutos de limite de banimento, o IP será banido "
-"por um período de tempo."
+"máximo de tentativas em minutos de limite de banimento, o IP será banido por "
+"um período de tempo."
 
 
 #: src/components/AutoCertForm/AutoCertForm.vue:116
 #: src/components/AutoCertForm/AutoCertForm.vue:116
 #, fuzzy
 #, fuzzy
@@ -2487,8 +2528,11 @@ msgstr "Localizações"
 msgid "Log"
 msgid "Log"
 msgstr "Log"
 msgstr "Log"
 
 
-#: src/language/generate.ts:23
-msgid "Log file %{log_path} is not a regular file. "
+#: src/language/generate.ts:34
+msgid ""
+"Log file %{log_path} is not a regular file. If you are using nginx-ui in "
+"docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
+"nginx-log.html for more information."
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
@@ -2514,12 +2558,12 @@ msgstr "Logrotate"
 
 
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 msgid ""
 msgid ""
-"Logrotate, by default, is enabled in most mainstream Linux distributions "
-"for users who install Nginx UI on the host machine, so you don't need to "
-"modify the parameters on this page. For users who install Nginx UI using "
-"Docker containers, you can manually enable this option. The crontab task "
-"scheduler of Nginx UI will execute the logrotate command at the interval "
-"you set in minutes."
+"Logrotate, by default, is enabled in most mainstream Linux distributions for "
+"users who install Nginx UI on the host machine, so you don't need to modify "
+"the parameters on this page. For users who install Nginx UI using Docker "
+"containers, you can manually enable this option. The crontab task scheduler "
+"of Nginx UI will execute the logrotate command at the interval you set in "
+"minutes."
 msgstr ""
 msgstr ""
 "O Logrotate, por defeito, está activado na maioria das distribuições Linux "
 "O Logrotate, por defeito, está activado na maioria das distribuições Linux "
 "convencionais para utilizadores que instalam o Nginx UI na máquina host, "
 "convencionais para utilizadores que instalam o Nginx UI na máquina host, "
@@ -2780,35 +2824,28 @@ msgstr "Nginx"
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr "Caminho para Logs de Acesso do Nginx"
 msgstr "Caminho para Logs de Acesso do Nginx"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:25
-msgid "Nginx Conf Include Conf.d"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:15
-msgid "Nginx Conf Include Sites Enabled"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:20
-msgid "Nginx Conf Include Streams Enabled"
-msgstr ""
+#: src/language/generate.ts:16
+#, fuzzy
+msgid "Nginx access log path exists"
+msgstr "Caminho para Logs de Acesso do Nginx"
 
 
-#: src/constants/errors/self_check.ts:5
+#: src/constants/errors/self_check.ts:6
 msgid "Nginx conf no http block"
 msgid "Nginx conf no http block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:7
+#: src/constants/errors/self_check.ts:8
 msgid "Nginx conf no stream block"
 msgid "Nginx conf no stream block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:14
+#: src/constants/errors/self_check.ts:15
 msgid "Nginx conf not include conf.d directory"
 msgid "Nginx conf not include conf.d directory"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:6
+#: src/constants/errors/self_check.ts:7
 msgid "Nginx conf not include sites-enabled"
 msgid "Nginx conf not include sites-enabled"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:8
+#: src/constants/errors/self_check.ts:9
 msgid "Nginx conf not include stream-enabled"
 msgid "Nginx conf not include stream-enabled"
 msgstr ""
 msgstr ""
 
 
@@ -2816,6 +2853,16 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgid "Nginx config directory is not set"
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:31
+#, fuzzy
+msgid "Nginx configuration directory exists"
+msgstr "Erro na análise de configuração do Nginx"
+
+#: src/language/generate.ts:15
+#, fuzzy
+msgid "Nginx configuration entry file exists"
+msgstr "Erro na análise de configuração do Nginx"
+
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #, fuzzy
 #, fuzzy
 msgid "Nginx configuration has been restored"
 msgid "Nginx configuration has been restored"
@@ -2854,6 +2901,11 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr "Caminho para Logs de Erro do Nginx"
 msgstr "Caminho para Logs de Erro do Nginx"
 
 
+#: src/language/generate.ts:21
+#, fuzzy
+msgid "Nginx error log path exists"
+msgstr "Caminho para Logs de Erro do Nginx"
+
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/composables/useNginxPerformance.ts:43
 #: src/composables/useNginxPerformance.ts:43
 #: src/views/dashboard/NginxDashBoard.vue:112
 #: src/views/dashboard/NginxDashBoard.vue:112
@@ -2888,6 +2940,11 @@ msgstr ""
 msgid "Nginx PID Path"
 msgid "Nginx PID Path"
 msgstr "Caminho para Logs de Erro do Nginx"
 msgstr "Caminho para Logs de Erro do Nginx"
 
 
+#: src/language/generate.ts:45
+#, fuzzy
+msgid "Nginx PID path exists"
+msgstr "Caminho para Logs de Erro do Nginx"
+
 #: src/views/preference/tabs/NginxSettings.vue:40
 #: src/views/preference/tabs/NginxSettings.vue:40
 msgid "Nginx Reload Command"
 msgid "Nginx Reload Command"
 msgstr ""
 msgstr ""
@@ -2942,10 +2999,25 @@ msgstr "Erro na análise de configuração do Nginx"
 
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 msgid ""
 msgid ""
-"Nginx UI configuration has been restored and will restart automatically in "
-"a few seconds."
+"Nginx UI configuration has been restored and will restart automatically in a "
+"few seconds."
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:8
+#, fuzzy
+msgid "Nginx.conf includes conf.d directory"
+msgstr "Verifique se o nginx.conf inclui o diretório conf.d."
+
+#: src/language/generate.ts:42
+#, fuzzy
+msgid "Nginx.conf includes sites-enabled directory"
+msgstr "Verifique se o nginx.conf inclui o diretório sites-enabled."
+
+#: src/language/generate.ts:39
+#, fuzzy
+msgid "Nginx.conf includes streams-enabled directory"
+msgstr "Verifique se o nginx.conf inclui o diretório streams-enabled."
+
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
@@ -3130,7 +3202,8 @@ msgstr ""
 
 
 #: src/views/certificate/DNSCredential.vue:59
 #: src/views/certificate/DNSCredential.vue:59
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
-msgstr "Assim que a verificação estiver concluída, os registos serão removidos."
+msgstr ""
+"Assim que a verificação estiver concluída, os registos serão removidos."
 
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:162
 #: src/components/NodeSelector/NodeSelector.vue:103
 #: src/components/NodeSelector/NodeSelector.vue:103
@@ -3278,6 +3351,10 @@ msgstr "Configuração de Domínio criado com Sucesso"
 msgid "Performing core upgrade"
 msgid "Performing core upgrade"
 msgstr "Executando actualização do core"
 msgstr "Executando actualização do core"
 
 
+#: src/constants/errors/self_check.ts:19
+msgid "PID path not exist"
+msgstr ""
+
 #: src/constants/errors/crypto.ts:2
 #: src/constants/errors/crypto.ts:2
 msgid "Plain text is empty"
 msgid "Plain text is empty"
 msgstr ""
 msgstr ""
@@ -3332,8 +3409,8 @@ msgstr ""
 #: src/components/Notification/notifications.ts:166
 #: src/components/Notification/notifications.ts:166
 #: src/language/constants.ts:59
 #: src/language/constants.ts:59
 msgid ""
 msgid ""
-"Please generate new recovery codes in the preferences immediately to "
-"prevent lockout."
+"Please generate new recovery codes in the preferences immediately to prevent "
+"lockout."
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
@@ -3380,8 +3457,10 @@ msgid "Please log in."
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/DNSCredential.vue:62
 #: src/views/certificate/DNSCredential.vue:62
-msgid "Please note that the unit of time configurations below are all in seconds."
-msgstr "Note que as definições da unidade de tempo abaixo estão todas em segundos."
+msgid ""
+"Please note that the unit of time configurations below are all in seconds."
+msgstr ""
+"Note que as definições da unidade de tempo abaixo estão todas em segundos."
 
 
 #: src/views/install/components/InstallView.vue:100
 #: src/views/install/components/InstallView.vue:100
 msgid "Please resolve all issues before proceeding with installation"
 msgid "Please resolve all issues before proceeding with installation"
@@ -3490,7 +3569,7 @@ msgstr "Leituras"
 msgid "Receive"
 msgid "Receive"
 msgstr "Receber"
 msgstr "Receber"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:24
+#: src/components/SelfCheck/SelfCheck.vue:23
 msgid "Recheck"
 msgid "Recheck"
 msgstr ""
 msgstr ""
 
 
@@ -3966,6 +4045,10 @@ msgstr "Salvo com sucesso"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "Salvo com sucesso"
 msgstr "Salvo com sucesso"
 
 
+#: src/constants/errors/self_check.ts:20
+msgid "Sbin path not exist"
+msgstr ""
+
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
@@ -3997,7 +4080,7 @@ msgstr ""
 msgid "Selector"
 msgid "Selector"
 msgstr "Seletor"
 msgstr "Seletor"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:16 src/routes/modules/system.ts:19
+#: src/components/SelfCheck/SelfCheck.vue:15 src/routes/modules/system.ts:19
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
@@ -4067,14 +4150,14 @@ msgstr "Definindo provedor de HTTP01 challenge"
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/views/install/components/InstallView.vue:64
 #: src/views/install/components/InstallView.vue:64
@@ -4120,20 +4203,20 @@ msgstr "Logs do Site"
 msgid "Site not found"
 msgid "Site not found"
 msgstr "Ficheiro não encontrado"
 msgstr "Ficheiro não encontrado"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:5
+#: src/language/generate.ts:7
 #, fuzzy
 #, fuzzy
-msgid "Sites Directory"
+msgid "Sites directory exists"
 msgstr "Directório"
 msgstr "Directório"
 
 
 #: src/routes/modules/sites.ts:19
 #: src/routes/modules/sites.ts:19
 msgid "Sites List"
 msgid "Sites List"
 msgstr "Lista de Sites"
 msgstr "Lista de Sites"
 
 
-#: src/constants/errors/self_check.ts:10
+#: src/constants/errors/self_check.ts:11
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:11
+#: src/constants/errors/self_check.ts:12
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
 msgstr ""
 msgstr ""
 
 
@@ -4238,16 +4321,16 @@ msgstr ""
 msgid "Stream not found"
 msgid "Stream not found"
 msgstr "Ficheiro não encontrado"
 msgstr "Ficheiro não encontrado"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:10
+#: src/language/generate.ts:41
 #, fuzzy
 #, fuzzy
-msgid "Streams Directory"
+msgid "Streams directory exists"
 msgstr "Directório"
 msgstr "Directório"
 
 
-#: src/constants/errors/self_check.ts:12
+#: src/constants/errors/self_check.ts:13
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:13
+#: src/constants/errors/self_check.ts:14
 msgid "Streams-enabled directory not exist"
 msgid "Streams-enabled directory not exist"
 msgstr ""
 msgstr ""
 
 
@@ -4259,12 +4342,12 @@ msgstr ""
 msgid "Success"
 msgid "Success"
 msgstr "Sucesso"
 msgstr "Sucesso"
 
 
-#: src/components/SelfCheck/tasks/frontend/websocket.ts:6
+#: src/components/SelfCheck/tasks/frontend/websocket.ts:13
 msgid ""
 msgid ""
 "Support communication with the backend through the WebSocket protocol. If "
 "Support communication with the backend through the WebSocket protocol. If "
-"your Nginx UI is being used via an Nginx reverse proxy, please refer to "
-"this link to write the corresponding configuration file: "
-"https://nginxui.com/guide/nginx-proxy-example.html"
+"your Nginx UI is being used via an Nginx reverse proxy, please refer to this "
+"link to write the corresponding configuration file: https://nginxui.com/"
+"guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
@@ -4296,11 +4379,13 @@ msgstr "Sincronizar Certificado"
 #: src/components/Notification/notifications.ts:46
 #: src/components/Notification/notifications.ts:46
 #, fuzzy
 #, fuzzy
 msgid "Sync Certificate %{cert_name} to %{env_name} failed"
 msgid "Sync Certificate %{cert_name} to %{env_name} failed"
-msgstr "Sincronização do Certificado %{cert_name} para %{env_name} feito com sucesso"
+msgstr ""
+"Sincronização do Certificado %{cert_name} para %{env_name} feito com sucesso"
 
 
 #: src/components/Notification/notifications.ts:50
 #: src/components/Notification/notifications.ts:50
 msgid "Sync Certificate %{cert_name} to %{env_name} successfully"
 msgid "Sync Certificate %{cert_name} to %{env_name} successfully"
-msgstr "Sincronização do Certificado %{cert_name} para %{env_name} feito com sucesso"
+msgstr ""
+"Sincronização do Certificado %{cert_name} para %{env_name} feito com sucesso"
 
 
 #: src/components/Notification/notifications.ts:45 src/language/constants.ts:39
 #: src/components/Notification/notifications.ts:45 src/language/constants.ts:39
 msgid "Sync Certificate Error"
 msgid "Sync Certificate Error"
@@ -4384,6 +4469,11 @@ msgstr "Sistema"
 msgid "System restored successfully."
 msgid "System restored successfully."
 msgstr "Nginx reiniciado com sucesso"
 msgstr "Nginx reiniciado com sucesso"
 
 
+#: src/constants/errors/self_check.ts:3
+#, fuzzy
+msgid "Task is not fixable"
+msgstr "Token inválida"
+
 #: src/constants/errors/self_check.ts:2
 #: src/constants/errors/self_check.ts:2
 #, fuzzy
 #, fuzzy
 msgid "Task not found"
 msgid "Task not found"
@@ -4409,8 +4499,8 @@ msgid ""
 "since it was last issued."
 "since it was last issued."
 msgstr ""
 msgstr ""
 "O certificado do domínio será verificado 30 minutos e será renovado se já "
 "O certificado do domínio será verificado 30 minutos e será renovado se já "
-"tiver passado mais de 1 semana ou o período que definiu nas definições "
-"desde a última emissão."
+"tiver passado mais de 1 semana ou o período que definiu nas definições desde "
+"a última emissão."
 
 
 #: src/views/install/components/InstallForm.vue:48
 #: src/views/install/components/InstallForm.vue:48
 msgid "The filename cannot contain the following characters: %{c}"
 msgid "The filename cannot contain the following characters: %{c}"
@@ -4435,8 +4525,7 @@ msgstr "O valor introduzido não é uma Chave de Certificado SSL"
 
 
 #: src/constants/errors/nginx_log.ts:2
 #: src/constants/errors/nginx_log.ts:2
 msgid ""
 msgid ""
-"The log path is not under the paths in "
-"settings.NginxSettings.LogDirWhiteList"
+"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList"
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:23
 #: src/views/preference/tabs/OpenAISettings.vue:23
@@ -4450,7 +4539,8 @@ msgstr ""
 "travessões e pontos."
 "travessões e pontos."
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:90
 #: src/views/preference/tabs/OpenAISettings.vue:90
-msgid "The model used for code completion, if not set, the chat model will be used."
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/NodeSettings.vue:18
 #: src/views/preference/tabs/NodeSettings.vue:18
@@ -4490,8 +4580,8 @@ msgid ""
 "version. To avoid potential errors, please upgrade the remote Nginx UI to "
 "version. To avoid potential errors, please upgrade the remote Nginx UI to "
 "match the local version."
 "match the local version."
 msgstr ""
 msgstr ""
-"A versão remota do Nginx UI não é compatível com a versão local do Nginx "
-"UI. Para evitar possíveis erros, atualize a versão remota do Nginx UI para "
+"A versão remota do Nginx UI não é compatível com a versão local do Nginx UI. "
+"Para evitar possíveis erros, atualize a versão remota do Nginx UI para "
 "corresponder à versão local."
 "corresponder à versão local."
 
 
 #: src/components/AutoCertForm/AutoCertForm.vue:43
 #: src/components/AutoCertForm/AutoCertForm.vue:43
@@ -4562,7 +4652,8 @@ msgstr "Este campo não pode estar vazio"
 
 
 #: src/constants/form_errors.ts:6
 #: src/constants/form_errors.ts:6
 #, fuzzy
 #, fuzzy
-msgid "This field should only contain letters, unicode characters, numbers, and -_."
+msgid ""
+"This field should only contain letters, unicode characters, numbers, and -_."
 msgstr ""
 msgstr ""
 "O nome do modelo deve conter apenas letras, unicode, números, hífens, "
 "O nome do modelo deve conter apenas letras, unicode, números, hífens, "
 "travessões e pontos."
 "travessões e pontos."
@@ -4604,10 +4695,10 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/environments/list/BatchUpgrader.vue:182
 #: src/views/environments/list/BatchUpgrader.vue:182
-msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
+msgid ""
+"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 msgstr ""
 msgstr ""
-"Isto vai actualizar ou reinstalar o Nginx UI em %{nodeNames} para "
-"%{version}."
+"Isto vai actualizar ou reinstalar o Nginx UI em %{nodeNames} para %{version}."
 
 
 #: src/views/preference/tabs/AuthSettings.vue:124
 #: src/views/preference/tabs/AuthSettings.vue:124
 msgid "Throttle"
 msgid "Throttle"
@@ -4652,8 +4743,8 @@ msgstr ""
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 msgid ""
 msgid ""
 "To make sure the certification auto-renewal can work normally, we need to "
 "To make sure the certification auto-renewal can work normally, we need to "
-"add a location which can proxy the request from authority to backend, and "
-"we need to save this file and reload the Nginx. Are you sure you want to "
+"add a location which can proxy the request from authority to backend, and we "
+"need to save this file and reload the Nginx. Are you sure you want to "
 "continue?"
 "continue?"
 msgstr ""
 msgstr ""
 "Para garantir que a renovação automática da certificação funciona "
 "Para garantir que a renovação automática da certificação funciona "
@@ -4741,7 +4832,7 @@ msgstr "Tipo"
 msgid "Unknown"
 msgid "Unknown"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:44
+#: src/components/SelfCheck/SelfCheck.vue:43
 msgid "Unknown issue"
 msgid "Unknown issue"
 msgstr ""
 msgstr ""
 
 
@@ -4912,8 +5003,8 @@ msgstr ""
 
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 msgid ""
 msgid ""
-"We will remove the HTTPChallenge configuration from this file and reload "
-"the Nginx. Are you sure you want to continue?"
+"We will remove the HTTPChallenge configuration from this file and reload the "
+"Nginx. Are you sure you want to continue?"
 msgstr ""
 msgstr ""
 "Removeremos a configuração HTTPChallenge deste ficheiro e reiniciaremos o "
 "Removeremos a configuração HTTPChallenge deste ficheiro e reiniciaremos o "
 "Nginx. Tem a certeza de que quer continuar?"
 "Nginx. Tem a certeza de que quer continuar?"
@@ -4998,8 +5089,8 @@ msgstr "Sim"
 
 
 #: src/views/terminal/Terminal.vue:135
 #: src/views/terminal/Terminal.vue:135
 msgid ""
 msgid ""
-"You are accessing this terminal over an insecure HTTP connection on a "
-"non-localhost domain. This may expose sensitive information."
+"You are accessing this terminal over an insecure HTTP connection on a non-"
+"localhost domain. This may expose sensitive information."
 msgstr ""
 msgstr ""
 
 
 #: src/views/system/Upgrade.vue:202
 #: src/views/system/Upgrade.vue:202
@@ -5025,7 +5116,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
-msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
+msgid ""
+"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
@@ -5047,6 +5139,15 @@ msgstr ""
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr ""
 msgstr ""
 
 
+#~ msgid ""
+#~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
+#~ "Docker Image, please make sure the docker socket is mounted like this: `-"
+#~ "v /var/run/docker.sock:/var/run/docker.sock`."
+#~ msgstr ""
+#~ "Verifique se /var/run/docker.sock existe. Se estiver a utilizar a imagem "
+#~ "Docker oficial do Nginx UI, certifique-se de que o socket Docker está "
+#~ "montado da seguinte forma: `-v /var/run/docker.sock:/var/run/docker.sock`."
+
 #~ msgid "Deploy successfully"
 #~ msgid "Deploy successfully"
 #~ msgstr "Deploy sucedido"
 #~ msgstr "Deploy sucedido"
 
 
@@ -5068,7 +5169,9 @@ msgstr ""
 #~ msgstr "Ambiente"
 #~ msgstr "Ambiente"
 
 
 #~ msgid "Failed to save, syntax error(s) was detected in the configuration."
 #~ msgid "Failed to save, syntax error(s) was detected in the configuration."
-#~ msgstr "Falha ao salvar, erro(s) de sintaxe detectados no ficheiro de configuração."
+#~ msgstr ""
+#~ "Falha ao salvar, erro(s) de sintaxe detectados no ficheiro de "
+#~ "configuração."
 
 
 #~ msgid "File"
 #~ msgid "File"
 #~ msgstr "Ficheiro"
 #~ msgstr "Ficheiro"
@@ -5077,11 +5180,11 @@ msgstr ""
 #~ msgstr "Erro de Formato %{msg}"
 #~ msgstr "Erro de Formato %{msg}"
 
 
 #~ msgid ""
 #~ msgid ""
-#~ "If you lose your mobile phone, you can use the recovery code to reset your "
-#~ "2FA."
+#~ "If you lose your mobile phone, you can use the recovery code to reset "
+#~ "your 2FA."
 #~ msgstr ""
 #~ msgstr ""
-#~ "Se perder o seu telemóvel, pode utilizar o código de recuperação para repor "
-#~ "o seu 2FA."
+#~ "Se perder o seu telemóvel, pode utilizar o código de recuperação para "
+#~ "repor o seu 2FA."
 
 
 #~ msgid "Incorrect username or password"
 #~ msgid "Incorrect username or password"
 #~ msgstr "Utilizador ou senha incorrectos"
 #~ msgstr "Utilizador ou senha incorrectos"
@@ -5109,7 +5212,8 @@ msgstr ""
 #~ "Sincronização do Certificado %{cert_name} para %{env_name} falhou, por "
 #~ "Sincronização do Certificado %{cert_name} para %{env_name} falhou, por "
 #~ "favor actualize a versão remota do Nginx UI para a última versão"
 #~ "favor actualize a versão remota do Nginx UI para a última versão"
 
 
-#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
+#~ msgid ""
+#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
 #~ msgstr ""
 #~ msgstr ""
 #~ "Sincronização do Certificado %{cert_name} para %{env_name} falhou, "
 #~ "Sincronização do Certificado %{cert_name} para %{env_name} falhou, "
 #~ "resposta: %{resp}"
 #~ "resposta: %{resp}"
@@ -5129,7 +5233,8 @@ msgstr ""
 #~ msgid "Target"
 #~ msgid "Target"
 #~ msgstr "Destino"
 #~ msgstr "Destino"
 
 
-#~ msgid "The recovery code is only displayed once, please save it in a safe place."
+#~ msgid ""
+#~ "The recovery code is only displayed once, please save it in a safe place."
 #~ msgstr ""
 #~ msgstr ""
 #~ "O código de recuperação é apresentado apenas uma vez, guarde-o num local "
 #~ "O código de recuperação é apresentado apenas uma vez, guarde-o num local "
 #~ "seguro."
 #~ "seguro."

+ 265 - 156
app/src/language/ru_RU/app.po

@@ -7,61 +7,62 @@ msgstr ""
 "POT-Creation-Date: \n"
 "POT-Creation-Date: \n"
 "PO-Revision-Date: 2025-03-28 02:45+0300\n"
 "PO-Revision-Date: 2025-03-28 02:45+0300\n"
 "Last-Translator: Artyom Isrofilov <artyom@isrofilov.ru>\n"
 "Last-Translator: Artyom Isrofilov <artyom@isrofilov.ru>\n"
-"Language-Team: Russian "
-"<https://weblate.nginxui.com/projects/nginx-ui/frontend/ru/>\n"
+"Language-Team: Russian <https://weblate.nginxui.com/projects/nginx-ui/"
+"frontend/ru/>\n"
 "Language: ru_RU\n"
 "Language: ru_RU\n"
 "MIME-Version: 1.0\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 3.5\n"
 "X-Generator: Poedit 3.5\n"
 
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:47
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
-msgstr "[Nginx UI] Пользователь ACME: %{name}, Email: %{email}, Каталог CA: %{caDir}"
+msgstr ""
+"[Nginx UI] Пользователь ACME: %{name}, Email: %{email}, Каталог CA: %{caDir}"
 
 
-#: src/language/generate.ts:13
+#: src/language/generate.ts:49
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr ""
 msgstr ""
-"[Nginx UI] Резервное копирование текущего сертификата для последующего "
-"отзыва"
+"[Nginx UI] Резервное копирование текущего сертификата для последующего отзыва"
 
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:6
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "Сертификат успешно продлен"
 msgstr "Сертификат успешно продлен"
 
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:37
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Nginx успешно перезапущен"
 msgstr "Nginx успешно перезапущен"
 
 
-#: src/language/generate.ts:29
-msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
+#: src/language/generate.ts:13
+msgid ""
+"[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 msgstr ""
-"[Nginx UI] Сертификат использовался для сервера, перезагрузка "
-"TLS-сертификата сервера"
+"[Nginx UI] Сертификат использовался для сервера, перезагрузка TLS-"
+"сертификата сервера"
 
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:35
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "Создание клиента облегчает связь с сервером CA"
 msgstr "Создание клиента облегчает связь с сервером CA"
 
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:36
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "Переменные окружения очищены"
 msgstr "Переменные окружения очищены"
 
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:28
 msgid "[Nginx UI] Finished"
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] Завершено"
 msgstr "[Nginx UI] Завершено"
 
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:25
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Issued certificate successfully"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "Сертификат успешно выдан"
 msgstr "Сертификат успешно выдан"
 
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:50
 msgid "[Nginx UI] Obtaining certificate"
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] Получение сертификата"
 msgstr "[Nginx UI] Получение сертификата"
 
 
@@ -69,44 +70,44 @@ msgstr "[Nginx UI] Получение сертификата"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] Подготовка к отзыву сертификата"
 msgstr "[Nginx UI] Подготовка к отзыву сертификата"
 
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:46
 msgid "[Nginx UI] Preparing lego configurations"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] Подготовка конфигураций lego"
 msgstr "[Nginx UI] Подготовка конфигураций lego"
 
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:19
 msgid "[Nginx UI] Reloading nginx"
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] Перезагрузка nginx"
 msgstr "[Nginx UI] Перезагрузка nginx"
 
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:14
 msgid "[Nginx UI] Revocation completed"
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] Отзыв завершен"
 msgstr "[Nginx UI] Отзыв завершен"
 
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Revoking certificate"
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] Отзыв сертификата"
 msgstr "[Nginx UI] Отзыв сертификата"
 
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:29
 msgid "[Nginx UI] Revoking old certificate"
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] Отзыв старого сертификата"
 msgstr "[Nginx UI] Отзыв старого сертификата"
 
 
-#: src/language/generate.ts:20
+#: src/language/generate.ts:18
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] Настройка провайдера проверки DNS01"
 msgstr "[Nginx UI] Настройка провайдера проверки DNS01"
 
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:27
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Setting environment variables"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "Настройка переменных сред"
 msgstr "Настройка переменных сред"
 
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] Настройка провайдера HTTP01-проверки"
 msgstr "[Nginx UI] Настройка провайдера HTTP01-проверки"
 
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:12
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] Запись закрытого ключа сертификата на диск"
 msgstr "[Nginx UI] Запись закрытого ключа сертификата на диск"
 
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:51
 msgid "[Nginx UI] Writing certificate to disk"
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] Запись сертификата на диск"
 msgstr "[Nginx UI] Запись сертификата на диск"
 
 
@@ -127,6 +128,10 @@ msgstr "О проекте"
 msgid "Access Log"
 msgid "Access Log"
 msgstr "Журналы доступа"
 msgstr "Журналы доступа"
 
 
+#: src/constants/errors/self_check.ts:21
+msgid "Access log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
 #: src/routes/modules/nginx_log.ts:17
 msgid "Access Logs"
 msgid "Access Logs"
@@ -213,7 +218,8 @@ msgstr "Расширенный режим"
 
 
 #: src/views/preference/components/AuthSettings/AddPasskey.vue:99
 #: src/views/preference/components/AuthSettings/AddPasskey.vue:99
 msgid "Afterwards, refresh this page and click add passkey again."
 msgid "Afterwards, refresh this page and click add passkey again."
-msgstr "После этого обновите эту страницу и снова нажмите «Добавить ключ доступа»."
+msgstr ""
+"После этого обновите эту страницу и снова нажмите «Добавить ключ доступа»."
 
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
@@ -338,7 +344,7 @@ msgstr "Обратитесь за помощью к ChatGPT"
 msgid "Assistant"
 msgid "Assistant"
 msgstr "Ассистент"
 msgstr "Ассистент"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:31
+#: src/components/SelfCheck/SelfCheck.vue:30
 msgid "Attempt to fix"
 msgid "Attempt to fix"
 msgstr "Попытка исправить"
 msgstr "Попытка исправить"
 
 
@@ -501,8 +507,7 @@ msgstr "Кэш"
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
 msgid "Cache items not accessed within this time will be removed"
 msgid "Cache items not accessed within this time will be removed"
 msgstr ""
 msgstr ""
-"Элементы кэша, к которым не обращались в течение этого времени, будут "
-"удалены"
+"Элементы кэша, к которым не обращались в течение этого времени, будут удалены"
 
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
 msgid "Cache loader processing time threshold"
 msgid "Cache loader processing time threshold"
@@ -621,7 +626,7 @@ msgstr "Сертификат истёк"
 msgid "Certificate Expiring Soon"
 msgid "Certificate Expiring Soon"
 msgstr "Сертификат скоро истекает"
 msgstr "Сертификат скоро истекает"
 
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:33
 #, fuzzy
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgid "Certificate not found: %{error}"
 msgstr "Ошибка декодирования сертификата"
 msgstr "Ошибка декодирования сертификата"
@@ -647,7 +652,7 @@ msgstr "Интервал обновления сертификата"
 msgid "Certificate renewed successfully"
 msgid "Certificate renewed successfully"
 msgstr "Сертификат успешно продлен"
 msgstr "Сертификат успешно продлен"
 
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:11
 #, fuzzy
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgid "Certificate revoked successfully"
 msgstr "Сертификат успешно удален"
 msgstr "Сертификат успешно удален"
@@ -707,48 +712,70 @@ msgstr "Проверить повторно"
 msgid "Check again"
 msgid "Check again"
 msgstr "Проверить повторно"
 msgstr "Проверить повторно"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:31
-msgid ""
-"Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
-"Docker Image, please make sure the docker socket is mounted like this: `-v "
-"/var/run/docker.sock:/var/run/docker.sock`."
-msgstr ""
-"Проверьте, существует ли /var/run/docker.sock. Если вы используете "
-"официальный образ Docker Nginx UI, убедитесь, что сокет Docker подключен "
-"следующим образом: `-v /var/run/docker.sock:/var/run/docker.sock`."
-
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:11
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:14
+#, fuzzy
 msgid ""
 msgid ""
 "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
 "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
-"prevents using Passkeys and clipboard features."
+"prevents using Passkeys and clipboard features"
 msgstr ""
 msgstr ""
 "Проверьте, включён ли HTTPS. Использование HTTP вне localhost небезопасно и "
 "Проверьте, включён ли HTTPS. Использование HTTP вне localhost небезопасно и "
 "блокирует функции Passkeys и буфера обмена."
 "блокирует функции Passkeys и буфера обмена."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:26
-msgid "Check if the nginx.conf includes the conf.d directory."
+#: src/language/generate.ts:40
+msgid "Check if the docker socket exists."
+msgstr ""
+
+#: src/language/generate.ts:20
+msgid "Check if the nginx access log path exists"
+msgstr ""
+
+#: src/language/generate.ts:44
+#, fuzzy
+msgid "Check if the nginx configuration directory exists"
+msgstr "Проверьте, включает ли файл nginx.conf каталог conf.d."
+
+#: src/language/generate.ts:9
+#, fuzzy
+msgid "Check if the nginx configuration entry file exists"
 msgstr "Проверьте, включает ли файл nginx.conf каталог conf.d."
 msgstr "Проверьте, включает ли файл nginx.conf каталог conf.d."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:16
-msgid "Check if the nginx.conf includes the sites-enabled directory."
+#: src/language/generate.ts:32
+msgid "Check if the nginx error log path exists"
+msgstr ""
+
+#: src/language/generate.ts:24
+msgid "Check if the nginx PID path exists"
+msgstr ""
+
+#: src/language/generate.ts:43
+#, fuzzy
+msgid "Check if the nginx.conf includes the conf.d directory"
+msgstr "Проверьте, включает ли файл nginx.conf каталог conf.d."
+
+#: src/language/generate.ts:23
+#, fuzzy
+msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "Проверьте, включает ли файл nginx.conf каталог sites-enabled."
 msgstr "Проверьте, включает ли файл nginx.conf каталог sites-enabled."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:21
-msgid "Check if the nginx.conf includes the streams-enabled directory."
+#: src/language/generate.ts:5
+#, fuzzy
+msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "Проверьте, включает ли файл nginx.conf каталог streams-enabled."
 msgstr "Проверьте, включает ли файл nginx.conf каталог streams-enabled."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:6
+#: src/language/generate.ts:30
+#, fuzzy
 msgid ""
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
 "Check if the sites-available and sites-enabled directories are under the "
-"nginx configuration directory."
+"nginx configuration directory"
 msgstr ""
 msgstr ""
 "Проверьте, находятся ли каталоги sites-available и sites-enabled в каталоге "
 "Проверьте, находятся ли каталоги sites-available и sites-enabled в каталоге "
 "конфигурации nginx."
 "конфигурации nginx."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:11
+#: src/language/generate.ts:38
+#, fuzzy
 msgid ""
 msgid ""
-"Check if the streams-available and streams-enabled directories are under "
-"the nginx configuration directory."
+"Check if the streams-available and streams-enabled directories are under the "
+"nginx configuration directory"
 msgstr ""
 msgstr ""
 "Проверьте, находятся ли каталоги streams-available и streams-enabled в "
 "Проверьте, находятся ли каталоги streams-available и streams-enabled в "
 "директории конфигурации nginx."
 "директории конфигурации nginx."
@@ -851,6 +878,16 @@ msgstr "Сравните с током"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "Уровень сжатия, 1 самый низкий, 9 - самый высокий"
 msgstr "Уровень сжатия, 1 самый низкий, 9 - самый высокий"
 
 
+#: src/constants/errors/self_check.ts:17
+#, fuzzy
+msgid "Config directory not exist"
+msgstr "Белый список директорий для логов Nginx"
+
+#: src/constants/errors/self_check.ts:18
+#, fuzzy
+msgid "Config entry file not exist"
+msgstr "Белый список директорий для логов Nginx"
+
 #: src/constants/errors/backup.ts:14
 #: src/constants/errors/backup.ts:14
 #, fuzzy
 #, fuzzy
 msgid "Config path is empty"
 msgid "Config path is empty"
@@ -1348,11 +1385,11 @@ msgstr "Хотите удалить этот сервер?"
 msgid "Docker client not initialized"
 msgid "Docker client not initialized"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:30
-msgid "Docker Socket"
+#: src/language/generate.ts:10
+msgid "Docker socket exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:15
+#: src/constants/errors/self_check.ts:16
 msgid "Docker socket not exist"
 msgid "Docker socket not exist"
 msgstr ""
 msgstr ""
 
 
@@ -1370,7 +1407,8 @@ msgstr "Домен"
 
 
 #: src/views/certificate/CertificateEditor.vue:112
 #: src/views/certificate/CertificateEditor.vue:112
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
 msgid "Domains list is empty, try to reopen Auto Cert for %{config}"
-msgstr "Список доменов пуст, попробуйте заново создать авто-сертификат для %{config}"
+msgstr ""
+"Список доменов пуст, попробуйте заново создать авто-сертификат для %{config}"
 
 
 #: src/language/constants.ts:27
 #: src/language/constants.ts:27
 msgid "Download latest release error"
 msgid "Download latest release error"
@@ -1595,6 +1633,10 @@ msgstr ""
 msgid "Error Log"
 msgid "Error Log"
 msgstr "Ошибка логирования"
 msgstr "Ошибка логирования"
 
 
+#: src/constants/errors/self_check.ts:22
+msgid "Error log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/routes/modules/nginx_log.ts:24
 #: src/routes/modules/nginx_log.ts:24
 msgid "Error Logs"
 msgid "Error Logs"
@@ -1686,7 +1728,7 @@ msgstr ""
 msgid "Failed to copy Nginx config directory: {0}"
 msgid "Failed to copy Nginx config directory: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:9
+#: src/constants/errors/self_check.ts:10
 #, fuzzy
 #, fuzzy
 msgid "Failed to create backup"
 msgid "Failed to create backup"
 msgstr "Не удалось включить %{msg}"
 msgstr "Не удалось включить %{msg}"
@@ -1783,7 +1825,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgid "Failed to delete certificate"
 msgstr "Не удалось получить сертификат"
 msgstr "Не удалось получить сертификат"
 
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 #, fuzzy
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "Не удалось получить сертификат"
 msgstr "Не удалось получить сертификат"
@@ -1902,7 +1944,7 @@ msgstr "Не удалось включить %{msg}"
 msgid "Failed to open zip file: {0}"
 msgid "Failed to open zip file: {0}"
 msgstr "Не удалось включить %{msg}"
 msgstr "Не удалось включить %{msg}"
 
 
-#: src/constants/errors/self_check.ts:4
+#: src/constants/errors/self_check.ts:5
 msgid "Failed to parse nginx.conf"
 msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -1924,7 +1966,7 @@ msgstr "Не удалось включить %{msg}"
 msgid "Failed to read hash info file: {0}"
 msgid "Failed to read hash info file: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:3
+#: src/constants/errors/self_check.ts:4
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -2012,8 +2054,8 @@ msgid ""
 "Follow the instructions in the dialog to complete the passkey registration "
 "Follow the instructions in the dialog to complete the passkey registration "
 "process."
 "process."
 msgstr ""
 msgstr ""
-"Следуйте инструкциям в всплывающем окне, чтобы завершить процесс "
-"регистрации ключа доступа."
+"Следуйте инструкциям в всплывающем окне, чтобы завершить процесс регистрации "
+"ключа доступа."
 
 
 #: src/views/preference/tabs/NodeSettings.vue:42
 #: src/views/preference/tabs/NodeSettings.vue:42
 #: src/views/preference/tabs/NodeSettings.vue:54
 #: src/views/preference/tabs/NodeSettings.vue:54
@@ -2136,7 +2178,7 @@ msgstr "Порт HTTP Challenge"
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr "HTTP01"
 msgstr "HTTP01"
 
 
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:10
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:13
 msgid "HTTPS Protocol"
 msgid "HTTPS Protocol"
 msgstr ""
 msgstr ""
 
 
@@ -2150,8 +2192,8 @@ msgstr "Если оставить пустым, будет использова
 
 
 #: src/views/nginx_log/NginxLogList.vue:81
 #: src/views/nginx_log/NginxLogList.vue:81
 msgid ""
 msgid ""
-"If logs are not indexed, please check if the log file is under the "
-"directory in Nginx.LogDirWhiteList."
+"If logs are not indexed, please check if the log file is under the directory "
+"in Nginx.LogDirWhiteList."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/AuthSettings.vue:145
 #: src/views/preference/tabs/AuthSettings.vue:145
@@ -2174,7 +2216,8 @@ msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/AddPasskey.vue:70
 #: src/views/preference/components/AuthSettings/AddPasskey.vue:70
 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear."
 msgid "If your browser supports WebAuthn Passkey, a dialog box will appear."
-msgstr "Если ваш браузер поддерживает WebAuthn Passkey, появится диалоговое окно."
+msgstr ""
+"Если ваш браузер поддерживает WebAuthn Passkey, появится диалоговое окно."
 
 
 #: src/components/AutoCertForm/AutoCertForm.vue:107
 #: src/components/AutoCertForm/AutoCertForm.vue:107
 msgid ""
 msgid ""
@@ -2493,8 +2536,11 @@ msgstr "Локации"
 msgid "Log"
 msgid "Log"
 msgstr "Журнал"
 msgstr "Журнал"
 
 
-#: src/language/generate.ts:23
-msgid "Log file %{log_path} is not a regular file. "
+#: src/language/generate.ts:34
+msgid ""
+"Log file %{log_path} is not a regular file. If you are using nginx-ui in "
+"docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
+"nginx-log.html for more information."
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
@@ -2520,18 +2566,18 @@ msgstr "Прокрутка"
 
 
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 msgid ""
 msgid ""
-"Logrotate, by default, is enabled in most mainstream Linux distributions "
-"for users who install Nginx UI on the host machine, so you don't need to "
-"modify the parameters on this page. For users who install Nginx UI using "
-"Docker containers, you can manually enable this option. The crontab task "
-"scheduler of Nginx UI will execute the logrotate command at the interval "
-"you set in minutes."
+"Logrotate, by default, is enabled in most mainstream Linux distributions for "
+"users who install Nginx UI on the host machine, so you don't need to modify "
+"the parameters on this page. For users who install Nginx UI using Docker "
+"containers, you can manually enable this option. The crontab task scheduler "
+"of Nginx UI will execute the logrotate command at the interval you set in "
+"minutes."
 msgstr ""
 msgstr ""
 "Logrotate по умолчанию включен в большинстве основных дистрибутивов Linux "
 "Logrotate по умолчанию включен в большинстве основных дистрибутивов Linux "
 "для пользователей, которые устанавливают Nginx UI на хост-машину, поэтому "
 "для пользователей, которые устанавливают Nginx UI на хост-машину, поэтому "
-"вам не нужно изменять параметры на этой странице. Для пользователей, "
-"которые устанавливают Nginx UI с использованием Docker-контейнеров, вы "
-"можете вручную включить эту опцию. Планировщик задач crontab Nginx UI будет "
+"вам не нужно изменять параметры на этой странице. Для пользователей, которые "
+"устанавливают Nginx UI с использованием Docker-контейнеров, вы можете "
+"вручную включить эту опцию. Планировщик задач crontab Nginx UI будет "
 "выполнять команду logrotate с интервалом, который вы установите в минутах."
 "выполнять команду logrotate с интервалом, который вы установите в минутах."
 
 
 #: src/views/site/components/SiteStatusSegmented.vue:138
 #: src/views/site/components/SiteStatusSegmented.vue:138
@@ -2788,37 +2834,29 @@ msgstr "Nginx"
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr "Путь для Nginx Access Log"
 msgstr "Путь для Nginx Access Log"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:25
+#: src/language/generate.ts:16
 #, fuzzy
 #, fuzzy
-msgid "Nginx Conf Include Conf.d"
-msgstr "Терминальная команда запуска"
-
-#: src/components/SelfCheck/tasks/backend/index.ts:15
-msgid "Nginx Conf Include Sites Enabled"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:20
-msgid "Nginx Conf Include Streams Enabled"
-msgstr ""
+msgid "Nginx access log path exists"
+msgstr "Путь для Nginx Access Log"
 
 
-#: src/constants/errors/self_check.ts:5
+#: src/constants/errors/self_check.ts:6
 msgid "Nginx conf no http block"
 msgid "Nginx conf no http block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:7
+#: src/constants/errors/self_check.ts:8
 msgid "Nginx conf no stream block"
 msgid "Nginx conf no stream block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:14
+#: src/constants/errors/self_check.ts:15
 #, fuzzy
 #, fuzzy
 msgid "Nginx conf not include conf.d directory"
 msgid "Nginx conf not include conf.d directory"
 msgstr "Терминальная команда запуска"
 msgstr "Терминальная команда запуска"
 
 
-#: src/constants/errors/self_check.ts:6
+#: src/constants/errors/self_check.ts:7
 msgid "Nginx conf not include sites-enabled"
 msgid "Nginx conf not include sites-enabled"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:8
+#: src/constants/errors/self_check.ts:9
 msgid "Nginx conf not include stream-enabled"
 msgid "Nginx conf not include stream-enabled"
 msgstr ""
 msgstr ""
 
 
@@ -2827,6 +2865,16 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgid "Nginx config directory is not set"
 msgstr "Белый список директорий для логов Nginx"
 msgstr "Белый список директорий для логов Nginx"
 
 
+#: src/language/generate.ts:31
+#, fuzzy
+msgid "Nginx configuration directory exists"
+msgstr "Ошибка разбора конфигурации Nginx"
+
+#: src/language/generate.ts:15
+#, fuzzy
+msgid "Nginx configuration entry file exists"
+msgstr "Ошибка разбора конфигурации Nginx"
+
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #, fuzzy
 #, fuzzy
 msgid "Nginx configuration has been restored"
 msgid "Nginx configuration has been restored"
@@ -2865,6 +2913,11 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr "Путь для Nginx Error Log"
 msgstr "Путь для Nginx Error Log"
 
 
+#: src/language/generate.ts:21
+#, fuzzy
+msgid "Nginx error log path exists"
+msgstr "Путь для Nginx Error Log"
+
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/composables/useNginxPerformance.ts:43
 #: src/composables/useNginxPerformance.ts:43
 #: src/views/dashboard/NginxDashBoard.vue:112
 #: src/views/dashboard/NginxDashBoard.vue:112
@@ -2901,6 +2954,11 @@ msgstr ""
 msgid "Nginx PID Path"
 msgid "Nginx PID Path"
 msgstr "Путь для Nginx Error Log"
 msgstr "Путь для Nginx Error Log"
 
 
+#: src/language/generate.ts:45
+#, fuzzy
+msgid "Nginx PID path exists"
+msgstr "Путь для Nginx Error Log"
+
 #: src/views/preference/tabs/NginxSettings.vue:40
 #: src/views/preference/tabs/NginxSettings.vue:40
 msgid "Nginx Reload Command"
 msgid "Nginx Reload Command"
 msgstr "Команда перезагрузки Nginx"
 msgstr "Команда перезагрузки Nginx"
@@ -2959,10 +3017,25 @@ msgstr "Ошибка разбора конфигурации Nginx"
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
-"Nginx UI configuration has been restored and will restart automatically in "
-"a few seconds."
+"Nginx UI configuration has been restored and will restart automatically in a "
+"few seconds."
 msgstr "Ошибка разбора конфигурации Nginx"
 msgstr "Ошибка разбора конфигурации Nginx"
 
 
+#: src/language/generate.ts:8
+#, fuzzy
+msgid "Nginx.conf includes conf.d directory"
+msgstr "Терминальная команда запуска"
+
+#: src/language/generate.ts:42
+#, fuzzy
+msgid "Nginx.conf includes sites-enabled directory"
+msgstr "Проверьте, включает ли файл nginx.conf каталог sites-enabled."
+
+#: src/language/generate.ts:39
+#, fuzzy
+msgid "Nginx.conf includes streams-enabled directory"
+msgstr "Проверьте, включает ли файл nginx.conf каталог streams-enabled."
+
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
@@ -3299,6 +3372,10 @@ msgstr "Отключено успешно"
 msgid "Performing core upgrade"
 msgid "Performing core upgrade"
 msgstr "Выполнение обновления ядра"
 msgstr "Выполнение обновления ядра"
 
 
+#: src/constants/errors/self_check.ts:19
+msgid "PID path not exist"
+msgstr ""
+
 #: src/constants/errors/crypto.ts:2
 #: src/constants/errors/crypto.ts:2
 msgid "Plain text is empty"
 msgid "Plain text is empty"
 msgstr ""
 msgstr ""
@@ -3335,8 +3412,8 @@ msgid ""
 "Please fill in the API authentication credentials provided by your DNS "
 "Please fill in the API authentication credentials provided by your DNS "
 "provider."
 "provider."
 msgstr ""
 msgstr ""
-"Пожалуйста, заполните учетные данные API, предоставленные вашим "
-"DNS-провайдером."
+"Пожалуйста, заполните учетные данные API, предоставленные вашим DNS-"
+"провайдером."
 
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106
 msgid "Please fill in the required fields"
 msgid "Please fill in the required fields"
@@ -3354,8 +3431,8 @@ msgstr ""
 #: src/components/Notification/notifications.ts:166
 #: src/components/Notification/notifications.ts:166
 #: src/language/constants.ts:59
 #: src/language/constants.ts:59
 msgid ""
 msgid ""
-"Please generate new recovery codes in the preferences immediately to "
-"prevent lockout."
+"Please generate new recovery codes in the preferences immediately to prevent "
+"lockout."
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
@@ -3401,7 +3478,8 @@ msgid "Please log in."
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/DNSCredential.vue:62
 #: src/views/certificate/DNSCredential.vue:62
-msgid "Please note that the unit of time configurations below are all in seconds."
+msgid ""
+"Please note that the unit of time configurations below are all in seconds."
 msgstr ""
 msgstr ""
 "Обратите внимание, что единица измерения времени в конфигурациях ниже "
 "Обратите внимание, что единица измерения времени в конфигурациях ниже "
 "указана в секундах."
 "указана в секундах."
@@ -3512,7 +3590,7 @@ msgstr "Чтение"
 msgid "Receive"
 msgid "Receive"
 msgstr "Принято"
 msgstr "Принято"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:24
+#: src/components/SelfCheck/SelfCheck.vue:23
 msgid "Recheck"
 msgid "Recheck"
 msgstr ""
 msgstr ""
 
 
@@ -3539,8 +3617,8 @@ msgid ""
 "Recovery codes are used to access your account when you lose access to your "
 "Recovery codes are used to access your account when you lose access to your "
 "2FA device. Each code can only be used once."
 "2FA device. Each code can only be used once."
 msgstr ""
 msgstr ""
-"Коды восстановления используются для доступа к аккаунту при утере "
-"2FA-устройства. Каждый код можно использовать только один раз."
+"Коды восстановления используются для доступа к аккаунту при утере 2FA-"
+"устройства. Каждый код можно использовать только один раз."
 
 
 #: src/views/preference/tabs/CertSettings.vue:40
 #: src/views/preference/tabs/CertSettings.vue:40
 msgid "Recursive Nameservers"
 msgid "Recursive Nameservers"
@@ -3975,6 +4053,10 @@ msgstr "Сохранено успешно"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "Успешно сохранено"
 msgstr "Успешно сохранено"
 
 
+#: src/constants/errors/self_check.ts:20
+msgid "Sbin path not exist"
+msgstr ""
+
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
@@ -4007,7 +4089,7 @@ msgstr ""
 msgid "Selector"
 msgid "Selector"
 msgstr "Выбор"
 msgstr "Выбор"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:16 src/routes/modules/system.ts:19
+#: src/components/SelfCheck/SelfCheck.vue:15 src/routes/modules/system.ts:19
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
@@ -4077,14 +4159,14 @@ msgstr "Настройка провайдера проверки HTTP01"
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/views/install/components/InstallView.vue:64
 #: src/views/install/components/InstallView.vue:64
@@ -4131,20 +4213,20 @@ msgstr "Журналы сайта"
 msgid "Site not found"
 msgid "Site not found"
 msgstr "Файл не найден"
 msgstr "Файл не найден"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:5
+#: src/language/generate.ts:7
 #, fuzzy
 #, fuzzy
-msgid "Sites Directory"
+msgid "Sites directory exists"
 msgstr "Каталог"
 msgstr "Каталог"
 
 
 #: src/routes/modules/sites.ts:19
 #: src/routes/modules/sites.ts:19
 msgid "Sites List"
 msgid "Sites List"
 msgstr "Список сайтов"
 msgstr "Список сайтов"
 
 
-#: src/constants/errors/self_check.ts:10
+#: src/constants/errors/self_check.ts:11
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:11
+#: src/constants/errors/self_check.ts:12
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
 msgstr ""
 msgstr ""
 
 
@@ -4251,16 +4333,16 @@ msgstr "Авто Сертификат"
 msgid "Stream not found"
 msgid "Stream not found"
 msgstr "Файл не найден"
 msgstr "Файл не найден"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:10
+#: src/language/generate.ts:41
 #, fuzzy
 #, fuzzy
-msgid "Streams Directory"
+msgid "Streams directory exists"
 msgstr "Каталог"
 msgstr "Каталог"
 
 
-#: src/constants/errors/self_check.ts:12
+#: src/constants/errors/self_check.ts:13
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:13
+#: src/constants/errors/self_check.ts:14
 #, fuzzy
 #, fuzzy
 msgid "Streams-enabled directory not exist"
 msgid "Streams-enabled directory not exist"
 msgstr "Каталог"
 msgstr "Каталог"
@@ -4273,12 +4355,12 @@ msgstr ""
 msgid "Success"
 msgid "Success"
 msgstr "Успех"
 msgstr "Успех"
 
 
-#: src/components/SelfCheck/tasks/frontend/websocket.ts:6
+#: src/components/SelfCheck/tasks/frontend/websocket.ts:13
 msgid ""
 msgid ""
 "Support communication with the backend through the WebSocket protocol. If "
 "Support communication with the backend through the WebSocket protocol. If "
-"your Nginx UI is being used via an Nginx reverse proxy, please refer to "
-"this link to write the corresponding configuration file: "
-"https://nginxui.com/guide/nginx-proxy-example.html"
+"your Nginx UI is being used via an Nginx reverse proxy, please refer to this "
+"link to write the corresponding configuration file: https://nginxui.com/"
+"guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
@@ -4394,6 +4476,11 @@ msgstr "Система"
 msgid "System restored successfully."
 msgid "System restored successfully."
 msgstr "Nginx успешно перезапущен"
 msgstr "Nginx успешно перезапущен"
 
 
+#: src/constants/errors/self_check.ts:3
+#, fuzzy
+msgid "Task is not fixable"
+msgstr "Токен недействителен"
+
 #: src/constants/errors/self_check.ts:2
 #: src/constants/errors/self_check.ts:2
 #, fuzzy
 #, fuzzy
 msgid "Task not found"
 msgid "Task not found"
@@ -4445,8 +4532,7 @@ msgstr "Введенные данные не являются ключом SSL 
 
 
 #: src/constants/errors/nginx_log.ts:2
 #: src/constants/errors/nginx_log.ts:2
 msgid ""
 msgid ""
-"The log path is not under the paths in "
-"settings.NginxSettings.LogDirWhiteList"
+"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList"
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:23
 #: src/views/preference/tabs/OpenAISettings.vue:23
@@ -4460,7 +4546,8 @@ msgstr ""
 "точки."
 "точки."
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:90
 #: src/views/preference/tabs/OpenAISettings.vue:90
-msgid "The model used for code completion, if not set, the chat model will be used."
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/NodeSettings.vue:18
 #: src/views/preference/tabs/NodeSettings.vue:18
@@ -4509,8 +4596,8 @@ msgid ""
 "The server_name in the current configuration must be the domain name you "
 "The server_name in the current configuration must be the domain name you "
 "need to get the certificate, supportmultiple domains."
 "need to get the certificate, supportmultiple domains."
 msgstr ""
 msgstr ""
-"server_name в текущей конфигурации должен быть доменным именем, для "
-"которого вам нужно получить сертификат, поддержка нескольких доменов."
+"server_name в текущей конфигурации должен быть доменным именем, для которого "
+"вам нужно получить сертификат, поддержка нескольких доменов."
 
 
 #: src/views/preference/tabs/CertSettings.vue:22
 #: src/views/preference/tabs/CertSettings.vue:22
 #: src/views/preference/tabs/HTTPSettings.vue:14
 #: src/views/preference/tabs/HTTPSettings.vue:14
@@ -4572,7 +4659,8 @@ msgstr "Это поле обязательно к заполнению"
 
 
 #: src/constants/form_errors.ts:6
 #: src/constants/form_errors.ts:6
 #, fuzzy
 #, fuzzy
-msgid "This field should only contain letters, unicode characters, numbers, and -_."
+msgid ""
+"This field should only contain letters, unicode characters, numbers, and -_."
 msgstr ""
 msgstr ""
 "Имя модели должно содержать только буквы, юникод, цифры, дефисы, тире и "
 "Имя модели должно содержать только буквы, юникод, цифры, дефисы, тире и "
 "точки."
 "точки."
@@ -4614,7 +4702,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/environments/list/BatchUpgrader.vue:182
 #: src/views/environments/list/BatchUpgrader.vue:182
-msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
+msgid ""
+"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 msgstr ""
 msgstr ""
 "Это обновит или переустановит интерфейс Nginx на %{nodeNames} до версии "
 "Это обновит или переустановит интерфейс Nginx на %{nodeNames} до версии "
 "%{version}."
 "%{version}."
@@ -4662,8 +4751,8 @@ msgstr ""
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 msgid ""
 msgid ""
 "To make sure the certification auto-renewal can work normally, we need to "
 "To make sure the certification auto-renewal can work normally, we need to "
-"add a location which can proxy the request from authority to backend, and "
-"we need to save this file and reload the Nginx. Are you sure you want to "
+"add a location which can proxy the request from authority to backend, and we "
+"need to save this file and reload the Nginx. Are you sure you want to "
 "continue?"
 "continue?"
 msgstr ""
 msgstr ""
 "Чтобы убедиться, что автоматическое обновление сертификата может работать "
 "Чтобы убедиться, что автоматическое обновление сертификата может работать "
@@ -4751,7 +4840,7 @@ msgstr "Тип"
 msgid "Unknown"
 msgid "Unknown"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:44
+#: src/components/SelfCheck/SelfCheck.vue:43
 msgid "Unknown issue"
 msgid "Unknown issue"
 msgstr ""
 msgstr ""
 
 
@@ -4923,11 +5012,11 @@ msgstr ""
 
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 msgid ""
 msgid ""
-"We will remove the HTTPChallenge configuration from this file and reload "
-"the Nginx. Are you sure you want to continue?"
+"We will remove the HTTPChallenge configuration from this file and reload the "
+"Nginx. Are you sure you want to continue?"
 msgstr ""
 msgstr ""
-"Мы удалим конфигурацию HTTPChallenge из этого файла и перезагрузим Nginx. "
-"Вы уверены, что хотите продолжить?"
+"Мы удалим конфигурацию HTTPChallenge из этого файла и перезагрузим Nginx. Вы "
+"уверены, что хотите продолжить?"
 
 
 #: src/views/preference/tabs/AuthSettings.vue:97
 #: src/views/preference/tabs/AuthSettings.vue:97
 msgid "Webauthn"
 msgid "Webauthn"
@@ -5010,8 +5099,8 @@ msgstr "Да"
 
 
 #: src/views/terminal/Terminal.vue:135
 #: src/views/terminal/Terminal.vue:135
 msgid ""
 msgid ""
-"You are accessing this terminal over an insecure HTTP connection on a "
-"non-localhost domain. This may expose sensitive information."
+"You are accessing this terminal over an insecure HTTP connection on a non-"
+"localhost domain. This may expose sensitive information."
 msgstr ""
 msgstr ""
 
 
 #: src/views/system/Upgrade.vue:202
 #: src/views/system/Upgrade.vue:202
@@ -5037,7 +5126,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
-msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
+msgid ""
+"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
@@ -5059,11 +5149,25 @@ msgstr "Ваши старые коды больше не будут работа
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr ""
 msgstr ""
 
 
+#~ msgid ""
+#~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
+#~ "Docker Image, please make sure the docker socket is mounted like this: `-"
+#~ "v /var/run/docker.sock:/var/run/docker.sock`."
+#~ msgstr ""
+#~ "Проверьте, существует ли /var/run/docker.sock. Если вы используете "
+#~ "официальный образ Docker Nginx UI, убедитесь, что сокет Docker подключен "
+#~ "следующим образом: `-v /var/run/docker.sock:/var/run/docker.sock`."
+
+#, fuzzy
+#~ msgid "Nginx Conf Include Conf.d"
+#~ msgstr "Терминальная команда запуска"
+
 #~ msgid "Format error %{msg}"
 #~ msgid "Format error %{msg}"
 #~ msgstr "Ошибка формата %{msg}"
 #~ msgstr "Ошибка формата %{msg}"
 
 
 #~ msgid "Failed to save, syntax error(s) was detected in the configuration."
 #~ msgid "Failed to save, syntax error(s) was detected in the configuration."
-#~ msgstr "Не удалось сохранить, обнаружены синтаксические ошибки в конфигурации."
+#~ msgstr ""
+#~ "Не удалось сохранить, обнаружены синтаксические ошибки в конфигурации."
 
 
 #, fuzzy
 #, fuzzy
 #~ msgid "Access Token"
 #~ msgid "Access Token"
@@ -5126,13 +5230,16 @@ msgstr ""
 #~ "Синхронизация конфигурации %{cert_name} с %{env_name} не удалась, "
 #~ "Синхронизация конфигурации %{cert_name} с %{env_name} не удалась, "
 #~ "пожалуйста, обновите удаленный Nginx UI до последней версии"
 #~ "пожалуйста, обновите удаленный Nginx UI до последней версии"
 
 
-#~ msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}"
-#~ msgstr ""
-#~ "Переименование %{orig_path} в %{new_path} на %{env_name} не удалось, ответ: "
+#~ msgid ""
+#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: "
 #~ "%{resp}"
 #~ "%{resp}"
+#~ msgstr ""
+#~ "Переименование %{orig_path} в %{new_path} на %{env_name} не удалось, "
+#~ "ответ: %{resp}"
 
 
 #, fuzzy
 #, fuzzy
-#~ msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}"
+#~ msgid ""
+#~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}"
 #~ msgstr "Переименование %{orig_path} в %{new_path} на %{env_name} успешно"
 #~ msgstr "Переименование %{orig_path} в %{new_path} на %{env_name} успешно"
 
 
 #, fuzzy
 #, fuzzy
@@ -5148,15 +5255,16 @@ msgstr ""
 #~ "Синхронизация сертификата %{cert_name} с %{env_name} не удалась, "
 #~ "Синхронизация сертификата %{cert_name} с %{env_name} не удалась, "
 #~ "пожалуйста, обновите удаленный интерфейс Nginx до последней версии"
 #~ "пожалуйста, обновите удаленный интерфейс Nginx до последней версии"
 
 
-#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
+#~ msgid ""
+#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
 #~ msgstr ""
 #~ msgstr ""
 #~ "Синхронизация сертификата %{cert_name} с %{env_name} не удалась, ответ: "
 #~ "Синхронизация сертификата %{cert_name} с %{env_name} не удалась, ответ: "
 #~ "%{resp}"
 #~ "%{resp}"
 
 
 #~ msgid "Sync config %{config_name} to %{env_name} failed, response: %{resp}"
 #~ msgid "Sync config %{config_name} to %{env_name} failed, response: %{resp}"
 #~ msgstr ""
 #~ msgstr ""
-#~ "Синхронизация конфигурации %{config_name} с %{env_name} не удалась, ответ: "
-#~ "%{resp}"
+#~ "Синхронизация конфигурации %{config_name} с %{env_name} не удалась, "
+#~ "ответ: %{resp}"
 
 
 #~ msgid "Target"
 #~ msgid "Target"
 #~ msgstr "Цель"
 #~ msgstr "Цель"
@@ -5165,8 +5273,8 @@ msgstr ""
 #~ msgstr "Файл"
 #~ msgstr "Файл"
 
 
 #~ msgid ""
 #~ msgid ""
-#~ "If you lose your mobile phone, you can use the recovery code to reset your "
-#~ "2FA."
+#~ "If you lose your mobile phone, you can use the recovery code to reset "
+#~ "your 2FA."
 #~ msgstr ""
 #~ msgstr ""
 #~ "Если вы потеряете свой мобильный телефон, вы можете использовать код "
 #~ "Если вы потеряете свой мобильный телефон, вы можете использовать код "
 #~ "восстановления для сброса 2FA."
 #~ "восстановления для сброса 2FA."
@@ -5180,10 +5288,11 @@ msgstr ""
 #~ msgid "Server error"
 #~ msgid "Server error"
 #~ msgstr "Ошибка сервера"
 #~ msgstr "Ошибка сервера"
 
 
-#~ msgid "The recovery code is only displayed once, please save it in a safe place."
+#~ msgid ""
+#~ "The recovery code is only displayed once, please save it in a safe place."
 #~ msgstr ""
 #~ msgstr ""
-#~ "Код восстановления отображается только один раз, пожалуйста, сохраните его "
-#~ "в безопасном месте."
+#~ "Код восстановления отображается только один раз, пожалуйста, сохраните "
+#~ "его в безопасном месте."
 
 
 #~ msgid "Too many login failed attempts, please try again later"
 #~ msgid "Too many login failed attempts, please try again later"
 #~ msgstr "Слишком много неудачных попыток входа, попробуйте позже"
 #~ msgstr "Слишком много неудачных попыток входа, попробуйте позже"

File diff suppressed because it is too large
+ 278 - 166
app/src/language/tr_TR/app.po


+ 233 - 141
app/src/language/uk_UA/app.po

@@ -4,63 +4,64 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Project-Id-Version: PACKAGE VERSION\n"
 "PO-Revision-Date: 2025-04-16 15:12+0000\n"
 "PO-Revision-Date: 2025-04-16 15:12+0000\n"
 "Last-Translator: sergio_from_tauri <dedysobr@gmail.com>\n"
 "Last-Translator: sergio_from_tauri <dedysobr@gmail.com>\n"
-"Language-Team: Ukrainian "
-"<https://weblate.nginxui.com/projects/nginx-ui/frontend/uk/>\n"
+"Language-Team: Ukrainian <https://weblate.nginxui.com/projects/nginx-ui/"
+"frontend/uk/>\n"
 "Language: uk_UA\n"
 "Language: uk_UA\n"
 "MIME-Version: 1.0\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
 "X-Generator: Weblate 5.11\n"
 "X-Generator: Weblate 5.11\n"
 
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:47
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgstr ""
 msgstr ""
-"[Nginx UI] Користувач ACME: %{name}, Електронна пошта: %{email}, Каталог "
-"CA: %{caDir}"
+"[Nginx UI] Користувач ACME: %{name}, Електронна пошта: %{email}, Каталог CA: "
+"%{caDir}"
 
 
-#: src/language/generate.ts:13
+#: src/language/generate.ts:49
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr ""
 msgstr ""
 "[Nginx UI] Резервне копіювання поточного сертифіката для подальшого "
 "[Nginx UI] Резервне копіювання поточного сертифіката для подальшого "
 "відкликання"
 "відкликання"
 
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:6
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "Сертифікат успішно поновлено"
 msgstr "Сертифікат успішно поновлено"
 
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:37
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Сертифікат успішно видалено"
 msgstr "Сертифікат успішно видалено"
 
 
-#: src/language/generate.ts:29
-msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
+#: src/language/generate.ts:13
+msgid ""
+"[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 msgstr ""
-"[Nginx UI] Сертифікат використовувався для сервера, перезавантаження "
-"TLS-сертифіката сервера"
+"[Nginx UI] Сертифікат використовувався для сервера, перезавантаження TLS-"
+"сертифіката сервера"
 
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:35
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "[Nginx UI] Створення клієнта для спрощення зв’язку з сервером CA"
 msgstr "[Nginx UI] Створення клієнта для спрощення зв’язку з сервером CA"
 
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:36
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "Змінні навколишнього середовища очищення"
 msgstr "Змінні навколишнього середовища очищення"
 
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:28
 msgid "[Nginx UI] Finished"
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] Завершено"
 msgstr "[Nginx UI] Завершено"
 
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:25
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Issued certificate successfully"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "Сертифікат успішно видалено"
 msgstr "Сертифікат успішно видалено"
 
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:50
 msgid "[Nginx UI] Obtaining certificate"
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] Отримання сертифіката"
 msgstr "[Nginx UI] Отримання сертифіката"
 
 
@@ -68,44 +69,44 @@ msgstr "[Nginx UI] Отримання сертифіката"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] Підготовка до відкликання сертифіката"
 msgstr "[Nginx UI] Підготовка до відкликання сертифіката"
 
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:46
 msgid "[Nginx UI] Preparing lego configurations"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] Підготовка конфігурацій lego"
 msgstr "[Nginx UI] Підготовка конфігурацій lego"
 
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:19
 msgid "[Nginx UI] Reloading nginx"
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] Перезавантаження nginx"
 msgstr "[Nginx UI] Перезавантаження nginx"
 
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:14
 msgid "[Nginx UI] Revocation completed"
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] Відкликання завершено"
 msgstr "[Nginx UI] Відкликання завершено"
 
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Revoking certificate"
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] Відкликання сертифіката"
 msgstr "[Nginx UI] Відкликання сертифіката"
 
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:29
 msgid "[Nginx UI] Revoking old certificate"
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] Відкликання старого сертифіката"
 msgstr "[Nginx UI] Відкликання старого сертифіката"
 
 
-#: src/language/generate.ts:20
+#: src/language/generate.ts:18
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] Налаштування провайдера виклику DNS01"
 msgstr "[Nginx UI] Налаштування провайдера виклику DNS01"
 
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:27
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Setting environment variables"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "Змінні навколишнього середовища очищення"
 msgstr "Змінні навколишнього середовища очищення"
 
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] Налаштування провайдера HTTP01-виклику"
 msgstr "[Nginx UI] Налаштування провайдера HTTP01-виклику"
 
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:12
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] Запис приватного ключа сертифіката на диск"
 msgstr "[Nginx UI] Запис приватного ключа сертифіката на диск"
 
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:51
 msgid "[Nginx UI] Writing certificate to disk"
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] Запис сертифіката на диск"
 msgstr "[Nginx UI] Запис сертифіката на диск"
 
 
@@ -125,6 +126,10 @@ msgstr "Про программу"
 msgid "Access Log"
 msgid "Access Log"
 msgstr "Логи доступу"
 msgstr "Логи доступу"
 
 
+#: src/constants/errors/self_check.ts:21
+msgid "Access log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
 #: src/routes/modules/nginx_log.ts:17
 msgid "Access Logs"
 msgid "Access Logs"
@@ -211,7 +216,8 @@ msgstr "Розширений режим"
 
 
 #: src/views/preference/components/AuthSettings/AddPasskey.vue:99
 #: src/views/preference/components/AuthSettings/AddPasskey.vue:99
 msgid "Afterwards, refresh this page and click add passkey again."
 msgid "Afterwards, refresh this page and click add passkey again."
-msgstr "Після цього оновіть цю сторінку та натисніть «Додати ключ доступу» знову."
+msgstr ""
+"Після цього оновіть цю сторінку та натисніть «Додати ключ доступу» знову."
 
 
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:118
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:419
@@ -337,7 +343,7 @@ msgstr "Запитати допомоги у ChatGPT"
 msgid "Assistant"
 msgid "Assistant"
 msgstr "Помічник"
 msgstr "Помічник"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:31
+#: src/components/SelfCheck/SelfCheck.vue:30
 msgid "Attempt to fix"
 msgid "Attempt to fix"
 msgstr "Спробувати виправити"
 msgstr "Спробувати виправити"
 
 
@@ -413,7 +419,8 @@ msgstr "Резервна копія"
 
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:155
 #: src/components/SystemRestore/SystemRestoreContent.vue:155
 msgid "Backup file integrity check failed, it may have been tampered with"
 msgid "Backup file integrity check failed, it may have been tampered with"
-msgstr "Перевірка цілісності резервного файлу не вдалася, можливо, його було змінено"
+msgstr ""
+"Перевірка цілісності резервного файлу не вдалася, можливо, його було змінено"
 
 
 #: src/constants/errors/backup.ts:41
 #: src/constants/errors/backup.ts:41
 msgid "Backup file not found: {0}"
 msgid "Backup file not found: {0}"
@@ -493,7 +500,8 @@ msgstr "Кеш"
 
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:178
 msgid "Cache items not accessed within this time will be removed"
 msgid "Cache items not accessed within this time will be removed"
-msgstr "Елементи кешу, до яких не було звернень протягом цього часу, будуть видалені"
+msgstr ""
+"Елементи кешу, до яких не було звернень протягом цього часу, будуть видалені"
 
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:350
 msgid "Cache loader processing time threshold"
 msgid "Cache loader processing time threshold"
@@ -556,7 +564,8 @@ msgstr "Скасувати"
 
 
 #: src/constants/errors/user.ts:11
 #: src/constants/errors/user.ts:11
 msgid "Cannot change initial user password in demo mode"
 msgid "Cannot change initial user password in demo mode"
-msgstr "Не вдається змінити початковий пароль користувача в демонстраційному режимі"
+msgstr ""
+"Не вдається змінити початковий пароль користувача в демонстраційному режимі"
 
 
 #: src/components/ConfigHistory/DiffViewer.vue:67
 #: src/components/ConfigHistory/DiffViewer.vue:67
 #: src/components/ConfigHistory/DiffViewer.vue:84
 #: src/components/ConfigHistory/DiffViewer.vue:84
@@ -611,7 +620,7 @@ msgstr "Термін дії сертифіката закінчився"
 msgid "Certificate Expiring Soon"
 msgid "Certificate Expiring Soon"
 msgstr "Сертифікат незабаром закінчується"
 msgstr "Сертифікат незабаром закінчується"
 
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:33
 #, fuzzy
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgid "Certificate not found: %{error}"
 msgstr "Помилка декодування сертифіката"
 msgstr "Помилка декодування сертифіката"
@@ -637,7 +646,7 @@ msgstr "Інтервал оновлення сертифіката"
 msgid "Certificate renewed successfully"
 msgid "Certificate renewed successfully"
 msgstr "Сертифікат успішно поновлено"
 msgstr "Сертифікат успішно поновлено"
 
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:11
 #, fuzzy
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgid "Certificate revoked successfully"
 msgstr "Сертифікат успішно видалено"
 msgstr "Сертифікат успішно видалено"
@@ -700,48 +709,70 @@ msgstr "Перевірити"
 msgid "Check again"
 msgid "Check again"
 msgstr "Перевірте ще раз"
 msgstr "Перевірте ще раз"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:31
-msgid ""
-"Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
-"Docker Image, please make sure the docker socket is mounted like this: `-v "
-"/var/run/docker.sock:/var/run/docker.sock`."
-msgstr ""
-"Перевірте, чи існує /var/run/docker.sock. Якщо ви використовуєте офіційний "
-"Docker-образ Nginx UI, переконайтеся, що сокет Docker підключено таким "
-"чином: `-v /var/run/docker.sock:/var/run/docker.sock`."
-
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:11
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:14
+#, fuzzy
 msgid ""
 msgid ""
 "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
 "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
-"prevents using Passkeys and clipboard features."
+"prevents using Passkeys and clipboard features"
 msgstr ""
 msgstr ""
 "Перевірте, чи ввімкнено HTTPS. Використання HTTP поза localhost є "
 "Перевірте, чи ввімкнено HTTPS. Використання HTTP поза localhost є "
 "небезпечним і блокує функції Passkeys та буфера обміну."
 "небезпечним і блокує функції Passkeys та буфера обміну."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:26
-msgid "Check if the nginx.conf includes the conf.d directory."
+#: src/language/generate.ts:40
+msgid "Check if the docker socket exists."
+msgstr ""
+
+#: src/language/generate.ts:20
+msgid "Check if the nginx access log path exists"
+msgstr ""
+
+#: src/language/generate.ts:44
+#, fuzzy
+msgid "Check if the nginx configuration directory exists"
 msgstr "Перевірте, чи файл nginx.conf містить каталог conf.d."
 msgstr "Перевірте, чи файл nginx.conf містить каталог conf.d."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:16
-msgid "Check if the nginx.conf includes the sites-enabled directory."
+#: src/language/generate.ts:9
+#, fuzzy
+msgid "Check if the nginx configuration entry file exists"
+msgstr "Перевірте, чи файл nginx.conf містить каталог conf.d."
+
+#: src/language/generate.ts:32
+msgid "Check if the nginx error log path exists"
+msgstr ""
+
+#: src/language/generate.ts:24
+msgid "Check if the nginx PID path exists"
+msgstr ""
+
+#: src/language/generate.ts:43
+#, fuzzy
+msgid "Check if the nginx.conf includes the conf.d directory"
+msgstr "Перевірте, чи файл nginx.conf містить каталог conf.d."
+
+#: src/language/generate.ts:23
+#, fuzzy
+msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "Перевірте, чи включає файл nginx.conf каталог sites-enabled."
 msgstr "Перевірте, чи включає файл nginx.conf каталог sites-enabled."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:21
-msgid "Check if the nginx.conf includes the streams-enabled directory."
+#: src/language/generate.ts:5
+#, fuzzy
+msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "Перевірте, чи включає файл nginx.conf каталог streams-enabled."
 msgstr "Перевірте, чи включає файл nginx.conf каталог streams-enabled."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:6
+#: src/language/generate.ts:30
+#, fuzzy
 msgid ""
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
 "Check if the sites-available and sites-enabled directories are under the "
-"nginx configuration directory."
+"nginx configuration directory"
 msgstr ""
 msgstr ""
 "Перевірте, чи знаходяться каталоги sites-available та sites-enabled у "
 "Перевірте, чи знаходяться каталоги sites-available та sites-enabled у "
 "каталозі конфігурації nginx."
 "каталозі конфігурації nginx."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:11
+#: src/language/generate.ts:38
+#, fuzzy
 msgid ""
 msgid ""
-"Check if the streams-available and streams-enabled directories are under "
-"the nginx configuration directory."
+"Check if the streams-available and streams-enabled directories are under the "
+"nginx configuration directory"
 msgstr ""
 msgstr ""
 "Перевірте, чи каталоги streams-available та streams-enabled знаходяться в "
 "Перевірте, чи каталоги streams-available та streams-enabled знаходяться в "
 "каталозі конфігурації nginx."
 "каталозі конфігурації nginx."
@@ -843,6 +874,14 @@ msgstr "Порівняйте з струмом"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "Рівень стиснення, 1 найнижчий, 9 - найвищий"
 msgstr "Рівень стиснення, 1 найнижчий, 9 - найвищий"
 
 
+#: src/constants/errors/self_check.ts:17
+msgid "Config directory not exist"
+msgstr ""
+
+#: src/constants/errors/self_check.ts:18
+msgid "Config entry file not exist"
+msgstr ""
+
 #: src/constants/errors/backup.ts:14
 #: src/constants/errors/backup.ts:14
 msgid "Config path is empty"
 msgid "Config path is empty"
 msgstr "Конфігурація порожній"
 msgstr "Конфігурація порожній"
@@ -958,8 +997,7 @@ msgstr "Створити резервну копію"
 msgid "Create File"
 msgid "Create File"
 msgstr "Створити файл"
 msgstr "Створити файл"
 
 
-#: src/views/config/components/Mkdir.vue:47
-#: src/views/config/ConfigList.vue:129
+#: src/views/config/components/Mkdir.vue:47 src/views/config/ConfigList.vue:129
 msgid "Create Folder"
 msgid "Create Folder"
 msgstr "Створити папку"
 msgstr "Створити папку"
 
 
@@ -1023,8 +1061,8 @@ msgstr ""
 "\"Вірність\" означає точність до змісту та наміру оригінального тексту;\n"
 "\"Вірність\" означає точність до змісту та наміру оригінального тексту;\n"
 "\"Плавність\" означає, що переклад має бути зрозумілим та легким для "
 "\"Плавність\" означає, що переклад має бути зрозумілим та легким для "
 "сприйняття;\n"
 "сприйняття;\n"
-"\"Витонченість\" означає прагнення до культурної естетики перекладу та "
-"краси мови.\n"
+"\"Витонченість\" означає прагнення до культурної естетики перекладу та краси "
+"мови.\n"
 "Мета полягає у створенні перекладу, який був би вірним духу оригіналу,\n"
 "Мета полягає у створенні перекладу, який був би вірним духу оригіналу,\n"
 "а також відповідав цільовій мові, культурі та естетичним уподобанням "
 "а також відповідав цільовій мові, культурі та естетичним уподобанням "
 "читачів.\n"
 "читачів.\n"
@@ -1065,12 +1103,11 @@ msgstr "Користувацький"
 msgid ""
 msgid ""
 "Customize the name of local node to be displayed in the environment "
 "Customize the name of local node to be displayed in the environment "
 "indicator."
 "indicator."
-msgstr "Налаштуйте назву локального вузла для відображення в індикаторі середовища."
+msgstr ""
+"Налаштуйте назву локального вузла для відображення в індикаторі середовища."
 
 
-#: src/routes/modules/dashboard.ts:10
-#: src/views/config/ConfigEditor.vue:110
-#: src/views/config/ConfigEditor.vue:161
-#: src/views/config/ConfigList.vue:67
+#: src/routes/modules/dashboard.ts:10 src/views/config/ConfigEditor.vue:110
+#: src/views/config/ConfigEditor.vue:161 src/views/config/ConfigList.vue:67
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "Панель керування"
 msgstr "Панель керування"
 
 
@@ -1088,7 +1125,8 @@ msgstr "Розшифрування не вдалося"
 
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
 msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
 msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
-msgstr "Вкажіть назву та розмір зони спільної пам'яті, наприклад proxy_cache:10m"
+msgstr ""
+"Вкажіть назву та розмір зони спільної пам'яті, наприклад proxy_cache:10m"
 
 
 #: src/components/NgxConfigEditor/NgxServer.vue:78
 #: src/components/NgxConfigEditor/NgxServer.vue:78
 #: src/components/NgxConfigEditor/NgxUpstream.vue:129
 #: src/components/NgxConfigEditor/NgxUpstream.vue:129
@@ -1109,13 +1147,11 @@ msgstr "Видалити сертифікат"
 msgid "Delete Permanently"
 msgid "Delete Permanently"
 msgstr "Видалити назавжди"
 msgstr "Видалити назавжди"
 
 
-#: src/components/Notification/notifications.ts:69
-#: src/language/constants.ts:50
+#: src/components/Notification/notifications.ts:69 src/language/constants.ts:50
 msgid "Delete Remote Site Error"
 msgid "Delete Remote Site Error"
 msgstr "Помилка видалення віддаленого сайту"
 msgstr "Помилка видалення віддаленого сайту"
 
 
-#: src/components/Notification/notifications.ts:73
-#: src/language/constants.ts:49
+#: src/components/Notification/notifications.ts:73 src/language/constants.ts:49
 msgid "Delete Remote Site Success"
 msgid "Delete Remote Site Success"
 msgstr "Віддалений сайт успішно видалено"
 msgstr "Віддалений сайт успішно видалено"
 
 
@@ -1386,11 +1422,11 @@ msgstr ""
 msgid "Docker client not initialized"
 msgid "Docker client not initialized"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:30
-msgid "Docker Socket"
+#: src/language/generate.ts:10
+msgid "Docker socket exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:15
+#: src/constants/errors/self_check.ts:16
 msgid "Docker socket not exist"
 msgid "Docker socket not exist"
 msgstr ""
 msgstr ""
 
 
@@ -1616,6 +1652,10 @@ msgstr ""
 msgid "Error Log"
 msgid "Error Log"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:22
+msgid "Error log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/routes/modules/nginx_log.ts:24
 #: src/routes/modules/nginx_log.ts:24
 msgid "Error Logs"
 msgid "Error Logs"
@@ -1703,7 +1743,7 @@ msgstr ""
 msgid "Failed to copy Nginx config directory: {0}"
 msgid "Failed to copy Nginx config directory: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:9
+#: src/constants/errors/self_check.ts:10
 msgid "Failed to create backup"
 msgid "Failed to create backup"
 msgstr ""
 msgstr ""
 
 
@@ -1783,7 +1823,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgid "Failed to delete certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 msgid "Failed to delete certificate from database: %{error}"
 msgid "Failed to delete certificate from database: %{error}"
 msgstr ""
 msgstr ""
 
 
@@ -1883,7 +1923,7 @@ msgstr ""
 msgid "Failed to open zip file: {0}"
 msgid "Failed to open zip file: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:4
+#: src/constants/errors/self_check.ts:5
 msgid "Failed to parse nginx.conf"
 msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -1903,7 +1943,7 @@ msgstr ""
 msgid "Failed to read hash info file: {0}"
 msgid "Failed to read hash info file: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:3
+#: src/constants/errors/self_check.ts:4
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -2098,7 +2138,7 @@ msgstr ""
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:10
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:13
 msgid "HTTPS Protocol"
 msgid "HTTPS Protocol"
 msgstr ""
 msgstr ""
 
 
@@ -2112,8 +2152,8 @@ msgstr ""
 
 
 #: src/views/nginx_log/NginxLogList.vue:81
 #: src/views/nginx_log/NginxLogList.vue:81
 msgid ""
 msgid ""
-"If logs are not indexed, please check if the log file is under the "
-"directory in Nginx.LogDirWhiteList."
+"If logs are not indexed, please check if the log file is under the directory "
+"in Nginx.LogDirWhiteList."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/AuthSettings.vue:145
 #: src/views/preference/tabs/AuthSettings.vue:145
@@ -2436,8 +2476,11 @@ msgstr ""
 msgid "Log"
 msgid "Log"
 msgstr ""
 msgstr ""
 
 
-#: src/language/generate.ts:23
-msgid "Log file %{log_path} is not a regular file. "
+#: src/language/generate.ts:34
+msgid ""
+"Log file %{log_path} is not a regular file. If you are using nginx-ui in "
+"docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
+"nginx-log.html for more information."
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
@@ -2462,12 +2505,12 @@ msgstr ""
 
 
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 msgid ""
 msgid ""
-"Logrotate, by default, is enabled in most mainstream Linux distributions "
-"for users who install Nginx UI on the host machine, so you don't need to "
-"modify the parameters on this page. For users who install Nginx UI using "
-"Docker containers, you can manually enable this option. The crontab task "
-"scheduler of Nginx UI will execute the logrotate command at the interval "
-"you set in minutes."
+"Logrotate, by default, is enabled in most mainstream Linux distributions for "
+"users who install Nginx UI on the host machine, so you don't need to modify "
+"the parameters on this page. For users who install Nginx UI using Docker "
+"containers, you can manually enable this option. The crontab task scheduler "
+"of Nginx UI will execute the logrotate command at the interval you set in "
+"minutes."
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/components/SiteStatusSegmented.vue:138
 #: src/views/site/components/SiteStatusSegmented.vue:138
@@ -2714,35 +2757,27 @@ msgstr ""
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:25
-msgid "Nginx Conf Include Conf.d"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:15
-msgid "Nginx Conf Include Sites Enabled"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:20
-msgid "Nginx Conf Include Streams Enabled"
+#: src/language/generate.ts:16
+msgid "Nginx access log path exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:5
+#: src/constants/errors/self_check.ts:6
 msgid "Nginx conf no http block"
 msgid "Nginx conf no http block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:7
+#: src/constants/errors/self_check.ts:8
 msgid "Nginx conf no stream block"
 msgid "Nginx conf no stream block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:14
+#: src/constants/errors/self_check.ts:15
 msgid "Nginx conf not include conf.d directory"
 msgid "Nginx conf not include conf.d directory"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:6
+#: src/constants/errors/self_check.ts:7
 msgid "Nginx conf not include sites-enabled"
 msgid "Nginx conf not include sites-enabled"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:8
+#: src/constants/errors/self_check.ts:9
 msgid "Nginx conf not include stream-enabled"
 msgid "Nginx conf not include stream-enabled"
 msgstr ""
 msgstr ""
 
 
@@ -2750,6 +2785,15 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgid "Nginx config directory is not set"
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:31
+#, fuzzy
+msgid "Nginx configuration directory exists"
+msgstr "Історія конфігурації"
+
+#: src/language/generate.ts:15
+msgid "Nginx configuration entry file exists"
+msgstr ""
+
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 msgid "Nginx configuration has been restored"
 msgid "Nginx configuration has been restored"
 msgstr ""
 msgstr ""
@@ -2784,6 +2828,10 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:21
+msgid "Nginx error log path exists"
+msgstr ""
+
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/composables/useNginxPerformance.ts:43
 #: src/composables/useNginxPerformance.ts:43
 #: src/views/dashboard/NginxDashBoard.vue:112
 #: src/views/dashboard/NginxDashBoard.vue:112
@@ -2817,6 +2865,10 @@ msgstr ""
 msgid "Nginx PID Path"
 msgid "Nginx PID Path"
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:45
+msgid "Nginx PID path exists"
+msgstr ""
+
 #: src/views/preference/tabs/NginxSettings.vue:40
 #: src/views/preference/tabs/NginxSettings.vue:40
 msgid "Nginx Reload Command"
 msgid "Nginx Reload Command"
 msgstr ""
 msgstr ""
@@ -2869,10 +2921,25 @@ msgstr ""
 
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 msgid ""
 msgid ""
-"Nginx UI configuration has been restored and will restart automatically in "
-"a few seconds."
+"Nginx UI configuration has been restored and will restart automatically in a "
+"few seconds."
 msgstr ""
 msgstr ""
 
 
+#: src/language/generate.ts:8
+#, fuzzy
+msgid "Nginx.conf includes conf.d directory"
+msgstr "Перевірте, чи файл nginx.conf містить каталог conf.d."
+
+#: src/language/generate.ts:42
+#, fuzzy
+msgid "Nginx.conf includes sites-enabled directory"
+msgstr "Перевірте, чи включає файл nginx.conf каталог sites-enabled."
+
+#: src/language/generate.ts:39
+#, fuzzy
+msgid "Nginx.conf includes streams-enabled directory"
+msgstr "Перевірте, чи включає файл nginx.conf каталог streams-enabled."
+
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
@@ -3194,6 +3261,10 @@ msgstr ""
 msgid "Performing core upgrade"
 msgid "Performing core upgrade"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:19
+msgid "PID path not exist"
+msgstr ""
+
 #: src/constants/errors/crypto.ts:2
 #: src/constants/errors/crypto.ts:2
 msgid "Plain text is empty"
 msgid "Plain text is empty"
 msgstr ""
 msgstr ""
@@ -3242,8 +3313,8 @@ msgstr ""
 #: src/components/Notification/notifications.ts:166
 #: src/components/Notification/notifications.ts:166
 #: src/language/constants.ts:59
 #: src/language/constants.ts:59
 msgid ""
 msgid ""
-"Please generate new recovery codes in the preferences immediately to "
-"prevent lockout."
+"Please generate new recovery codes in the preferences immediately to prevent "
+"lockout."
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
@@ -3285,7 +3356,8 @@ msgid "Please log in."
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/DNSCredential.vue:62
 #: src/views/certificate/DNSCredential.vue:62
-msgid "Please note that the unit of time configurations below are all in seconds."
+msgid ""
+"Please note that the unit of time configurations below are all in seconds."
 msgstr ""
 msgstr ""
 
 
 #: src/views/install/components/InstallView.vue:100
 #: src/views/install/components/InstallView.vue:100
@@ -3388,7 +3460,7 @@ msgstr ""
 msgid "Receive"
 msgid "Receive"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:24
+#: src/components/SelfCheck/SelfCheck.vue:23
 msgid "Recheck"
 msgid "Recheck"
 msgstr ""
 msgstr ""
 
 
@@ -3814,6 +3886,10 @@ msgstr ""
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:20
+msgid "Sbin path not exist"
+msgstr ""
+
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
@@ -3843,7 +3919,7 @@ msgstr ""
 msgid "Selector"
 msgid "Selector"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:16 src/routes/modules/system.ts:19
+#: src/components/SelfCheck/SelfCheck.vue:15 src/routes/modules/system.ts:19
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
@@ -3909,14 +3985,14 @@ msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/views/install/components/InstallView.vue:64
 #: src/views/install/components/InstallView.vue:64
@@ -3959,19 +4035,19 @@ msgstr ""
 msgid "Site not found"
 msgid "Site not found"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:5
-msgid "Sites Directory"
+#: src/language/generate.ts:7
+msgid "Sites directory exists"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/sites.ts:19
 #: src/routes/modules/sites.ts:19
 msgid "Sites List"
 msgid "Sites List"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:10
+#: src/constants/errors/self_check.ts:11
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:11
+#: src/constants/errors/self_check.ts:12
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
 msgstr ""
 msgstr ""
 
 
@@ -4072,15 +4148,15 @@ msgstr ""
 msgid "Stream not found"
 msgid "Stream not found"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:10
-msgid "Streams Directory"
+#: src/language/generate.ts:41
+msgid "Streams directory exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:12
+#: src/constants/errors/self_check.ts:13
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:13
+#: src/constants/errors/self_check.ts:14
 msgid "Streams-enabled directory not exist"
 msgid "Streams-enabled directory not exist"
 msgstr ""
 msgstr ""
 
 
@@ -4092,12 +4168,12 @@ msgstr ""
 msgid "Success"
 msgid "Success"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/frontend/websocket.ts:6
+#: src/components/SelfCheck/tasks/frontend/websocket.ts:13
 msgid ""
 msgid ""
 "Support communication with the backend through the WebSocket protocol. If "
 "Support communication with the backend through the WebSocket protocol. If "
-"your Nginx UI is being used via an Nginx reverse proxy, please refer to "
-"this link to write the corresponding configuration file: "
-"https://nginxui.com/guide/nginx-proxy-example.html"
+"your Nginx UI is being used via an Nginx reverse proxy, please refer to this "
+"link to write the corresponding configuration file: https://nginxui.com/"
+"guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
@@ -4204,6 +4280,10 @@ msgstr ""
 msgid "System restored successfully."
 msgid "System restored successfully."
 msgstr ""
 msgstr ""
 
 
+#: src/constants/errors/self_check.ts:3
+msgid "Task is not fixable"
+msgstr ""
+
 #: src/constants/errors/self_check.ts:2
 #: src/constants/errors/self_check.ts:2
 msgid "Task not found"
 msgid "Task not found"
 msgstr ""
 msgstr ""
@@ -4248,8 +4328,7 @@ msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:2
 #: src/constants/errors/nginx_log.ts:2
 msgid ""
 msgid ""
-"The log path is not under the paths in "
-"settings.NginxSettings.LogDirWhiteList"
+"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList"
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:23
 #: src/views/preference/tabs/OpenAISettings.vue:23
@@ -4260,7 +4339,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:90
 #: src/views/preference/tabs/OpenAISettings.vue:90
-msgid "The model used for code completion, if not set, the chat model will be used."
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/NodeSettings.vue:18
 #: src/views/preference/tabs/NodeSettings.vue:18
@@ -4357,7 +4437,8 @@ msgid "This field should not be empty"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/form_errors.ts:6
 #: src/constants/form_errors.ts:6
-msgid "This field should only contain letters, unicode characters, numbers, and -_."
+msgid ""
+"This field should only contain letters, unicode characters, numbers, and -_."
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/NginxDashBoard.vue:153
 #: src/views/dashboard/NginxDashBoard.vue:153
@@ -4397,7 +4478,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/environments/list/BatchUpgrader.vue:182
 #: src/views/environments/list/BatchUpgrader.vue:182
-msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
+msgid ""
+"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/AuthSettings.vue:124
 #: src/views/preference/tabs/AuthSettings.vue:124
@@ -4441,8 +4523,8 @@ msgstr ""
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 msgid ""
 msgid ""
 "To make sure the certification auto-renewal can work normally, we need to "
 "To make sure the certification auto-renewal can work normally, we need to "
-"add a location which can proxy the request from authority to backend, and "
-"we need to save this file and reload the Nginx. Are you sure you want to "
+"add a location which can proxy the request from authority to backend, and we "
+"need to save this file and reload the Nginx. Are you sure you want to "
 "continue?"
 "continue?"
 msgstr ""
 msgstr ""
 
 
@@ -4524,7 +4606,7 @@ msgstr ""
 msgid "Unknown"
 msgid "Unknown"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:44
+#: src/components/SelfCheck/SelfCheck.vue:43
 msgid "Unknown issue"
 msgid "Unknown issue"
 msgstr ""
 msgstr ""
 
 
@@ -4689,8 +4771,8 @@ msgstr ""
 
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 msgid ""
 msgid ""
-"We will remove the HTTPChallenge configuration from this file and reload "
-"the Nginx. Are you sure you want to continue?"
+"We will remove the HTTPChallenge configuration from this file and reload the "
+"Nginx. Are you sure you want to continue?"
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/AuthSettings.vue:97
 #: src/views/preference/tabs/AuthSettings.vue:97
@@ -4773,8 +4855,8 @@ msgstr "Так"
 
 
 #: src/views/terminal/Terminal.vue:135
 #: src/views/terminal/Terminal.vue:135
 msgid ""
 msgid ""
-"You are accessing this terminal over an insecure HTTP connection on a "
-"non-localhost domain. This may expose sensitive information."
+"You are accessing this terminal over an insecure HTTP connection on a non-"
+"localhost domain. This may expose sensitive information."
 msgstr ""
 msgstr ""
 
 
 #: src/views/system/Upgrade.vue:202
 #: src/views/system/Upgrade.vue:202
@@ -4800,7 +4882,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
-msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
+msgid ""
+"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
@@ -4821,3 +4904,12 @@ msgstr ""
 #: src/views/preference/components/AuthSettings/Passkey.vue:75
 #: src/views/preference/components/AuthSettings/Passkey.vue:75
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr ""
 msgstr ""
+
+#~ msgid ""
+#~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
+#~ "Docker Image, please make sure the docker socket is mounted like this: `-"
+#~ "v /var/run/docker.sock:/var/run/docker.sock`."
+#~ msgstr ""
+#~ "Перевірте, чи існує /var/run/docker.sock. Якщо ви використовуєте "
+#~ "офіційний Docker-образ Nginx UI, переконайтеся, що сокет Docker "
+#~ "підключено таким чином: `-v /var/run/docker.sock:/var/run/docker.sock`."

+ 248 - 140
app/src/language/vi_VN/app.po

@@ -5,54 +5,56 @@ msgstr ""
 "Language-Team: none\n"
 "Language-Team: none\n"
 "Language: vi_VN\n"
 "Language: vi_VN\n"
 "MIME-Version: 1.0\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 
-#: src/language/generate.ts:19
+#: src/language/generate.ts:47
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
 msgid "[Nginx UI] ACME User: %{name}, Email: %{email}, CA Dir: %{caDir}"
-msgstr "[Nginx UI] Người dùng ACME: %{name}, Email: %{email}, Thư mục CA: %{caDir}"
+msgstr ""
+"[Nginx UI] Người dùng ACME: %{name}, Email: %{email}, Thư mục CA: %{caDir}"
 
 
-#: src/language/generate.ts:13
+#: src/language/generate.ts:49
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgid "[Nginx UI] Backing up current certificate for later revocation"
 msgstr "[Nginx UI] Đang sao lưu chứng chỉ hiện tại để thu hồi sau này"
 msgstr "[Nginx UI] Đang sao lưu chứng chỉ hiện tại để thu hồi sau này"
 
 
-#: src/language/generate.ts:28
+#: src/language/generate.ts:6
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate renewed successfully"
 msgid "[Nginx UI] Certificate renewed successfully"
 msgstr "Đã xóa thành công"
 msgstr "Đã xóa thành công"
 
 
-#: src/language/generate.ts:8
+#: src/language/generate.ts:37
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Certificate successfully revoked"
 msgid "[Nginx UI] Certificate successfully revoked"
 msgstr "Restart Nginx thành công"
 msgstr "Restart Nginx thành công"
 
 
-#: src/language/generate.ts:29
-msgid "[Nginx UI] Certificate was used for server, reloading server TLS certificate"
+#: src/language/generate.ts:13
+msgid ""
+"[Nginx UI] Certificate was used for server, reloading server TLS certificate"
 msgstr ""
 msgstr ""
-"[Nginx UI] Chứng chỉ đã được sử dụng cho máy chủ, đang tải lại chứng chỉ "
-"TLS của máy chủ"
+"[Nginx UI] Chứng chỉ đã được sử dụng cho máy chủ, đang tải lại chứng chỉ TLS "
+"của máy chủ"
 
 
-#: src/language/generate.ts:24
+#: src/language/generate.ts:35
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgid "[Nginx UI] Creating client facilitates communication with the CA server"
 msgstr "Tạo client để giao tiếp với CA server"
 msgstr "Tạo client để giao tiếp với CA server"
 
 
-#: src/language/generate.ts:12
+#: src/language/generate.ts:36
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Environment variables cleaned"
 msgid "[Nginx UI] Environment variables cleaned"
 msgstr "Đặt biến môi trường"
 msgstr "Đặt biến môi trường"
 
 
-#: src/language/generate.ts:21
+#: src/language/generate.ts:28
 msgid "[Nginx UI] Finished"
 msgid "[Nginx UI] Finished"
 msgstr "[Nginx UI] Đã hoàn thành"
 msgstr "[Nginx UI] Đã hoàn thành"
 
 
-#: src/language/generate.ts:4
+#: src/language/generate.ts:25
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Issued certificate successfully"
 msgid "[Nginx UI] Issued certificate successfully"
 msgstr "Cấp chứng chỉ thành công"
 msgstr "Cấp chứng chỉ thành công"
 
 
-#: src/language/generate.ts:14
+#: src/language/generate.ts:50
 msgid "[Nginx UI] Obtaining certificate"
 msgid "[Nginx UI] Obtaining certificate"
 msgstr "[Nginx UI] Đang lấy chứng chỉ"
 msgstr "[Nginx UI] Đang lấy chứng chỉ"
 
 
@@ -60,44 +62,44 @@ msgstr "[Nginx UI] Đang lấy chứng chỉ"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgid "[Nginx UI] Preparing for certificate revocation"
 msgstr "[Nginx UI] Chuẩn bị thu hồi chứng chỉ"
 msgstr "[Nginx UI] Chuẩn bị thu hồi chứng chỉ"
 
 
-#: src/language/generate.ts:18
+#: src/language/generate.ts:46
 msgid "[Nginx UI] Preparing lego configurations"
 msgid "[Nginx UI] Preparing lego configurations"
 msgstr "[Nginx UI] Đang chuẩn bị cấu hình lego"
 msgstr "[Nginx UI] Đang chuẩn bị cấu hình lego"
 
 
-#: src/language/generate.ts:25
+#: src/language/generate.ts:19
 msgid "[Nginx UI] Reloading nginx"
 msgid "[Nginx UI] Reloading nginx"
 msgstr "[Nginx UI] Đang tải lại nginx"
 msgstr "[Nginx UI] Đang tải lại nginx"
 
 
-#: src/language/generate.ts:16
+#: src/language/generate.ts:14
 msgid "[Nginx UI] Revocation completed"
 msgid "[Nginx UI] Revocation completed"
 msgstr "[Nginx UI] Đã hoàn tất thu hồi"
 msgstr "[Nginx UI] Đã hoàn tất thu hồi"
 
 
-#: src/language/generate.ts:7
+#: src/language/generate.ts:4
 msgid "[Nginx UI] Revoking certificate"
 msgid "[Nginx UI] Revoking certificate"
 msgstr "[Nginx UI] Đang thu hồi chứng chỉ"
 msgstr "[Nginx UI] Đang thu hồi chứng chỉ"
 
 
-#: src/language/generate.ts:26
+#: src/language/generate.ts:29
 msgid "[Nginx UI] Revoking old certificate"
 msgid "[Nginx UI] Revoking old certificate"
 msgstr "[Nginx UI] Đang thu hồi chứng chỉ cũ"
 msgstr "[Nginx UI] Đang thu hồi chứng chỉ cũ"
 
 
-#: src/language/generate.ts:20
+#: src/language/generate.ts:18
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgid "[Nginx UI] Setting DNS01 challenge provider"
 msgstr "[Nginx UI] Đang thiết lập nhà cung cấp thử thách DNS01"
 msgstr "[Nginx UI] Đang thiết lập nhà cung cấp thử thách DNS01"
 
 
-#: src/language/generate.ts:6
+#: src/language/generate.ts:27
 #, fuzzy
 #, fuzzy
 msgid "[Nginx UI] Setting environment variables"
 msgid "[Nginx UI] Setting environment variables"
 msgstr "Đặt biến môi trường"
 msgstr "Đặt biến môi trường"
 
 
-#: src/language/generate.ts:11
+#: src/language/generate.ts:48
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgid "[Nginx UI] Setting HTTP01 challenge provider"
 msgstr "[Nginx UI] Đang thiết lập nhà cung cấp thử thách HTTP01"
 msgstr "[Nginx UI] Đang thiết lập nhà cung cấp thử thách HTTP01"
 
 
-#: src/language/generate.ts:15
+#: src/language/generate.ts:12
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgid "[Nginx UI] Writing certificate private key to disk"
 msgstr "[Nginx UI] Đang ghi khóa riêng của chứng chỉ vào ổ đĩa"
 msgstr "[Nginx UI] Đang ghi khóa riêng của chứng chỉ vào ổ đĩa"
 
 
-#: src/language/generate.ts:27
+#: src/language/generate.ts:51
 msgid "[Nginx UI] Writing certificate to disk"
 msgid "[Nginx UI] Writing certificate to disk"
 msgstr "[Nginx UI] Đang ghi chứng chỉ vào ổ đĩa"
 msgstr "[Nginx UI] Đang ghi chứng chỉ vào ổ đĩa"
 
 
@@ -118,6 +120,10 @@ msgstr "Tác giả"
 msgid "Access Log"
 msgid "Access Log"
 msgstr "Log truy cập"
 msgstr "Log truy cập"
 
 
+#: src/constants/errors/self_check.ts:21
+msgid "Access log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/components/NgxConfigEditor/LogEntry.vue:90
 #: src/routes/modules/nginx_log.ts:17
 #: src/routes/modules/nginx_log.ts:17
 msgid "Access Logs"
 msgid "Access Logs"
@@ -348,7 +354,7 @@ msgstr "Hỏi ChatGPT"
 msgid "Assistant"
 msgid "Assistant"
 msgstr "Trợ lý"
 msgstr "Trợ lý"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:31
+#: src/components/SelfCheck/SelfCheck.vue:30
 msgid "Attempt to fix"
 msgid "Attempt to fix"
 msgstr "Cố gắng sửa chữa"
 msgstr "Cố gắng sửa chữa"
 
 
@@ -427,7 +433,8 @@ msgstr "Quay lại"
 
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:155
 #: src/components/SystemRestore/SystemRestoreContent.vue:155
 msgid "Backup file integrity check failed, it may have been tampered with"
 msgid "Backup file integrity check failed, it may have been tampered with"
-msgstr "Kiểm tra tính toàn vẹn của tập tin sao lưu thất bại, có thể đã bị can thiệp"
+msgstr ""
+"Kiểm tra tính toàn vẹn của tập tin sao lưu thất bại, có thể đã bị can thiệp"
 
 
 #: src/constants/errors/backup.ts:41
 #: src/constants/errors/backup.ts:41
 msgid "Backup file not found: {0}"
 msgid "Backup file not found: {0}"
@@ -632,7 +639,7 @@ msgstr "Chứng chỉ đã hết hạn"
 msgid "Certificate Expiring Soon"
 msgid "Certificate Expiring Soon"
 msgstr "Chứng chỉ sắp hết hạn"
 msgstr "Chứng chỉ sắp hết hạn"
 
 
-#: src/language/generate.ts:5
+#: src/language/generate.ts:33
 #, fuzzy
 #, fuzzy
 msgid "Certificate not found: %{error}"
 msgid "Certificate not found: %{error}"
 msgstr "Lỗi giải mã chứng chỉ"
 msgstr "Lỗi giải mã chứng chỉ"
@@ -660,7 +667,7 @@ msgstr "Chứng chỉ SSL hợp lệ"
 msgid "Certificate renewed successfully"
 msgid "Certificate renewed successfully"
 msgstr "Đã xóa thành công"
 msgstr "Đã xóa thành công"
 
 
-#: src/language/generate.ts:10
+#: src/language/generate.ts:11
 #, fuzzy
 #, fuzzy
 msgid "Certificate revoked successfully"
 msgid "Certificate revoked successfully"
 msgstr "Đã xóa chứng chỉ thành công"
 msgstr "Đã xóa chứng chỉ thành công"
@@ -726,48 +733,70 @@ msgstr "Kiểm tra lại"
 msgid "Check again"
 msgid "Check again"
 msgstr "Kiểm tra lại"
 msgstr "Kiểm tra lại"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:31
-msgid ""
-"Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
-"Docker Image, please make sure the docker socket is mounted like this: `-v "
-"/var/run/docker.sock:/var/run/docker.sock`."
-msgstr ""
-"Kiểm tra xem /var/run/docker.sock có tồn tại không. Nếu bạn đang sử dụng "
-"Docker Image chính thức của Nginx UI, hãy đảm bảo rằng ổ cắm Docker được "
-"gắn như sau: `-v /var/run/docker.sock:/var/run/docker.sock`."
-
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:11
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:14
+#, fuzzy
 msgid ""
 msgid ""
 "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
 "Check if HTTPS is enabled. Using HTTP outside localhost is insecure and "
-"prevents using Passkeys and clipboard features."
+"prevents using Passkeys and clipboard features"
 msgstr ""
 msgstr ""
 "Kiểm tra xem HTTPS đã được bật chưa. Sử dụng HTTP bên ngoài localhost không "
 "Kiểm tra xem HTTPS đã được bật chưa. Sử dụng HTTP bên ngoài localhost không "
 "an toàn và ngăn chặn việc sử dụng tính năng Passkeys cùng khay nhớ tạm."
 "an toàn và ngăn chặn việc sử dụng tính năng Passkeys cùng khay nhớ tạm."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:26
-msgid "Check if the nginx.conf includes the conf.d directory."
+#: src/language/generate.ts:40
+msgid "Check if the docker socket exists."
+msgstr ""
+
+#: src/language/generate.ts:20
+msgid "Check if the nginx access log path exists"
+msgstr ""
+
+#: src/language/generate.ts:44
+#, fuzzy
+msgid "Check if the nginx configuration directory exists"
+msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục conf.d không."
+
+#: src/language/generate.ts:9
+#, fuzzy
+msgid "Check if the nginx configuration entry file exists"
+msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục conf.d không."
+
+#: src/language/generate.ts:32
+msgid "Check if the nginx error log path exists"
+msgstr ""
+
+#: src/language/generate.ts:24
+msgid "Check if the nginx PID path exists"
+msgstr ""
+
+#: src/language/generate.ts:43
+#, fuzzy
+msgid "Check if the nginx.conf includes the conf.d directory"
 msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục conf.d không."
 msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục conf.d không."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:16
-msgid "Check if the nginx.conf includes the sites-enabled directory."
+#: src/language/generate.ts:23
+#, fuzzy
+msgid "Check if the nginx.conf includes the sites-enabled directory"
 msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục sites-enabled không."
 msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục sites-enabled không."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:21
-msgid "Check if the nginx.conf includes the streams-enabled directory."
+#: src/language/generate.ts:5
+#, fuzzy
+msgid "Check if the nginx.conf includes the streams-enabled directory"
 msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục streams-enabled không."
 msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục streams-enabled không."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:6
+#: src/language/generate.ts:30
+#, fuzzy
 msgid ""
 msgid ""
 "Check if the sites-available and sites-enabled directories are under the "
 "Check if the sites-available and sites-enabled directories are under the "
-"nginx configuration directory."
+"nginx configuration directory"
 msgstr ""
 msgstr ""
 "Kiểm tra xem các thư mục sites-available và sites-enabled có nằm trong thư "
 "Kiểm tra xem các thư mục sites-available và sites-enabled có nằm trong thư "
 "mục cấu hình nginx hay không."
 "mục cấu hình nginx hay không."
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:11
+#: src/language/generate.ts:38
+#, fuzzy
 msgid ""
 msgid ""
-"Check if the streams-available and streams-enabled directories are under "
-"the nginx configuration directory."
+"Check if the streams-available and streams-enabled directories are under the "
+"nginx configuration directory"
 msgstr ""
 msgstr ""
 "Kiểm tra xem các thư mục streams-available và streams-enabled có nằm trong "
 "Kiểm tra xem các thư mục streams-available và streams-enabled có nằm trong "
 "thư mục cấu hình nginx hay không."
 "thư mục cấu hình nginx hay không."
@@ -870,6 +899,16 @@ msgstr "So sánh với hiện tại"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgid "Compression level, 1 is lowest, 9 is highest"
 msgstr "Mức nén, 1 là thấp nhất, 9 là cao nhất"
 msgstr "Mức nén, 1 là thấp nhất, 9 là cao nhất"
 
 
+#: src/constants/errors/self_check.ts:17
+#, fuzzy
+msgid "Config directory not exist"
+msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
+
+#: src/constants/errors/self_check.ts:18
+#, fuzzy
+msgid "Config entry file not exist"
+msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
+
 #: src/constants/errors/backup.ts:14
 #: src/constants/errors/backup.ts:14
 #, fuzzy
 #, fuzzy
 msgid "Config path is empty"
 msgid "Config path is empty"
@@ -1000,8 +1039,8 @@ msgid ""
 "Create system backups including Nginx configuration and Nginx UI settings. "
 "Create system backups including Nginx configuration and Nginx UI settings. "
 "Backup files will be automatically downloaded to your computer."
 "Backup files will be automatically downloaded to your computer."
 msgstr ""
 msgstr ""
-"Tạo bản sao lưu hệ thống bao gồm cấu hình Nginx và cài đặt Nginx UI. Các "
-"tệp sao lưu sẽ tự động được tải xuống máy tính của bạn."
+"Tạo bản sao lưu hệ thống bao gồm cấu hình Nginx và cài đặt Nginx UI. Các tệp "
+"sao lưu sẽ tự động được tải xuống máy tính của bạn."
 
 
 #: src/views/environments/group/columns.ts:31
 #: src/views/environments/group/columns.ts:31
 #: src/views/notification/notificationColumns.tsx:59
 #: src/views/notification/notificationColumns.tsx:59
@@ -1085,7 +1124,8 @@ msgstr "Mô tả"
 
 
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
 #: src/views/dashboard/components/ParamsOpt/ProxyCacheConfig.vue:150
 msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
 msgid "Define shared memory zone name and size, e.g. proxy_cache:10m"
-msgstr "Xác định tên và kích thước vùng bộ nhớ dùng chung, ví dụ proxy_cache:10m"
+msgstr ""
+"Xác định tên và kích thước vùng bộ nhớ dùng chung, ví dụ proxy_cache:10m"
 
 
 #: src/components/NgxConfigEditor/NgxServer.vue:78
 #: src/components/NgxConfigEditor/NgxServer.vue:78
 #: src/components/NgxConfigEditor/NgxUpstream.vue:129
 #: src/components/NgxConfigEditor/NgxUpstream.vue:129
@@ -1375,11 +1415,11 @@ msgstr "Bạn muốn xóa máy chủ này ?"
 msgid "Docker client not initialized"
 msgid "Docker client not initialized"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:30
-msgid "Docker Socket"
+#: src/language/generate.ts:10
+msgid "Docker socket exists"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:15
+#: src/constants/errors/self_check.ts:16
 msgid "Docker socket not exist"
 msgid "Docker socket not exist"
 msgstr ""
 msgstr ""
 
 
@@ -1631,6 +1671,10 @@ msgstr ""
 msgid "Error Log"
 msgid "Error Log"
 msgstr "Log lỗi"
 msgstr "Log lỗi"
 
 
+#: src/constants/errors/self_check.ts:22
+msgid "Error log path not exist"
+msgstr ""
+
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/components/NgxConfigEditor/LogEntry.vue:98
 #: src/routes/modules/nginx_log.ts:24
 #: src/routes/modules/nginx_log.ts:24
 msgid "Error Logs"
 msgid "Error Logs"
@@ -1724,7 +1768,7 @@ msgstr ""
 msgid "Failed to copy Nginx config directory: {0}"
 msgid "Failed to copy Nginx config directory: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:9
+#: src/constants/errors/self_check.ts:10
 #, fuzzy
 #, fuzzy
 msgid "Failed to create backup"
 msgid "Failed to create backup"
 msgstr "Không thể bật %{msg}"
 msgstr "Không thể bật %{msg}"
@@ -1821,7 +1865,7 @@ msgstr ""
 msgid "Failed to delete certificate"
 msgid "Failed to delete certificate"
 msgstr "Nhận chứng chỉ"
 msgstr "Nhận chứng chỉ"
 
 
-#: src/language/generate.ts:9
+#: src/language/generate.ts:26
 #, fuzzy
 #, fuzzy
 msgid "Failed to delete certificate from database: %{error}"
 msgid "Failed to delete certificate from database: %{error}"
 msgstr "Nhận chứng chỉ"
 msgstr "Nhận chứng chỉ"
@@ -1940,7 +1984,7 @@ msgstr "Không thể bật %{msg}"
 msgid "Failed to open zip file: {0}"
 msgid "Failed to open zip file: {0}"
 msgstr "Không thể bật %{msg}"
 msgstr "Không thể bật %{msg}"
 
 
-#: src/constants/errors/self_check.ts:4
+#: src/constants/errors/self_check.ts:5
 msgid "Failed to parse nginx.conf"
 msgid "Failed to parse nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -1962,7 +2006,7 @@ msgstr "Không thể bật %{msg}"
 msgid "Failed to read hash info file: {0}"
 msgid "Failed to read hash info file: {0}"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:3
+#: src/constants/errors/self_check.ts:4
 msgid "Failed to read nginx.conf"
 msgid "Failed to read nginx.conf"
 msgstr ""
 msgstr ""
 
 
@@ -2172,7 +2216,7 @@ msgstr ""
 msgid "HTTP01"
 msgid "HTTP01"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/tasks/frontend/https-check.ts:10
+#: src/components/SelfCheck/tasks/frontend/https-check.ts:13
 msgid "HTTPS Protocol"
 msgid "HTTPS Protocol"
 msgstr ""
 msgstr ""
 
 
@@ -2186,8 +2230,8 @@ msgstr ""
 
 
 #: src/views/nginx_log/NginxLogList.vue:81
 #: src/views/nginx_log/NginxLogList.vue:81
 msgid ""
 msgid ""
-"If logs are not indexed, please check if the log file is under the "
-"directory in Nginx.LogDirWhiteList."
+"If logs are not indexed, please check if the log file is under the directory "
+"in Nginx.LogDirWhiteList."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/AuthSettings.vue:145
 #: src/views/preference/tabs/AuthSettings.vue:145
@@ -2536,8 +2580,11 @@ msgstr "Locations"
 msgid "Log"
 msgid "Log"
 msgstr "Log"
 msgstr "Log"
 
 
-#: src/language/generate.ts:23
-msgid "Log file %{log_path} is not a regular file. "
+#: src/language/generate.ts:34
+msgid ""
+"Log file %{log_path} is not a regular file. If you are using nginx-ui in "
+"docker container, please refer to https://nginxui.com/zh_CN/guide/config-"
+"nginx-log.html for more information."
 msgstr ""
 msgstr ""
 
 
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
 #: src/routes/modules/nginx_log.ts:39 src/views/nginx_log/NginxLogList.vue:67
@@ -2562,12 +2609,12 @@ msgstr ""
 
 
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 #: src/views/preference/tabs/LogrotateSettings.vue:13
 msgid ""
 msgid ""
-"Logrotate, by default, is enabled in most mainstream Linux distributions "
-"for users who install Nginx UI on the host machine, so you don't need to "
-"modify the parameters on this page. For users who install Nginx UI using "
-"Docker containers, you can manually enable this option. The crontab task "
-"scheduler of Nginx UI will execute the logrotate command at the interval "
-"you set in minutes."
+"Logrotate, by default, is enabled in most mainstream Linux distributions for "
+"users who install Nginx UI on the host machine, so you don't need to modify "
+"the parameters on this page. For users who install Nginx UI using Docker "
+"containers, you can manually enable this option. The crontab task scheduler "
+"of Nginx UI will execute the logrotate command at the interval you set in "
+"minutes."
 msgstr ""
 msgstr ""
 
 
 #: src/views/site/components/SiteStatusSegmented.vue:138
 #: src/views/site/components/SiteStatusSegmented.vue:138
@@ -2592,9 +2639,8 @@ msgid ""
 "Make sure you have configured a reverse proxy for .well-known directory to "
 "Make sure you have configured a reverse proxy for .well-known directory to "
 "HTTPChallengePort before obtaining the certificate."
 "HTTPChallengePort before obtaining the certificate."
 msgstr ""
 msgstr ""
-"Đảm bảo rằng bạn đã định cấu hình proxy ngược (reverse proxy) thư mục "
-".well-known tới HTTPChallengePort (default: 9180) trước khi ký chứng chỉ "
-"SSL."
+"Đảm bảo rằng bạn đã định cấu hình proxy ngược (reverse proxy) thư mục .well-"
+"known tới HTTPChallengePort (default: 9180) trước khi ký chứng chỉ SSL."
 
 
 #: src/routes/modules/config.ts:10 src/views/config/ConfigEditor.vue:115
 #: src/routes/modules/config.ts:10 src/views/config/ConfigEditor.vue:115
 #: src/views/config/ConfigEditor.vue:166 src/views/config/ConfigList.vue:72
 #: src/views/config/ConfigEditor.vue:166 src/views/config/ConfigList.vue:72
@@ -2834,36 +2880,29 @@ msgstr ""
 msgid "Nginx Access Log Path"
 msgid "Nginx Access Log Path"
 msgstr "Vị trí lưu log truy cập (Access log) của Nginx"
 msgstr "Vị trí lưu log truy cập (Access log) của Nginx"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:25
-msgid "Nginx Conf Include Conf.d"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:15
-msgid "Nginx Conf Include Sites Enabled"
-msgstr ""
-
-#: src/components/SelfCheck/tasks/backend/index.ts:20
-msgid "Nginx Conf Include Streams Enabled"
-msgstr ""
+#: src/language/generate.ts:16
+#, fuzzy
+msgid "Nginx access log path exists"
+msgstr "Vị trí lưu log truy cập (Access log) của Nginx"
 
 
-#: src/constants/errors/self_check.ts:5
+#: src/constants/errors/self_check.ts:6
 msgid "Nginx conf no http block"
 msgid "Nginx conf no http block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:7
+#: src/constants/errors/self_check.ts:8
 msgid "Nginx conf no stream block"
 msgid "Nginx conf no stream block"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:14
+#: src/constants/errors/self_check.ts:15
 #, fuzzy
 #, fuzzy
 msgid "Nginx conf not include conf.d directory"
 msgid "Nginx conf not include conf.d directory"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 
 
-#: src/constants/errors/self_check.ts:6
+#: src/constants/errors/self_check.ts:7
 msgid "Nginx conf not include sites-enabled"
 msgid "Nginx conf not include sites-enabled"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:8
+#: src/constants/errors/self_check.ts:9
 msgid "Nginx conf not include stream-enabled"
 msgid "Nginx conf not include stream-enabled"
 msgstr ""
 msgstr ""
 
 
@@ -2872,6 +2911,16 @@ msgstr ""
 msgid "Nginx config directory is not set"
 msgid "Nginx config directory is not set"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 
 
+#: src/language/generate.ts:31
+#, fuzzy
+msgid "Nginx configuration directory exists"
+msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
+
+#: src/language/generate.ts:15
+#, fuzzy
+msgid "Nginx configuration entry file exists"
+msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
+
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #: src/components/SystemRestore/SystemRestoreContent.vue:138
 #, fuzzy
 #, fuzzy
 msgid "Nginx configuration has been restored"
 msgid "Nginx configuration has been restored"
@@ -2910,6 +2959,11 @@ msgstr ""
 msgid "Nginx Error Log Path"
 msgid "Nginx Error Log Path"
 msgstr "Vị trí lưu log lỗi (Error log) của Nginx"
 msgstr "Vị trí lưu log lỗi (Error log) của Nginx"
 
 
+#: src/language/generate.ts:21
+#, fuzzy
+msgid "Nginx error log path exists"
+msgstr "Vị trí lưu log lỗi (Error log) của Nginx"
+
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/components/NgxConfigEditor/NginxStatusAlert.vue:15
 #: src/composables/useNginxPerformance.ts:43
 #: src/composables/useNginxPerformance.ts:43
 #: src/views/dashboard/NginxDashBoard.vue:112
 #: src/views/dashboard/NginxDashBoard.vue:112
@@ -2944,6 +2998,11 @@ msgstr ""
 msgid "Nginx PID Path"
 msgid "Nginx PID Path"
 msgstr "Vị trí lưu log lỗi (Error log) của Nginx"
 msgstr "Vị trí lưu log lỗi (Error log) của Nginx"
 
 
+#: src/language/generate.ts:45
+#, fuzzy
+msgid "Nginx PID path exists"
+msgstr "Vị trí lưu log lỗi (Error log) của Nginx"
+
 #: src/views/preference/tabs/NginxSettings.vue:40
 #: src/views/preference/tabs/NginxSettings.vue:40
 msgid "Nginx Reload Command"
 msgid "Nginx Reload Command"
 msgstr ""
 msgstr ""
@@ -3002,10 +3061,25 @@ msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 #: src/components/SystemRestore/SystemRestoreContent.vue:336
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
-"Nginx UI configuration has been restored and will restart automatically in "
-"a few seconds."
+"Nginx UI configuration has been restored and will restart automatically in a "
+"few seconds."
+msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
+
+#: src/language/generate.ts:8
+#, fuzzy
+msgid "Nginx.conf includes conf.d directory"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 
 
+#: src/language/generate.ts:42
+#, fuzzy
+msgid "Nginx.conf includes sites-enabled directory"
+msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục sites-enabled không."
+
+#: src/language/generate.ts:39
+#, fuzzy
+msgid "Nginx.conf includes streams-enabled directory"
+msgstr "Kiểm tra xem tệp nginx.conf có bao gồm thư mục streams-enabled không."
+
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/ChatGPT/ChatGPT.vue:374
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:134
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
 #: src/components/EnvGroupTabs/EnvGroupTabs.vue:146
@@ -3342,6 +3416,10 @@ msgstr "Đã tắt thành công"
 msgid "Performing core upgrade"
 msgid "Performing core upgrade"
 msgstr "Nâng cấp core"
 msgstr "Nâng cấp core"
 
 
+#: src/constants/errors/self_check.ts:19
+msgid "PID path not exist"
+msgstr ""
+
 #: src/constants/errors/crypto.ts:2
 #: src/constants/errors/crypto.ts:2
 msgid "Plain text is empty"
 msgid "Plain text is empty"
 msgstr ""
 msgstr ""
@@ -3375,7 +3453,8 @@ msgstr ""
 msgid ""
 msgid ""
 "Please fill in the API authentication credentials provided by your DNS "
 "Please fill in the API authentication credentials provided by your DNS "
 "provider."
 "provider."
-msgstr "Vui lòng điền thông tin xác thực API do nhà cung cấp DNS của bạn cung cấp"
+msgstr ""
+"Vui lòng điền thông tin xác thực API do nhà cung cấp DNS của bạn cung cấp"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:106
 msgid "Please fill in the required fields"
 msgid "Please fill in the required fields"
@@ -3386,14 +3465,14 @@ msgid ""
 "Please first add credentials in Certification > DNS Credentials, and then "
 "Please first add credentials in Certification > DNS Credentials, and then "
 "select one of the credentialsbelow to request the API of the DNS provider."
 "select one of the credentialsbelow to request the API of the DNS provider."
 msgstr ""
 msgstr ""
-"Trước tiên, vui lòng thêm thông tin xác thực trong Chứng chỉ > Thông tin "
-"xác thực DNS, sau đó chọn nhà cung cấp DNS"
+"Trước tiên, vui lòng thêm thông tin xác thực trong Chứng chỉ > Thông tin xác "
+"thực DNS, sau đó chọn nhà cung cấp DNS"
 
 
 #: src/components/Notification/notifications.ts:166
 #: src/components/Notification/notifications.ts:166
 #: src/language/constants.ts:59
 #: src/language/constants.ts:59
 msgid ""
 msgid ""
-"Please generate new recovery codes in the preferences immediately to "
-"prevent lockout."
+"Please generate new recovery codes in the preferences immediately to prevent "
+"lockout."
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
@@ -3411,14 +3490,16 @@ msgstr "Vui lòng nhập username!"
 msgid ""
 msgid ""
 "Please input name, this will be used as the filename of the new "
 "Please input name, this will be used as the filename of the new "
 "configuration!"
 "configuration!"
-msgstr "Vui lòng nhập tên, tên này sẽ được sử dụng làm tên tệp của cấu hình mới!"
+msgstr ""
+"Vui lòng nhập tên, tên này sẽ được sử dụng làm tên tệp của cấu hình mới!"
 
 
 #: src/views/site/site_list/SiteDuplicate.vue:33
 #: src/views/site/site_list/SiteDuplicate.vue:33
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
 "Please input name, this will be used as the filename of the new "
 "Please input name, this will be used as the filename of the new "
 "configuration."
 "configuration."
-msgstr "Vui lòng nhập tên, tên này sẽ được sử dụng làm tên tệp của cấu hình mới!"
+msgstr ""
+"Vui lòng nhập tên, tên này sẽ được sử dụng làm tên tệp của cấu hình mới!"
 
 
 #: src/views/install/components/InstallForm.vue:26
 #: src/views/install/components/InstallForm.vue:26
 msgid "Please input your E-mail!"
 msgid "Please input your E-mail!"
@@ -3438,7 +3519,8 @@ msgid "Please log in."
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/DNSCredential.vue:62
 #: src/views/certificate/DNSCredential.vue:62
-msgid "Please note that the unit of time configurations below are all in seconds."
+msgid ""
+"Please note that the unit of time configurations below are all in seconds."
 msgstr "Lưu ý đơn vị cấu hình thời gian bên dưới được tính bằng giây."
 msgstr "Lưu ý đơn vị cấu hình thời gian bên dưới được tính bằng giây."
 
 
 #: src/views/install/components/InstallView.vue:100
 #: src/views/install/components/InstallView.vue:100
@@ -3545,7 +3627,7 @@ msgstr "Đọc"
 msgid "Receive"
 msgid "Receive"
 msgstr "Nhận"
 msgstr "Nhận"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:24
+#: src/components/SelfCheck/SelfCheck.vue:23
 msgid "Recheck"
 msgid "Recheck"
 msgstr ""
 msgstr ""
 
 
@@ -4029,6 +4111,10 @@ msgstr "Lưu thành công"
 msgid "Saved successfully"
 msgid "Saved successfully"
 msgstr "Lưu thành công"
 msgstr "Lưu thành công"
 
 
+#: src/constants/errors/self_check.ts:20
+msgid "Sbin path not exist"
+msgstr ""
+
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 #: src/views/preference/components/AuthSettings/TOTP.vue:69
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgid "Scan the QR code with your mobile phone to add the account to the app."
 msgstr ""
 msgstr ""
@@ -4058,7 +4144,7 @@ msgstr ""
 msgid "Selector"
 msgid "Selector"
 msgstr "Bộ chọn"
 msgstr "Bộ chọn"
 
 
-#: src/components/SelfCheck/SelfCheck.vue:16 src/routes/modules/system.ts:19
+#: src/components/SelfCheck/SelfCheck.vue:15 src/routes/modules/system.ts:19
 msgid "Self Check"
 msgid "Self Check"
 msgstr ""
 msgstr ""
 
 
@@ -4128,14 +4214,14 @@ msgstr "Sử dụng HTTP01 để xác thực SSL"
 
 
 #: src/constants/errors/nginx_log.ts:8
 #: src/constants/errors/nginx_log.ts:8
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.AccessLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.AccessLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:7
 #: src/constants/errors/nginx_log.ts:7
 msgid ""
 msgid ""
-"Settings.NginxLogSettings.ErrorLogPath is empty, refer to "
-"https://nginxui.com/guide/config-nginx.html for more information"
+"Settings.NginxLogSettings.ErrorLogPath is empty, refer to https://nginxui."
+"com/guide/config-nginx.html for more information"
 msgstr ""
 msgstr ""
 
 
 #: src/views/install/components/InstallView.vue:64
 #: src/views/install/components/InstallView.vue:64
@@ -4183,20 +4269,20 @@ msgstr "Logs"
 msgid "Site not found"
 msgid "Site not found"
 msgstr "Không tìm thấy tệp tin"
 msgstr "Không tìm thấy tệp tin"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:5
+#: src/language/generate.ts:7
 #, fuzzy
 #, fuzzy
-msgid "Sites Directory"
+msgid "Sites directory exists"
 msgstr "Thư mục"
 msgstr "Thư mục"
 
 
 #: src/routes/modules/sites.ts:19
 #: src/routes/modules/sites.ts:19
 msgid "Sites List"
 msgid "Sites List"
 msgstr "Danh sách Website"
 msgstr "Danh sách Website"
 
 
-#: src/constants/errors/self_check.ts:10
+#: src/constants/errors/self_check.ts:11
 msgid "Sites-available directory not exist"
 msgid "Sites-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:11
+#: src/constants/errors/self_check.ts:12
 msgid "Sites-enabled directory not exist"
 msgid "Sites-enabled directory not exist"
 msgstr ""
 msgstr ""
 
 
@@ -4304,16 +4390,16 @@ msgstr "Đã tắt"
 msgid "Stream not found"
 msgid "Stream not found"
 msgstr "Không tìm thấy tệp tin"
 msgstr "Không tìm thấy tệp tin"
 
 
-#: src/components/SelfCheck/tasks/backend/index.ts:10
+#: src/language/generate.ts:41
 #, fuzzy
 #, fuzzy
-msgid "Streams Directory"
+msgid "Streams directory exists"
 msgstr "Thư mục"
 msgstr "Thư mục"
 
 
-#: src/constants/errors/self_check.ts:12
+#: src/constants/errors/self_check.ts:13
 msgid "Streams-available directory not exist"
 msgid "Streams-available directory not exist"
 msgstr ""
 msgstr ""
 
 
-#: src/constants/errors/self_check.ts:13
+#: src/constants/errors/self_check.ts:14
 #, fuzzy
 #, fuzzy
 msgid "Streams-enabled directory not exist"
 msgid "Streams-enabled directory not exist"
 msgstr "Thư mục"
 msgstr "Thư mục"
@@ -4326,12 +4412,12 @@ msgstr ""
 msgid "Success"
 msgid "Success"
 msgstr "Thành công"
 msgstr "Thành công"
 
 
-#: src/components/SelfCheck/tasks/frontend/websocket.ts:6
+#: src/components/SelfCheck/tasks/frontend/websocket.ts:13
 msgid ""
 msgid ""
 "Support communication with the backend through the WebSocket protocol. If "
 "Support communication with the backend through the WebSocket protocol. If "
-"your Nginx UI is being used via an Nginx reverse proxy, please refer to "
-"this link to write the corresponding configuration file: "
-"https://nginxui.com/guide/nginx-proxy-example.html"
+"your Nginx UI is being used via an Nginx reverse proxy, please refer to this "
+"link to write the corresponding configuration file: https://nginxui.com/"
+"guide/nginx-proxy-example.html"
 msgstr ""
 msgstr ""
 
 
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
 #: src/components/SystemRestore/SystemRestoreContent.vue:197
@@ -4452,6 +4538,11 @@ msgstr "Thông tin"
 msgid "System restored successfully."
 msgid "System restored successfully."
 msgstr "Restart Nginx thành công"
 msgstr "Restart Nginx thành công"
 
 
+#: src/constants/errors/self_check.ts:3
+#, fuzzy
+msgid "Task is not fixable"
+msgstr "Không tìm thấy tệp tin"
+
 #: src/constants/errors/self_check.ts:2
 #: src/constants/errors/self_check.ts:2
 #, fuzzy
 #, fuzzy
 msgid "Task not found"
 msgid "Task not found"
@@ -4500,8 +4591,7 @@ msgstr ""
 
 
 #: src/constants/errors/nginx_log.ts:2
 #: src/constants/errors/nginx_log.ts:2
 msgid ""
 msgid ""
-"The log path is not under the paths in "
-"settings.NginxSettings.LogDirWhiteList"
+"The log path is not under the paths in settings.NginxSettings.LogDirWhiteList"
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:23
 #: src/views/preference/tabs/OpenAISettings.vue:23
@@ -4512,7 +4602,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:90
 #: src/views/preference/tabs/OpenAISettings.vue:90
-msgid "The model used for code completion, if not set, the chat model will be used."
+msgid ""
+"The model used for code completion, if not set, the chat model will be used."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/NodeSettings.vue:18
 #: src/views/preference/tabs/NodeSettings.vue:18
@@ -4552,7 +4643,8 @@ msgstr ""
 msgid ""
 msgid ""
 "The server_name in the current configuration must be the domain name you "
 "The server_name in the current configuration must be the domain name you "
 "need to get the certificate, supportmultiple domains."
 "need to get the certificate, supportmultiple domains."
-msgstr "Lưu ý: server_name trong cấu hình hiện tại phải là tên miền bạn muốn ký SSL."
+msgstr ""
+"Lưu ý: server_name trong cấu hình hiện tại phải là tên miền bạn muốn ký SSL."
 
 
 #: src/views/preference/tabs/CertSettings.vue:22
 #: src/views/preference/tabs/CertSettings.vue:22
 #: src/views/preference/tabs/HTTPSettings.vue:14
 #: src/views/preference/tabs/HTTPSettings.vue:14
@@ -4613,7 +4705,8 @@ msgid "This field should not be empty"
 msgstr "Trường này không được để trống"
 msgstr "Trường này không được để trống"
 
 
 #: src/constants/form_errors.ts:6
 #: src/constants/form_errors.ts:6
-msgid "This field should only contain letters, unicode characters, numbers, and -_."
+msgid ""
+"This field should only contain letters, unicode characters, numbers, and -_."
 msgstr ""
 msgstr ""
 
 
 #: src/views/dashboard/NginxDashBoard.vue:153
 #: src/views/dashboard/NginxDashBoard.vue:153
@@ -4653,7 +4746,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/environments/list/BatchUpgrader.vue:182
 #: src/views/environments/list/BatchUpgrader.vue:182
-msgid "This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
+msgid ""
+"This will upgrade or reinstall the Nginx UI on %{nodeNames} to %{version}."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/tabs/AuthSettings.vue:124
 #: src/views/preference/tabs/AuthSettings.vue:124
@@ -4697,13 +4791,13 @@ msgstr ""
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 #: src/views/site/site_edit/components/EnableTLS/EnableTLS.vue:15
 msgid ""
 msgid ""
 "To make sure the certification auto-renewal can work normally, we need to "
 "To make sure the certification auto-renewal can work normally, we need to "
-"add a location which can proxy the request from authority to backend, and "
-"we need to save this file and reload the Nginx. Are you sure you want to "
+"add a location which can proxy the request from authority to backend, and we "
+"need to save this file and reload the Nginx. Are you sure you want to "
 "continue?"
 "continue?"
 msgstr ""
 msgstr ""
-"Để đảm bảo tính năng tự động gia hạn chứng chỉ có thể hoạt động bình "
-"thường, chúng tôi cần thêm một vị trí có thể ủy quyền yêu cầu từ cơ quan có "
-"thẩm quyền đến chương trình phụ trợ và chúng tôi cần lưu tệp này và tải lại "
+"Để đảm bảo tính năng tự động gia hạn chứng chỉ có thể hoạt động bình thường, "
+"chúng tôi cần thêm một vị trí có thể ủy quyền yêu cầu từ cơ quan có thẩm "
+"quyền đến chương trình phụ trợ và chúng tôi cần lưu tệp này và tải lại "
 "Nginx. Bạn có chắc chắn muốn Tiếp tục?"
 "Nginx. Bạn có chắc chắn muốn Tiếp tục?"
 
 
 #: src/views/preference/tabs/OpenAISettings.vue:36
 #: src/views/preference/tabs/OpenAISettings.vue:36
@@ -4784,7 +4878,7 @@ msgstr "Loại"
 msgid "Unknown"
 msgid "Unknown"
 msgstr ""
 msgstr ""
 
 
-#: src/components/SelfCheck/SelfCheck.vue:44
+#: src/components/SelfCheck/SelfCheck.vue:43
 msgid "Unknown issue"
 msgid "Unknown issue"
 msgstr ""
 msgstr ""
 
 
@@ -4962,8 +5056,8 @@ msgstr ""
 
 
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 #: src/views/site/site_edit/components/Cert/ObtainCert.vue:140
 msgid ""
 msgid ""
-"We will remove the HTTPChallenge configuration from this file and reload "
-"the Nginx. Are you sure you want to continue?"
+"We will remove the HTTPChallenge configuration from this file and reload the "
+"Nginx. Are you sure you want to continue?"
 msgstr ""
 msgstr ""
 "Chúng tôi sẽ xóa cấu hình HTTPChallenge khỏi tệp này và tải lại Nginx. Bạn "
 "Chúng tôi sẽ xóa cấu hình HTTPChallenge khỏi tệp này và tải lại Nginx. Bạn "
 "có muốn tiếp tục không?"
 "có muốn tiếp tục không?"
@@ -5049,8 +5143,8 @@ msgstr "Có"
 
 
 #: src/views/terminal/Terminal.vue:135
 #: src/views/terminal/Terminal.vue:135
 msgid ""
 msgid ""
-"You are accessing this terminal over an insecure HTTP connection on a "
-"non-localhost domain. This may expose sensitive information."
+"You are accessing this terminal over an insecure HTTP connection on a non-"
+"localhost domain. This may expose sensitive information."
 msgstr ""
 msgstr ""
 
 
 #: src/views/system/Upgrade.vue:202
 #: src/views/system/Upgrade.vue:202
@@ -5076,7 +5170,8 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:81
-msgid "You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
+msgid ""
+"You have not enabled 2FA yet. Please enable 2FA to generate recovery codes."
 msgstr ""
 msgstr ""
 
 
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
 #: src/views/preference/components/AuthSettings/RecoveryCodes.vue:94
@@ -5098,6 +5193,15 @@ msgstr ""
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr ""
 msgstr ""
 
 
+#~ msgid ""
+#~ "Check if /var/run/docker.sock exists. If you are using Nginx UI Official "
+#~ "Docker Image, please make sure the docker socket is mounted like this: `-"
+#~ "v /var/run/docker.sock:/var/run/docker.sock`."
+#~ msgstr ""
+#~ "Kiểm tra xem /var/run/docker.sock có tồn tại không. Nếu bạn đang sử dụng "
+#~ "Docker Image chính thức của Nginx UI, hãy đảm bảo rằng ổ cắm Docker được "
+#~ "gắn như sau: `-v /var/run/docker.sock:/var/run/docker.sock`."
+
 #, fuzzy
 #, fuzzy
 #~ msgid "Format error %{msg}"
 #~ msgid "Format error %{msg}"
 #~ msgstr "Lưu lỗi %{msg}"
 #~ msgstr "Lưu lỗi %{msg}"
@@ -5162,11 +5266,14 @@ msgstr ""
 #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công"
 #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công"
 
 
 #, fuzzy
 #, fuzzy
-#~ msgid "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}"
+#~ msgid ""
+#~ "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: "
+#~ "%{resp}"
 #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công"
 #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công"
 
 
 #, fuzzy
 #, fuzzy
-#~ msgid "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}"
+#~ msgid ""
+#~ "Rename Site %{site} to %{new_site} on %{node} error, response: %{resp}"
 #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công"
 #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công"
 
 
 #, fuzzy
 #, fuzzy
@@ -5180,7 +5287,8 @@ msgstr ""
 #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công"
 #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công"
 
 
 #, fuzzy
 #, fuzzy
-#~ msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
+#~ msgid ""
+#~ "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
 #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công"
 #~ msgstr "Nhân bản %{conf_name} thành %{node_name} thành công"
 
 
 #, fuzzy
 #, fuzzy

File diff suppressed because it is too large
+ 283 - 182
app/src/language/zh_CN/app.po


File diff suppressed because it is too large
+ 312 - 157
app/src/language/zh_TW/app.po


+ 72 - 10
cmd/translation/gettext.go

@@ -1,4 +1,4 @@
-// go run .
+//go:generate go run .
 package main
 package main
 
 
 import (
 import (
@@ -88,16 +88,16 @@ func findTranslationC(filePath string, calls map[string]bool) {
 		return
 		return
 	}
 	}
 
 
-	// Create regex pattern based on the alias
-	pattern := fmt.Sprintf(`%s\.C\(\s*["']([^"']*(?:\\["'][^"']*)*)["']`, alias)
-	cCallRegex := regexp.MustCompile(pattern)
+	// First pre-process the file content to handle multi-line string concatenation
+	// Replace newlines and spaces between string concatenation to make them easier to parse
+	preprocessed := regexp.MustCompile(`"\s*\+\s*(\r?\n)?\s*"`).ReplaceAllString(fileContent, "")
 
 
-	// Handle backtick strings separately (multi-line strings)
-	backtickPattern := fmt.Sprintf(`%s\.C\(\s*\x60([^\x60]*)\x60`, alias)
-	backtickRegex := regexp.MustCompile(backtickPattern)
+	// Create regex pattern for translation.C calls
+	pattern := fmt.Sprintf(`%s\.C\(\s*"([^"]+)"`, alias)
+	cCallRegex := regexp.MustCompile(pattern)
 
 
-	// Find all matches with regular quotes
-	matches := cCallRegex.FindAllStringSubmatch(fileContent, -1)
+	// Find all matches
+	matches := cCallRegex.FindAllStringSubmatch(preprocessed, -1)
 	for _, match := range matches {
 	for _, match := range matches {
 		if len(match) >= 2 {
 		if len(match) >= 2 {
 			message := match[1]
 			message := match[1]
@@ -112,6 +112,10 @@ func findTranslationC(filePath string, calls map[string]bool) {
 		}
 		}
 	}
 	}
 
 
+	// Handle backtick strings separately (multi-line strings)
+	backtickPattern := fmt.Sprintf(`%s\.C\(\s*\x60([^\x60]*)\x60`, alias)
+	backtickRegex := regexp.MustCompile(backtickPattern)
+
 	// Find all matches with backticks
 	// Find all matches with backticks
 	backtickMatches := backtickRegex.FindAllStringSubmatch(fileContent, -1)
 	backtickMatches := backtickRegex.FindAllStringSubmatch(fileContent, -1)
 	for _, match := range backtickMatches {
 	for _, match := range backtickMatches {
@@ -124,6 +128,61 @@ func findTranslationC(filePath string, calls map[string]bool) {
 			}
 			}
 		}
 		}
 	}
 	}
+
+	// Use a more direct approach to handle multi-line string concatenation
+	// This regex finds translation.C calls with string concatenation
+	// concatPattern := fmt.Sprintf(`%s\.C\(\s*"(.*?)"\s*(?:\+\s*"(.*?)")+\s*\)`, alias)
+	// concatRegex := regexp.MustCompile(concatPattern)
+
+	// We need to handle this specifically by manually parsing the file
+	translationStart := fmt.Sprintf(`%s\.C\(`, alias)
+	lines := strings.Split(fileContent, "\n")
+
+	for i := 0; i < len(lines); i++ {
+		if strings.Contains(lines[i], translationStart) && strings.Contains(lines[i], `"`) && strings.Contains(lines[i], `+`) {
+			// Potential multi-line concatenated string found
+			// startLine := i
+			var concatenatedParts []string
+			currentLine := lines[i]
+
+			// Extract the first part
+			firstPartMatch := regexp.MustCompile(`C\(\s*"([^"]*)"`)
+			fMatches := firstPartMatch.FindStringSubmatch(currentLine)
+			if len(fMatches) >= 2 {
+				concatenatedParts = append(concatenatedParts, fMatches[1])
+			}
+
+			// Look for continuation lines with string parts
+			for j := i + 1; j < len(lines) && j < i+10; j++ { // Limit to 10 lines
+				if strings.Contains(lines[j], `"`) && !strings.Contains(lines[j], translationStart) {
+					// Extract string parts
+					partMatch := regexp.MustCompile(`"([^"]*)"`)
+					pMatches := partMatch.FindAllStringSubmatch(lines[j], -1)
+					for _, pm := range pMatches {
+						if len(pm) >= 2 {
+							concatenatedParts = append(concatenatedParts, pm[1])
+						}
+					}
+
+					// If we find a closing parenthesis, we've reached the end
+					if strings.Contains(lines[j], `)`) {
+						break
+					}
+				} else if !strings.Contains(lines[j], `+`) {
+					// If the line doesn't contain a +, we've likely reached the end
+					break
+				}
+			}
+
+			// Combine all parts
+			if len(concatenatedParts) > 0 {
+				message := strings.Join(concatenatedParts, "")
+				if _, exists := calls[message]; !exists {
+					calls[message] = true
+				}
+			}
+		}
+	}
 }
 }
 
 
 // findTranslationAlias finds the alias for the translation package in import statements
 // findTranslationAlias finds the alias for the translation package in import statements
@@ -184,8 +243,11 @@ func generateSingleTSFile(root string, calls map[string]bool) {
 
 
 	// Write each translation message
 	// Write each translation message
 	for message := range calls {
 	for message := range calls {
-		// Escape single quotes in the message for JavaScript
+		// Escape single quotes and handle newlines in the message for JavaScript
 		escapedMessage := strings.ReplaceAll(message, "'", "\\'")
 		escapedMessage := strings.ReplaceAll(message, "'", "\\'")
+		// Replace newlines with space to ensure proper formatting in the generated TS file
+		escapedMessage = strings.ReplaceAll(escapedMessage, "\n", " ")
+		escapedMessage = strings.ReplaceAll(escapedMessage, "\r", "")
 		writer.WriteString(fmt.Sprintf("  $gettext('%s'),\n", escapedMessage))
 		writer.WriteString(fmt.Sprintf("  $gettext('%s'),\n", escapedMessage))
 	}
 	}
 
 

+ 21 - 14
internal/self_check/errors.go

@@ -4,18 +4,25 @@ import "github.com/uozi-tech/cosy"
 
 
 var (
 var (
 	e                                   = cosy.NewErrorScope("self_check")
 	e                                   = cosy.NewErrorScope("self_check")
-	ErrTaskNotFound                     = e.New(4040, "Task not found")
-	ErrFailedToReadNginxConf            = e.New(4041, "Failed to read nginx.conf")
-	ErrParseNginxConf                   = e.New(5001, "Failed to parse nginx.conf")
-	ErrNginxConfNoHttpBlock             = e.New(4042, "Nginx conf no http block")
-	ErrNginxConfNotIncludeSitesEnabled  = e.New(4043, "Nginx conf not include sites-enabled")
-	ErrorNginxConfNoStreamBlock         = e.New(4044, "Nginx conf no stream block")
-	ErrNginxConfNotIncludeStreamEnabled = e.New(4045, "Nginx conf not include stream-enabled")
-	ErrFailedToCreateBackup             = e.New(5002, "Failed to create backup")
-	ErrSitesAvailableNotExist           = e.New(4046, "Sites-available directory not exist")
-	ErrSitesEnabledNotExist             = e.New(4047, "Sites-enabled directory not exist")
-	ErrStreamAvailableNotExist          = e.New(4048, "Streams-available directory not exist")
-	ErrStreamEnabledNotExist            = e.New(4049, "Streams-enabled directory not exist")
-	ErrNginxConfNotIncludeConfD         = e.New(4050, "Nginx conf not include conf.d directory")
-	ErrDockerSocketNotExist             = e.New(4051, "Docker socket not exist")
+	ErrTaskNotFound                     = e.New(40400, "Task not found")
+	ErrTaskNotFixable                   = e.New(40401, "Task is not fixable")
+	ErrFailedToReadNginxConf            = e.New(40402, "Failed to read nginx.conf")
+	ErrParseNginxConf                   = e.New(50001, "Failed to parse nginx.conf")
+	ErrNginxConfNoHttpBlock             = e.New(40403, "Nginx conf no http block")
+	ErrNginxConfNotIncludeSitesEnabled  = e.New(40404, "Nginx conf not include sites-enabled")
+	ErrNginxConfNoStreamBlock           = e.New(40405, "Nginx conf no stream block")
+	ErrNginxConfNotIncludeStreamEnabled = e.New(40406, "Nginx conf not include stream-enabled")
+	ErrFailedToCreateBackup             = e.New(50002, "Failed to create backup")
+	ErrSitesAvailableNotExist           = e.New(40407, "Sites-available directory not exist")
+	ErrSitesEnabledNotExist             = e.New(40408, "Sites-enabled directory not exist")
+	ErrStreamAvailableNotExist          = e.New(40409, "Streams-available directory not exist")
+	ErrStreamEnabledNotExist            = e.New(40410, "Streams-enabled directory not exist")
+	ErrNginxConfNotIncludeConfD         = e.New(40411, "Nginx conf not include conf.d directory")
+	ErrDockerSocketNotExist             = e.New(40412, "Docker socket not exist")
+	ErrConfigDirNotExist                = e.New(40413, "Config directory not exist")
+	ErrConfigEntryFileNotExist          = e.New(40414, "Config entry file not exist")
+	ErrPIDPathNotExist                  = e.New(40415, "PID path not exist")
+	ErrSbinPathNotExist                 = e.New(40416, "Sbin path not exist")
+	ErrAccessLogPathNotExist            = e.New(40417, "Access log path not exist")
+	ErrErrorLogPathNotExist             = e.New(40418, "Error log path not exist")
 )
 )

+ 78 - 0
internal/self_check/nginx.go

@@ -0,0 +1,78 @@
+package self_check
+
+import (
+	"github.com/0xJacky/Nginx-UI/internal/helper"
+	"github.com/0xJacky/Nginx-UI/internal/nginx"
+)
+
+// CheckConfigDir checks if the config directory exists
+func CheckConfigDir() error {
+	dir := nginx.GetConfPath()
+	if dir == "" {
+		return ErrConfigDirNotExist
+	}
+	if !helper.FileExists(dir) {
+		return ErrConfigDirNotExist
+	}
+	return nil
+}
+
+// CheckConfigEntryFile checks if the config entry file exists
+func CheckConfigEntryFile() error {
+	dir := nginx.GetConfPath()
+	if dir == "" {
+		return ErrConfigEntryFileNotExist
+	}
+	if !helper.FileExists(dir) {
+		return ErrConfigEntryFileNotExist
+	}
+	return nil
+}
+
+// CheckPIDPath checks if the PID path exists
+func CheckPIDPath() error {
+	path := nginx.GetPIDPath()
+	if path == "" {
+		return ErrPIDPathNotExist
+	}
+	if !helper.FileExists(path) {
+		return ErrPIDPathNotExist
+	}
+	return nil
+}
+
+// CheckSbinPath checks if the sbin path exists
+func CheckSbinPath() error {
+	path := nginx.GetSbinPath()
+	if path == "" {
+		return ErrSbinPathNotExist
+	}
+	if !helper.FileExists(path) {
+		return ErrSbinPathNotExist
+	}
+	return nil
+}
+
+// CheckAccessLogPath checks if the access log path exists
+func CheckAccessLogPath() error {
+	path := nginx.GetAccessLogPath()
+	if path == "" {
+		return ErrAccessLogPathNotExist
+	}
+	if !helper.FileExists(path) {
+		return ErrAccessLogPathNotExist
+	}
+	return nil
+}
+
+// CheckErrorLogPath checks if the error log path exists
+func CheckErrorLogPath() error {
+	path := nginx.GetErrorLogPath()
+	if path == "" {
+		return ErrErrorLogPathNotExist
+	}
+	if !helper.FileExists(path) {
+		return ErrErrorLogPathNotExist
+	}
+	return nil
+}

+ 1 - 1
internal/self_check/nginx_conf.go

@@ -75,7 +75,7 @@ func CheckNginxConfIncludeStreams() error {
 		}
 		}
 	}
 	}
 
 
-	return ErrorNginxConfNoStreamBlock
+	return ErrNginxConfNoStreamBlock
 }
 }
 
 
 // FixNginxConfIncludeSites attempts to fix nginx.conf include sites-enabled
 // FixNginxConfIncludeSites attempts to fix nginx.conf include sites-enabled

+ 11 - 5
internal/self_check/self_check.go

@@ -6,27 +6,33 @@ import (
 	"github.com/uozi-tech/cosy"
 	"github.com/uozi-tech/cosy"
 )
 )
 
 
-
-
 func Run() (reports Reports) {
 func Run() (reports Reports) {
 	reports = make(Reports, 0)
 	reports = make(Reports, 0)
 	for _, task := range selfCheckTasks {
 	for _, task := range selfCheckTasks {
 		var cErr *cosy.Error
 		var cErr *cosy.Error
+		status := ReportStatusSuccess
 		if err := task.CheckFunc(); err != nil {
 		if err := task.CheckFunc(); err != nil {
 			errors.As(err, &cErr)
 			errors.As(err, &cErr)
+			status = ReportStatusError
 		}
 		}
 		reports = append(reports, &Report{
 		reports = append(reports, &Report{
-			Name: task.Name,
-			Err:  cErr,
+			Name:        task.Name,
+			Description: task.Description,
+			Fixable:     task.FixFunc != nil,
+			Err:         cErr,
+			Status:      status,
 		})
 		})
 	}
 	}
 	return
 	return
 }
 }
 
 
 func AttemptFix(taskName string) (err error) {
 func AttemptFix(taskName string) (err error) {
-	task, ok := selfCheckTaskMap[taskName]
+	task, ok := selfCheckTaskMap.Get(taskName)
 	if !ok {
 	if !ok {
 		return ErrTaskNotFound
 		return ErrTaskNotFound
 	}
 	}
+	if task.FixFunc == nil {
+		return ErrTaskNotFixable
+	}
 	return task.FixFunc()
 	return task.FixFunc()
 }
 }

+ 77 - 14
internal/self_check/tasks.go

@@ -2,60 +2,123 @@ package self_check
 
 
 import (
 import (
 	"github.com/0xJacky/Nginx-UI/internal/helper"
 	"github.com/0xJacky/Nginx-UI/internal/helper"
+	"github.com/0xJacky/Nginx-UI/internal/translation"
+	"github.com/elliotchance/orderedmap/v3"
 	"github.com/uozi-tech/cosy"
 	"github.com/uozi-tech/cosy"
 )
 )
 
 
 type Task struct {
 type Task struct {
-	Name      string
-	CheckFunc func() error
-	FixFunc   func() error
+	Key         string
+	Name        *translation.Container
+	Description *translation.Container
+	CheckFunc   func() error
+	FixFunc     func() error
 }
 }
 
 
+type ReportStatus string
+
+const (
+	ReportStatusSuccess ReportStatus = "success"
+	ReportStatusWarning ReportStatus = "warning"
+	ReportStatusError   ReportStatus = "error"
+)
+
 type Report struct {
 type Report struct {
-	Name string      `json:"name"`
-	Err  *cosy.Error `json:"err,omitempty"`
+	Name        *translation.Container `json:"name"`
+	Description *translation.Container `json:"description,omitempty"`
+	Fixable     bool                   `json:"fixable"`
+	Err         *cosy.Error            `json:"err,omitempty"`
+	Status      ReportStatus           `json:"status"`
 }
 }
 
 
 type Reports []*Report
 type Reports []*Report
 
 
 var selfCheckTasks = []*Task{
 var selfCheckTasks = []*Task{
 	{
 	{
-		Name:      "Directory-Sites",
+		Key:  "Directory-Sites",
+		Name: translation.C("Sites directory exists"),
+		Description: translation.C("Check if the " +
+			"sites-available and sites-enabled directories are " +
+			"under the nginx configuration directory"),
 		CheckFunc: CheckSitesDirectory,
 		CheckFunc: CheckSitesDirectory,
 		FixFunc:   FixSitesDirectory,
 		FixFunc:   FixSitesDirectory,
 	},
 	},
 	{
 	{
-		Name:      "Directory-Streams",
+		Key:  "Directory-Streams",
+		Name: translation.C("Streams directory exists"),
+		Description: translation.C("Check if the " +
+			"streams-available and streams-enabled directories are " +
+			"under the nginx configuration directory"),
 		CheckFunc: CheckStreamDirectory,
 		CheckFunc: CheckStreamDirectory,
 		FixFunc:   FixStreamDirectory,
 		FixFunc:   FixStreamDirectory,
 	},
 	},
 	{
 	{
-		Name:      "NginxConf-Sites-Enabled",
+		Key:  "NginxConf-Sites-Enabled",
+		Name: translation.C("Nginx.conf includes sites-enabled directory"),
+		Description: translation.C("Check if the nginx.conf includes the " +
+			"sites-enabled directory"),
 		CheckFunc: CheckNginxConfIncludeSites,
 		CheckFunc: CheckNginxConfIncludeSites,
 		FixFunc:   FixNginxConfIncludeSites,
 		FixFunc:   FixNginxConfIncludeSites,
 	},
 	},
 	{
 	{
-		Name:      "NginxConf-Streams-Enabled",
+		Key:  "NginxConf-Streams-Enabled",
+		Name: translation.C("Nginx.conf includes streams-enabled directory"),
+		Description: translation.C("Check if the nginx.conf includes the " +
+			"streams-enabled directory"),
 		CheckFunc: CheckNginxConfIncludeStreams,
 		CheckFunc: CheckNginxConfIncludeStreams,
 		FixFunc:   FixNginxConfIncludeStreams,
 		FixFunc:   FixNginxConfIncludeStreams,
 	},
 	},
 	{
 	{
-		Name:      "NginxConf-ConfD",
+		Key:  "NginxConf-ConfD",
+		Name: translation.C("Nginx.conf includes conf.d directory"),
+		Description: translation.C("Check if the nginx.conf includes the " +
+			"conf.d directory"),
 		CheckFunc: CheckNginxConfIncludeConfD,
 		CheckFunc: CheckNginxConfIncludeConfD,
 		FixFunc:   FixNginxConfIncludeConfD,
 		FixFunc:   FixNginxConfIncludeConfD,
 	},
 	},
+	{
+		Key:         "NginxConf-Directory",
+		Name:        translation.C("Nginx configuration directory exists"),
+		Description: translation.C("Check if the nginx configuration directory exists"),
+		CheckFunc:   CheckConfigDir,
+	},
+	{
+		Key:         "NginxConf-Entry-File",
+		Name:        translation.C("Nginx configuration entry file exists"),
+		Description: translation.C("Check if the nginx configuration entry file exists"),
+		CheckFunc:   CheckConfigEntryFile,
+	},
+	{
+		Key:         "NginxPID-Path",
+		Name:        translation.C("Nginx PID path exists"),
+		Description: translation.C("Check if the nginx PID path exists"),
+		CheckFunc:   CheckPIDPath,
+	},
+	{
+		Key:         "NginxAccessLog-Path",
+		Name:        translation.C("Nginx access log path exists"),
+		Description: translation.C("Check if the nginx access log path exists"),
+		CheckFunc:   CheckAccessLogPath,
+	},
+	{
+		Key:         "NginxErrorLog-Path",
+		Name:        translation.C("Nginx error log path exists"),
+		Description: translation.C("Check if the nginx error log path exists"),
+		CheckFunc:   CheckErrorLogPath,
+	},
 }
 }
 
 
-var selfCheckTaskMap = make(map[string]*Task)
+var selfCheckTaskMap = orderedmap.NewOrderedMap[string, *Task]()
 
 
 func init() {
 func init() {
 	for _, task := range selfCheckTasks {
 	for _, task := range selfCheckTasks {
-		selfCheckTaskMap[task.Name] = task
+		selfCheckTaskMap.Set(task.Key, task)
 	}
 	}
 	if helper.InNginxUIOfficialDocker() {
 	if helper.InNginxUIOfficialDocker() {
 		selfCheckTasks = append(selfCheckTasks, &Task{
 		selfCheckTasks = append(selfCheckTasks, &Task{
-			Name:      "Docker-Socket",
-			CheckFunc: CheckDockerSocket,
+			Name:        translation.C("Docker socket exists"),
+			Description: translation.C("Check if the docker socket exists."),
+			CheckFunc:   CheckDockerSocket,
 		})
 		})
 	}
 	}
 }
 }

Some files were not shown because too many files changed in this diff