diff --git a/manifest.json b/manifest.json index 862ed7a..35b4e59 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "gridexplorer", "name": "GridExplorer", - "version": "2.1.1", + "version": "2.2.0", "minAppVersion": "1.1.0", "description": "Browse note files in a grid view.", "author": "Devon22", diff --git a/package-lock.json b/package-lock.json index 73362e2..0de1fc5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "gridexplorer", - "version": "2.1.1", + "version": "2.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "gridexplorer", - "version": "2.1.1", + "version": "2.2.0", "license": "MIT", "devDependencies": { "@types/node": "^16.11.6", diff --git a/package.json b/package.json index c89f93d..445b518 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gridexplorer", - "version": "2.1.1", + "version": "2.2.0", "description": "Browse note files in a grid view.", "main": "main.js", "scripts": { diff --git a/src/FolderNoteSettingsModal.ts b/src/FolderNoteSettingsModal.ts index f12c46a..2fec7a5 100644 --- a/src/FolderNoteSettingsModal.ts +++ b/src/FolderNoteSettingsModal.ts @@ -92,15 +92,16 @@ export class FolderNoteSettingsModal extends Modal { }); // 圖示選項 + const customFolderIcon = this.plugin.settings.customFolderIcon; new Setting(contentEl) .setName(t('folder_icon')) .setDesc(t('folder_icon_desc')) .addText(text => { text - .setPlaceholder('📁') - .setValue(this.settings.icon || '📁') + .setPlaceholder(customFolderIcon) + .setValue(this.settings.icon || customFolderIcon) .onChange(value => { - this.settings.icon = value || '📁'; + this.settings.icon = value || customFolderIcon; }); }); diff --git a/src/GridView.ts b/src/GridView.ts index 4830338..00872bb 100644 --- a/src/GridView.ts +++ b/src/GridView.ts @@ -1,4 +1,4 @@ -import { WorkspaceLeaf, ItemView, TFolder, TFile, Menu, Notice, Platform, setIcon, getFrontMatterInfo } from 'obsidian'; +import { WorkspaceLeaf, ItemView, TFolder, TFile, Menu, Notice, Platform, setIcon, getFrontMatterInfo, FrontMatterCache } from 'obsidian'; import { showFolderSelectionModal } from './FolderSelectionModal'; import { findFirstImageInNote } from './mediaUtils'; import { MediaModal } from './MediaModal'; @@ -30,6 +30,7 @@ export class GridView extends ItemView { fileWatcher: FileWatcher; recentSources: string[] = []; // 歷史記錄 minMode: boolean = false; // 最小模式 + showIgnoredFolders: boolean = false; // 顯示忽略資料夾 pinnedList: string[] = []; // 置頂清單 constructor(leaf: WorkspaceLeaf, plugin: GridExplorerPlugin) { @@ -236,6 +237,7 @@ export class GridView extends ItemView { }); } } + // 最小化模式選項 menu.addItem((item) => { item .setTitle(t(this.minMode ? 'close_min_mode' : 'min_mode')) @@ -250,6 +252,21 @@ export class GridView extends ItemView { this.render(); }); }); + // 顯示忽略資料夾選項 + menu.addItem((item) => { + item + .setTitle(this.showIgnoredFolders ? t('hide_ignored_folders') : t('show_ignored_folders')) + .setIcon('folder') + .onClick(() => { + this.showIgnoredFolders = !this.showIgnoredFolders; + const titleElement = this.containerEl.querySelector('.ge-header-buttons')?.querySelector('.ge-title'); + if (titleElement) { + titleElement.textContent = this.showIgnoredFolders ? t('hide_ignored_folders') : t('show_ignored_folders'); + } + this.app.workspace.requestSaveLayout(); + this.render(); + }); + }); menu.addItem((item) => { item .setTitle(t('open_settings')) @@ -757,7 +774,8 @@ export class GridView extends ItemView { const contentArea = parentFolderEl.createDiv('ge-content-area'); const titleContainer = contentArea.createDiv('ge-title-container'); - titleContainer.createEl('span', { cls: 'ge-title', text: `📁 ..` }); + const customFolderIcon = this.plugin.settings.customFolderIcon; + titleContainer.createEl('span', { cls: 'ge-title', text: `${customFolderIcon} ..`.trim() }); // 回上層資料夾事件 parentFolderEl.addEventListener('click', () => { @@ -772,16 +790,18 @@ export class GridView extends ItemView { if (currentFolder instanceof TFolder) { const subfolders = currentFolder.children .filter(child => { + // 如果不是資料夾,則不顯示 if (!(child instanceof TFolder)) return false; + // 如果開啟顯示忽略資料夾模式,則顯示所有資料夾 + if (this.showIgnoredFolders) return true; + // 檢查資料夾是否在忽略清單中 const isInIgnoredFolders = this.plugin.settings.ignoredFolders.some(folder => child.path === folder || child.path.startsWith(folder + '/') ); - if (isInIgnoredFolders) { - return false; - } + if (isInIgnoredFolders) return false; // 檢查資料夾是否符合忽略的模式 if (this.plugin.settings.ignoredFolderPatterns && this.plugin.settings.ignoredFolderPatterns.length > 0) { @@ -802,9 +822,7 @@ export class GridView extends ItemView { } }); - if (matchesIgnoredPattern) { - return false; - } + if (matchesIgnoredPattern) return false; } return true; @@ -819,7 +837,8 @@ export class GridView extends ItemView { const contentArea = folderEl.createDiv('ge-content-area'); const titleContainer = contentArea.createDiv('ge-title-container'); - titleContainer.createEl('span', { cls: 'ge-title', text: `📁 ${folder.name}` }); + const customFolderIcon = this.plugin.settings.customFolderIcon; + titleContainer.createEl('span', { cls: 'ge-title', text: `${customFolderIcon} ${folder.name}`.trim() }); titleContainer.setAttribute('title', folder.name); // 檢查同名筆記是否存在 @@ -919,16 +938,29 @@ export class GridView extends ItemView { }); }); } - //加入"忽略此資料夾"選項 - menu.addItem((item) => { - item - .setTitle(t('ignore_folder')) - .setIcon('x') - .onClick(() => { - this.plugin.settings.ignoredFolders.push(folder.path); - this.plugin.saveSettings(); - }); - }); + if (!this.plugin.settings.ignoredFolders.includes(folder.path)) { + //加入"忽略此資料夾"選項 + menu.addItem((item) => { + item + .setTitle(t('ignore_folder')) + .setIcon('folder-x') + .onClick(() => { + this.plugin.settings.ignoredFolders.push(folder.path); + this.plugin.saveSettings(); + }); + }); + } else { + //加入"取消忽略此資料夾"選項 + menu.addItem((item) => { + item + .setTitle(t('unignore_folder')) + .setIcon('folder-up') + .onClick(() => { + this.plugin.settings.ignoredFolders = this.plugin.settings.ignoredFolders.filter((path) => path !== folder.path); + this.plugin.saveSettings(); + }); + }); + } // 重新命名資料夾 menu.addItem((item) => { item @@ -1122,59 +1154,67 @@ export class GridView extends ItemView { // Markdown 檔案顯示內容預覽 const content = await this.app.vault.cachedRead(file); const frontMatterInfo = getFrontMatterInfo(content); - + let metadata: FrontMatterCache | undefined = undefined; + if (frontMatterInfo.exists) { + metadata = this.app.metadataCache.getFileCache(file)?.frontmatter; + } + let pEl: HTMLElement | null = null; if (!this.minMode) { - - let contentWithoutFrontmatter = ''; - if (summaryLength < 500) { - contentWithoutFrontmatter = content.substring(frontMatterInfo.contentStart).slice(0, 500); + const summaryField = this.plugin.settings.noteSummaryField || 'summary'; + const summaryValue = metadata?.[summaryField]; + if (summaryValue) { + pEl = contentArea.createEl('p', { text: summaryValue.trim() }); } else { - contentWithoutFrontmatter = content.substring(frontMatterInfo.contentStart).slice(0, summaryLength + summaryLength); + let contentWithoutFrontmatter = ''; + if (summaryLength < 500) { + contentWithoutFrontmatter = content.substring(frontMatterInfo.contentStart).slice(0, 500); + } else { + contentWithoutFrontmatter = content.substring(frontMatterInfo.contentStart).slice(0, summaryLength + summaryLength); + } + + let contentWithoutMediaLinks = ''; + + if (this.plugin.settings.showCodeBlocksInSummary) { + contentWithoutMediaLinks = contentWithoutFrontmatter; + } else { + // 刪除 code block + contentWithoutMediaLinks = contentWithoutFrontmatter + .replace(/```[\s\S]*?```\n/g, '') + .replace(/```[\s\S]*$/,''); + } + + // 刪除註解及連結 + contentWithoutMediaLinks = contentWithoutMediaLinks + .replace(//g, '') + .replace(/!?\[([^\]]*)\]\([^)]+\)|!?\[\[([^\]]+)\]\]/g, (match, p1, p2) => { + const linkText = p1 || p2 || ''; + if (!linkText) return ''; + + // 獲取副檔名並檢查是否為圖片或影片 + const extension = linkText.split('.').pop()?.toLowerCase() || ''; + return (IMAGE_EXTENSIONS.has(extension) || VIDEO_EXTENSIONS.has(extension)) ? '' : linkText; + }); + + //把開頭的標題整行刪除 + if (contentWithoutMediaLinks.startsWith('# ') || contentWithoutMediaLinks.startsWith('## ') || contentWithoutMediaLinks.startsWith('### ')) { + contentWithoutMediaLinks = contentWithoutMediaLinks.split('\n').slice(1).join('\n'); + } + + if (!this.plugin.settings.showCodeBlocksInSummary) { + // 不刪除code block的情況下,包含這些特殊符號 + contentWithoutMediaLinks = contentWithoutMediaLinks.replace(/[>|\-#*]/g,'').trim(); + } + + // 只取前 summaryLength 個字符作為預覽 + const preview = contentWithoutMediaLinks.slice(0, summaryLength) + (contentWithoutMediaLinks.length > summaryLength ? '...' : ''); + + // 創建預覽內容 + pEl = contentArea.createEl('p', { text: preview.trim() }); } - - let contentWithoutMediaLinks = ''; - - if (this.plugin.settings.showCodeBlocksInSummary) { - contentWithoutMediaLinks = contentWithoutFrontmatter; - } else { - // 刪除 code block - contentWithoutMediaLinks = contentWithoutFrontmatter - .replace(/```[\s\S]*?```\n/g, '') - .replace(/```[\s\S]*$/,''); - } - - // 刪除註解及連結 - contentWithoutMediaLinks = contentWithoutMediaLinks - .replace(//g, '') - .replace(/!?\[([^\]]*)\]\([^)]+\)|!?\[\[([^\]]+)\]\]/g, (match, p1, p2) => { - const linkText = p1 || p2 || ''; - if (!linkText) return ''; - - // 獲取副檔名並檢查是否為圖片或影片 - const extension = linkText.split('.').pop()?.toLowerCase() || ''; - return (IMAGE_EXTENSIONS.has(extension) || VIDEO_EXTENSIONS.has(extension)) ? '' : linkText; - }); - - //把開頭的標題整行刪除 - if (contentWithoutMediaLinks.startsWith('# ') || contentWithoutMediaLinks.startsWith('## ') || contentWithoutMediaLinks.startsWith('### ')) { - contentWithoutMediaLinks = contentWithoutMediaLinks.split('\n').slice(1).join('\n'); - } - - if (!this.plugin.settings.showCodeBlocksInSummary) { - // 不刪除code block的情況下,包含這些特殊符號 - contentWithoutMediaLinks = contentWithoutMediaLinks.replace(/[>|\-#*]/g,'').trim(); - } - - // 只取前 summaryLength 個字符作為預覽 - const preview = contentWithoutMediaLinks.slice(0, summaryLength) + (contentWithoutMediaLinks.length > summaryLength ? '...' : ''); - - // 創建預覽內容 - pEl = contentArea.createEl('p', { text: preview.trim() }); } if (frontMatterInfo.exists) { - const metadata = this.app.metadataCache.getFileCache(file)?.frontmatter; const colorValue = metadata?.color; if (colorValue) { // 設置背景色、框線色和文字顏色 @@ -1187,18 +1227,15 @@ export class GridView extends ItemView { pEl.style.color = `rgba(var(--color-${colorValue}-rgb), 0.7)`; } } - const hasTitleField = !!this.plugin.settings.noteTitleField; - if (hasTitleField) { - const titleField = this.plugin.settings.noteTitleField; - const titleValue = metadata?.[titleField]; - if (titleValue) { - // 將標題文字設為 frontmatter 的 title - const titleEl = fileEl.querySelector('.ge-title'); - if (titleEl) { - titleEl.textContent = titleValue; - } + const titleField = this.plugin.settings.noteTitleField || 'title'; + const titleValue = metadata?.[titleField]; + if (titleValue) { + // 將標題文字設為 frontmatter 的 title + const titleEl = fileEl.querySelector('.ge-title'); + if (titleEl) { + titleEl.textContent = titleValue; } - } + } const displayValue = metadata?.display; if (displayValue === 'minimized') { // 移除已建立的預覽段落 @@ -2130,6 +2167,7 @@ export class GridView extends ItemView { searchMediaFiles: this.searchMediaFiles, randomNoteIncludeMedia: this.randomNoteIncludeMedia, minMode: this.minMode, + showIgnoredFolders: this.showIgnoredFolders, } }; } @@ -2146,6 +2184,7 @@ export class GridView extends ItemView { this.searchMediaFiles = state.state.searchMediaFiles ?? false; this.randomNoteIncludeMedia = state.state.randomNoteIncludeMedia ?? false; this.minMode = state.state.minMode ?? false; + this.showIgnoredFolders = state.state.showIgnoredFolders ?? false; this.render(); } } diff --git a/src/NoteSettingsModal.ts b/src/NoteSettingsModal.ts index c2f8de3..e737269 100644 --- a/src/NoteSettingsModal.ts +++ b/src/NoteSettingsModal.ts @@ -5,6 +5,7 @@ import { GridView } from './GridView'; export interface NoteSettings { title: string; + summary: string; color: string; isPinned: boolean; isMinimized: boolean; @@ -19,6 +20,7 @@ export class NoteSettingsModal extends Modal { files: TFile[]; settings: NoteSettings = { title: '', + summary: '', color: '', isPinned: false, isMinimized: false, @@ -35,7 +37,7 @@ export class NoteSettingsModal extends Modal { contentEl.empty(); // 讀取現有設定 - await this.loadExistingSettings(); + await this.loadAttributes(); // 標題 if (this.files.length > 1) { @@ -55,6 +57,16 @@ export class NoteSettingsModal extends Modal { this.settings.title = value; }); }); + // 自訂筆記摘要 + new Setting(contentEl) + .setName(t('note_summary')) + .setDesc(t('note_summary_desc')) + .addText(text => { + text.setValue(this.settings.summary); + text.onChange(value => { + this.settings.summary = value; + }); + }); } // 顏色選項 @@ -115,24 +127,28 @@ export class NoteSettingsModal extends Modal { .setButtonText(t('confirm')) .setCta() // 設置為主要按鈕樣式 .onClick(() => { - this.saveNoteColor(); + this.saveAttributes(); this.close(); }); }); } // 讀取現有筆記的設定 - async loadExistingSettings() { + async loadAttributes() { try { - // 讀取自訂標題設定 if (this.files.length === 1) { const fileCache = this.app.metadataCache.getFileCache(this.files[0]); if (fileCache && fileCache.frontmatter) { + const titleField = this.plugin.settings.noteTitleField || 'title'; if ('title' in fileCache.frontmatter) { - this.settings.title = fileCache.frontmatter.title || ''; + this.settings.title = fileCache.frontmatter[titleField] || ''; } - } + const summaryField = this.plugin.settings.noteSummaryField || 'summary'; + if ('summary' in fileCache.frontmatter) { + this.settings.summary = fileCache.frontmatter[summaryField] || ''; + } + } } // 如果有多個檔案,只讀取第一個檔案的設定作為預設值 @@ -167,16 +183,23 @@ export class NoteSettingsModal extends Modal { } } - // 儲存筆記顏色設定 - async saveNoteColor() { + // 儲存筆記屬性設定 + async saveAttributes() { try { if (this.files.length === 1 && this.files[0].extension === "md") { // 使用 fileManager.processFrontMatter 更新 frontmatter await this.app.fileManager.processFrontMatter(this.files[0], (frontmatter) => { + const titleField = this.plugin.settings.noteTitleField || 'title'; if (this.settings.title) { - frontmatter['title'] = this.settings.title; + frontmatter[titleField] = this.settings.title; } else { - delete frontmatter['title']; + delete frontmatter[titleField]; + } + const summaryField = this.plugin.settings.noteSummaryField || 'summary'; + if (this.settings.summary) { + frontmatter[summaryField] = this.settings.summary; + } else { + delete frontmatter[summaryField]; } if (this.settings.color) { frontmatter['color'] = this.settings.color; diff --git a/src/fileUtils.ts b/src/fileUtils.ts index 46b8b37..760d4c2 100644 --- a/src/fileUtils.ts +++ b/src/fileUtils.ts @@ -143,6 +143,10 @@ export function sortFiles(files: TFile[], gridView: GridView): TFile[] { export function ignoredFiles(files: TFile[], gridView: GridView): TFile[] { const settings = gridView.plugin.settings; return files.filter(file => { + + // 如果開啟顯示忽略資料夾模式,則顯示所有檔案 + if (gridView.showIgnoredFolders) return true; + // 檢查是否在忽略的資料夾中 const isInIgnoredFolder = settings.ignoredFolders.some(folder => file.path.startsWith(`${folder}/`) diff --git a/src/settings.ts b/src/settings.ts index 1f93f61..b5c9a31 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -25,9 +25,11 @@ export interface GallerySettings { showAllFilesMode: boolean; // 是否顯示所有檔案模式 showRandomNoteMode: boolean; // 是否顯示隨機筆記模式 showRecentFilesMode: boolean; // 是否顯示最近筆記模式 + customFolderIcon: string; // 自訂資料夾圖示 customDocumentExtensions: string; // 自訂文件副檔名(用逗號分隔) recentSources: string[]; // 最近的瀏覽記錄 noteTitleField: string; // 筆記標題的欄位名稱 + noteSummaryField: string; // 筆記摘要的欄位名稱 modifiedDateField: string; // 修改時間的欄位名稱 createdDateField: string; // 建立時間的欄位名稱 recentFilesCount: number; // 最近筆記模式顯示的筆數 @@ -63,9 +65,11 @@ export const DEFAULT_SETTINGS: GallerySettings = { showRecentFilesMode: true, // 預設顯示最近筆記模式 recentFilesCount: 30, // 預設最近筆記模式顯示的筆數 randomNoteCount: 10, // 預設隨機筆記模式顯示的筆數 + customFolderIcon: '📁', // 自訂資料夾圖示 customDocumentExtensions: '', // 自訂文件副檔名(用逗號分隔) recentSources: [], // 預設最近的瀏覽記錄 noteTitleField: 'title', // 筆記標題的欄位名稱 + noteSummaryField: 'summary', // 筆記摘要的欄位名稱 modifiedDateField: '', // 修改時間的欄位名稱 createdDateField: '', // 建立時間的欄位名稱 showNoteTags: false, // 預設不顯示筆記標籤 @@ -302,6 +306,18 @@ export class GridExplorerSettingTab extends PluginSettingTab { await this.plugin.saveSettings(false); })); + // 筆記摘要欄位名稱設定 + new Setting(containerEl) + .setName(t('note_summary_field')) + .setDesc(t('note_summary_field_desc')) + .addText(text => text + .setPlaceholder('summary') + .setValue(this.plugin.settings.noteSummaryField) + .onChange(async (value) => { + this.plugin.settings.noteSummaryField = value; + await this.plugin.saveSettings(false); + })); + // 修改時間欄位名稱設定 new Setting(containerEl) .setName(t('modified_date_field')) @@ -370,6 +386,19 @@ export class GridExplorerSettingTab extends PluginSettingTab { }); }); + // 自訂資料夾圖示 + new Setting(containerEl) + .setName(t('custom_folder_icon')) + .setDesc(t('custom_folder_icon_desc')) + .addText(text => { + text + .setValue(this.plugin.settings.customFolderIcon) + .onChange(async (value) => { + this.plugin.settings.customFolderIcon = value; + await this.plugin.saveSettings(); + }); + }); + // 顯示"回上層資料夾"選項設定 new Setting(containerEl) .setName(t('show_parent_folder_item')) diff --git a/src/translations.ts b/src/translations.ts index a51640e..d543efb 100644 --- a/src/translations.ts +++ b/src/translations.ts @@ -86,6 +86,8 @@ export const TRANSLATIONS: Translations = { 'default_sort_type_desc': '設定開啟網格視圖時的預設排序模式', 'note_title_field': '筆記標題欄位名稱', 'note_title_field_desc': '指定 frontmatter 中用於筆記標題的欄位名稱', + 'note_summary_field': '筆記摘要欄位名稱', + 'note_summary_field_desc': '指定 frontmatter 中用於筆記摘要的欄位名稱', 'modified_date_field': '"修改時間"欄位名稱', 'modified_date_field_desc': '指定 frontmatter 中用於筆記修改時間的欄位名稱', 'created_date_field': '"建立時間"欄位名稱', @@ -141,6 +143,9 @@ export const TRANSLATIONS: Translations = { 'custom_document_extensions_desc': '額外的文件副檔名(用逗號分隔,不含點號)', 'custom_document_extensions_placeholder': '例如:txt,doc,docx', + 'custom_folder_icon': '自訂資料夾圖示', + 'custom_folder_icon_desc': '自訂資料夾圖示(使用Emoji)', + // 選擇資料夾對話框 'select_folders': '選擇資料夾', 'open_grid_view': '開啟網格視圖', @@ -153,12 +158,15 @@ export const TRANSLATIONS: Translations = { 'open_new_grid_view': '開啟新網格視圖', 'min_mode': '最小化模式', 'close_min_mode': '關閉最小化模式', + 'show_ignored_folders': '顯示忽略的資料夾', + 'hide_ignored_folders': '隱藏忽略的資料夾', 'delete_note': '刪除檔案', 'open_folder_note': '開啟資料夾筆記', 'create_folder_note': '建立資料夾筆記', 'delete_folder_note': '刪除資料夾筆記', 'edit_folder_note_settings': '編輯資料夾筆記設定', 'ignore_folder': '忽略此資料夾', + 'unignore_folder': '取消忽略此資料夾', 'searching': '搜尋中...', 'no_files': '沒有找到任何檔案', 'filter_folders': '篩選資料夾...', @@ -185,6 +193,8 @@ export const TRANSLATIONS: Translations = { 'note_attribute_settings': '筆記屬性設定', 'note_title': '筆記標題', 'note_title_desc': '設定此筆記的顯示標題', + 'note_summary': '筆記摘要', + 'note_summary_desc': '設定此筆記的摘要', 'note_color': '筆記顏色', 'note_color_desc': '設定此筆記的顯示顏色', 'set_note_attribute': '設定筆記屬性', @@ -270,6 +280,8 @@ export const TRANSLATIONS: Translations = { 'default_sort_type_desc': 'Set the default sorting method when opening Grid View', 'note_title_field': 'Note title field name', 'note_title_field_desc': 'Set the field name in frontmatter to use for the note title', + 'note_summary_field': 'Note summary field name', + 'note_summary_field_desc': 'Set the field name in frontmatter to use for the note summary', 'modified_date_field': '"Modified date" field name', 'modified_date_field_desc': 'Set the field name in frontmatter to use for the modified date', 'created_date_field': '"Created date" field name', @@ -325,6 +337,9 @@ export const TRANSLATIONS: Translations = { 'custom_document_extensions_desc': 'Additional document extensions (comma-separated, without dots)', 'custom_document_extensions_placeholder': 'e.g., txt,doc,docx', + 'custom_folder_icon': 'Custom Folder Icon', + 'custom_folder_icon_desc': 'Custom folder icon (use emoji)', + // Select Folder Dialog 'select_folders': 'Select folder', 'open_grid_view': 'Open grid view', @@ -337,12 +352,15 @@ export const TRANSLATIONS: Translations = { 'open_new_grid_view': 'Open new grid view', 'min_mode': 'Minimize mode', 'close_min_mode': 'Close minimize mode', + 'show_ignored_folders': 'Show ignored folders', + 'hide_ignored_folders': 'Hide ignored folders', 'delete_note': 'Delete file', 'open_folder_note': 'Open folder note', 'create_folder_note': 'Create folder note', 'delete_folder_note': 'Delete folder note', 'edit_folder_note_settings': 'Edit folder note settings', 'ignore_folder': 'Ignore this folder', + 'unignore_folder': 'Unignore this folder', 'searching': 'Searching...', 'no_files': 'No files found', 'filter_folders': 'Filter folders...', @@ -369,6 +387,8 @@ export const TRANSLATIONS: Translations = { 'note_attribute_settings': 'Note attribute settings', 'note_title': 'Note title', 'note_title_desc': 'Set the display title for this note', + 'note_summary': 'Note summary', + 'note_summary_desc': 'Set the display summary for this note', 'note_color': 'Note color', 'note_color_desc': 'Set the display color for this note', 'set_note_attribute': 'Set note attribute', @@ -454,6 +474,8 @@ export const TRANSLATIONS: Translations = { 'default_sort_type_desc': '设置打开网格视图时的默认排序模式', 'note_title_field': '笔记标题字段名称', 'note_title_field_desc': '设置 frontmatter 中用于笔记标题的字段名称', + 'note_summary_field': '笔记摘要字段名称', + 'note_summary_field_desc': '设置 frontmatter 中用于笔记摘要的字段名称', 'modified_date_field': '"修改时间"字段名称', 'modified_date_field_desc': '设置 frontmatter 中用于笔记修改时间的字段名称', 'created_date_field': '"创建时间"字段名称', @@ -509,6 +531,9 @@ export const TRANSLATIONS: Translations = { 'custom_document_extensions_desc': '额外的文件扩展名(用逗号分隔,不含点号)', 'custom_document_extensions_placeholder': '例如:txt,doc,docx', + 'custom_folder_icon': '自定义文件夹图标', + 'custom_folder_icon_desc': '自定义文件夹图标(使用Emoji)', + // 选择文件夹对话框 'select_folders': '选择文件夹', 'open_grid_view': '打开网格视图', @@ -521,12 +546,15 @@ export const TRANSLATIONS: Translations = { 'open_new_grid_view': '打开新网格视图', 'min_mode': '最小化模式', 'close_min_mode': '关闭最小化模式', + 'show_ignored_folders': '显示忽略的文件夹', + 'hide_ignored_folders': '隐藏忽略的文件夹', 'delete_note': '删除文件', 'open_folder_note': '打开文件夹笔记', 'create_folder_note': '创建文件夹笔记', 'delete_folder_note': '删除文件夹笔记', 'edit_folder_note_settings': '编辑文件夹笔记设置', 'ignore_folder': '忽略此文件夹', + 'unignore_folder': '取消忽略此文件夹', 'searching': '搜索中...', 'no_files': '没有找到任何文件', 'filter_folders': '筛选文件夹...', @@ -553,6 +581,8 @@ export const TRANSLATIONS: Translations = { 'note_attribute_settings': '笔记属性设置', 'note_title': '笔记标题', 'note_title_desc': '设置此笔记的显示标题', + 'note_summary': '笔记摘要', + 'note_summary_desc': '设置此笔记的显示摘要', 'note_color': '笔记颜色', 'note_color_desc': '设置此笔记的显示颜色', 'set_note_attribute': '设置笔记属性', @@ -638,6 +668,8 @@ export const TRANSLATIONS: Translations = { 'default_sort_type_desc': 'グリッドビューを開いたときのデフォルトの並び替え方法を設定', 'note_title_field': 'ノートタイトルフィールド名', 'note_title_field_desc': 'frontmatterでノートタイトルとして使用するフィールド名を設定', + 'note_summary_field': 'ノート要約フィールド名', + 'note_summary_field_desc': 'frontmatterでノート要約として使用するフィールド名を設定', 'modified_date_field': '"更新日"フィールド名', 'modified_date_field_desc': 'frontmatterで更新日として使用するフィールド名を設定', 'created_date_field': '"作成日"フィールド名', @@ -693,6 +725,9 @@ export const TRANSLATIONS: Translations = { 'custom_document_extensions_desc': '追加の文書拡張子(カンマ区切り、ドット無し)', 'custom_document_extensions_placeholder': '例:txt,doc,docx', + 'custom_folder_icon': 'カスタムフォルダーアイコン', + 'custom_folder_icon_desc': 'カスタムフォルダーアイコン(Emojiを使用)', + // フォルダ選択ダイアログ 'select_folders': 'フォルダを選択', 'open_grid_view': 'グリッドビューを開く', @@ -705,12 +740,15 @@ export const TRANSLATIONS: Translations = { 'open_new_grid_view': '新しいグリッドビューを開く', 'min_mode': '最小化モード', 'close_min_mode': '最小化モードを閉じる', + 'show_ignored_folders': '無視するフォルダーを表示', + 'hide_ignored_folders': '無視するフォルダーを非表示', 'delete_note': 'ファイルを削除', 'open_folder_note': 'フォルダーノートを開く', 'create_folder_note': 'フォルダーノートを作成', 'delete_folder_note': 'フォルダーノートを削除', 'edit_folder_note_settings': 'フォルダーノート設定を編集', 'ignore_folder': 'このフォルダーを無視', + 'unignore_folder': 'このフォルダーを無視解除', 'searching': '検索中...', 'no_files': 'ファイルが見つかりません', 'filter_folders': 'フォルダをフィルタリング...', @@ -737,6 +775,8 @@ export const TRANSLATIONS: Translations = { 'note_attribute_settings': 'ノート属性設定', 'note_title': 'ノートタイトル', 'note_title_desc': 'このノートの表示タイトルを設定', + 'note_summary': 'ノート要約', + 'note_summary_desc': 'このノートの表示要約を設定', 'note_color': 'ノート色', 'note_color_desc': 'このノートの表示色を設定', 'set_note_attribute': 'ノート属性設定', @@ -822,6 +862,8 @@ export const TRANSLATIONS: Translations = { 'default_sort_type_desc': 'Установите метод сортировки по умолчанию при открытии сеточного вида', 'note_title_field': 'Имя поля "Название заметки"', 'note_title_field_desc': 'Укажите имя поля в метаданных для использования в качестве названия заметки', + 'note_summary_field': 'Имя поля "Краткое описание"', + 'note_summary_field_desc': 'Укажите имя поля в метаданных для использования в качестве краткого описания', 'modified_date_field': 'Имя поля "Дата изменения"', 'modified_date_field_desc': 'Укажите имя поля в метаданных для использования в качестве даты изменения', 'created_date_field': 'Имя поля "Дата создания"', @@ -877,6 +919,9 @@ export const TRANSLATIONS: Translations = { 'custom_document_extensions_desc': 'Дополнительные расширения документов (через запятую, без точек)', 'custom_document_extensions_placeholder': 'например, txt,doc,docx', + 'custom_folder_icon': 'Пользовательский иконка папки', + 'custom_folder_icon_desc': 'Пользовательская иконка папки (используйте Emoji)', + // Select Folder Dialog 'select_folders': 'Выбрать папку', 'open_grid_view': 'Открыть сеточный вид', @@ -889,12 +934,15 @@ export const TRANSLATIONS: Translations = { 'open_new_grid_view': 'Открыть новый сеточный вид', 'min_mode': 'Минимизировать вид', 'close_min_mode': 'Закрыть минимизированный вид', + 'show_ignored_folders': 'Показать игнорируемые папки', + 'hide_ignored_folders': 'Скрыть игнорируемые папки', 'delete_note': 'Удалить файл', 'open_folder_note': 'Открыть заметку папки', 'create_folder_note': 'Создать заметку папки', 'delete_folder_note': 'Удалить заметку папки', 'edit_folder_note_settings': 'Редактировать настройки заметки папки', 'ignore_folder': 'Игнорировать эту папку', + 'unignore_folder': 'Отменить игнорирование этой папки', 'searching': 'Поиск...', 'no_files': 'Файлы не найдены', 'filter_folders': 'Фильтровать папки...', @@ -921,6 +969,8 @@ export const TRANSLATIONS: Translations = { 'note_attribute_settings': 'Настройки атрибутов заметки', 'note_title': 'Название заметки', 'note_title_desc': 'Установите отображаемое название для этой заметки', + 'note_summary': 'Краткий описатель', + 'note_summary_desc': 'Установите отображаемое краткий описатель для этой заметки', 'note_color': 'Цвет заметки', 'note_color_desc': 'Установите цвет отображения для этой заметки', 'set_note_attribute': 'Установить атрибуты заметки', @@ -1006,6 +1056,8 @@ export const TRANSLATIONS: Translations = { 'default_sort_type_desc': 'Встановіть метод сортування за замовчуванням при відкритті сіткового вигляду', 'note_title_field': 'Назва поля "Назва нотатки"', 'note_title_field_desc': 'Вкажіть назву поля в метаданих для використання як назви нотатки', + 'note_summary_field': 'Назва поля "Краткий опис"', + 'note_summary_field_desc': 'Вкажіть назву поля в метаданих для використання як краткого опису', 'modified_date_field': 'Назва поля "Дата зміни"', 'modified_date_field_desc': 'Вкажіть назву поля в метаданих для використання як дати зміни', 'created_date_field': 'Назва поля "Дата створення"', @@ -1061,6 +1113,9 @@ export const TRANSLATIONS: Translations = { 'custom_document_extensions_desc': 'Додаткові розширення документів (через кому, без крапок)', 'custom_document_extensions_placeholder': 'наприклад, txt,doc,docx', + 'custom_folder_icon': 'Користувацька іконка папки', + 'custom_folder_icon_desc': 'Користувацька іконка папки (використовуйте Emoji)', + // Select Folder Dialog 'select_folders': 'Вибрати папку', 'open_grid_view': 'Відкрити сітковий вигляд', @@ -1073,12 +1128,15 @@ export const TRANSLATIONS: Translations = { 'open_new_grid_view': 'Відкрити новий сітковий вигляд', 'min_mode': 'Мінімізувати вигляд', 'close_min_mode': 'Закрити мінімізоване вигляд', + 'show_ignored_folders': 'Показати ігноровані папки', + 'hide_ignored_folders': 'Сховати ігноровані папки', 'delete_note': 'Видалити файл', 'open_folder_note': 'Відкрити нотатку папки', 'create_folder_note': 'Створити нотатку папки', 'delete_folder_note': 'Видалити нотатку папки', 'edit_folder_note_settings': 'Редагувати налаштування нотатки папки', 'ignore_folder': 'Ігнорувати цю папку', + 'unignore_folder': 'Відмінити ігнорування цієї папки', 'searching': 'Пошук...', 'no_files': 'Файли не знайдено', 'filter_folders': 'Фільтрувати папки...', @@ -1105,6 +1163,8 @@ export const TRANSLATIONS: Translations = { 'note_attribute_settings': 'Налаштування атрибутів нотатки', 'note_title': 'Назва нотатки', 'note_title_desc': 'Встановіть назву відображення для цієї нотатки', + 'note_summary': 'Краткий опис', + 'note_summary_desc': 'Встановіть краткий опис для цієї нотатки', 'note_color': 'Колір нотатки', 'note_color_desc': 'Встановіть колір відображення для цієї нотатки', 'set_note_attribute': 'Встановити атрибути нотатки', diff --git a/versions.json b/versions.json index 50fe420..6689942 100644 --- a/versions.json +++ b/versions.json @@ -1,3 +1,3 @@ { - "2.1.1": "1.1.0" + "2.2.0": "1.1.0" } \ No newline at end of file