فهرست منبع

feat(config): restore to history version

Jacky 3 ماه پیش
والد
کامیت
5864185615

+ 5 - 4
app/src/components/ConfigHistory/ConfigHistory.vue

@@ -11,11 +11,11 @@ import DiffViewer from './DiffViewer.vue'
 // Define props for the component
 // Define props for the component
 const props = defineProps<{
 const props = defineProps<{
   filepath: string
   filepath: string
-  currentContent?: string
 }>()
 }>()
 
 
 // Define modal props using defineModel with boolean type
 // Define modal props using defineModel with boolean type
 const visible = defineModel<boolean>('visible')
 const visible = defineModel<boolean>('visible')
+const currentContent = defineModel<string>('currentContent')
 
 
 const loading = ref(false)
 const loading = ref(false)
 const records = ref<ConfigBackup[]>([])
 const records = ref<ConfigBackup[]>([])
@@ -39,9 +39,8 @@ watch(() => [visible.value, props.filepath], ([newVisible, newPath]) => {
 // Table column definitions
 // Table column definitions
 const columns = [
 const columns = [
   {
   {
-    title: () => $gettext('Created At'),
+    title: () => $gettext('Modified At'),
     dataIndex: 'created_at',
     dataIndex: 'created_at',
-    key: 'created_at',
     customRender: datetime,
     customRender: datetime,
   },
   },
 ]
 ]
@@ -80,6 +79,7 @@ function changePage(page: number, pageSize: number) {
 // Row selection handler
 // Row selection handler
 const rowSelection = computed(() => ({
 const rowSelection = computed(() => ({
   selectedRowKeys: selectedRowKeys.value,
   selectedRowKeys: selectedRowKeys.value,
+  hideSelectAll: true,
   onChange: (keys: Key[], selectedRows: ConfigBackup[]) => {
   onChange: (keys: Key[], selectedRows: ConfigBackup[]) => {
     // Limit to maximum of two records
     // Limit to maximum of two records
     if (keys.length > 2) {
     if (keys.length > 2) {
@@ -161,8 +161,9 @@ const compareButtonText = computed(() => {
     </AModal>
     </AModal>
     <DiffViewer
     <DiffViewer
       v-model:visible="showDiffViewer"
       v-model:visible="showDiffViewer"
+      v-model:current-content="currentContent"
       :records="selectedRecords"
       :records="selectedRecords"
-      :current-content="currentContent"
+      @restore="visible = false"
     />
     />
   </div>
   </div>
 </template>
 </template>

+ 58 - 14
app/src/components/ConfigHistory/DiffViewer.vue

@@ -11,11 +11,16 @@ import 'ace-builds/src-min-noconflict/ext-language_tools'
 
 
 const props = defineProps<{
 const props = defineProps<{
   records: ConfigBackup[]
   records: ConfigBackup[]
-  currentContent?: string
+}>()
+
+const emit = defineEmits<{
+  (e: 'restore'): void
 }>()
 }>()
 
 
 // Define modal visibility using defineModel with boolean type
 // Define modal visibility using defineModel with boolean type
 const visible = defineModel<boolean>('visible')
 const visible = defineModel<boolean>('visible')
+// Define currentContent using defineModel
+const currentContent = defineModel<string>('currentContent')
 
 
 const originalText = ref('')
 const originalText = ref('')
 const modifiedText = ref('')
 const modifiedText = ref('')
@@ -42,7 +47,7 @@ function setContent() {
     if (props.records.length === 1) {
     if (props.records.length === 1) {
       // Single record - compare with current content
       // Single record - compare with current content
       originalText.value = props.records[0]?.content || ''
       originalText.value = props.records[0]?.content || ''
-      modifiedText.value = props.currentContent || ''
+      modifiedText.value = currentContent.value || ''
 
 
       // Ensure both sides have content for comparison
       // Ensure both sides have content for comparison
       if (!originalText.value || !modifiedText.value) {
       if (!originalText.value || !modifiedText.value) {
@@ -341,6 +346,27 @@ function handleClose() {
   visible.value = false
   visible.value = false
   errorMessage.value = ''
   errorMessage.value = ''
 }
 }
+
+// Add restore functionality
+function restoreContent() {
+  if (originalText.value) {
+    // Update current content with history version
+    currentContent.value = originalText.value
+    // Close dialog
+    handleClose()
+    emit('restore')
+  }
+}
+
+// Add restore functionality for modified content
+function restoreModifiedContent() {
+  if (modifiedText.value && props.records.length === 2) {
+    // Update current content with the modified version
+    currentContent.value = modifiedText.value
+    // Close dialog
+    handleClose()
+  }
+}
 </script>
 </script>
 
 
 <template>
 <template>
@@ -361,11 +387,30 @@ function handleClose() {
 
 
     <div v-else class="diff-container">
     <div v-else class="diff-container">
       <div class="diff-header">
       <div class="diff-header">
-        <div class="diff-title">
-          {{ originalTitle }}
+        <div class="diff-title-container">
+          <div class="diff-title">
+            {{ originalTitle }}
+          </div>
+          <AButton
+            type="link"
+            size="small"
+            @click="restoreContent"
+          >
+            {{ $gettext('Restore this version') }}
+          </AButton>
         </div>
         </div>
-        <div class="diff-title">
-          {{ modifiedTitle }}
+        <div class="diff-title-container">
+          <div class="diff-title">
+            {{ modifiedTitle }}
+          </div>
+          <AButton
+            v-if="props.records.length === 2"
+            type="link"
+            size="small"
+            @click="restoreModifiedContent"
+          >
+            {{ $gettext('Restore this version') }}
+          </AButton>
         </div>
         </div>
       </div>
       </div>
       <div
       <div
@@ -393,9 +438,14 @@ function handleClose() {
   margin-bottom: 8px;
   margin-bottom: 8px;
 }
 }
 
 
-.diff-title {
-  font-weight: bold;
+.diff-title-container {
+  display: flex;
+  align-items: center;
   width: 50%;
   width: 50%;
+  gap: 8px;
+}
+
+.diff-title {
   padding: 0 8px;
   padding: 0 8px;
 }
 }
 
 
@@ -406,10 +456,4 @@ function handleClose() {
   border-radius: 4px;
   border-radius: 4px;
   overflow: hidden;
   overflow: hidden;
 }
 }
-
-.diff-footer {
-  display: flex;
-  justify-content: flex-end;
-  margin-top: 16px;
-}
 </style>
 </style>

+ 21 - 13
app/src/language/ar/app.po

@@ -394,8 +394,8 @@ msgstr "إلغاء"
 msgid "Cannot change initial user password in demo mode"
 msgid "Cannot change initial user password in demo mode"
 msgstr "حظر تغيير كلمة مرور root في العرض التوضيحي"
 msgstr "حظر تغيير كلمة مرور root في العرض التوضيحي"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgid "Cannot compare: Missing content"
 msgstr ""
 msgstr ""
 
 
@@ -556,7 +556,7 @@ msgstr "تعليقات"
 msgid "Compare"
 msgid "Compare"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 #, fuzzy
 msgid "Compare Configurations"
 msgid "Compare Configurations"
 msgstr "التكوينات"
 msgstr "التكوينات"
@@ -680,11 +680,6 @@ msgstr ""
 msgid "Created at"
 msgid "Created at"
 msgstr "تم الإنشاء في"
 msgstr "تم الإنشاء في"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "تم الإنشاء في"
-
 #: src/views/config/components/Mkdir.vue:35
 #: src/views/config/components/Mkdir.vue:35
 msgid "Created successfully"
 msgid "Created successfully"
 msgstr "تم الإنشاء بنجاح"
 msgstr "تم الإنشاء بنجاح"
@@ -709,7 +704,7 @@ msgstr "TOTP مفعل للحساب الحالي."
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr "TOTP معطل للحساب الحالي."
 msgstr "TOTP معطل للحساب الحالي."
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 #, fuzzy
 msgid "Current Content"
 msgid "Current Content"
 msgstr "الإصدار الحالي"
 msgstr "الإصدار الحالي"
@@ -1171,7 +1166,7 @@ msgstr "البيئات"
 msgid "Error"
 msgid "Error"
 msgstr "خطأ"
 msgstr "خطأ"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgid "Error initializing diff viewer"
 msgstr ""
 msgstr ""
 
 
@@ -1184,7 +1179,7 @@ msgstr "سجلات الأخطاء"
 msgid "Error Logs"
 msgid "Error Logs"
 msgstr "سجلات الأخطاء"
 msgstr "سجلات الأخطاء"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgid "Error processing content"
 msgstr ""
 msgstr ""
 
 
@@ -1400,7 +1395,7 @@ msgstr "فشل في الحصول على معلومات الشهادة"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "فشل في الحصول على معلومات الشهادة"
 msgstr "فشل في الحصول على معلومات الشهادة"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 #, fuzzy
 msgid "Failed to load history records"
 msgid "Failed to load history records"
 msgstr "فشل في التفعيل %{msg}"
 msgstr "فشل في التفعيل %{msg}"
@@ -1980,6 +1975,10 @@ msgstr "دقائق"
 msgid "Model"
 msgid "Model"
 msgstr "نموذج"
 msgstr "نموذج"
 
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2214,7 +2213,7 @@ msgstr "لا"
 msgid "No Action"
 msgid "No Action"
 msgstr "إجراء"
 msgstr "إجراء"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgid "No records selected"
 msgstr ""
 msgstr ""
 
 
@@ -2937,6 +2936,11 @@ msgstr "مجلد تكوينات Nginx"
 msgid "Restore Nginx UI Configuration"
 msgid "Restore Nginx UI Configuration"
 msgstr "مجلد تكوينات Nginx"
 msgstr "مجلد تكوينات Nginx"
 
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgid "RP Display Name"
 msgstr "اسم العرض RP"
 msgstr "اسم العرض RP"
@@ -3962,6 +3966,10 @@ msgstr ""
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr "مفاتيح المرور الخاصة بك"
 msgstr "مفاتيح المرور الخاصة بك"
 
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "تم الإنشاء في"
+
 #~ msgid "Category"
 #~ msgid "Category"
 #~ msgstr "فئة"
 #~ msgstr "فئة"
 
 

+ 21 - 13
app/src/language/de_DE/app.po

@@ -412,8 +412,8 @@ msgstr "Abbrechen"
 msgid "Cannot change initial user password in demo mode"
 msgid "Cannot change initial user password in demo mode"
 msgstr "Verhindere das Ändern des Root-Passworts in der Demo"
 msgstr "Verhindere das Ändern des Root-Passworts in der Demo"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgid "Cannot compare: Missing content"
 msgstr ""
 msgstr ""
 
 
@@ -575,7 +575,7 @@ msgstr "Kom"
 msgid "Compare"
 msgid "Compare"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 #, fuzzy
 msgid "Compare Configurations"
 msgid "Compare Configurations"
 msgstr "Konfigurationen"
 msgstr "Konfigurationen"
@@ -703,11 +703,6 @@ msgstr ""
 msgid "Created at"
 msgid "Created at"
 msgstr "Erstellt"
 msgstr "Erstellt"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "Erstellt"
-
 #: src/views/config/components/Mkdir.vue:35
 #: src/views/config/components/Mkdir.vue:35
 #, fuzzy
 #, fuzzy
 msgid "Created successfully"
 msgid "Created successfully"
@@ -733,7 +728,7 @@ msgstr "Aktuelles Konto ist TOTP aktiviert."
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr "Aktuelles Konto ist nicht TOTP aktiviert."
 msgstr "Aktuelles Konto ist nicht TOTP aktiviert."
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 #, fuzzy
 msgid "Current Content"
 msgid "Current Content"
 msgstr "Aktuelle Version"
 msgstr "Aktuelle Version"
@@ -1219,7 +1214,7 @@ msgstr "Kommentare"
 msgid "Error"
 msgid "Error"
 msgstr "Fehler"
 msgstr "Fehler"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgid "Error initializing diff viewer"
 msgstr ""
 msgstr ""
 
 
@@ -1232,7 +1227,7 @@ msgstr "Feherlogs"
 msgid "Error Logs"
 msgid "Error Logs"
 msgstr "Feherlogs"
 msgstr "Feherlogs"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgid "Error processing content"
 msgstr ""
 msgstr ""
 
 
@@ -1449,7 +1444,7 @@ msgstr "Fehler beim Abrufen von Zertifikatsinformationen"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "Fehler beim Abrufen von Zertifikatsinformationen"
 msgstr "Fehler beim Abrufen von Zertifikatsinformationen"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 #, fuzzy
 msgid "Failed to load history records"
 msgid "Failed to load history records"
 msgstr "Aktiviern von %{msg} fehlgeschlagen"
 msgstr "Aktiviern von %{msg} fehlgeschlagen"
@@ -2050,6 +2045,10 @@ msgstr "Minuten"
 msgid "Model"
 msgid "Model"
 msgstr "Erweiterter Modus"
 msgstr "Erweiterter Modus"
 
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2294,7 +2293,7 @@ msgstr "Nein"
 msgid "No Action"
 msgid "No Action"
 msgstr "Aktion"
 msgstr "Aktion"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgid "No records selected"
 msgstr ""
 msgstr ""
 
 
@@ -3057,6 +3056,11 @@ msgstr "Name der Konfiguration"
 msgid "Restore Nginx UI Configuration"
 msgid "Restore Nginx UI Configuration"
 msgstr "Name der Konfiguration"
 msgstr "Name der Konfiguration"
 
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgid "RP Display Name"
 msgstr "RP-Anzeigename"
 msgstr "RP-Anzeigename"
@@ -4111,6 +4115,10 @@ msgstr ""
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr "Deine Passkeys"
 msgstr "Deine Passkeys"
 
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "Erstellt"
+
 #~ msgid "Category"
 #~ msgid "Category"
 #~ msgstr "Kategorie"
 #~ msgstr "Kategorie"
 
 

+ 21 - 13
app/src/language/en/app.po

@@ -407,8 +407,8 @@ msgstr "Cancel"
 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:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgid "Cannot compare: Missing content"
 msgstr ""
 msgstr ""
 
 
@@ -569,7 +569,7 @@ msgstr "Comments"
 msgid "Compare"
 msgid "Compare"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 #, fuzzy
 msgid "Compare Configurations"
 msgid "Compare Configurations"
 msgstr "Configurations"
 msgstr "Configurations"
@@ -695,11 +695,6 @@ msgstr ""
 msgid "Created at"
 msgid "Created at"
 msgstr "Created at"
 msgstr "Created at"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "Created at"
-
 #: src/views/config/components/Mkdir.vue:35
 #: src/views/config/components/Mkdir.vue:35
 #, fuzzy
 #, fuzzy
 msgid "Created successfully"
 msgid "Created successfully"
@@ -725,7 +720,7 @@ msgstr ""
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 #, fuzzy
 msgid "Current Content"
 msgid "Current Content"
 msgstr "Content"
 msgstr "Content"
@@ -1205,7 +1200,7 @@ msgstr "Comments"
 msgid "Error"
 msgid "Error"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgid "Error initializing diff viewer"
 msgstr ""
 msgstr ""
 
 
@@ -1217,7 +1212,7 @@ msgstr ""
 msgid "Error Logs"
 msgid "Error Logs"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgid "Error processing content"
 msgstr ""
 msgstr ""
 
 
@@ -1436,7 +1431,7 @@ msgstr "Certificate is valid"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 #, fuzzy
 msgid "Failed to load history records"
 msgid "Failed to load history records"
 msgstr "Failed to enable %{msg}"
 msgstr "Failed to enable %{msg}"
@@ -2028,6 +2023,10 @@ msgstr ""
 msgid "Model"
 msgid "Model"
 msgstr "Advance Mode"
 msgstr "Advance Mode"
 
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2271,7 +2270,7 @@ msgstr "No"
 msgid "No Action"
 msgid "No Action"
 msgstr "Action"
 msgstr "Action"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgid "No records selected"
 msgstr ""
 msgstr ""
 
 
@@ -3009,6 +3008,11 @@ msgstr "Configuration Name"
 msgid "Restore Nginx UI Configuration"
 msgid "Restore Nginx UI Configuration"
 msgstr "Configuration Name"
 msgstr "Configuration Name"
 
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgid "RP Display Name"
 msgstr ""
 msgstr ""
@@ -4028,6 +4032,10 @@ msgstr ""
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr ""
 msgstr ""
 
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "Created at"
+
 #, fuzzy
 #, fuzzy
 #~ msgid "Deploy %{conf_name} to %{node_name} successfully"
 #~ msgid "Deploy %{conf_name} to %{node_name} successfully"
 #~ msgstr "Saved successfully"
 #~ msgstr "Saved successfully"

+ 21 - 13
app/src/language/es/app.po

@@ -401,8 +401,8 @@ msgstr "Cancelar"
 msgid "Cannot change initial user password in demo mode"
 msgid "Cannot change initial user password in demo mode"
 msgstr "Prohibir cambiar la contraseña de root en la demostración"
 msgstr "Prohibir cambiar la contraseña de root en la demostración"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgid "Cannot compare: Missing content"
 msgstr ""
 msgstr ""
 
 
@@ -555,7 +555,7 @@ msgstr "Comentarios"
 msgid "Compare"
 msgid "Compare"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 #, fuzzy
 msgid "Compare Configurations"
 msgid "Compare Configurations"
 msgstr "Configuraciones"
 msgstr "Configuraciones"
@@ -679,11 +679,6 @@ msgstr ""
 msgid "Created at"
 msgid "Created at"
 msgstr "Creado el"
 msgstr "Creado el"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "Creado el"
-
 #: src/views/config/components/Mkdir.vue:35
 #: src/views/config/components/Mkdir.vue:35
 msgid "Created successfully"
 msgid "Created successfully"
 msgstr "Creado con éxito"
 msgstr "Creado con éxito"
@@ -708,7 +703,7 @@ msgstr "La cuenta actual tiene habilitada TOTP."
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr "La cuenta actual no tiene habilitada TOTP."
 msgstr "La cuenta actual no tiene habilitada TOTP."
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 #, fuzzy
 msgid "Current Content"
 msgid "Current Content"
 msgstr "Versión actual"
 msgstr "Versión actual"
@@ -1174,7 +1169,7 @@ msgstr "Entornos"
 msgid "Error"
 msgid "Error"
 msgstr "Error"
 msgstr "Error"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgid "Error initializing diff viewer"
 msgstr ""
 msgstr ""
 
 
@@ -1187,7 +1182,7 @@ msgstr "Logs de error"
 msgid "Error Logs"
 msgid "Error Logs"
 msgstr "Logs de error"
 msgstr "Logs de error"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgid "Error processing content"
 msgstr ""
 msgstr ""
 
 
@@ -1402,7 +1397,7 @@ msgstr "No se pudo obtener la información del certificado"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "No se pudo obtener la información del certificado"
 msgstr "No se pudo obtener la información del certificado"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 #, fuzzy
 msgid "Failed to load history records"
 msgid "Failed to load history records"
 msgstr "Error al habilitar %{msg}"
 msgstr "Error al habilitar %{msg}"
@@ -1983,6 +1978,10 @@ msgstr "Minutos"
 msgid "Model"
 msgid "Model"
 msgstr "Modelo"
 msgstr "Modelo"
 
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2220,7 +2219,7 @@ msgstr "No"
 msgid "No Action"
 msgid "No Action"
 msgstr "Acción"
 msgstr "Acción"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgid "No records selected"
 msgstr ""
 msgstr ""
 
 
@@ -2965,6 +2964,11 @@ msgstr "Error de análisis de configuración de Nginx"
 msgid "Restore Nginx UI Configuration"
 msgid "Restore Nginx UI Configuration"
 msgstr "Error de análisis de configuración de Nginx"
 msgstr "Error de análisis de configuración de Nginx"
 
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgid "RP Display Name"
 msgstr "Nombre RP"
 msgstr "Nombre RP"
@@ -4010,6 +4014,10 @@ msgstr ""
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr "Sus llaves de acceso"
 msgstr "Sus llaves de acceso"
 
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "Creado el"
+
 #~ msgid "Category"
 #~ msgid "Category"
 #~ msgstr "Categoría"
 #~ msgstr "Categoría"
 
 

+ 21 - 13
app/src/language/fr_FR/app.po

@@ -415,8 +415,8 @@ msgstr "Annuler"
 msgid "Cannot change initial user password in demo mode"
 msgid "Cannot change initial user password in demo mode"
 msgstr "Interdire la modification du mot de passe root dans la démo"
 msgstr "Interdire la modification du mot de passe root dans la démo"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgid "Cannot compare: Missing content"
 msgstr ""
 msgstr ""
 
 
@@ -581,7 +581,7 @@ msgstr "Commentaires"
 msgid "Compare"
 msgid "Compare"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 #, fuzzy
 msgid "Compare Configurations"
 msgid "Compare Configurations"
 msgstr "Configurations"
 msgstr "Configurations"
@@ -707,11 +707,6 @@ msgstr ""
 msgid "Created at"
 msgid "Created at"
 msgstr "Créé le"
 msgstr "Créé le"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "Créé le"
-
 #: src/views/config/components/Mkdir.vue:35
 #: src/views/config/components/Mkdir.vue:35
 #, fuzzy
 #, fuzzy
 msgid "Created successfully"
 msgid "Created successfully"
@@ -737,7 +732,7 @@ msgstr "Le compte actuel a le TOTP d'activé."
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr "Le compte actuel n'a pas le TOTP d'activé."
 msgstr "Le compte actuel n'a pas le TOTP d'activé."
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 #, fuzzy
 msgid "Current Content"
 msgid "Current Content"
 msgstr "Version actuelle"
 msgstr "Version actuelle"
@@ -1224,7 +1219,7 @@ msgstr "Commentaires"
 msgid "Error"
 msgid "Error"
 msgstr "Erreur"
 msgstr "Erreur"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgid "Error initializing diff viewer"
 msgstr ""
 msgstr ""
 
 
@@ -1237,7 +1232,7 @@ msgstr "Journaux d'erreurs"
 msgid "Error Logs"
 msgid "Error Logs"
 msgstr "Journaux d'erreurs"
 msgstr "Journaux d'erreurs"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgid "Error processing content"
 msgstr ""
 msgstr ""
 
 
@@ -1455,7 +1450,7 @@ msgstr "Échec de l'obtention des informations sur le certificat"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "Échec de l'obtention des informations sur le certificat"
 msgstr "Échec de l'obtention des informations sur le certificat"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 #, fuzzy
 msgid "Failed to load history records"
 msgid "Failed to load history records"
 msgstr "Impossible d'activer %{msg}"
 msgstr "Impossible d'activer %{msg}"
@@ -2061,6 +2056,10 @@ msgstr ""
 msgid "Model"
 msgid "Model"
 msgstr "Mode d'exécution"
 msgstr "Mode d'exécution"
 
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2304,7 +2303,7 @@ msgstr "Non"
 msgid "No Action"
 msgid "No Action"
 msgstr "Action"
 msgstr "Action"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgid "No records selected"
 msgstr ""
 msgstr ""
 
 
@@ -3051,6 +3050,11 @@ msgstr "Erreur d'analyse de configuration Nginx"
 msgid "Restore Nginx UI Configuration"
 msgid "Restore Nginx UI Configuration"
 msgstr "Erreur d'analyse de configuration Nginx"
 msgstr "Erreur d'analyse de configuration Nginx"
 
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgid "RP Display Name"
 msgstr ""
 msgstr ""
@@ -4073,6 +4077,10 @@ msgstr ""
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr ""
 msgstr ""
 
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "Créé le"
+
 #~ msgid "Category"
 #~ msgid "Category"
 #~ msgstr "Catégorie"
 #~ msgstr "Catégorie"
 
 

+ 21 - 13
app/src/language/ko_KR/app.po

@@ -396,8 +396,8 @@ msgstr "취소"
 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:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgid "Cannot compare: Missing content"
 msgstr ""
 msgstr ""
 
 
@@ -552,7 +552,7 @@ msgstr "댓글"
 msgid "Compare"
 msgid "Compare"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 #, fuzzy
 msgid "Compare Configurations"
 msgid "Compare Configurations"
 msgstr "구성들"
 msgstr "구성들"
@@ -676,11 +676,6 @@ msgstr ""
 msgid "Created at"
 msgid "Created at"
 msgstr "생성 시간"
 msgstr "생성 시간"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "생성 시간"
-
 #: src/views/config/components/Mkdir.vue:35
 #: src/views/config/components/Mkdir.vue:35
 #, fuzzy
 #, fuzzy
 msgid "Created successfully"
 msgid "Created successfully"
@@ -706,7 +701,7 @@ msgstr ""
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 #, fuzzy
 msgid "Current Content"
 msgid "Current Content"
 msgstr "현재 버전"
 msgstr "현재 버전"
@@ -1173,7 +1168,7 @@ msgstr "환경"
 msgid "Error"
 msgid "Error"
 msgstr "오류"
 msgstr "오류"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgid "Error initializing diff viewer"
 msgstr ""
 msgstr ""
 
 
@@ -1186,7 +1181,7 @@ msgstr "오류 로그"
 msgid "Error Logs"
 msgid "Error Logs"
 msgstr "오류 로그"
 msgstr "오류 로그"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgid "Error processing content"
 msgstr ""
 msgstr ""
 
 
@@ -1403,7 +1398,7 @@ msgstr "인증서 정보 가져오기 실패"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "인증서 정보 가져오기 실패"
 msgstr "인증서 정보 가져오기 실패"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 #, fuzzy
 msgid "Failed to load history records"
 msgid "Failed to load history records"
 msgstr "%{msg} 활성화 실패"
 msgstr "%{msg} 활성화 실패"
@@ -1990,6 +1985,10 @@ msgstr "분"
 msgid "Model"
 msgid "Model"
 msgstr "실행 모드"
 msgstr "실행 모드"
 
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2235,7 +2234,7 @@ msgstr "아니요"
 msgid "No Action"
 msgid "No Action"
 msgstr "작업"
 msgstr "작업"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgid "No records selected"
 msgstr ""
 msgstr ""
 
 
@@ -2981,6 +2980,11 @@ msgstr "Nginx 구성 오류름"
 msgid "Restore Nginx UI Configuration"
 msgid "Restore Nginx UI Configuration"
 msgstr "Nginx 구성 오류름"
 msgstr "Nginx 구성 오류름"
 
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgid "RP Display Name"
 msgstr ""
 msgstr ""
@@ -4000,6 +4004,10 @@ msgstr ""
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr ""
 msgstr ""
 
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "생성 시간"
+
 #, fuzzy
 #, fuzzy
 #~ msgid "Restart Required"
 #~ msgid "Restart Required"
 #~ msgstr "재시작 중"
 #~ msgstr "재시작 중"

+ 17 - 12
app/src/language/messages.pot

@@ -377,8 +377,8 @@ msgstr ""
 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:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgid "Cannot compare: Missing content"
 msgstr ""
 msgstr ""
 
 
@@ -521,7 +521,7 @@ msgstr ""
 msgid "Compare"
 msgid "Compare"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 msgid "Compare Configurations"
 msgid "Compare Configurations"
 msgstr ""
 msgstr ""
 
 
@@ -638,10 +638,6 @@ msgstr ""
 msgid "Created at"
 msgid "Created at"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-msgid "Created At"
-msgstr ""
-
 #: src/views/config/components/Mkdir.vue:35
 #: src/views/config/components/Mkdir.vue:35
 msgid "Created successfully"
 msgid "Created successfully"
 msgstr ""
 msgstr ""
@@ -666,7 +662,7 @@ msgstr ""
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 msgid "Current Content"
 msgid "Current Content"
 msgstr ""
 msgstr ""
 
 
@@ -1109,7 +1105,7 @@ msgstr ""
 msgid "Error"
 msgid "Error"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgid "Error initializing diff viewer"
 msgstr ""
 msgstr ""
 
 
@@ -1122,7 +1118,7 @@ msgstr ""
 msgid "Error Logs"
 msgid "Error Logs"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgid "Error processing content"
 msgstr ""
 msgstr ""
 
 
@@ -1313,7 +1309,7 @@ msgstr ""
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 msgid "Failed to load history records"
 msgid "Failed to load history records"
 msgstr ""
 msgstr ""
 
 
@@ -1845,6 +1841,10 @@ msgstr ""
 msgid "Model"
 msgid "Model"
 msgstr ""
 msgstr ""
 
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2071,7 +2071,7 @@ msgstr ""
 msgid "No Action"
 msgid "No Action"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgid "No records selected"
 msgstr ""
 msgstr ""
 
 
@@ -2738,6 +2738,11 @@ msgstr ""
 msgid "Restore Nginx UI Configuration"
 msgid "Restore Nginx UI Configuration"
 msgstr ""
 msgstr ""
 
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgid "RP Display Name"
 msgstr ""
 msgstr ""

+ 21 - 13
app/src/language/ru_RU/app.po

@@ -392,8 +392,8 @@ msgstr "Отмена"
 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:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgid "Cannot compare: Missing content"
 msgstr ""
 msgstr ""
 
 
@@ -543,7 +543,7 @@ msgstr "Комментарии"
 msgid "Compare"
 msgid "Compare"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 #, fuzzy
 msgid "Compare Configurations"
 msgid "Compare Configurations"
 msgstr "Конфигурации"
 msgstr "Конфигурации"
@@ -666,11 +666,6 @@ msgstr ""
 msgid "Created at"
 msgid "Created at"
 msgstr "Создан в"
 msgstr "Создан в"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "Создан в"
-
 #: src/views/config/components/Mkdir.vue:35
 #: src/views/config/components/Mkdir.vue:35
 msgid "Created successfully"
 msgid "Created successfully"
 msgstr "Создано успешно"
 msgstr "Создано успешно"
@@ -695,7 +690,7 @@ msgstr "Текущая учетная запись имеет включенну
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr "Для текущей учетной записи TOTP не включен."
 msgstr "Для текущей учетной записи TOTP не включен."
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 #, fuzzy
 msgid "Current Content"
 msgid "Current Content"
 msgstr "Текущяя версия"
 msgstr "Текущяя версия"
@@ -1158,7 +1153,7 @@ msgstr "Окружения"
 msgid "Error"
 msgid "Error"
 msgstr "Ошибка"
 msgstr "Ошибка"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgid "Error initializing diff viewer"
 msgstr ""
 msgstr ""
 
 
@@ -1171,7 +1166,7 @@ msgstr "Ошибка логирования"
 msgid "Error Logs"
 msgid "Error Logs"
 msgstr "Ошибка логирования"
 msgstr "Ошибка логирования"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgid "Error processing content"
 msgstr ""
 msgstr ""
 
 
@@ -1386,7 +1381,7 @@ msgstr "Не удалось получить информацию о серти
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "Не удалось получить информацию о сертификате"
 msgstr "Не удалось получить информацию о сертификате"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 #, fuzzy
 msgid "Failed to load history records"
 msgid "Failed to load history records"
 msgstr "Не удалось включить %{msg}"
 msgstr "Не удалось включить %{msg}"
@@ -1963,6 +1958,10 @@ msgstr "Минуты"
 msgid "Model"
 msgid "Model"
 msgstr "Модель"
 msgstr "Модель"
 
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2199,7 +2198,7 @@ msgstr "Нет"
 msgid "No Action"
 msgid "No Action"
 msgstr "Действие"
 msgstr "Действие"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgid "No records selected"
 msgstr ""
 msgstr ""
 
 
@@ -2932,6 +2931,11 @@ msgstr "Ошибка разбора конфигурации Nginx"
 msgid "Restore Nginx UI Configuration"
 msgid "Restore Nginx UI Configuration"
 msgstr "Ошибка разбора конфигурации Nginx"
 msgstr "Ошибка разбора конфигурации Nginx"
 
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgid "RP Display Name"
 msgstr ""
 msgstr ""
@@ -3954,6 +3958,10 @@ msgstr "Ваши старые коды больше не будут работа
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr ""
 msgstr ""
 
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "Создан в"
+
 #~ msgid "Category"
 #~ msgid "Category"
 #~ msgstr "Категория"
 #~ msgstr "Категория"
 
 

+ 21 - 13
app/src/language/tr_TR/app.po

@@ -394,8 +394,8 @@ msgstr "İptal"
 msgid "Cannot change initial user password in demo mode"
 msgid "Cannot change initial user password in demo mode"
 msgstr "Demoda kök parolasını değiştirmeyi yasakla"
 msgstr "Demoda kök parolasını değiştirmeyi yasakla"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgid "Cannot compare: Missing content"
 msgstr ""
 msgstr ""
 
 
@@ -548,7 +548,7 @@ msgstr "Yorumlar"
 msgid "Compare"
 msgid "Compare"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 #, fuzzy
 msgid "Compare Configurations"
 msgid "Compare Configurations"
 msgstr "Yapılandırmalar"
 msgstr "Yapılandırmalar"
@@ -672,11 +672,6 @@ msgstr ""
 msgid "Created at"
 msgid "Created at"
 msgstr "Oluşturulma Tarihi"
 msgstr "Oluşturulma Tarihi"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "Oluşturulma Tarihi"
-
 #: src/views/config/components/Mkdir.vue:35
 #: src/views/config/components/Mkdir.vue:35
 msgid "Created successfully"
 msgid "Created successfully"
 msgstr "Başarıyla oluşturuldu"
 msgstr "Başarıyla oluşturuldu"
@@ -701,7 +696,7 @@ msgstr "Mevcut hesap için TOTP etkinleştirildi."
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr "Mevcut hesap için TOTP etkin değil."
 msgstr "Mevcut hesap için TOTP etkin değil."
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 #, fuzzy
 msgid "Current Content"
 msgid "Current Content"
 msgstr "Mevcut sürüm"
 msgstr "Mevcut sürüm"
@@ -1187,7 +1182,7 @@ msgstr "Ortamlar"
 msgid "Error"
 msgid "Error"
 msgstr "Hata"
 msgstr "Hata"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgid "Error initializing diff viewer"
 msgstr ""
 msgstr ""
 
 
@@ -1200,7 +1195,7 @@ msgstr "Hata Günlükleri"
 msgid "Error Logs"
 msgid "Error Logs"
 msgstr "Hata Günlükleri"
 msgstr "Hata Günlükleri"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgid "Error processing content"
 msgstr ""
 msgstr ""
 
 
@@ -1415,7 +1410,7 @@ msgstr "Sertifika bilgileri alınamadı"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "Sertifika bilgileri alınamadı"
 msgstr "Sertifika bilgileri alınamadı"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 #, fuzzy
 msgid "Failed to load history records"
 msgid "Failed to load history records"
 msgstr "Etkinleştirilemedi %{msg}"
 msgstr "Etkinleştirilemedi %{msg}"
@@ -2005,6 +2000,10 @@ msgstr "Dakika"
 msgid "Model"
 msgid "Model"
 msgstr "Model"
 msgstr "Model"
 
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2265,7 +2264,7 @@ msgstr "Hayır"
 msgid "No Action"
 msgid "No Action"
 msgstr "Eylem"
 msgstr "Eylem"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgid "No records selected"
 msgstr ""
 msgstr ""
 
 
@@ -3099,6 +3098,11 @@ msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 msgid "Restore Nginx UI Configuration"
 msgid "Restore Nginx UI Configuration"
 msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgid "RP Display Name"
 msgstr ""
 msgstr ""
@@ -4237,6 +4241,10 @@ msgstr ""
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr "Geçiş anahtarlarınız"
 msgstr "Geçiş anahtarlarınız"
 
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "Oluşturulma Tarihi"
+
 #, fuzzy
 #, fuzzy
 #~ msgid "Restart Required"
 #~ msgid "Restart Required"
 #~ msgstr "Yeniden Başlatma"
 #~ msgstr "Yeniden Başlatma"

+ 21 - 13
app/src/language/vi_VN/app.po

@@ -409,8 +409,8 @@ msgstr "Huỷ"
 msgid "Cannot change initial user password in demo mode"
 msgid "Cannot change initial user password in demo mode"
 msgstr "Cấm thay đổi mật khẩu root trong demo"
 msgstr "Cấm thay đổi mật khẩu root trong demo"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgid "Cannot compare: Missing content"
 msgstr ""
 msgstr ""
 
 
@@ -572,7 +572,7 @@ msgstr "Bình luận"
 msgid "Compare"
 msgid "Compare"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 #, fuzzy
 msgid "Compare Configurations"
 msgid "Compare Configurations"
 msgstr "Cấu hình"
 msgstr "Cấu hình"
@@ -698,11 +698,6 @@ msgstr ""
 msgid "Created at"
 msgid "Created at"
 msgstr "Ngày tạo"
 msgstr "Ngày tạo"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "Ngày tạo"
-
 #: src/views/config/components/Mkdir.vue:35
 #: src/views/config/components/Mkdir.vue:35
 #, fuzzy
 #, fuzzy
 msgid "Created successfully"
 msgid "Created successfully"
@@ -728,7 +723,7 @@ msgstr ""
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 #, fuzzy
 msgid "Current Content"
 msgid "Current Content"
 msgstr "Phiên bản hiện tại"
 msgstr "Phiên bản hiện tại"
@@ -1210,7 +1205,7 @@ msgstr "Environments"
 msgid "Error"
 msgid "Error"
 msgstr "Lỗi"
 msgstr "Lỗi"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgid "Error initializing diff viewer"
 msgstr ""
 msgstr ""
 
 
@@ -1223,7 +1218,7 @@ msgstr "Log lỗi"
 msgid "Error Logs"
 msgid "Error Logs"
 msgstr "Log lỗi"
 msgstr "Log lỗi"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgid "Error processing content"
 msgstr ""
 msgstr ""
 
 
@@ -1440,7 +1435,7 @@ msgstr "Không thể truy xuất thông tin chứng chỉ"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "Không thể truy xuất thông tin chứng chỉ"
 msgstr "Không thể truy xuất thông tin chứng chỉ"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 #, fuzzy
 msgid "Failed to load history records"
 msgid "Failed to load history records"
 msgstr "Không thể bật %{msg}"
 msgstr "Không thể bật %{msg}"
@@ -2022,6 +2017,10 @@ msgstr ""
 msgid "Model"
 msgid "Model"
 msgstr "Run Mode"
 msgstr "Run Mode"
 
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2265,7 +2264,7 @@ msgstr "Không"
 msgid "No Action"
 msgid "No Action"
 msgstr "Hành động"
 msgstr "Hành động"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgid "No records selected"
 msgstr ""
 msgstr ""
 
 
@@ -3009,6 +3008,11 @@ msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 msgid "Restore Nginx UI Configuration"
 msgid "Restore Nginx UI Configuration"
 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/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgid "RP Display Name"
 msgstr ""
 msgstr ""
@@ -4021,6 +4025,10 @@ msgstr ""
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr ""
 msgstr ""
 
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "Ngày tạo"
+
 #, fuzzy
 #, fuzzy
 #~ msgid "Restart Required"
 #~ msgid "Restart Required"
 #~ msgstr "Đang khởi động lại"
 #~ msgstr "Đang khởi động lại"

+ 21 - 13
app/src/language/zh_CN/app.po

@@ -3,7 +3,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Project-Id-Version: \n"
 "Project-Id-Version: \n"
 "POT-Creation-Date: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: 2025-04-06 10:43+0800\n"
+"PO-Revision-Date: 2025-04-06 12:00+0800\n"
 "Last-Translator: 0xJacky <me@jackyu.cn>\n"
 "Last-Translator: 0xJacky <me@jackyu.cn>\n"
 "Language-Team: Chinese (Simplified Han script) <https://weblate.nginxui.com/"
 "Language-Team: Chinese (Simplified Han script) <https://weblate.nginxui.com/"
 "projects/nginx-ui/frontend/zh_Hans/>\n"
 "projects/nginx-ui/frontend/zh_Hans/>\n"
@@ -382,8 +382,8 @@ msgstr "取消"
 msgid "Cannot change initial user password in demo mode"
 msgid "Cannot change initial user password in demo mode"
 msgstr "不可在 Demo 中修改初始用户的密码"
 msgstr "不可在 Demo 中修改初始用户的密码"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgid "Cannot compare: Missing content"
 msgstr "无法比较:内容缺失"
 msgstr "无法比较:内容缺失"
 
 
@@ -533,7 +533,7 @@ msgstr "注释"
 msgid "Compare"
 msgid "Compare"
 msgstr "比较"
 msgstr "比较"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 msgid "Compare Configurations"
 msgid "Compare Configurations"
 msgstr "配置比较"
 msgstr "配置比较"
 
 
@@ -652,10 +652,6 @@ msgstr ""
 msgid "Created at"
 msgid "Created at"
 msgstr "创建时间"
 msgstr "创建时间"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-msgid "Created At"
-msgstr "创建时间"
-
 #: src/views/config/components/Mkdir.vue:35
 #: src/views/config/components/Mkdir.vue:35
 msgid "Created successfully"
 msgid "Created successfully"
 msgstr "创建成功"
 msgstr "创建成功"
@@ -680,7 +676,7 @@ msgstr "当前账户已启用 TOTP 验证。"
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr "当前用户未启用 TOTP 验证。"
 msgstr "当前用户未启用 TOTP 验证。"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 msgid "Current Content"
 msgid "Current Content"
 msgstr "当前内容"
 msgstr "当前内容"
 
 
@@ -1114,7 +1110,7 @@ msgstr "环境"
 msgid "Error"
 msgid "Error"
 msgstr "错误"
 msgstr "错误"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgid "Error initializing diff viewer"
 msgstr "差异查看器初始化出错"
 msgstr "差异查看器初始化出错"
 
 
@@ -1126,7 +1122,7 @@ msgstr "错误日志"
 msgid "Error Logs"
 msgid "Error Logs"
 msgstr "错误日志"
 msgstr "错误日志"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgid "Error processing content"
 msgstr "内容处理错误"
 msgstr "内容处理错误"
 
 
@@ -1317,7 +1313,7 @@ msgstr "生成初始化向量失败:{0}"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "获取证书信息失败"
 msgstr "获取证书信息失败"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 msgid "Failed to load history records"
 msgid "Failed to load history records"
 msgstr "加载历史记录失败"
 msgstr "加载历史记录失败"
 
 
@@ -1868,6 +1864,10 @@ msgstr "分钟"
 msgid "Model"
 msgid "Model"
 msgstr "模型"
 msgstr "模型"
 
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr "修改时间"
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2093,7 +2093,7 @@ msgstr "取消"
 msgid "No Action"
 msgid "No Action"
 msgstr "无操作"
 msgstr "无操作"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgid "No records selected"
 msgstr "未选择记录"
 msgstr "未选择记录"
 
 
@@ -2777,6 +2777,11 @@ msgstr "恢复 Nginx 配置"
 msgid "Restore Nginx UI Configuration"
 msgid "Restore Nginx UI Configuration"
 msgstr "恢复 Nginx UI 配置"
 msgstr "恢复 Nginx UI 配置"
 
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr "恢复此版本"
+
 #: src/views/preference/AuthSettings.vue:107
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgid "RP Display Name"
 msgstr "依赖方显示名称"
 msgstr "依赖方显示名称"
@@ -3749,6 +3754,9 @@ msgstr "您的旧代码将不再有效。"
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr "你的 Passkeys"
 msgstr "你的 Passkeys"
 
 
+#~ msgid "Created At"
+#~ msgstr "创建时间"
+
 #~ msgid "Groups"
 #~ msgid "Groups"
 #~ msgstr "组"
 #~ msgstr "组"
 
 

+ 21 - 13
app/src/language/zh_TW/app.po

@@ -393,8 +393,8 @@ msgstr "取消"
 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:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgid "Cannot compare: Missing content"
 msgstr ""
 msgstr ""
 
 
@@ -544,7 +544,7 @@ msgstr "備註"
 msgid "Compare"
 msgid "Compare"
 msgstr ""
 msgstr ""
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 #, fuzzy
 msgid "Compare Configurations"
 msgid "Compare Configurations"
 msgstr "設定"
 msgstr "設定"
@@ -667,11 +667,6 @@ msgstr ""
 msgid "Created at"
 msgid "Created at"
 msgstr "建立時間"
 msgstr "建立時間"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "建立時間"
-
 #: src/views/config/components/Mkdir.vue:35
 #: src/views/config/components/Mkdir.vue:35
 msgid "Created successfully"
 msgid "Created successfully"
 msgstr "創建成功"
 msgstr "創建成功"
@@ -696,7 +691,7 @@ msgstr "當前帳戶已啟用 TOTP。"
 msgid "Current account is not enabled TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr "當前帳戶未啟用 TOTP。"
 msgstr "當前帳戶未啟用 TOTP。"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 #, fuzzy
 msgid "Current Content"
 msgid "Current Content"
 msgstr "目前版本"
 msgstr "目前版本"
@@ -1142,7 +1137,7 @@ msgstr "環境"
 msgid "Error"
 msgid "Error"
 msgstr "錯誤"
 msgstr "錯誤"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgid "Error initializing diff viewer"
 msgstr ""
 msgstr ""
 
 
@@ -1155,7 +1150,7 @@ msgstr "錯誤日誌"
 msgid "Error Logs"
 msgid "Error Logs"
 msgstr "錯誤日誌"
 msgstr "錯誤日誌"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgid "Error processing content"
 msgstr ""
 msgstr ""
 
 
@@ -1370,7 +1365,7 @@ msgstr "取得憑證資訊失敗"
 msgid "Failed to get certificate information"
 msgid "Failed to get certificate information"
 msgstr "取得憑證資訊失敗"
 msgstr "取得憑證資訊失敗"
 
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 #, fuzzy
 msgid "Failed to load history records"
 msgid "Failed to load history records"
 msgstr "創建備份失敗"
 msgstr "創建備份失敗"
@@ -1941,6 +1936,10 @@ msgstr "分鐘"
 msgid "Model"
 msgid "Model"
 msgstr "模型"
 msgstr "模型"
 
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2175,7 +2174,7 @@ msgstr "取消"
 msgid "No Action"
 msgid "No Action"
 msgstr "操作"
 msgstr "操作"
 
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgid "No records selected"
 msgstr ""
 msgstr ""
 
 
@@ -2890,6 +2889,11 @@ msgstr "Nginx 配置目錄"
 msgid "Restore Nginx UI Configuration"
 msgid "Restore Nginx UI Configuration"
 msgstr "Nginx 配置目錄"
 msgstr "Nginx 配置目錄"
 
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgid "RP Display Name"
 msgstr "RP 顯示名稱"
 msgstr "RP 顯示名稱"
@@ -3885,6 +3889,10 @@ msgstr "您的舊代碼將不再有效。"
 msgid "Your passkeys"
 msgid "Your passkeys"
 msgstr "您的通行密鑰"
 msgstr "您的通行密鑰"
 
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "建立時間"
+
 #~ msgid "Category"
 #~ msgid "Category"
 #~ msgstr "類別"
 #~ msgstr "類別"
 
 

+ 1 - 1
app/src/views/config/ConfigEditor.vue

@@ -337,8 +337,8 @@ function openHistory() {
 
 
     <ConfigHistory
     <ConfigHistory
       v-model:visible="showHistory"
       v-model:visible="showHistory"
+      v-model:current-content="data.content"
       :filepath="data.filepath"
       :filepath="data.filepath"
-      :current-content="data.content"
     />
     />
   </ARow>
   </ARow>
 </template>
 </template>

+ 1 - 1
app/src/views/site/site_edit/SiteEdit.vue

@@ -296,8 +296,8 @@ provide('data', data)
 
 
     <ConfigHistory
     <ConfigHistory
       v-model:visible="showHistory"
       v-model:visible="showHistory"
+      v-model:current-content="configText"
       :filepath="filepath"
       :filepath="filepath"
-      :current-content="configText"
     />
     />
   </ARow>
   </ARow>
 </template>
 </template>

+ 1 - 1
app/src/views/stream/StreamEdit.vue

@@ -279,8 +279,8 @@ provide('data', data)
 
 
     <ConfigHistory
     <ConfigHistory
       v-model:visible="showHistory"
       v-model:visible="showHistory"
+      v-model:current-content="configText"
       :filepath="filepath"
       :filepath="filepath"
-      :current-content="configText"
     />
     />
   </ARow>
   </ARow>
 </template>
 </template>