diff --git a/docs/settings-localization-refactor-renames.json b/docs/settings-localization-refactor-renames.json new file mode 100644 index 000000000..228c80be0 --- /dev/null +++ b/docs/settings-localization-refactor-renames.json @@ -0,0 +1,1659 @@ +{ + "schemaVersion": 1, + "baselineRef": "ddee69bb", + "scopePrefixes": [ + "settings" + ], + "semanticReview": "docs/settings-localization-semantic-review.json", + "operations": [ + { + "kind": "move", + "source": "settings.sections.general", + "targets": [ + "settings.index.label" + ] + }, + { + "kind": "move", + "source": "settings.pageDescriptions.general", + "targets": [ + "settings.index.description" + ] + }, + { + "kind": "move", + "source": "settings.groups.general.vaultConfiguration", + "targets": [ + "settings.index.groups.vaultSetup" + ] + }, + { + "kind": "move", + "source": "settings.sections.vaultFilters", + "targets": [ + "settings.pages.displayFilters.label" + ] + }, + { + "kind": "move", + "source": "settings.pageDescriptions.vaultFilters", + "targets": [ + "settings.pages.displayFilters.description" + ] + }, + { + "kind": "move", + "source": "settings.sections.appearanceBehavior", + "targets": [ + "settings.pages.appearanceAndBehavior.label" + ] + }, + { + "kind": "move", + "source": "settings.pageDescriptions.appearanceBehavior", + "targets": [ + "settings.pages.appearanceAndBehavior.description" + ] + }, + { + "kind": "move", + "source": "settings.sections.navigationPane", + "targets": [ + "settings.pages.navigationPane.label" + ] + }, + { + "kind": "move", + "source": "settings.pageDescriptions.navigationPane", + "targets": [ + "settings.pages.navigationPane.description" + ] + }, + { + "kind": "move", + "source": "settings.sections.shortcutsAndRecentFiles", + "targets": [ + "settings.pages.shortcutsAndRecentFiles.label" + ] + }, + { + "kind": "move", + "source": "settings.pageDescriptions.shortcuts", + "targets": [ + "settings.pages.shortcutsAndRecentFiles.description" + ] + }, + { + "kind": "move", + "source": "settings.sections.foldersAndFolderNotes", + "targets": [ + "settings.pages.foldersAndFolderNotes.label" + ] + }, + { + "kind": "move", + "source": "settings.pageDescriptions.foldersAndFolderNotes", + "targets": [ + "settings.pages.foldersAndFolderNotes.description" + ] + }, + { + "kind": "move", + "source": "settings.sections.tagsAndProperties", + "targets": [ + "settings.pages.tagsAndProperties.label" + ] + }, + { + "kind": "move", + "source": "settings.pageDescriptions.tagsProperties", + "targets": [ + "settings.pages.tagsAndProperties.description" + ] + }, + { + "kind": "move", + "source": "settings.sections.listPane", + "targets": [ + "settings.pages.listPane.label" + ] + }, + { + "kind": "move", + "source": "settings.pageDescriptions.listPane", + "targets": [ + "settings.pages.listPane.description" + ] + }, + { + "kind": "move", + "source": "settings.sections.fileOperations", + "targets": [ + "settings.pages.fileOperations.label" + ] + }, + { + "kind": "move", + "source": "settings.pageDescriptions.fileOperations", + "targets": [ + "settings.pages.fileOperations.description" + ] + }, + { + "kind": "move", + "source": "settings.groups.notes.frontmatter", + "targets": [ + "settings.pages.frontmatterFields.label" + ] + }, + { + "kind": "move", + "source": "settings.pageDescriptions.frontmatter", + "targets": [ + "settings.pages.frontmatterFields.description" + ] + }, + { + "kind": "move", + "source": "settings.sections.notes", + "targets": [ + "settings.pages.fileDisplay.label" + ] + }, + { + "kind": "move", + "source": "settings.pageDescriptions.notes", + "targets": [ + "settings.pages.fileDisplay.description" + ] + }, + { + "kind": "move", + "source": "settings.pageDescriptions.calendar", + "targets": [ + "settings.pages.calendar.description" + ] + }, + { + "kind": "move", + "source": "settings.sections.icons", + "targets": [ + "settings.pages.iconPacks.label" + ] + }, + { + "kind": "move", + "source": "settings.pageDescriptions.iconPacks", + "targets": [ + "settings.pages.iconPacks.description" + ] + }, + { + "kind": "move", + "source": "settings.sections.advanced", + "targets": [ + "settings.pages.advanced.label" + ] + }, + { + "kind": "move", + "source": "settings.pageDescriptions.advanced", + "targets": [ + "settings.pages.advanced.description" + ] + }, + { + "kind": "move", + "source": "settings.pageGroups.navigationAndContent", + "targets": [ + "settings.pageGroups.navigationPane" + ] + }, + { + "kind": "move", + "source": "settings.pageGroups.notesAndLists", + "targets": [ + "settings.pageGroups.listPane" + ] + }, + { + "kind": "fanOut", + "source": "settings.sections.calendar", + "targets": [ + "settings.pages.calendar.label", + "navigationPane.calendar" + ] + }, + { + "kind": "move", + "source": "settings.groups.general.startup", + "targets": [ + "settings.pages.appearanceAndBehavior.groups.startup" + ] + }, + { + "kind": "move", + "source": "settings.groups.general.keyboardNavigation", + "targets": [ + "settings.pages.appearanceAndBehavior.groups.keyboardNavigation" + ] + }, + { + "kind": "move", + "source": "settings.groups.general.mouseButtons", + "targets": [ + "settings.pages.appearanceAndBehavior.groups.mouseButtons" + ] + }, + { + "kind": "move", + "source": "settings.groups.general.desktopAppearance", + "targets": [ + "settings.pages.appearanceAndBehavior.groups.desktopAppearance" + ] + }, + { + "kind": "move", + "source": "settings.groups.general.mobileAppearance", + "targets": [ + "settings.pages.appearanceAndBehavior.groups.mobileAppearance" + ] + }, + { + "kind": "move", + "source": "settings.groups.general.view", + "targets": [ + "settings.pages.appearanceAndBehavior.groups.appearance" + ] + }, + { + "kind": "move", + "source": "settings.groups.general.icons", + "targets": [ + "settings.pages.appearanceAndBehavior.groups.icons" + ] + }, + { + "kind": "move", + "source": "settings.groups.general.formatting", + "targets": [ + "settings.pages.appearanceAndBehavior.groups.formatting" + ] + }, + { + "kind": "move", + "source": "settings.groups.navigation.banner", + "targets": [ + "settings.pages.navigationPane.groups.banner" + ] + }, + { + "kind": "move", + "source": "settings.groups.navigation.collapseItems", + "targets": [ + "settings.pages.navigationPane.groups.collapseItems" + ] + }, + { + "kind": "move", + "source": "settings.groups.navigation.dragAndDrop", + "targets": [ + "settings.pages.navigationPane.groups.dragAndDrop" + ] + }, + { + "kind": "move", + "source": "settings.groups.navigation.noteCounts", + "targets": [ + "settings.pages.navigationPane.groups.fileCounts" + ] + }, + { + "kind": "move", + "source": "settings.groups.navigation.rainbowColors", + "targets": [ + "settings.pages.navigationPane.groups.rainbowColors" + ] + }, + { + "kind": "move", + "source": "settings.sections.folderNotes", + "targets": [ + "settings.pages.foldersAndFolderNotes.groups.folderNotes" + ] + }, + { + "kind": "move", + "source": "settings.sections.folderNoteFiles", + "targets": [ + "settings.pages.foldersAndFolderNotes.groups.folderNoteFiles" + ] + }, + { + "kind": "move", + "source": "settings.groups.list.display", + "targets": [ + "settings.pages.listPane.groups.appearance" + ] + }, + { + "kind": "move", + "source": "settings.groups.list.sortAndGroup", + "targets": [ + "settings.pages.listPane.groups.sortAndGroup" + ] + }, + { + "kind": "move", + "source": "settings.groups.list.groupHeaders", + "targets": [ + "settings.pages.listPane.groups.groupHeaders" + ] + }, + { + "kind": "move", + "source": "settings.groups.list.manualSort", + "targets": [ + "settings.pages.listPane.groups.manualSort" + ] + }, + { + "kind": "move", + "source": "settings.groups.list.pinnedNotes", + "targets": [ + "settings.pages.listPane.groups.pinnedNotes" + ] + }, + { + "kind": "move", + "source": "settings.groups.general.behavior", + "targets": [ + "settings.pages.listPane.groups.behavior" + ] + }, + { + "kind": "move", + "source": "settings.groups.list.drawingPreviews", + "targets": [ + "settings.pages.listPane.groups.drawingPreviews" + ] + }, + { + "kind": "move", + "source": "settings.groups.general.templates", + "targets": [ + "settings.pages.fileOperations.groups.templates" + ] + }, + { + "kind": "move", + "source": "settings.groups.notes.icon", + "targets": [ + "settings.pages.fileDisplay.groups.icon" + ] + }, + { + "kind": "move", + "source": "settings.groups.notes.title", + "targets": [ + "settings.pages.fileDisplay.groups.title" + ] + }, + { + "kind": "move", + "source": "settings.groups.notes.previewText", + "targets": [ + "settings.pages.fileDisplay.groups.previewText" + ] + }, + { + "kind": "move", + "source": "settings.groups.notes.featureImage", + "targets": [ + "settings.pages.fileDisplay.groups.featureImage" + ] + }, + { + "kind": "move", + "source": "settings.groups.notes.tags", + "targets": [ + "settings.pages.fileDisplay.groups.tags" + ] + }, + { + "kind": "move", + "source": "settings.groups.notes.properties", + "targets": [ + "settings.pages.fileDisplay.groups.properties" + ] + }, + { + "kind": "move", + "source": "settings.groups.notes.tasks", + "targets": [ + "settings.pages.fileDisplay.groups.tasks" + ] + }, + { + "kind": "move", + "source": "settings.groups.notes.date", + "targets": [ + "settings.pages.fileDisplay.groups.date" + ] + }, + { + "kind": "move", + "source": "settings.groups.notes.parentFolder", + "targets": [ + "settings.pages.fileDisplay.groups.parentFolder" + ] + }, + { + "kind": "move", + "source": "settings.groups.notes.wordCount", + "targets": [ + "settings.pages.fileDisplay.groups.wordAndCharacterCount" + ] + }, + { + "kind": "move", + "source": "settings.groups.navigation.leftSidebar", + "targets": [ + "settings.pages.calendar.groups.leftSidebar" + ] + }, + { + "kind": "move", + "source": "settings.groups.navigation.calendarIntegration", + "targets": [ + "settings.pages.calendar.groups.calendarIntegration" + ] + }, + { + "kind": "move", + "source": "settings.groups.advanced.maintenance", + "targets": [ + "settings.pages.advanced.groups.maintenance" + ] + }, + { + "kind": "move", + "source": "settings.groups.advanced.resetSettings", + "targets": [ + "settings.pages.advanced.groups.resetSettings" + ] + }, + { + "kind": "fanOut", + "source": "settings.groups.navigation.appearance", + "targets": [ + "settings.pages.navigationPane.groups.appearance", + "settings.pages.calendar.groups.appearance" + ] + }, + { + "kind": "copy", + "source": "navigationPane.shortcutsHeader", + "targets": [ + "settings.pages.shortcutsAndRecentFiles.groups.shortcuts" + ] + }, + { + "kind": "copy", + "source": "navigationPane.recentFilesHeader", + "targets": [ + "settings.pages.shortcutsAndRecentFiles.groups.recentFiles" + ] + }, + { + "kind": "fanOut", + "source": "settings.sections.folders", + "targets": [ + "settings.pages.foldersAndFolderNotes.groups.folders", + "navigationPane.folders" + ] + }, + { + "kind": "fanOut", + "source": "settings.sections.tags", + "targets": [ + "settings.pages.tagsAndProperties.groups.tags", + "navigationPane.tags" + ] + }, + { + "kind": "copy", + "source": "navigationPane.properties", + "targets": [ + "settings.pages.tagsAndProperties.groups.properties" + ] + }, + { + "kind": "copy", + "source": "settings.items.calendarPlacement.options.rightSidebar", + "targets": [ + "settings.pages.calendar.groups.rightSidebar" + ] + }, + { + "kind": "move", + "source": "settings.items.sortNotesBy", + "targets": [ + "settings.items.defaultSortOrder" + ] + }, + { + "kind": "move", + "source": "settings.items.propertySortKey", + "targets": [ + "settings.items.sortingProperties" + ] + }, + { + "kind": "move", + "source": "settings.items.propertySortSecondary", + "targets": [ + "settings.items.propertySecondarySort" + ] + }, + { + "kind": "move", + "source": "settings.items.propertyGroupKey", + "targets": [ + "settings.items.groupingProperties" + ] + }, + { + "kind": "move", + "source": "settings.items.manualSortPropertyKey", + "targets": [ + "settings.items.manualSortProperty" + ] + }, + { + "kind": "move", + "source": "settings.items.manualSortGroupHeaderProperty", + "targets": [ + "settings.items.groupHeaderProperty" + ] + }, + { + "kind": "move", + "source": "settings.items.revealFileOnListChanges", + "targets": [ + "settings.items.scrollToSelectedFileOnListChanges" + ] + }, + { + "kind": "move", + "source": "settings.items.limitPinnedToCurrentFolder", + "targets": [ + "settings.items.filterPinnedNotesByFolder" + ] + }, + { + "kind": "move", + "source": "settings.items.separateNoteCounts", + "targets": [ + "settings.items.separateFileCounts" + ] + }, + { + "kind": "move", + "source": "settings.items.groupNotes", + "targets": [ + "settings.items.defaultGrouping" + ] + }, + { + "kind": "move", + "source": "settings.items.showSelectedNavigationPills", + "targets": [ + "settings.items.alwaysShowAllTagAndPropertyPills" + ] + }, + { + "kind": "move", + "source": "settings.items.showFolderGroupPaths", + "targets": [ + "settings.items.showSubfolderPaths" + ] + }, + { + "kind": "move", + "source": "settings.items.showFileBackgroundUnfinishedTask", + "targets": [ + "settings.items.unfinishedTaskBackground" + ] + }, + { + "kind": "move", + "source": "settings.items.showFilenameMatchIcons", + "targets": [ + "settings.items.showFileNameIcons" + ] + }, + { + "kind": "move", + "source": "settings.items.showCategoryIcons", + "targets": [ + "settings.items.showFileTypeIcons" + ] + }, + { + "kind": "move", + "source": "settings.items.showParentFolderFullPath", + "targets": [ + "settings.items.showFolderPath" + ] + }, + { + "kind": "move", + "source": "settings.items.parentFolderClickRevealsFile", + "targets": [ + "settings.items.parentFolderClickOpensFolder" + ] + }, + { + "kind": "move", + "source": "settings.items.narrowSidebarLayout", + "targets": [ + "settings.items.narrowSidebarBehavior" + ] + }, + { + "kind": "move", + "source": "settings.items.narrowSidebarTrigger", + "targets": [ + "settings.items.narrowSidebarThresholdMode" + ] + }, + { + "kind": "move", + "source": "settings.items.narrowSidebarCustomWidth", + "targets": [ + "settings.items.narrowSidebarThresholdWidth" + ] + }, + { + "kind": "move", + "source": "settings.items.appearanceBackground", + "targets": [ + "settings.items.paneBackgroundColor" + ] + }, + { + "kind": "move", + "source": "settings.items.appearanceScale", + "targets": [ + "settings.items.zoomLevel" + ] + }, + { + "kind": "move", + "source": "settings.items.useFloatingToolbars", + "targets": [ + "settings.items.useFloatingToolbarsOnIOS" + ] + }, + { + "kind": "move", + "source": "settings.items.startView", + "targets": [ + "settings.items.defaultStartupView" + ] + }, + { + "kind": "move", + "source": "settings.items.createNewNotesInNewTab", + "targets": [ + "settings.items.openNewNotesInNewTab" + ] + }, + { + "kind": "move", + "source": "settings.items.paneTransitionDuration", + "targets": [ + "settings.items.singlePaneAnimation" + ] + }, + { + "kind": "move", + "source": "settings.items.autoSelectFirstFileOnFocusChange", + "targets": [ + "settings.items.autoSelectFirstNote" + ] + }, + { + "kind": "move", + "source": "settings.items.skipAutoScroll", + "targets": [ + "settings.items.disableShortcutAutoScroll" + ] + }, + { + "kind": "move", + "source": "settings.items.autoExpandNavItems", + "targets": [ + "settings.items.expandOnSelection" + ] + }, + { + "kind": "move", + "source": "settings.items.showRecentNotes", + "targets": [ + "settings.items.showRecentFiles" + ] + }, + { + "kind": "move", + "source": "settings.items.hideRecentNotes", + "targets": [ + "settings.items.hideFileTypesFromRecentFiles" + ] + }, + { + "kind": "move", + "source": "settings.items.recentNotesCount", + "targets": [ + "settings.items.recentFilesCount" + ] + }, + { + "kind": "move", + "source": "settings.items.pinRecentNotesWithShortcuts", + "targets": [ + "settings.items.pinRecentFilesWithShortcuts" + ] + }, + { + "kind": "move", + "source": "settings.items.calendarEnabled", + "targets": [ + "settings.items.enableCalendar" + ] + }, + { + "kind": "move", + "source": "settings.items.calendarLeftPlacement", + "targets": [ + "settings.items.calendarSinglePanePlacement" + ] + }, + { + "kind": "move", + "source": "settings.items.calendarMonthHeadingFormat", + "targets": [ + "settings.items.calendarMonthNameFormat" + ] + }, + { + "kind": "move", + "source": "settings.items.calendarWeeksToShow", + "targets": [ + "settings.items.calendarLeftSidebarWeeksToShow" + ] + }, + { + "kind": "move", + "source": "settings.items.calendarIntegrationMode", + "targets": [ + "settings.items.dailyNoteSource" + ] + }, + { + "kind": "move", + "source": "settings.items.calendarCustomRootFolder", + "targets": [ + "settings.items.periodicNotesRootFolder" + ] + }, + { + "kind": "move", + "source": "settings.items.calendarTemplateFolder", + "targets": [ + "settings.items.templateFolderLocation" + ] + }, + { + "kind": "move", + "source": "settings.items.calendarTemplateFile", + "targets": [ + "settings.items.periodicNoteTemplateFile" + ] + }, + { + "kind": "move", + "source": "settings.items.settingsTransfer", + "targets": [ + "settings.items.importAndExportSettings" + ] + }, + { + "kind": "move", + "source": "settings.items.shiftEnterOpenContext", + "targets": [ + "settings.items.shiftEnterAction" + ] + }, + { + "kind": "move", + "source": "settings.items.cmdEnterOpenContext", + "targets": [ + "settings.items.cmdEnterAction" + ] + }, + { + "kind": "move", + "source": "settings.items.ctrlEnterOpenContext", + "targets": [ + "settings.items.ctrlEnterAction" + ] + }, + { + "kind": "move", + "source": "settings.items.fileVisibility", + "targets": [ + "settings.items.showFileTypes" + ] + }, + { + "kind": "move", + "source": "settings.items.excludedNotes", + "targets": [ + "settings.items.hideNotesWithPropertyRules" + ] + }, + { + "kind": "move", + "source": "settings.items.excludedFileNamePatterns", + "targets": [ + "settings.items.hideFiles" + ] + }, + { + "kind": "move", + "source": "settings.items.vaultTitle", + "targets": [ + "settings.items.vaultTitlePlacement" + ] + }, + { + "kind": "move", + "source": "settings.items.excludedFolders", + "targets": [ + "settings.items.hideFolders" + ] + }, + { + "kind": "move", + "source": "settings.items.alphabeticalDateMode", + "targets": [ + "settings.items.dateWhenSortingByName" + ] + }, + { + "kind": "move", + "source": "settings.items.showFileTagAncestors", + "targets": [ + "settings.items.showFullTagPaths" + ] + }, + { + "kind": "move", + "source": "settings.items.prioritizeColoredFileTags", + "targets": [ + "settings.items.showColoredTagsFirst" + ] + }, + { + "kind": "move", + "source": "settings.items.prioritizeColoredFileProperties", + "targets": [ + "settings.items.showColoredPropertiesFirst" + ] + }, + { + "kind": "move", + "source": "settings.items.propertyFields", + "targets": [ + "settings.items.propertyKeys" + ] + }, + { + "kind": "move", + "source": "settings.items.enablePropertyInternalLinks", + "targets": [ + "settings.items.linkPropertyPillsToNotes" + ] + }, + { + "kind": "move", + "source": "settings.items.enablePropertyExternalLinks", + "targets": [ + "settings.items.linkPropertyPillsToUrls" + ] + }, + { + "kind": "move", + "source": "settings.items.textCountDisplay", + "targets": [ + "settings.items.textCountType" + ] + }, + { + "kind": "move", + "source": "settings.items.showWordCountPercentage", + "targets": [ + "settings.items.showTargetPercentage" + ] + }, + { + "kind": "move", + "source": "settings.items.showFilePreview", + "targets": [ + "settings.items.showNotePreview" + ] + }, + { + "kind": "move", + "source": "settings.items.previewPropertiesFallback", + "targets": [ + "settings.items.fallbackToNoteContent" + ] + }, + { + "kind": "move", + "source": "settings.items.fileNameRows", + "targets": [ + "settings.items.titleRows" + ] + }, + { + "kind": "move", + "source": "settings.items.featureImageSize", + "targets": [ + "settings.items.featureImageDisplaySize" + ] + }, + { + "kind": "move", + "source": "settings.items.hideDrawingPreviewImages", + "targets": [ + "settings.items.hideExportedPreviewImages" + ] + }, + { + "kind": "move", + "source": "settings.items.showNoteCount", + "targets": [ + "settings.items.showFileCount" + ] + }, + { + "kind": "move", + "source": "settings.items.showSectionIcons", + "targets": [ + "settings.items.showShortcutAndRecentItemIcons" + ] + }, + { + "kind": "move", + "source": "settings.items.showIconsColorOnly", + "targets": [ + "settings.items.applyColorToIconsOnly" + ] + }, + { + "kind": "move", + "source": "settings.items.navRainbowApplyToRecent", + "targets": [ + "settings.items.navRainbowApplyToRecentItems" + ] + }, + { + "kind": "move", + "source": "settings.items.navRainbowBalanceHueLuminance", + "targets": [ + "settings.items.navRainbowConsistentBrightness" + ] + }, + { + "kind": "move", + "source": "settings.items.collapseBehavior", + "targets": [ + "settings.items.collapseItems" + ] + }, + { + "kind": "move", + "source": "settings.items.smartCollapse", + "targets": [ + "settings.items.keepSelectedItemExpanded" + ] + }, + { + "kind": "move", + "source": "settings.items.navIndent", + "targets": [ + "settings.items.treeIndentation" + ] + }, + { + "kind": "move", + "source": "settings.items.navRootSpacing", + "targets": [ + "settings.items.rootItemSpacing" + ] + }, + { + "kind": "move", + "source": "settings.items.showAllTagsFolder", + "targets": [ + "settings.items.showTagsFolder" + ] + }, + { + "kind": "move", + "source": "settings.items.showUntagged", + "targets": [ + "settings.items.showUntaggedNotes" + ] + }, + { + "kind": "move", + "source": "settings.items.scopeTagsToCurrentContext", + "targets": [ + "settings.items.filterTagsBySelection" + ] + }, + { + "kind": "move", + "source": "settings.items.showAllPropertiesFolder", + "targets": [ + "settings.items.showPropertiesFolder" + ] + }, + { + "kind": "move", + "source": "settings.items.scopePropertiesToCurrentContext", + "targets": [ + "settings.items.filterPropertiesBySelection" + ] + }, + { + "kind": "move", + "source": "settings.items.hiddenTags", + "targets": [ + "settings.items.hideTags" + ] + }, + { + "kind": "move", + "source": "settings.items.hiddenFileTags", + "targets": [ + "settings.items.hideNotesWithTags" + ] + }, + { + "kind": "move", + "source": "settings.items.enableFolderNoteLinks", + "targets": [ + "settings.items.folderNamesOpenFolderNotes" + ] + }, + { + "kind": "move", + "source": "settings.items.showNearestFolderNoteInSidebar", + "targets": [ + "settings.items.showClosestFolderNoteInRightSidebar" + ] + }, + { + "kind": "move", + "source": "settings.items.externalIcons", + "targets": [ + "settings.items.iconPackManagement" + ] + }, + { + "kind": "move", + "source": "settings.items.useFrontmatterDates", + "targets": [ + "settings.items.useFrontmatterMetadata" + ] + }, + { + "kind": "move", + "source": "settings.items.frontmatterMigration", + "targets": [ + "settings.items.migrateIconsAndColorsFromSettings" + ] + }, + { + "kind": "move", + "source": "settings.items.frontmatterNameField", + "targets": [ + "settings.items.frontmatterNameFields" + ] + }, + { + "kind": "move", + "source": "settings.items.frontmatterDateFormat", + "targets": [ + "settings.items.frontmatterTimestampFormat" + ] + }, + { + "kind": "move", + "source": "settings.items.updateCheckOnStart", + "targets": [ + "settings.items.checkForNewVersionOnStart" + ] + }, + { + "kind": "move", + "source": "settings.items.debugLogging", + "targets": [ + "settings.items.startupDebugLogging" + ] + }, + { + "kind": "split", + "source": "settings.items.calendarCustomFilePattern.name", + "targets": [ + "settings.items.calendarDailyNotePattern.name" + ] + }, + { + "kind": "split", + "source": "settings.items.calendarCustomFilePattern.desc", + "targets": [ + "settings.items.calendarDailyNotePattern.desc" + ] + }, + { + "kind": "split", + "source": "settings.items.calendarCustomFilePattern.placeholder", + "targets": [ + "settings.items.calendarDailyNotePattern.placeholder" + ] + }, + { + "kind": "split", + "source": "settings.items.calendarCustomFilePattern.parsingError", + "targets": [ + "settings.items.calendarDailyNotePattern.parsingError" + ] + }, + { + "kind": "split", + "source": "settings.items.calendarCustomFilePattern.momentDescPrefix", + "targets": [ + "settings.items.calendarPeriodicNotePatterns.momentDescPrefix" + ] + }, + { + "kind": "split", + "source": "settings.items.calendarCustomFilePattern.momentLinkText", + "targets": [ + "settings.items.calendarPeriodicNotePatterns.momentLinkText" + ] + }, + { + "kind": "split", + "source": "settings.items.calendarCustomFilePattern.momentDescSuffix", + "targets": [ + "settings.items.calendarPeriodicNotePatterns.momentDescSuffix" + ] + }, + { + "kind": "split", + "source": "settings.items.calendarCustomFilePattern.templateTokenNoticeLabel", + "targets": [ + "settings.items.calendarPeriodicNotePatterns.templateTokenNoticeLabel" + ] + }, + { + "kind": "split", + "source": "settings.items.calendarCustomFilePattern.templateTokenNotice", + "targets": [ + "settings.items.calendarPeriodicNotePatterns.templateTokenNotice" + ] + }, + { + "kind": "split", + "source": "settings.items.calendarCustomFilePattern.example", + "targets": [ + "settings.items.calendarPeriodicNotePatterns.example" + ] + }, + { + "kind": "split", + "source": "settings.items.calendarCustomFilePattern.templaterSupportInstalled", + "targets": [ + "settings.items.templaterSupport.installed" + ] + }, + { + "kind": "split", + "source": "settings.items.calendarCustomFilePattern.templaterSupportMissing", + "targets": [ + "settings.items.templaterSupport.missing" + ] + }, + { + "kind": "move", + "source": "settings.items.calendarCustomWeekPattern", + "targets": [ + "settings.items.calendarWeeklyNotePattern" + ] + }, + { + "kind": "move", + "source": "settings.items.calendarCustomMonthPattern", + "targets": [ + "settings.items.calendarMonthlyNotePattern" + ] + }, + { + "kind": "move", + "source": "settings.items.calendarCustomQuarterPattern", + "targets": [ + "settings.items.calendarQuarterlyNotePattern" + ] + }, + { + "kind": "move", + "source": "settings.items.calendarCustomYearPattern", + "targets": [ + "settings.items.calendarYearlyNotePattern" + ] + }, + { + "kind": "move", + "source": "settings.items.listPaneTitle.options.list", + "targets": [ + "settings.items.listPaneTitle.options.listPane" + ] + }, + { + "kind": "move", + "source": "settings.items.sortNotesBy.dateDirections.desc", + "targets": [ + "settings.items.defaultSortOrder.dateDirections.newestOnTop" + ] + }, + { + "kind": "move", + "source": "settings.items.sortNotesBy.dateDirections.asc", + "targets": [ + "settings.items.defaultSortOrder.dateDirections.oldestOnTop" + ] + }, + { + "kind": "move", + "source": "settings.items.sortNotesBy.textDirections.asc", + "targets": [ + "settings.items.defaultSortOrder.textDirections.aOnTop" + ] + }, + { + "kind": "move", + "source": "settings.items.sortNotesBy.textDirections.desc", + "targets": [ + "settings.items.defaultSortOrder.textDirections.zOnTop" + ] + }, + { + "kind": "move", + "source": "settings.items.sortNotesBy.fields.modified", + "targets": [ + "settings.items.defaultSortOrder.fields.dateEdited" + ] + }, + { + "kind": "move", + "source": "settings.items.sortNotesBy.fields.created", + "targets": [ + "settings.items.defaultSortOrder.fields.dateCreated" + ] + }, + { + "kind": "move", + "source": "settings.items.sortNotesBy.fields.filename", + "targets": [ + "settings.items.defaultSortOrder.fields.fileName" + ] + }, + { + "kind": "move", + "source": "settings.items.propertySortSecondary.options.filename", + "targets": [ + "settings.items.propertySecondarySort.options.fileName" + ] + }, + { + "kind": "move", + "source": "settings.items.propertySortSecondary.options.created", + "targets": [ + "settings.items.propertySecondarySort.options.dateCreated" + ] + }, + { + "kind": "move", + "source": "settings.items.propertySortSecondary.options.modified", + "targets": [ + "settings.items.propertySecondarySort.options.dateEdited" + ] + }, + { + "kind": "move", + "source": "settings.items.manualSortNewNotePlacement.options.below-selected-note", + "targets": [ + "settings.items.manualSortNewNotePlacement.options.belowSelectedNote" + ] + }, + { + "kind": "move", + "source": "settings.items.unfinishedTaskIcon.options.none", + "targets": [ + "settings.items.unfinishedTaskIcon.options.disabled" + ] + }, + { + "kind": "move", + "source": "settings.items.unfinishedTaskIcon.options.all", + "targets": [ + "settings.items.unfinishedTaskIcon.options.standardAndCompact" + ] + }, + { + "kind": "move", + "source": "settings.items.fileTypeIconPreset.options.none", + "targets": [ + "settings.items.fileTypeIconPreset.options.builtIn" + ] + }, + { + "kind": "move", + "source": "settings.items.appearanceBackground.options.primary", + "targets": [ + "settings.items.paneBackgroundColor.options.listBackground" + ] + }, + { + "kind": "move", + "source": "settings.items.appearanceBackground.options.secondary", + "targets": [ + "settings.items.paneBackgroundColor.options.navigationBackground" + ] + }, + { + "kind": "move", + "source": "settings.items.startView.options.files", + "targets": [ + "settings.items.defaultStartupView.options.listPane" + ] + }, + { + "kind": "move", + "source": "settings.items.shortcutBadgeDisplay.options.index", + "targets": [ + "settings.items.shortcutBadgeDisplay.options.position" + ] + }, + { + "kind": "move", + "source": "settings.items.calendarLeftPlacement.options.below", + "targets": [ + "settings.items.calendarSinglePanePlacement.options.belowPanes" + ] + }, + { + "kind": "move", + "source": "settings.items.mouseBackForwardAction.options.none", + "targets": [ + "settings.items.mouseBackForwardAction.options.systemDefault" + ] + }, + { + "kind": "move", + "source": "settings.items.featureImageSize.options.standard", + "targets": [ + "settings.items.featureImageDisplaySize.options.64" + ] + }, + { + "kind": "move", + "source": "settings.items.featureImageSize.options.large", + "targets": [ + "settings.items.featureImageDisplaySize.options.96" + ] + }, + { + "kind": "move", + "source": "settings.items.featureImageSize.options.extraLarge", + "targets": [ + "settings.items.featureImageDisplaySize.options.128" + ] + }, + { + "kind": "move", + "source": "settings.items.featureImagePixelSize.options.standard", + "targets": [ + "settings.items.featureImagePixelSize.options.256x144" + ] + }, + { + "kind": "move", + "source": "settings.items.featureImagePixelSize.options.large", + "targets": [ + "settings.items.featureImagePixelSize.options.384x216" + ] + }, + { + "kind": "move", + "source": "settings.items.featureImagePixelSize.options.extraLarge", + "targets": [ + "settings.items.featureImagePixelSize.options.512x288" + ] + }, + { + "kind": "move", + "source": "settings.items.navRainbowMode.options.none", + "targets": [ + "settings.items.navRainbowMode.options.off" + ] + }, + { + "kind": "move", + "source": "settings.items.navRainbowMode.options.foreground", + "targets": [ + "settings.items.navRainbowMode.options.textColor" + ] + }, + { + "kind": "move", + "source": "settings.items.navRainbowMode.options.background", + "targets": [ + "settings.items.navRainbowMode.options.backgroundColor" + ] + }, + { + "kind": "move", + "source": "settings.syncMode.switchToSynced", + "targets": [ + "settings.syncMode.enableSync" + ] + }, + { + "kind": "move", + "source": "settings.syncMode.switchToLocal", + "targets": [ + "settings.syncMode.disableSync" + ] + } + ], + "retains": [ + "settings.changeDefaultSettings", + "settings.items.autoRevealActiveNote", + "settings.items.autoRevealIgnoreOtherWindows", + "settings.items.autoRevealIgnoreRightSidebar", + "settings.items.autoRevealShortestPath", + "settings.items.cacheStatistics", + "settings.items.calendarConfirmBeforeCreate", + "settings.items.calendarHighlightToday", + "settings.items.calendarLocale", + "settings.items.calendarPeriodicNotesLocale", + "settings.items.calendarPlacement", + "settings.items.calendarShowFeatureImage", + "settings.items.calendarShowHiddenItems", + "settings.items.calendarShowOutsideMonthDays", + "settings.items.calendarShowQuarter", + "settings.items.calendarShowTasks", + "settings.items.calendarShowWeekNumber", + "settings.items.calendarShowYearCalendar", + "settings.items.calendarWeekendDays", + "settings.items.characterCountSpaces", + "settings.items.collapseOtherBranchesOnExpand", + "settings.items.colorFileProperties", + "settings.items.colorFileTags", + "settings.items.compactItemHeight", + "settings.items.compactItemHeightScaleText", + "settings.items.confirmBeforeDelete", + "settings.items.confirmBeforeManualSort", + "settings.items.dateFormat", + "settings.items.defaultGroupingDirection", + "settings.items.defaultListMode", + "settings.items.defaultSortDirection", + "settings.items.deleteAttachments", + "settings.items.descendantExcludedFolders", + "settings.items.downloadExternalFeatureImages", + "settings.items.drawingIntegrationInfo", + "settings.items.dualPane", + "settings.items.dualPaneOrientation", + "settings.items.enableFolderNotes", + "settings.items.enterToOpenFiles", + "settings.items.excludeVaultRootFromCollapse", + "settings.items.featureImageExcludeProperties", + "settings.items.featureImagePixelSize", + "settings.items.featureImageProperties", + "settings.items.fileNameIconMap", + "settings.items.fileTypeIconMap", + "settings.items.fileTypeIconPreset", + "settings.items.folderNoteName", + "settings.items.folderNoteNamePattern", + "settings.items.folderNoteOpenLocation", + "settings.items.folderNoteTemplate", + "settings.items.folderNoteType", + "settings.items.folderSortOrder", + "settings.items.forceSquareFeatureImage", + "settings.items.frontmatterBackgroundField", + "settings.items.frontmatterColorField", + "settings.items.frontmatterCreatedField", + "settings.items.frontmatterIconField", + "settings.items.frontmatterModifiedField", + "settings.items.groupHeadersInstructions", + "settings.items.hideFileTaskProgressWhenComplete", + "settings.items.hideFolderNoteInList", + "settings.items.homepage", + "settings.items.includeDescendantNotes", + "settings.items.inheritFolderColors", + "settings.items.inheritPropertyColors", + "settings.items.inheritTagColors", + "settings.items.interfaceIcons", + "settings.items.keepEmptyTagsProperty", + "settings.items.listPaneTitle", + "settings.items.manualSortInstructions", + "settings.items.manualSortNewNotePlacement", + "settings.items.masteringVideo", + "settings.items.metadataCleanup", + "settings.items.metadataInfo", + "settings.items.mouseBackForwardAction", + "settings.items.moveFileConflicts", + "settings.items.multiSelectModifier", + "settings.items.navCountLeaderStyle", + "settings.items.navItemHeight", + "settings.items.navItemHeightScaleText", + "settings.items.navRainbowApplyToFolders", + "settings.items.navRainbowApplyToProperties", + "settings.items.navRainbowApplyToShortcuts", + "settings.items.navRainbowApplyToTags", + "settings.items.navRainbowCopyLightToDark", + "settings.items.navRainbowFirstColor", + "settings.items.navRainbowFolderScope", + "settings.items.navRainbowLastColor", + "settings.items.navRainbowMode", + "settings.items.navRainbowPropertyScope", + "settings.items.navRainbowSeparateThemeColors", + "settings.items.navRainbowTagScope", + "settings.items.navRainbowTransitionStyle", + "settings.items.navigationBanner", + "settings.items.pinCreatedFolderNote", + "settings.items.pinNavigationBanner", + "settings.items.previewProperties", + "settings.items.previewRows", + "settings.items.propertySortInstructions", + "settings.items.propertySortOrder", + "settings.items.rebuildCache", + "settings.items.resetAllSettings", + "settings.items.resetPaneSeparator", + "settings.items.shortcutBadgeDisplay", + "settings.items.showCurrentFolderFilesAtBottom", + "settings.items.showFeatureImage", + "settings.items.showFileDate", + "settings.items.showFileIcons", + "settings.items.showFileProperties", + "settings.items.showFilePropertiesInCompactMode", + "settings.items.showFileTags", + "settings.items.showFileTagsInCompactMode", + "settings.items.showFileTaskProgress", + "settings.items.showFileTaskProgressBar", + "settings.items.showFileTaskProgressCount", + "settings.items.showFolderIcons", + "settings.items.showGroupHeaderItemCounts", + "settings.items.showIndentGuides", + "settings.items.showInfoButtons", + "settings.items.showParentFolder", + "settings.items.showParentFolderColor", + "settings.items.showParentFolderIcon", + "settings.items.showProperties", + "settings.items.showPropertiesOnSeparateRows", + "settings.items.showPropertyIcons", + "settings.items.showQuickActions", + "settings.items.showRootFolder", + "settings.items.showShortcuts", + "settings.items.showTagIcons", + "settings.items.showTags", + "settings.items.showTooltipPath", + "settings.items.showTooltipWordCount", + "settings.items.showTooltips", + "settings.items.skipCalloutsInPreview", + "settings.items.skipCodeBlocksInPreview", + "settings.items.skipHeadingsInPreview", + "settings.items.springLoadedFolders", + "settings.items.springLoadedFoldersInitialDelay", + "settings.items.springLoadedFoldersSubsequentDelay", + "settings.items.stickyGroupHeaders", + "settings.items.stripHtmlInPreview", + "settings.items.stripLatexInPreview", + "settings.items.supportDevelopment", + "settings.items.tagSortOrder", + "settings.items.textCountPlacement", + "settings.items.timeFormat", + "settings.items.toolbarButtons", + "settings.items.unfinishedTaskBackgroundColor", + "settings.items.unfinishedTaskIcon", + "settings.items.useFolderColor", + "settings.items.useFolderIcon", + "settings.items.vaultProfiles", + "settings.items.whatsNew", + "settings.items.wordCountTargetProperty", + "settings.metadataReport", + "settings.pageGroups.calendarAndTools", + "settings.pageGroups.configuration", + "settings.syncMode.notSynced" + ], + "approvedAdditions": [] +} diff --git a/docs/settings-localization-semantic-review.json b/docs/settings-localization-semantic-review.json new file mode 100644 index 000000000..9a473e7d6 --- /dev/null +++ b/docs/settings-localization-semantic-review.json @@ -0,0 +1,4446 @@ +{ + "schemaVersion": 1, + "sourceLocale": "src/i18n/locales/en.ts", + "namingRule": "Localization keys describe stable displayed UI concepts independently of persisted settings and option values.", + "items": [ + { + "source": "settings.items.listPaneTitle", + "target": "settings.items.listPaneTitle", + "decision": "retain", + "display": "List pane title", + "owner": { + "page": "List pane", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.sortNotesBy", + "target": "settings.items.defaultSortOrder", + "decision": "rename", + "display": "Default sort order", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The target names the displayed concept “Default sort order” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.defaultSortDirection", + "target": "settings.items.defaultSortDirection", + "decision": "retain", + "display": "Sort direction", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.defaultGroupingDirection", + "target": "settings.items.defaultGroupingDirection", + "decision": "retain", + "display": "Grouping direction", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.propertySortKey", + "target": "settings.items.sortingProperties", + "decision": "rename", + "display": "Sorting properties", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The target names the displayed concept “Sorting properties” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.propertySortSecondary", + "target": "settings.items.propertySecondarySort", + "decision": "rename", + "display": "Secondary sort", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The target names the displayed concept “Secondary sort” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.propertySortInstructions", + "target": "settings.items.propertySortInstructions", + "decision": "retain", + "display": "How sorting and grouping by a property work:", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.propertyGroupKey", + "target": "settings.items.groupingProperties", + "decision": "rename", + "display": "Grouping properties", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The target names the displayed concept “Grouping properties” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.manualSortPropertyKey", + "target": "settings.items.manualSortProperty", + "decision": "rename", + "display": "Manual sort property", + "owner": { + "page": "List pane", + "group": "Manual sort" + }, + "rationale": "The target names the displayed concept “Manual sort property” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.manualSortGroupHeaderProperty", + "target": "settings.items.groupHeaderProperty", + "decision": "rename", + "display": "Group header property", + "owner": { + "page": "List pane", + "group": "Group headers" + }, + "rationale": "The target names the displayed concept “Group header property” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.groupHeadersInstructions", + "target": "settings.items.groupHeadersInstructions", + "decision": "retain", + "display": "Custom group headers display above notes in the list pane.", + "owner": { + "page": "List pane", + "group": "Group headers" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.manualSortNewNotePlacement", + "target": "settings.items.manualSortNewNotePlacement", + "decision": "retain", + "display": "New note placement", + "owner": { + "page": "List pane", + "group": "Manual sort" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.confirmBeforeManualSort", + "target": "settings.items.confirmBeforeManualSort", + "decision": "retain", + "display": "Confirm before manual sort", + "owner": { + "page": "List pane", + "group": "Manual sort" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.manualSortInstructions", + "target": "settings.items.manualSortInstructions", + "decision": "retain", + "display": "Manual sort writes a numeric index value to a frontmatter property on each note. Notes without an index appear under Unsorted.", + "owner": { + "page": "List pane", + "group": "Manual sort" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.revealFileOnListChanges", + "target": "settings.items.scrollToSelectedFileOnListChanges", + "decision": "rename", + "display": "Scroll to selected file on list changes", + "owner": { + "page": "List pane", + "group": "Behavior" + }, + "rationale": "The target names the displayed concept “Scroll to selected file on list changes” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.includeDescendantNotes", + "target": "settings.items.includeDescendantNotes", + "decision": "retain", + "display": "Show notes from subfolders / descendants", + "owner": { + "page": "List pane", + "group": "General" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.limitPinnedToCurrentFolder", + "target": "settings.items.filterPinnedNotesByFolder", + "decision": "rename", + "display": "Only pin notes in their folder", + "owner": { + "page": "List pane", + "group": "Pinned notes" + }, + "rationale": "The target names the displayed concept “Only pin notes in their folder” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.separateNoteCounts", + "target": "settings.items.separateFileCounts", + "decision": "rename", + "display": "Show current and descendant file counts separately", + "owner": { + "page": "Navigation pane", + "group": "File counts" + }, + "rationale": "The target names the displayed concept “Show current and descendant file counts separately” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.groupNotes", + "target": "settings.items.defaultGrouping", + "decision": "rename", + "display": "Default grouping", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The target names the displayed concept “Default grouping” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.showSelectedNavigationPills", + "target": "settings.items.alwaysShowAllTagAndPropertyPills", + "decision": "rename", + "display": "Always show all tag and property pills", + "owner": { + "page": "List pane", + "group": "Appearance" + }, + "rationale": "The target names the displayed concept “Always show all tag and property pills” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.stickyGroupHeaders", + "target": "settings.items.stickyGroupHeaders", + "decision": "retain", + "display": "Sticky group headers", + "owner": { + "page": "List pane", + "group": "Group headers" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showFolderGroupPaths", + "target": "settings.items.showSubfolderPaths", + "decision": "rename", + "display": "Show subfolder paths", + "owner": { + "page": "List pane", + "group": "Group headers" + }, + "rationale": "The target names the displayed concept “Show subfolder paths” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.showGroupHeaderItemCounts", + "target": "settings.items.showGroupHeaderItemCounts", + "decision": "retain", + "display": "Show item counts", + "owner": { + "page": "List pane", + "group": "Group headers" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showCurrentFolderFilesAtBottom", + "target": "settings.items.showCurrentFolderFilesAtBottom", + "decision": "retain", + "display": "Folder grouping: current folder files at bottom", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.defaultListMode", + "target": "settings.items.defaultListMode", + "decision": "retain", + "display": "Default list mode", + "owner": { + "page": "List pane", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showFileIcons", + "target": "settings.items.showFileIcons", + "decision": "retain", + "display": "Show file icons", + "owner": { + "page": "File display", + "group": "Icon" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.unfinishedTaskIcon", + "target": "settings.items.unfinishedTaskIcon", + "decision": "retain", + "display": "Unfinished task icon", + "owner": { + "page": "File display", + "group": "Icon" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.useFolderIcon", + "target": "settings.items.useFolderIcon", + "decision": "retain", + "display": "Use folder icon", + "owner": { + "page": "File display", + "group": "Icon" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showFileTaskProgress", + "target": "settings.items.showFileTaskProgress", + "decision": "retain", + "display": "Task progress", + "owner": { + "page": "File display", + "group": "Tasks" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showFileTaskProgressBar", + "target": "settings.items.showFileTaskProgressBar", + "decision": "retain", + "display": "Task progress: progress bar", + "owner": { + "page": "File display", + "group": "Tasks" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showFileTaskProgressCount", + "target": "settings.items.showFileTaskProgressCount", + "decision": "retain", + "display": "Task progress: task count", + "owner": { + "page": "File display", + "group": "Tasks" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.hideFileTaskProgressWhenComplete", + "target": "settings.items.hideFileTaskProgressWhenComplete", + "decision": "retain", + "display": "Task progress: hide when completed", + "owner": { + "page": "File display", + "group": "Tasks" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showFileBackgroundUnfinishedTask", + "target": "settings.items.unfinishedTaskBackground", + "decision": "rename", + "display": "Unfinished task background", + "owner": { + "page": "File display", + "group": "Tasks" + }, + "rationale": "The target names the displayed concept “Unfinished task background” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.unfinishedTaskBackgroundColor", + "target": "settings.items.unfinishedTaskBackgroundColor", + "decision": "retain", + "display": "Unfinished task background color", + "owner": { + "page": "File display", + "group": "Tasks" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showFilenameMatchIcons", + "target": "settings.items.showFileNameIcons", + "decision": "rename", + "display": "Icons by file name", + "owner": { + "page": "File display", + "group": "Icon" + }, + "rationale": "The target names the displayed concept “Icons by file name” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.fileNameIconMap", + "target": "settings.items.fileNameIconMap", + "decision": "retain", + "display": "File name icon map", + "owner": { + "page": "File display", + "group": "Icon" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showCategoryIcons", + "target": "settings.items.showFileTypeIcons", + "decision": "rename", + "display": "Icons by file type", + "owner": { + "page": "File display", + "group": "Icon" + }, + "rationale": "The target names the displayed concept “Icons by file type” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.fileTypeIconPreset", + "target": "settings.items.fileTypeIconPreset", + "decision": "retain", + "display": "File icon preset", + "owner": { + "page": "File display", + "group": "Icon" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.fileTypeIconMap", + "target": "settings.items.fileTypeIconMap", + "decision": "retain", + "display": "File type icon map", + "owner": { + "page": "File display", + "group": "Icon" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.compactItemHeight", + "target": "settings.items.compactItemHeight", + "decision": "retain", + "display": "Compact item height", + "owner": { + "page": "List pane", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.compactItemHeightScaleText", + "target": "settings.items.compactItemHeightScaleText", + "decision": "retain", + "display": "Scale text with compact item height", + "owner": { + "page": "List pane", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showParentFolder", + "target": "settings.items.showParentFolder", + "decision": "retain", + "display": "Show parent folder", + "owner": { + "page": "File display", + "group": "Parent folder" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showParentFolderFullPath", + "target": "settings.items.showFolderPath", + "decision": "rename", + "display": "Show folder path", + "owner": { + "page": "File display", + "group": "Parent folder" + }, + "rationale": "The target names the displayed concept “Show folder path” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.parentFolderClickRevealsFile", + "target": "settings.items.parentFolderClickOpensFolder", + "decision": "rename", + "display": "Click parent folder to go to folder", + "owner": { + "page": "File display", + "group": "Parent folder" + }, + "rationale": "The target names the displayed concept “Click parent folder to go to folder” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.showParentFolderColor", + "target": "settings.items.showParentFolderColor", + "decision": "retain", + "display": "Show parent folder color", + "owner": { + "page": "File display", + "group": "Parent folder" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showParentFolderIcon", + "target": "settings.items.showParentFolderIcon", + "decision": "retain", + "display": "Show parent folder icon", + "owner": { + "page": "File display", + "group": "Parent folder" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showQuickActions", + "target": "settings.items.showQuickActions", + "decision": "retain", + "display": "Show quick actions", + "owner": { + "page": "List pane", + "group": "Behavior" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.dualPane", + "target": "settings.items.dualPane", + "decision": "retain", + "display": "Dual pane layout", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.dualPaneOrientation", + "target": "settings.items.dualPaneOrientation", + "decision": "retain", + "display": "Dual pane orientation", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.narrowSidebarLayout", + "target": "settings.items.narrowSidebarBehavior", + "decision": "rename", + "display": "When sidebar is too narrow", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The target names the displayed concept “When sidebar is too narrow” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.narrowSidebarTrigger", + "target": "settings.items.narrowSidebarThresholdMode", + "decision": "rename", + "display": "Narrow sidebar threshold", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The target names the displayed concept “Narrow sidebar threshold” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.narrowSidebarCustomWidth", + "target": "settings.items.narrowSidebarThresholdWidth", + "decision": "rename", + "display": "Narrow sidebar threshold width", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The target names the displayed concept “Narrow sidebar threshold width” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.appearanceBackground", + "target": "settings.items.paneBackgroundColor", + "decision": "rename", + "display": "Background color", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The target names the displayed concept “Background color” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.appearanceScale", + "target": "settings.items.zoomLevel", + "decision": "rename", + "display": "Zoom level", + "owner": { + "page": "Appearance & behavior", + "group": "Appearance" + }, + "rationale": "The target names the displayed concept “Zoom level” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.useFloatingToolbars", + "target": "settings.items.useFloatingToolbarsOnIOS", + "decision": "rename", + "display": "Use floating toolbars on iOS", + "owner": { + "page": "Appearance & behavior", + "group": "Mobile appearance" + }, + "rationale": "The target names the displayed concept “Use floating toolbars on iOS” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.startView", + "target": "settings.items.defaultStartupView", + "decision": "rename", + "display": "Default startup view", + "owner": { + "page": "Appearance & behavior", + "group": "Startup" + }, + "rationale": "The target names the displayed concept “Default startup view” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.toolbarButtons", + "target": "settings.items.toolbarButtons", + "decision": "retain", + "display": "Toolbar buttons", + "owner": { + "page": "shared/non-settings", + "group": null + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.createNewNotesInNewTab", + "target": "settings.items.openNewNotesInNewTab", + "decision": "rename", + "display": "Open new notes in new tab", + "owner": { + "page": "Appearance & behavior", + "group": "Behavior" + }, + "rationale": "The target names the displayed concept “Open new notes in new tab” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.autoRevealActiveNote", + "target": "settings.items.autoRevealActiveNote", + "decision": "retain", + "display": "Auto-reveal active note", + "owner": { + "page": "Appearance & behavior", + "group": "Behavior" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.autoRevealShortestPath", + "target": "settings.items.autoRevealShortestPath", + "decision": "retain", + "display": "Auto-reveal: Use shortest path", + "owner": { + "page": "Appearance & behavior", + "group": "Behavior" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.autoRevealIgnoreRightSidebar", + "target": "settings.items.autoRevealIgnoreRightSidebar", + "decision": "retain", + "display": "Auto-reveal: Ignore events from right sidebar", + "owner": { + "page": "Appearance & behavior", + "group": "Behavior" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.autoRevealIgnoreOtherWindows", + "target": "settings.items.autoRevealIgnoreOtherWindows", + "decision": "retain", + "display": "Auto-reveal: Ignore events from other windows", + "owner": { + "page": "Appearance & behavior", + "group": "Behavior" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.paneTransitionDuration", + "target": "settings.items.singlePaneAnimation", + "decision": "rename", + "display": "Single pane animation", + "owner": { + "page": "Appearance & behavior", + "group": "Appearance" + }, + "rationale": "The target names the displayed concept “Single pane animation” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.autoSelectFirstFileOnFocusChange", + "target": "settings.items.autoSelectFirstNote", + "decision": "rename", + "display": "Auto-select first note", + "owner": { + "page": "Navigation pane", + "group": "General" + }, + "rationale": "The target names the displayed concept “Auto-select first note” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.skipAutoScroll", + "target": "settings.items.disableShortcutAutoScroll", + "decision": "rename", + "display": "Disable auto-scroll for shortcuts", + "owner": { + "page": "Shortcuts & recent files", + "group": "Shortcuts" + }, + "rationale": "The target names the displayed concept “Disable auto-scroll for shortcuts” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.autoExpandNavItems", + "target": "settings.items.expandOnSelection", + "decision": "rename", + "display": "Expand on selection", + "owner": { + "page": "Navigation pane", + "group": "General" + }, + "rationale": "The target names the displayed concept “Expand on selection” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.collapseOtherBranchesOnExpand", + "target": "settings.items.collapseOtherBranchesOnExpand", + "decision": "retain", + "display": "One expanded branch", + "owner": { + "page": "Navigation pane", + "group": "General" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.springLoadedFolders", + "target": "settings.items.springLoadedFolders", + "decision": "retain", + "display": "Spring-loaded folders", + "owner": { + "page": "Navigation pane", + "group": "Drag and drop" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.springLoadedFoldersInitialDelay", + "target": "settings.items.springLoadedFoldersInitialDelay", + "decision": "retain", + "display": "Spring-loaded folders: First expand delay", + "owner": { + "page": "Navigation pane", + "group": "Drag and drop" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.springLoadedFoldersSubsequentDelay", + "target": "settings.items.springLoadedFoldersSubsequentDelay", + "decision": "retain", + "display": "Spring-loaded folders: Subsequent expand delay", + "owner": { + "page": "Navigation pane", + "group": "Drag and drop" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navigationBanner", + "target": "settings.items.navigationBanner", + "decision": "retain", + "display": "Navigation banner (vault profile)", + "owner": { + "page": "Navigation pane", + "group": "Banner" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.pinNavigationBanner", + "target": "settings.items.pinNavigationBanner", + "decision": "retain", + "display": "Pin banner", + "owner": { + "page": "Navigation pane", + "group": "Banner" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showShortcuts", + "target": "settings.items.showShortcuts", + "decision": "retain", + "display": "Show shortcuts", + "owner": { + "page": "Shortcuts & recent files", + "group": "Shortcuts" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.shortcutBadgeDisplay", + "target": "settings.items.shortcutBadgeDisplay", + "decision": "retain", + "display": "Shortcut badge", + "owner": { + "page": "Shortcuts & recent files", + "group": "Shortcuts" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showRecentNotes", + "target": "settings.items.showRecentFiles", + "decision": "rename", + "display": "Show recent files", + "owner": { + "page": "Shortcuts & recent files", + "group": "Recent files" + }, + "rationale": "The target names the displayed concept “Show recent files” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.hideRecentNotes", + "target": "settings.items.hideFileTypesFromRecentFiles", + "decision": "rename", + "display": "Hide file types from recent files", + "owner": { + "page": "Shortcuts & recent files", + "group": "Recent files" + }, + "rationale": "The target names the displayed concept “Hide file types from recent files” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.recentNotesCount", + "target": "settings.items.recentFilesCount", + "decision": "rename", + "display": "Recent files count", + "owner": { + "page": "Shortcuts & recent files", + "group": "Recent files" + }, + "rationale": "The target names the displayed concept “Recent files count” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.pinRecentNotesWithShortcuts", + "target": "settings.items.pinRecentFilesWithShortcuts", + "decision": "rename", + "display": "Pin recent files with shortcuts", + "owner": { + "page": "Shortcuts & recent files", + "group": "Recent files" + }, + "rationale": "The target names the displayed concept “Pin recent files with shortcuts” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.calendarEnabled", + "target": "settings.items.enableCalendar", + "decision": "rename", + "display": "Enable calendar", + "owner": { + "page": "Calendar", + "group": "General" + }, + "rationale": "The target names the displayed concept “Enable calendar” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.calendarPlacement", + "target": "settings.items.calendarPlacement", + "decision": "retain", + "display": "Calendar placement", + "owner": { + "page": "Calendar", + "group": "General" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.calendarLeftPlacement", + "target": "settings.items.calendarSinglePanePlacement", + "decision": "rename", + "display": "Single pane placement", + "owner": { + "page": "Calendar", + "group": "Left sidebar" + }, + "rationale": "The target names the displayed concept “Single pane placement” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.calendarLocale", + "target": "settings.items.calendarLocale", + "decision": "retain", + "display": "Locale", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.calendarWeekendDays", + "target": "settings.items.calendarWeekendDays", + "decision": "retain", + "display": "Weekend days", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.calendarMonthHeadingFormat", + "target": "settings.items.calendarMonthNameFormat", + "decision": "rename", + "display": "Month name format", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The target names the displayed concept “Month name format” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.showInfoButtons", + "target": "settings.items.showInfoButtons", + "decision": "retain", + "display": "Show info buttons", + "owner": { + "page": "Appearance & behavior", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.calendarWeeksToShow", + "target": "settings.items.calendarLeftSidebarWeeksToShow", + "decision": "rename", + "display": "Weeks to show in left sidebar", + "owner": { + "page": "Calendar", + "group": "Left sidebar" + }, + "rationale": "The target names the displayed concept “Weeks to show in left sidebar” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.calendarHighlightToday", + "target": "settings.items.calendarHighlightToday", + "decision": "retain", + "display": "Highlight today's date", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.calendarShowFeatureImage", + "target": "settings.items.calendarShowFeatureImage", + "decision": "retain", + "display": "Show feature image", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.calendarShowTasks", + "target": "settings.items.calendarShowTasks", + "decision": "retain", + "display": "Show tasks", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.calendarShowWeekNumber", + "target": "settings.items.calendarShowWeekNumber", + "decision": "retain", + "display": "Show week number", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.calendarShowQuarter", + "target": "settings.items.calendarShowQuarter", + "decision": "retain", + "display": "Show quarter", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.calendarShowOutsideMonthDays", + "target": "settings.items.calendarShowOutsideMonthDays", + "decision": "retain", + "display": "Show days from other months", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.calendarShowYearCalendar", + "target": "settings.items.calendarShowYearCalendar", + "decision": "retain", + "display": "Show year calendar", + "owner": { + "page": "Calendar", + "group": "Right sidebar" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.calendarConfirmBeforeCreate", + "target": "settings.items.calendarConfirmBeforeCreate", + "decision": "retain", + "display": "Confirm before creating new note", + "owner": { + "page": "Calendar", + "group": "General" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.calendarShowHiddenItems", + "target": "settings.items.calendarShowHiddenItems", + "decision": "retain", + "display": "Show hidden items", + "owner": { + "page": "Calendar", + "group": "General" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.calendarIntegrationMode", + "target": "settings.items.dailyNoteSource", + "decision": "rename", + "display": "Daily note source", + "owner": { + "page": "Calendar", + "group": "Calendar integration" + }, + "rationale": "The target names the displayed concept “Daily note source” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.calendarPeriodicNotesLocale", + "target": "settings.items.calendarPeriodicNotesLocale", + "decision": "retain", + "display": "Periodic notes locale", + "owner": { + "page": "Calendar", + "group": "Calendar integration" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.calendarCustomRootFolder", + "target": "settings.items.periodicNotesRootFolder", + "decision": "rename", + "display": "Root folder (vault profile)", + "owner": { + "page": "Calendar", + "group": "Calendar integration" + }, + "rationale": "The target names the displayed concept “Root folder (vault profile)” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.calendarTemplateFolder", + "target": "settings.items.templateFolderLocation", + "decision": "rename", + "display": "Template folder location", + "owner": { + "page": "shared/non-settings", + "group": null + }, + "rationale": "The target names the displayed concept “Template folder location” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.calendarCustomFilePattern", + "decision": "rename", + "display": "Daily notes", + "owner": { + "page": "Calendar", + "group": "Calendar integration" + }, + "rationale": "The mixed record is split into daily-note control text, shared periodic-pattern help, and shared Templater status.", + "targets": [ + "settings.items.calendarDailyNotePattern", + "settings.items.calendarPeriodicNotePatterns", + "settings.items.templaterSupport" + ] + }, + { + "source": "settings.items.calendarCustomWeekPattern", + "target": "settings.items.calendarWeeklyNotePattern", + "decision": "rename", + "display": "Weekly notes", + "owner": { + "page": "Calendar", + "group": "Calendar integration" + }, + "rationale": "The target names the displayed periodic-note concept “Weekly notes”." + }, + { + "source": "settings.items.calendarCustomMonthPattern", + "target": "settings.items.calendarMonthlyNotePattern", + "decision": "rename", + "display": "Monthly notes", + "owner": { + "page": "Calendar", + "group": "Calendar integration" + }, + "rationale": "The target names the displayed periodic-note concept “Monthly notes”." + }, + { + "source": "settings.items.calendarCustomQuarterPattern", + "target": "settings.items.calendarQuarterlyNotePattern", + "decision": "rename", + "display": "Quarterly notes", + "owner": { + "page": "Calendar", + "group": "Calendar integration" + }, + "rationale": "The target names the displayed periodic-note concept “Quarterly notes”." + }, + { + "source": "settings.items.calendarCustomYearPattern", + "target": "settings.items.calendarYearlyNotePattern", + "decision": "rename", + "display": "Yearly notes", + "owner": { + "page": "Calendar", + "group": "Calendar integration" + }, + "rationale": "The target names the displayed periodic-note concept “Yearly notes”." + }, + { + "source": "settings.items.calendarTemplateFile", + "target": "settings.items.periodicNoteTemplateFile", + "decision": "rename", + "display": "Template file: {name}", + "owner": { + "page": "Calendar", + "group": "Calendar integration" + }, + "rationale": "The target names the displayed concept “Template file: {name}” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.showTooltips", + "target": "settings.items.showTooltips", + "decision": "retain", + "display": "Show tooltips", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showTooltipPath", + "target": "settings.items.showTooltipPath", + "decision": "retain", + "display": "Show path in tooltips", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showTooltipWordCount", + "target": "settings.items.showTooltipWordCount", + "decision": "retain", + "display": "Show word count in tooltips", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.resetPaneSeparator", + "target": "settings.items.resetPaneSeparator", + "decision": "retain", + "display": "Reset pane separator position", + "owner": { + "page": "Advanced", + "group": "Maintenance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.settingsTransfer", + "target": "settings.items.importAndExportSettings", + "decision": "rename", + "display": "Import and export settings", + "owner": { + "page": "Advanced", + "group": "General" + }, + "rationale": "The target names the displayed concept “Import and export settings” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.resetAllSettings", + "target": "settings.items.resetAllSettings", + "decision": "retain", + "display": "Reset all settings", + "owner": { + "page": "Advanced", + "group": "Reset settings" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.multiSelectModifier", + "target": "settings.items.multiSelectModifier", + "decision": "retain", + "display": "Multi-select modifier", + "owner": { + "page": "Appearance & behavior", + "group": "Keyboard navigation" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.enterToOpenFiles", + "target": "settings.items.enterToOpenFiles", + "decision": "retain", + "display": "Press Enter to open files", + "owner": { + "page": "Appearance & behavior", + "group": "Keyboard navigation" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.shiftEnterOpenContext", + "target": "settings.items.shiftEnterAction", + "decision": "rename", + "display": "Shift+Enter", + "owner": { + "page": "Appearance & behavior", + "group": "Keyboard navigation" + }, + "rationale": "The target names the displayed concept “Shift+Enter” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.cmdEnterOpenContext", + "target": "settings.items.cmdEnterAction", + "decision": "rename", + "display": "Cmd+Enter", + "owner": { + "page": "Appearance & behavior", + "group": "Keyboard navigation" + }, + "rationale": "The target names the displayed concept “Cmd+Enter” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.ctrlEnterOpenContext", + "target": "settings.items.ctrlEnterAction", + "decision": "rename", + "display": "Ctrl+Enter", + "owner": { + "page": "Appearance & behavior", + "group": "Keyboard navigation" + }, + "rationale": "The target names the displayed concept “Ctrl+Enter” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.mouseBackForwardAction", + "target": "settings.items.mouseBackForwardAction", + "decision": "retain", + "display": "Mouse back/forward buttons", + "owner": { + "page": "Appearance & behavior", + "group": "Mouse buttons" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.fileVisibility", + "target": "settings.items.showFileTypes", + "decision": "rename", + "display": "Show file types (vault profile)", + "owner": { + "page": "Settings index", + "group": "Vault setup" + }, + "rationale": "The target names the displayed concept “Show file types (vault profile)” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.homepage", + "target": "settings.items.homepage", + "decision": "retain", + "display": "Homepage", + "owner": { + "page": "Appearance & behavior", + "group": "Startup" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.excludedNotes", + "target": "settings.items.hideNotesWithPropertyRules", + "decision": "rename", + "display": "Hide notes with property rules (vault profile)", + "owner": { + "page": "Display filters", + "group": null + }, + "rationale": "The target names the displayed concept “Hide notes with property rules (vault profile)” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.excludedFileNamePatterns", + "target": "settings.items.hideFiles", + "decision": "rename", + "display": "Hide files (vault profile)", + "owner": { + "page": "Display filters", + "group": null + }, + "rationale": "The target names the displayed concept “Hide files (vault profile)” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.vaultProfiles", + "target": "settings.items.vaultProfiles", + "decision": "retain", + "display": "Vault profile", + "owner": { + "page": "Settings index", + "group": "Vault setup" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.vaultTitle", + "target": "settings.items.vaultTitlePlacement", + "decision": "rename", + "display": "Vault title placement", + "owner": { + "page": "Settings index", + "group": "Vault setup" + }, + "rationale": "The target names the displayed concept “Vault title placement” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.excludedFolders", + "target": "settings.items.hideFolders", + "decision": "rename", + "display": "Hide folders (vault profile)", + "owner": { + "page": "Display filters", + "group": null + }, + "rationale": "The target names the displayed concept “Hide folders (vault profile)” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.descendantExcludedFolders", + "target": "settings.items.descendantExcludedFolders", + "decision": "retain", + "display": "Exclude folders from descendants (vault profile)", + "owner": { + "page": "Display filters", + "group": null + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showFileDate", + "target": "settings.items.showFileDate", + "decision": "retain", + "display": "Show date", + "owner": { + "page": "File display", + "group": "Date" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.alphabeticalDateMode", + "target": "settings.items.dateWhenSortingByName", + "decision": "rename", + "display": "When sorting by name", + "owner": { + "page": "File display", + "group": "Date" + }, + "rationale": "The target names the displayed concept “When sorting by name” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.showFileTags", + "target": "settings.items.showFileTags", + "decision": "retain", + "display": "Show file tags", + "owner": { + "page": "File display", + "group": "Tags" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showFileTagAncestors", + "target": "settings.items.showFullTagPaths", + "decision": "rename", + "display": "Show full tag paths", + "owner": { + "page": "File display", + "group": "Tags" + }, + "rationale": "The target names the displayed concept “Show full tag paths” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.colorFileTags", + "target": "settings.items.colorFileTags", + "decision": "retain", + "display": "Color file tags", + "owner": { + "page": "File display", + "group": "Tags" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.prioritizeColoredFileTags", + "target": "settings.items.showColoredTagsFirst", + "decision": "rename", + "display": "Show colored tags first", + "owner": { + "page": "File display", + "group": "Tags" + }, + "rationale": "The target names the displayed concept “Show colored tags first” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.showFileTagsInCompactMode", + "target": "settings.items.showFileTagsInCompactMode", + "decision": "retain", + "display": "Show file tags in compact mode", + "owner": { + "page": "File display", + "group": "Tags" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showFileProperties", + "target": "settings.items.showFileProperties", + "decision": "retain", + "display": "Show file properties", + "owner": { + "page": "File display", + "group": "Properties" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.colorFileProperties", + "target": "settings.items.colorFileProperties", + "decision": "retain", + "display": "Color file properties", + "owner": { + "page": "File display", + "group": "Properties" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.prioritizeColoredFileProperties", + "target": "settings.items.showColoredPropertiesFirst", + "decision": "rename", + "display": "Show colored properties first", + "owner": { + "page": "File display", + "group": "Properties" + }, + "rationale": "The target names the displayed concept “Show colored properties first” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.showFilePropertiesInCompactMode", + "target": "settings.items.showFilePropertiesInCompactMode", + "decision": "retain", + "display": "Show properties in compact mode", + "owner": { + "page": "File display", + "group": "Properties" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.propertyFields", + "target": "settings.items.propertyKeys", + "decision": "rename", + "display": "Property keys (vault profile)", + "owner": { + "page": "Settings index", + "group": "Vault setup" + }, + "rationale": "The target names the displayed concept “Property keys (vault profile)” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.showPropertiesOnSeparateRows", + "target": "settings.items.showPropertiesOnSeparateRows", + "decision": "retain", + "display": "Show properties on separate rows", + "owner": { + "page": "File display", + "group": "Properties" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.enablePropertyInternalLinks", + "target": "settings.items.linkPropertyPillsToNotes", + "decision": "rename", + "display": "Link property pills to notes", + "owner": { + "page": "File display", + "group": "Properties" + }, + "rationale": "The target names the displayed concept “Link property pills to notes” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.enablePropertyExternalLinks", + "target": "settings.items.linkPropertyPillsToUrls", + "decision": "rename", + "display": "Link property pills to URLs", + "owner": { + "page": "File display", + "group": "Properties" + }, + "rationale": "The target names the displayed concept “Link property pills to URLs” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.textCountDisplay", + "target": "settings.items.textCountType", + "decision": "rename", + "display": "Count type", + "owner": { + "page": "File display", + "group": "Word and character count" + }, + "rationale": "The target names the displayed concept “Count type” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.textCountPlacement", + "target": "settings.items.textCountPlacement", + "decision": "retain", + "display": "Placement", + "owner": { + "page": "File display", + "group": "Word and character count" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.characterCountSpaces", + "target": "settings.items.characterCountSpaces", + "decision": "retain", + "display": "Character count", + "owner": { + "page": "File display", + "group": "Word and character count" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.wordCountTargetProperty", + "target": "settings.items.wordCountTargetProperty", + "decision": "retain", + "display": "Target property", + "owner": { + "page": "File display", + "group": "Word and character count" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showWordCountPercentage", + "target": "settings.items.showTargetPercentage", + "decision": "rename", + "display": "Show target percentage", + "owner": { + "page": "File display", + "group": "Word and character count" + }, + "rationale": "The target names the displayed concept “Show target percentage” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.dateFormat", + "target": "settings.items.dateFormat", + "decision": "retain", + "display": "Date format", + "owner": { + "page": "Appearance & behavior", + "group": "Formatting" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.timeFormat", + "target": "settings.items.timeFormat", + "decision": "retain", + "display": "Time format", + "owner": { + "page": "Appearance & behavior", + "group": "Formatting" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showFilePreview", + "target": "settings.items.showNotePreview", + "decision": "rename", + "display": "Show note preview", + "owner": { + "page": "File display", + "group": "Preview text" + }, + "rationale": "The target names the displayed concept “Show note preview” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.skipHeadingsInPreview", + "target": "settings.items.skipHeadingsInPreview", + "decision": "retain", + "display": "Skip headings in preview", + "owner": { + "page": "File display", + "group": "Preview text" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.skipCodeBlocksInPreview", + "target": "settings.items.skipCodeBlocksInPreview", + "decision": "retain", + "display": "Skip code blocks in preview", + "owner": { + "page": "File display", + "group": "Preview text" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.skipCalloutsInPreview", + "target": "settings.items.skipCalloutsInPreview", + "decision": "retain", + "display": "Skip callouts in preview", + "owner": { + "page": "File display", + "group": "Preview text" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.stripHtmlInPreview", + "target": "settings.items.stripHtmlInPreview", + "decision": "retain", + "display": "Strip HTML in previews", + "owner": { + "page": "File display", + "group": "Preview text" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.stripLatexInPreview", + "target": "settings.items.stripLatexInPreview", + "decision": "retain", + "display": "Strip LaTeX in previews", + "owner": { + "page": "File display", + "group": "Preview text" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.previewProperties", + "target": "settings.items.previewProperties", + "decision": "retain", + "display": "Preview properties", + "owner": { + "page": "File display", + "group": "Preview text" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.previewPropertiesFallback", + "target": "settings.items.fallbackToNoteContent", + "decision": "rename", + "display": "Fall back to note content", + "owner": { + "page": "File display", + "group": "Preview text" + }, + "rationale": "The target names the displayed concept “Fall back to note content” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.previewRows", + "target": "settings.items.previewRows", + "decision": "retain", + "display": "Preview rows", + "owner": { + "page": "File display", + "group": "Preview text" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.fileNameRows", + "target": "settings.items.titleRows", + "decision": "rename", + "display": "Title rows", + "owner": { + "page": "File display", + "group": "Title" + }, + "rationale": "The target names the displayed concept “Title rows” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.useFolderColor", + "target": "settings.items.useFolderColor", + "decision": "retain", + "display": "Use folder color", + "owner": { + "page": "File display", + "group": "Title" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showFeatureImage", + "target": "settings.items.showFeatureImage", + "decision": "retain", + "display": "Show feature image", + "owner": { + "page": "File display", + "group": "Feature image" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.forceSquareFeatureImage", + "target": "settings.items.forceSquareFeatureImage", + "decision": "retain", + "display": "Force square feature image", + "owner": { + "page": "File display", + "group": "Feature image" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.featureImageProperties", + "target": "settings.items.featureImageProperties", + "decision": "retain", + "display": "Image properties", + "owner": { + "page": "File display", + "group": "Feature image" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.featureImageExcludeProperties", + "target": "settings.items.featureImageExcludeProperties", + "decision": "retain", + "display": "Exclude notes with properties", + "owner": { + "page": "File display", + "group": "Feature image" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.featureImageSize", + "target": "settings.items.featureImageDisplaySize", + "decision": "rename", + "display": "Feature image display size", + "owner": { + "page": "File display", + "group": "Feature image" + }, + "rationale": "The target names the displayed concept “Feature image display size” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.featureImagePixelSize", + "target": "settings.items.featureImagePixelSize", + "decision": "retain", + "display": "Feature image pixel size", + "owner": { + "page": "File display", + "group": "Feature image" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.downloadExternalFeatureImages", + "target": "settings.items.downloadExternalFeatureImages", + "decision": "retain", + "display": "Download external images", + "owner": { + "page": "File display", + "group": "Feature image" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.hideDrawingPreviewImages", + "target": "settings.items.hideExportedPreviewImages", + "decision": "rename", + "display": "Hide exported preview images", + "owner": { + "page": "List pane", + "group": "Drawing previews" + }, + "rationale": "The target names the displayed concept “Hide exported preview images” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.drawingIntegrationInfo", + "target": "settings.items.drawingIntegrationInfo", + "decision": "retain", + "display": "Notebook Navigator shows PNG files exported by Excalidraw as drawing previews.", + "owner": { + "page": "List pane", + "group": "Drawing previews" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showRootFolder", + "target": "settings.items.showRootFolder", + "decision": "retain", + "display": "Show root folder", + "owner": { + "page": "Folders & folder notes", + "group": "Folders" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showFolderIcons", + "target": "settings.items.showFolderIcons", + "decision": "retain", + "display": "Show folder icons", + "owner": { + "page": "Folders & folder notes", + "group": "Folders" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.inheritFolderColors", + "target": "settings.items.inheritFolderColors", + "decision": "retain", + "display": "Inherit folder colors", + "owner": { + "page": "Folders & folder notes", + "group": "Folders" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.folderSortOrder", + "target": "settings.items.folderSortOrder", + "decision": "retain", + "display": "Folder sort order", + "owner": { + "page": "Folders & folder notes", + "group": "Folders" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showNoteCount", + "target": "settings.items.showFileCount", + "decision": "rename", + "display": "Show file count", + "owner": { + "page": "Navigation pane", + "group": "File counts" + }, + "rationale": "The target names the displayed concept “Show file count” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.showSectionIcons", + "target": "settings.items.showShortcutAndRecentItemIcons", + "decision": "rename", + "display": "Show icons for shortcuts and recent items", + "owner": { + "page": "Shortcuts & recent files", + "group": "General" + }, + "rationale": "The target names the displayed concept “Show icons for shortcuts and recent items” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.interfaceIcons", + "target": "settings.items.interfaceIcons", + "decision": "retain", + "display": "Interface icons", + "owner": { + "page": "Appearance & behavior", + "group": "Icons" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showIconsColorOnly", + "target": "settings.items.applyColorToIconsOnly", + "decision": "rename", + "display": "Apply color to icons only", + "owner": { + "page": "Appearance & behavior", + "group": "Icons" + }, + "rationale": "The target names the displayed concept “Apply color to icons only” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.navRainbowMode", + "target": "settings.items.navRainbowMode", + "decision": "retain", + "display": "Rainbow color mode (vault profile)", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navRainbowFirstColor", + "target": "settings.items.navRainbowFirstColor", + "decision": "retain", + "display": "First color", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navRainbowLastColor", + "target": "settings.items.navRainbowLastColor", + "decision": "retain", + "display": "Last color", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navRainbowTransitionStyle", + "target": "settings.items.navRainbowTransitionStyle", + "decision": "retain", + "display": "Transition style", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navRainbowApplyToShortcuts", + "target": "settings.items.navRainbowApplyToShortcuts", + "decision": "retain", + "display": "Apply to shortcuts", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navRainbowApplyToRecent", + "target": "settings.items.navRainbowApplyToRecentItems", + "decision": "rename", + "display": "Apply to recent items", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The target names the displayed concept “Apply to recent items” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.navRainbowApplyToFolders", + "target": "settings.items.navRainbowApplyToFolders", + "decision": "retain", + "display": "Apply to folders", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navRainbowFolderScope", + "target": "settings.items.navRainbowFolderScope", + "decision": "retain", + "display": "Folder scope", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navRainbowApplyToTags", + "target": "settings.items.navRainbowApplyToTags", + "decision": "retain", + "display": "Apply to tags", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navRainbowTagScope", + "target": "settings.items.navRainbowTagScope", + "decision": "retain", + "display": "Tag scope", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navRainbowApplyToProperties", + "target": "settings.items.navRainbowApplyToProperties", + "decision": "retain", + "display": "Apply to properties", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navRainbowBalanceHueLuminance", + "target": "settings.items.navRainbowConsistentBrightness", + "decision": "rename", + "display": "Consistent brightness across hues", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The target names the displayed concept “Consistent brightness across hues” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.navRainbowSeparateThemeColors", + "target": "settings.items.navRainbowSeparateThemeColors", + "decision": "retain", + "display": "Separate light and dark mode colors", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navRainbowCopyLightToDark", + "target": "settings.items.navRainbowCopyLightToDark", + "decision": "retain", + "display": "Copy light mode color to dark mode", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navRainbowPropertyScope", + "target": "settings.items.navRainbowPropertyScope", + "decision": "retain", + "display": "Property scope", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.collapseBehavior", + "target": "settings.items.collapseItems", + "decision": "rename", + "display": "Collapse items", + "owner": { + "page": "Navigation pane", + "group": "Collapse items" + }, + "rationale": "The target names the displayed concept “Collapse items” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.smartCollapse", + "target": "settings.items.keepSelectedItemExpanded", + "decision": "rename", + "display": "Keep selected item expanded", + "owner": { + "page": "Navigation pane", + "group": "Collapse items" + }, + "rationale": "The target names the displayed concept “Keep selected item expanded” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.excludeVaultRootFromCollapse", + "target": "settings.items.excludeVaultRootFromCollapse", + "decision": "retain", + "display": "Skip vault root when collapsing", + "owner": { + "page": "Navigation pane", + "group": "Collapse items" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navIndent", + "target": "settings.items.treeIndentation", + "decision": "rename", + "display": "Tree indentation", + "owner": { + "page": "Navigation pane", + "group": "Appearance" + }, + "rationale": "The target names the displayed concept “Tree indentation” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.navItemHeight", + "target": "settings.items.navItemHeight", + "decision": "retain", + "display": "Item height", + "owner": { + "page": "Navigation pane", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navItemHeightScaleText", + "target": "settings.items.navItemHeightScaleText", + "decision": "retain", + "display": "Scale text with item height", + "owner": { + "page": "Navigation pane", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showIndentGuides", + "target": "settings.items.showIndentGuides", + "decision": "retain", + "display": "Show indent guides", + "owner": { + "page": "Navigation pane", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navCountLeaderStyle", + "target": "settings.items.navCountLeaderStyle", + "decision": "retain", + "display": "Show leaders", + "owner": { + "page": "Navigation pane", + "group": "Appearance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.navRootSpacing", + "target": "settings.items.rootItemSpacing", + "decision": "rename", + "display": "Root item spacing", + "owner": { + "page": "Navigation pane", + "group": "Appearance" + }, + "rationale": "The target names the displayed concept “Root item spacing” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.showTags", + "target": "settings.items.showTags", + "decision": "retain", + "display": "Show tags", + "owner": { + "page": "Tags & properties", + "group": "Tags" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showTagIcons", + "target": "settings.items.showTagIcons", + "decision": "retain", + "display": "Show tag icons", + "owner": { + "page": "Tags & properties", + "group": "Tags" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.inheritTagColors", + "target": "settings.items.inheritTagColors", + "decision": "retain", + "display": "Inherit tag colors", + "owner": { + "page": "Tags & properties", + "group": "Tags" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.tagSortOrder", + "target": "settings.items.tagSortOrder", + "decision": "retain", + "display": "Tag sort order", + "owner": { + "page": "Tags & properties", + "group": "Tags" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showAllTagsFolder", + "target": "settings.items.showTagsFolder", + "decision": "rename", + "display": "Show tags folder", + "owner": { + "page": "Tags & properties", + "group": "Tags" + }, + "rationale": "The target names the displayed concept “Show tags folder” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.showUntagged", + "target": "settings.items.showUntaggedNotes", + "decision": "rename", + "display": "Show untagged notes", + "owner": { + "page": "Tags & properties", + "group": "Tags" + }, + "rationale": "The target names the displayed concept “Show untagged notes” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.scopeTagsToCurrentContext", + "target": "settings.items.filterTagsBySelection", + "decision": "rename", + "display": "Filter tags by selection", + "owner": { + "page": "Tags & properties", + "group": "Tags" + }, + "rationale": "The target names the displayed concept “Filter tags by selection” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.keepEmptyTagsProperty", + "target": "settings.items.keepEmptyTagsProperty", + "decision": "retain", + "display": "Retain tags property after removing last tag", + "owner": { + "page": "Tags & properties", + "group": "Tags" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showProperties", + "target": "settings.items.showProperties", + "decision": "retain", + "display": "Show properties", + "owner": { + "page": "Tags & properties", + "group": "Properties" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showPropertyIcons", + "target": "settings.items.showPropertyIcons", + "decision": "retain", + "display": "Show property icons", + "owner": { + "page": "Tags & properties", + "group": "Properties" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.inheritPropertyColors", + "target": "settings.items.inheritPropertyColors", + "decision": "retain", + "display": "Inherit property colors", + "owner": { + "page": "Tags & properties", + "group": "Properties" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.propertySortOrder", + "target": "settings.items.propertySortOrder", + "decision": "retain", + "display": "Property sort order", + "owner": { + "page": "Tags & properties", + "group": "Properties" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showAllPropertiesFolder", + "target": "settings.items.showPropertiesFolder", + "decision": "rename", + "display": "Show properties folder", + "owner": { + "page": "Tags & properties", + "group": "Properties" + }, + "rationale": "The target names the displayed concept “Show properties folder” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.scopePropertiesToCurrentContext", + "target": "settings.items.filterPropertiesBySelection", + "decision": "rename", + "display": "Filter properties by selection", + "owner": { + "page": "Tags & properties", + "group": "Properties" + }, + "rationale": "The target names the displayed concept “Filter properties by selection” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.hiddenTags", + "target": "settings.items.hideTags", + "decision": "rename", + "display": "Hide tags (vault profile)", + "owner": { + "page": "Display filters", + "group": null + }, + "rationale": "The target names the displayed concept “Hide tags (vault profile)” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.hiddenFileTags", + "target": "settings.items.hideNotesWithTags", + "decision": "rename", + "display": "Hide notes with tags (vault profile)", + "owner": { + "page": "Display filters", + "group": null + }, + "rationale": "The target names the displayed concept “Hide notes with tags (vault profile)” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.enableFolderNotes", + "target": "settings.items.enableFolderNotes", + "decision": "retain", + "display": "Enable folder notes", + "owner": { + "page": "Folders & folder notes", + "group": "Folder notes" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.folderNoteType", + "target": "settings.items.folderNoteType", + "decision": "retain", + "display": "Default folder note type", + "owner": { + "page": "Folders & folder notes", + "group": "Folder note files" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.folderNoteName", + "target": "settings.items.folderNoteName", + "decision": "retain", + "display": "Folder note name", + "owner": { + "page": "Folders & folder notes", + "group": "Folder note files" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.folderNoteNamePattern", + "target": "settings.items.folderNoteNamePattern", + "decision": "retain", + "display": "Folder note name pattern", + "owner": { + "page": "Folders & folder notes", + "group": "Folder note files" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.folderNoteTemplate", + "target": "settings.items.folderNoteTemplate", + "decision": "retain", + "display": "Folder note template", + "owner": { + "page": "Folders & folder notes", + "group": "Folder note files" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.enableFolderNoteLinks", + "target": "settings.items.folderNamesOpenFolderNotes", + "decision": "rename", + "display": "Folder names open folder notes", + "owner": { + "page": "Folders & folder notes", + "group": "Folder notes" + }, + "rationale": "The target names the displayed concept “Folder names open folder notes” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.hideFolderNoteInList", + "target": "settings.items.hideFolderNoteInList", + "decision": "retain", + "display": "Hide folder notes in list", + "owner": { + "page": "Folders & folder notes", + "group": "Folder notes" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.pinCreatedFolderNote", + "target": "settings.items.pinCreatedFolderNote", + "decision": "retain", + "display": "Pin created folder notes", + "owner": { + "page": "Folders & folder notes", + "group": "Folder notes" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.folderNoteOpenLocation", + "target": "settings.items.folderNoteOpenLocation", + "decision": "retain", + "display": "Open folder notes in", + "owner": { + "page": "Folders & folder notes", + "group": "Folder notes" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.showNearestFolderNoteInSidebar", + "target": "settings.items.showClosestFolderNoteInRightSidebar", + "decision": "rename", + "display": "Right sidebar: Show closest folder note", + "owner": { + "page": "Folders & folder notes", + "group": "Folder notes" + }, + "rationale": "The target names the displayed concept “Right sidebar: Show closest folder note” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.confirmBeforeDelete", + "target": "settings.items.confirmBeforeDelete", + "decision": "retain", + "display": "Confirm before deleting", + "owner": { + "page": "File operations", + "group": null + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.deleteAttachments", + "target": "settings.items.deleteAttachments", + "decision": "retain", + "display": "Delete attachments when deleting files", + "owner": { + "page": "File operations", + "group": null + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.moveFileConflicts", + "target": "settings.items.moveFileConflicts", + "decision": "retain", + "display": "Move conflicts", + "owner": { + "page": "File operations", + "group": null + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.metadataCleanup", + "target": "settings.items.metadataCleanup", + "decision": "retain", + "display": "Clean up metadata", + "owner": { + "page": "Advanced", + "group": "Maintenance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.rebuildCache", + "target": "settings.items.rebuildCache", + "decision": "retain", + "display": "Rebuild cache", + "owner": { + "page": "Advanced", + "group": "Maintenance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.externalIcons", + "target": "settings.items.iconPackManagement", + "decision": "rename", + "display": "Icon pack download and removal controls", + "owner": { + "page": "Icon packs", + "group": null + }, + "rationale": "The target names the displayed concept “Icon pack download and removal controls” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.useFrontmatterDates", + "target": "settings.items.useFrontmatterMetadata", + "decision": "rename", + "display": "Use frontmatter metadata", + "owner": { + "page": "Frontmatter fields", + "group": null + }, + "rationale": "The target names the displayed concept “Use frontmatter metadata” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.frontmatterIconField", + "target": "settings.items.frontmatterIconField", + "decision": "retain", + "display": "Icon field", + "owner": { + "page": "Frontmatter fields", + "group": null + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.frontmatterColorField", + "target": "settings.items.frontmatterColorField", + "decision": "retain", + "display": "Color field", + "owner": { + "page": "Frontmatter fields", + "group": null + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.frontmatterBackgroundField", + "target": "settings.items.frontmatterBackgroundField", + "decision": "retain", + "display": "Background field", + "owner": { + "page": "Frontmatter fields", + "group": null + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.frontmatterMigration", + "target": "settings.items.migrateIconsAndColorsFromSettings", + "decision": "rename", + "display": "Migrate icons and colors from settings", + "owner": { + "page": "Frontmatter fields", + "group": null + }, + "rationale": "The target names the displayed concept “Migrate icons and colors from settings” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.frontmatterNameField", + "target": "settings.items.frontmatterNameFields", + "decision": "rename", + "display": "Name fields", + "owner": { + "page": "Frontmatter fields", + "group": null + }, + "rationale": "The target names the displayed concept “Name fields” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.frontmatterCreatedField", + "target": "settings.items.frontmatterCreatedField", + "decision": "retain", + "display": "Created timestamp field", + "owner": { + "page": "Frontmatter fields", + "group": null + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.frontmatterModifiedField", + "target": "settings.items.frontmatterModifiedField", + "decision": "retain", + "display": "Modified timestamp field", + "owner": { + "page": "Frontmatter fields", + "group": null + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.frontmatterDateFormat", + "target": "settings.items.frontmatterTimestampFormat", + "decision": "rename", + "display": "Timestamp format", + "owner": { + "page": "Frontmatter fields", + "group": null + }, + "rationale": "The target names the displayed concept “Timestamp format” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.supportDevelopment", + "target": "settings.items.supportDevelopment", + "decision": "retain", + "display": "Support development", + "owner": { + "page": "Settings index", + "group": "Support" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.updateCheckOnStart", + "target": "settings.items.checkForNewVersionOnStart", + "decision": "rename", + "display": "Check for new version on start", + "owner": { + "page": "Advanced", + "group": "General" + }, + "rationale": "The target names the displayed concept “Check for new version on start” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.debugLogging", + "target": "settings.items.startupDebugLogging", + "decision": "rename", + "display": "Startup debug logging", + "owner": { + "page": "Advanced", + "group": "General" + }, + "rationale": "The target names the displayed concept “Startup debug logging” instead of a persisted, legacy, or implementation-oriented identifier." + }, + { + "source": "settings.items.whatsNew", + "target": "settings.items.whatsNew", + "decision": "retain", + "display": "What's new in Notebook Navigator {version}", + "owner": { + "page": "Settings index", + "group": "Support" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.masteringVideo", + "target": "settings.items.masteringVideo", + "decision": "retain", + "display": "Mastering Notebook Navigator (video)", + "owner": { + "page": "Settings index", + "group": "Support" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.cacheStatistics", + "target": "settings.items.cacheStatistics", + "decision": "retain", + "display": "Local cache", + "owner": { + "page": "Advanced", + "group": "Maintenance" + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + }, + { + "source": "settings.items.metadataInfo", + "target": "settings.items.metadataInfo", + "decision": "retain", + "display": "Frontmatter metadata diagnostics", + "owner": { + "page": "Frontmatter fields", + "group": null + }, + "rationale": "The key already names the stable displayed concept and preserves useful context in the flat item catalog." + } + ], + "nestedIdentifiers": [ + { + "source": "settings.items.listPaneTitle.options.header", + "target": "settings.items.listPaneTitle.options.header", + "decision": "retain", + "display": "Show in header", + "owner": { + "page": "List pane", + "group": "Appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Show in header”." + }, + { + "source": "settings.items.listPaneTitle.options.list", + "target": "settings.items.listPaneTitle.options.listPane", + "decision": "rename", + "display": "Show in list pane", + "owner": { + "page": "List pane", + "group": "Appearance" + }, + "rationale": "The alias now names the displayed choice “Show in list pane”; the persisted value remains unchanged." + }, + { + "source": "settings.items.listPaneTitle.options.hidden", + "target": "settings.items.listPaneTitle.options.hidden", + "decision": "retain", + "display": "Do not show", + "owner": { + "page": "List pane", + "group": "Appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Do not show”." + }, + { + "source": "settings.items.sortNotesBy.directions.asc", + "target": "settings.items.defaultSortOrder.directions.asc", + "decision": "retain", + "display": "Ascending", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The contextual alias already describes the displayed choice “Ascending”." + }, + { + "source": "settings.items.sortNotesBy.directions.desc", + "target": "settings.items.defaultSortOrder.directions.desc", + "decision": "retain", + "display": "Descending", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The contextual alias already describes the displayed choice “Descending”." + }, + { + "source": "settings.items.sortNotesBy.dateDirections.desc", + "target": "settings.items.defaultSortOrder.dateDirections.newestOnTop", + "decision": "rename", + "display": "Newest on top", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The alias now names the displayed choice “Newest on top”; the persisted value remains unchanged." + }, + { + "source": "settings.items.sortNotesBy.dateDirections.asc", + "target": "settings.items.defaultSortOrder.dateDirections.oldestOnTop", + "decision": "rename", + "display": "Oldest on top", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The alias now names the displayed choice “Oldest on top”; the persisted value remains unchanged." + }, + { + "source": "settings.items.sortNotesBy.textDirections.asc", + "target": "settings.items.defaultSortOrder.textDirections.aOnTop", + "decision": "rename", + "display": "A on top", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The alias now names the displayed choice “A on top”; the persisted value remains unchanged." + }, + { + "source": "settings.items.sortNotesBy.textDirections.desc", + "target": "settings.items.defaultSortOrder.textDirections.zOnTop", + "decision": "rename", + "display": "Z on top", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The alias now names the displayed choice “Z on top”; the persisted value remains unchanged." + }, + { + "source": "settings.items.sortNotesBy.fields.modified", + "target": "settings.items.defaultSortOrder.fields.dateEdited", + "decision": "rename", + "display": "Date edited", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The alias now names the displayed choice “Date edited”; the persisted value remains unchanged." + }, + { + "source": "settings.items.sortNotesBy.fields.created", + "target": "settings.items.defaultSortOrder.fields.dateCreated", + "decision": "rename", + "display": "Date created", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The alias now names the displayed choice “Date created”; the persisted value remains unchanged." + }, + { + "source": "settings.items.sortNotesBy.fields.title", + "target": "settings.items.defaultSortOrder.fields.title", + "decision": "retain", + "display": "Title", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The contextual alias already describes the displayed choice “Title”." + }, + { + "source": "settings.items.sortNotesBy.fields.filename", + "target": "settings.items.defaultSortOrder.fields.fileName", + "decision": "rename", + "display": "File name", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The alias now names the displayed choice “File name”; the persisted value remains unchanged." + }, + { + "source": "settings.items.sortNotesBy.fields.property", + "target": "settings.items.defaultSortOrder.fields.property", + "decision": "retain", + "display": "Property", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The contextual alias already describes the displayed choice “Property”." + }, + { + "source": "settings.items.defaultGroupingDirection.options.follow", + "target": "settings.items.defaultGroupingDirection.options.follow", + "decision": "retain", + "display": "Follow sort order", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The contextual alias already describes the displayed choice “Follow sort order”." + }, + { + "source": "settings.items.propertySortSecondary.options.title", + "target": "settings.items.propertySecondarySort.options.title", + "decision": "retain", + "display": "Title", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The contextual alias already describes the displayed choice “Title”." + }, + { + "source": "settings.items.propertySortSecondary.options.filename", + "target": "settings.items.propertySecondarySort.options.fileName", + "decision": "rename", + "display": "File name", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The alias now names the displayed choice “File name”; the persisted value remains unchanged." + }, + { + "source": "settings.items.propertySortSecondary.options.created", + "target": "settings.items.propertySecondarySort.options.dateCreated", + "decision": "rename", + "display": "Date created", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The alias now names the displayed choice “Date created”; the persisted value remains unchanged." + }, + { + "source": "settings.items.propertySortSecondary.options.modified", + "target": "settings.items.propertySecondarySort.options.dateEdited", + "decision": "rename", + "display": "Date edited", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The alias now names the displayed choice “Date edited”; the persisted value remains unchanged." + }, + { + "source": "settings.items.manualSortNewNotePlacement.options.top", + "target": "settings.items.manualSortNewNotePlacement.options.top", + "decision": "retain", + "display": "Top", + "owner": { + "page": "List pane", + "group": "Manual sort" + }, + "rationale": "The contextual alias already describes the displayed choice “Top”." + }, + { + "source": "settings.items.manualSortNewNotePlacement.options.bottom", + "target": "settings.items.manualSortNewNotePlacement.options.bottom", + "decision": "retain", + "display": "Bottom", + "owner": { + "page": "List pane", + "group": "Manual sort" + }, + "rationale": "The contextual alias already describes the displayed choice “Bottom”." + }, + { + "source": "settings.items.manualSortNewNotePlacement.options.below-selected-note", + "target": "settings.items.manualSortNewNotePlacement.options.belowSelectedNote", + "decision": "rename", + "display": "Below selected note", + "owner": { + "page": "List pane", + "group": "Manual sort" + }, + "rationale": "The alias now names the displayed choice “Below selected note”; the persisted value remains unchanged." + }, + { + "source": "settings.items.manualSortNewNotePlacement.options.unsorted", + "target": "settings.items.manualSortNewNotePlacement.options.unsorted", + "decision": "retain", + "display": "Unsorted", + "owner": { + "page": "List pane", + "group": "Manual sort" + }, + "rationale": "The contextual alias already describes the displayed choice “Unsorted”." + }, + { + "source": "settings.items.groupNotes.families.headers", + "target": "settings.items.defaultGrouping.families.headers", + "decision": "retain", + "display": "Headers", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The contextual alias already describes the displayed choice “Headers”." + }, + { + "source": "settings.items.groupNotes.families.groups", + "target": "settings.items.defaultGrouping.families.groups", + "decision": "retain", + "display": "Groups", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The contextual alias already describes the displayed choice “Groups”." + }, + { + "source": "settings.items.groupNotes.options.custom", + "target": "settings.items.defaultGrouping.options.custom", + "decision": "retain", + "display": "Custom", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The contextual alias already describes the displayed choice “Custom”." + }, + { + "source": "settings.items.groupNotes.options.date", + "target": "settings.items.defaultGrouping.options.date", + "decision": "retain", + "display": "Date", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The contextual alias already describes the displayed choice “Date”." + }, + { + "source": "settings.items.groupNotes.options.folder", + "target": "settings.items.defaultGrouping.options.folder", + "decision": "retain", + "display": "Folder", + "owner": { + "page": "List pane", + "group": "Sort & group" + }, + "rationale": "The contextual alias already describes the displayed choice “Folder”." + }, + { + "source": "settings.items.defaultListMode.options.standard", + "target": "settings.items.defaultListMode.options.standard", + "decision": "retain", + "display": "Standard", + "owner": { + "page": "List pane", + "group": "Appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Standard”." + }, + { + "source": "settings.items.defaultListMode.options.compact", + "target": "settings.items.defaultListMode.options.compact", + "decision": "retain", + "display": "Compact", + "owner": { + "page": "List pane", + "group": "Appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Compact”." + }, + { + "source": "settings.items.unfinishedTaskIcon.options.none", + "target": "settings.items.unfinishedTaskIcon.options.disabled", + "decision": "rename", + "display": "Disabled", + "owner": { + "page": "File display", + "group": "Icon" + }, + "rationale": "The alias now names the displayed choice “Disabled”; the persisted value remains unchanged." + }, + { + "source": "settings.items.unfinishedTaskIcon.options.compact", + "target": "settings.items.unfinishedTaskIcon.options.compact", + "decision": "retain", + "display": "Compact mode", + "owner": { + "page": "File display", + "group": "Icon" + }, + "rationale": "The contextual alias already describes the displayed choice “Compact mode”." + }, + { + "source": "settings.items.unfinishedTaskIcon.options.all", + "target": "settings.items.unfinishedTaskIcon.options.standardAndCompact", + "decision": "rename", + "display": "Standard and compact", + "owner": { + "page": "File display", + "group": "Icon" + }, + "rationale": "The alias now names the displayed choice “Standard and compact”; the persisted value remains unchanged." + }, + { + "source": "settings.items.fileTypeIconPreset.options.none", + "target": "settings.items.fileTypeIconPreset.options.builtIn", + "decision": "rename", + "display": "Built-in icons", + "owner": { + "page": "File display", + "group": "Icon" + }, + "rationale": "The alias now names the displayed choice “Built-in icons”; the persisted value remains unchanged." + }, + { + "source": "settings.items.dualPaneOrientation.options.horizontal", + "target": "settings.items.dualPaneOrientation.options.horizontal", + "decision": "retain", + "display": "Horizontal split", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Horizontal split”." + }, + { + "source": "settings.items.dualPaneOrientation.options.vertical", + "target": "settings.items.dualPaneOrientation.options.vertical", + "decision": "retain", + "display": "Vertical split", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Vertical split”." + }, + { + "source": "settings.items.narrowSidebarLayout.options.none", + "target": "settings.items.narrowSidebarBehavior.options.none", + "decision": "retain", + "display": "Do nothing", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Do nothing”." + }, + { + "source": "settings.items.narrowSidebarLayout.options.singlePane", + "target": "settings.items.narrowSidebarBehavior.options.singlePane", + "decision": "retain", + "display": "Switch to single pane", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Switch to single pane”." + }, + { + "source": "settings.items.narrowSidebarLayout.options.vertical", + "target": "settings.items.narrowSidebarBehavior.options.vertical", + "decision": "retain", + "display": "Switch to vertical split", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Switch to vertical split”." + }, + { + "source": "settings.items.narrowSidebarTrigger.options.fitPanes", + "target": "settings.items.narrowSidebarThresholdMode.options.fitPanes", + "decision": "retain", + "display": "Fit panes", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Fit panes”." + }, + { + "source": "settings.items.narrowSidebarTrigger.options.customWidth", + "target": "settings.items.narrowSidebarThresholdMode.options.customWidth", + "decision": "retain", + "display": "Custom width", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Custom width”." + }, + { + "source": "settings.items.appearanceBackground.options.separate", + "target": "settings.items.paneBackgroundColor.options.separate", + "decision": "retain", + "display": "Separate backgrounds", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Separate backgrounds”." + }, + { + "source": "settings.items.appearanceBackground.options.primary", + "target": "settings.items.paneBackgroundColor.options.listBackground", + "decision": "rename", + "display": "Use list background", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The alias now names the displayed choice “Use list background”; the persisted value remains unchanged." + }, + { + "source": "settings.items.appearanceBackground.options.secondary", + "target": "settings.items.paneBackgroundColor.options.navigationBackground", + "decision": "rename", + "display": "Use navigation background", + "owner": { + "page": "Appearance & behavior", + "group": "Desktop appearance" + }, + "rationale": "The alias now names the displayed choice “Use navigation background”; the persisted value remains unchanged." + }, + { + "source": "settings.items.startView.options.navigation", + "target": "settings.items.defaultStartupView.options.navigation", + "decision": "retain", + "display": "Navigation pane", + "owner": { + "page": "Appearance & behavior", + "group": "Startup" + }, + "rationale": "The contextual alias already describes the displayed choice “Navigation pane”." + }, + { + "source": "settings.items.startView.options.files", + "target": "settings.items.defaultStartupView.options.listPane", + "decision": "rename", + "display": "List pane", + "owner": { + "page": "Appearance & behavior", + "group": "Startup" + }, + "rationale": "The alias now names the displayed choice “List pane”; the persisted value remains unchanged." + }, + { + "source": "settings.items.shortcutBadgeDisplay.options.index", + "target": "settings.items.shortcutBadgeDisplay.options.position", + "decision": "rename", + "display": "Position (1-9)", + "owner": { + "page": "Shortcuts & recent files", + "group": "Shortcuts" + }, + "rationale": "The alias now names the displayed choice “Position (1-9)”; the persisted value remains unchanged." + }, + { + "source": "settings.items.shortcutBadgeDisplay.options.count", + "target": "settings.items.shortcutBadgeDisplay.options.count", + "decision": "retain", + "display": "Item counts", + "owner": { + "page": "Shortcuts & recent files", + "group": "Shortcuts" + }, + "rationale": "The contextual alias already describes the displayed choice “Item counts”." + }, + { + "source": "settings.items.shortcutBadgeDisplay.options.none", + "target": "settings.items.shortcutBadgeDisplay.options.none", + "decision": "retain", + "display": "None", + "owner": { + "page": "Shortcuts & recent files", + "group": "Shortcuts" + }, + "rationale": "The contextual alias already describes the displayed choice “None”." + }, + { + "source": "settings.items.hideRecentNotes.options.none", + "target": "settings.items.hideFileTypesFromRecentFiles.options.none", + "decision": "retain", + "display": "None", + "owner": { + "page": "Shortcuts & recent files", + "group": "Recent files" + }, + "rationale": "The contextual alias already describes the displayed choice “None”." + }, + { + "source": "settings.items.hideRecentNotes.options.folderNotes", + "target": "settings.items.hideFileTypesFromRecentFiles.options.folderNotes", + "decision": "retain", + "display": "Folder notes", + "owner": { + "page": "Shortcuts & recent files", + "group": "Recent files" + }, + "rationale": "The contextual alias already describes the displayed choice “Folder notes”." + }, + { + "source": "settings.items.calendarPlacement.options.leftSidebar", + "target": "settings.items.calendarPlacement.options.leftSidebar", + "decision": "retain", + "display": "Left sidebar", + "owner": { + "page": "Calendar", + "group": "General" + }, + "rationale": "The contextual alias already describes the displayed choice “Left sidebar”." + }, + { + "source": "settings.items.calendarPlacement.options.rightSidebar", + "target": "settings.items.calendarPlacement.options.rightSidebar", + "decision": "retain", + "display": "Right sidebar", + "owner": { + "page": "Calendar", + "group": "General" + }, + "rationale": "The contextual alias already describes the displayed choice “Right sidebar”." + }, + { + "source": "settings.items.calendarLeftPlacement.options.navigationPane", + "target": "settings.items.calendarSinglePanePlacement.options.navigationPane", + "decision": "retain", + "display": "Navigation pane", + "owner": { + "page": "Calendar", + "group": "Left sidebar" + }, + "rationale": "The contextual alias already describes the displayed choice “Navigation pane”." + }, + { + "source": "settings.items.calendarLeftPlacement.options.below", + "target": "settings.items.calendarSinglePanePlacement.options.belowPanes", + "decision": "rename", + "display": "Below panes", + "owner": { + "page": "Calendar", + "group": "Left sidebar" + }, + "rationale": "The alias now names the displayed choice “Below panes”; the persisted value remains unchanged." + }, + { + "source": "settings.items.calendarLocale.options.systemDefault", + "target": "settings.items.calendarLocale.options.systemDefault", + "decision": "retain", + "display": "Default", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Default”." + }, + { + "source": "settings.items.calendarWeekendDays.options.none", + "target": "settings.items.calendarWeekendDays.options.none", + "decision": "retain", + "display": "None", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “None”." + }, + { + "source": "settings.items.calendarWeekendDays.options.satSun", + "target": "settings.items.calendarWeekendDays.options.satSun", + "decision": "retain", + "display": "Saturday and Sunday", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Saturday and Sunday”." + }, + { + "source": "settings.items.calendarWeekendDays.options.friSat", + "target": "settings.items.calendarWeekendDays.options.friSat", + "decision": "retain", + "display": "Friday and Saturday", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Friday and Saturday”." + }, + { + "source": "settings.items.calendarWeekendDays.options.thuFri", + "target": "settings.items.calendarWeekendDays.options.thuFri", + "decision": "retain", + "display": "Thursday and Friday", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Thursday and Friday”." + }, + { + "source": "settings.items.calendarMonthHeadingFormat.options.full", + "target": "settings.items.calendarMonthNameFormat.options.full", + "decision": "retain", + "display": "January (full)", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “January (full)”." + }, + { + "source": "settings.items.calendarMonthHeadingFormat.options.short", + "target": "settings.items.calendarMonthNameFormat.options.short", + "decision": "retain", + "display": "Jan (short)", + "owner": { + "page": "Calendar", + "group": "Appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Jan (short)”." + }, + { + "source": "settings.items.calendarWeeksToShow.options.fullMonth", + "target": "settings.items.calendarLeftSidebarWeeksToShow.options.fullMonth", + "decision": "retain", + "display": "Full month", + "owner": { + "page": "Calendar", + "group": "Left sidebar" + }, + "rationale": "The contextual alias already describes the displayed choice “Full month”." + }, + { + "source": "settings.items.calendarWeeksToShow.options.oneWeek", + "target": "settings.items.calendarLeftSidebarWeeksToShow.options.oneWeek", + "decision": "retain", + "display": "1 week", + "owner": { + "page": "Calendar", + "group": "Left sidebar" + }, + "rationale": "The contextual alias already describes the displayed choice “1 week”." + }, + { + "source": "settings.items.calendarWeeksToShow.options.weeksCount", + "target": "settings.items.calendarLeftSidebarWeeksToShow.options.weeksCount", + "decision": "retain", + "display": "{count} weeks", + "owner": { + "page": "Calendar", + "group": "Left sidebar" + }, + "rationale": "The contextual alias already describes the displayed choice “{count} weeks”." + }, + { + "source": "settings.items.calendarIntegrationMode.options.dailyNotes", + "target": "settings.items.dailyNoteSource.options.dailyNotes", + "decision": "retain", + "display": "Daily notes (core plug-in)", + "owner": { + "page": "Calendar", + "group": "Calendar integration" + }, + "rationale": "The contextual alias already describes the displayed choice “Daily notes (core plug-in)”." + }, + { + "source": "settings.items.calendarIntegrationMode.options.notebookNavigator", + "target": "settings.items.dailyNoteSource.options.notebookNavigator", + "decision": "retain", + "display": "Notebook Navigator", + "owner": { + "page": "Calendar", + "group": "Calendar integration" + }, + "rationale": "The contextual alias already describes the displayed choice “Notebook Navigator”." + }, + { + "source": "settings.items.calendarPeriodicNotesLocale.options.calendar", + "target": "settings.items.calendarPeriodicNotesLocale.options.calendar", + "decision": "retain", + "display": "Calendar", + "owner": { + "page": "Calendar", + "group": "Calendar integration" + }, + "rationale": "The contextual alias already describes the displayed choice “Calendar”." + }, + { + "source": "settings.items.calendarPeriodicNotesLocale.options.obsidian", + "target": "settings.items.calendarPeriodicNotesLocale.options.obsidian", + "decision": "retain", + "display": "Obsidian", + "owner": { + "page": "Calendar", + "group": "Calendar integration" + }, + "rationale": "The contextual alias already describes the displayed choice “Obsidian”." + }, + { + "source": "settings.items.multiSelectModifier.options.cmdCtrl", + "target": "settings.items.multiSelectModifier.options.cmdCtrl", + "decision": "retain", + "display": "Cmd/Ctrl click", + "owner": { + "page": "Appearance & behavior", + "group": "Keyboard navigation" + }, + "rationale": "The contextual alias already describes the displayed choice “Cmd/Ctrl click”." + }, + { + "source": "settings.items.multiSelectModifier.options.optionAlt", + "target": "settings.items.multiSelectModifier.options.optionAlt", + "decision": "retain", + "display": "Option/Alt click", + "owner": { + "page": "Appearance & behavior", + "group": "Keyboard navigation" + }, + "rationale": "The contextual alias already describes the displayed choice “Option/Alt click”." + }, + { + "source": "settings.items.mouseBackForwardAction.options.none", + "target": "settings.items.mouseBackForwardAction.options.systemDefault", + "decision": "rename", + "display": "Use system default", + "owner": { + "page": "Appearance & behavior", + "group": "Mouse buttons" + }, + "rationale": "The alias now names the displayed choice “Use system default”; the persisted value remains unchanged." + }, + { + "source": "settings.items.mouseBackForwardAction.options.singlePaneSwitch", + "target": "settings.items.mouseBackForwardAction.options.singlePaneSwitch", + "decision": "retain", + "display": "Switch panes (single-pane)", + "owner": { + "page": "Appearance & behavior", + "group": "Mouse buttons" + }, + "rationale": "The contextual alias already describes the displayed choice “Switch panes (single-pane)”." + }, + { + "source": "settings.items.mouseBackForwardAction.options.history", + "target": "settings.items.mouseBackForwardAction.options.history", + "decision": "retain", + "display": "Navigate history", + "owner": { + "page": "Appearance & behavior", + "group": "Mouse buttons" + }, + "rationale": "The contextual alias already describes the displayed choice “Navigate history”." + }, + { + "source": "settings.items.fileVisibility.options.documents", + "target": "settings.items.showFileTypes.options.documents", + "decision": "retain", + "display": "Documents (.md, .canvas, .base)", + "owner": { + "page": "Settings index", + "group": "Vault setup" + }, + "rationale": "The contextual alias already describes the displayed choice “Documents (.md, .canvas, .base)”." + }, + { + "source": "settings.items.fileVisibility.options.supported", + "target": "settings.items.showFileTypes.options.supported", + "decision": "retain", + "display": "Supported (opens in Obsidian)", + "owner": { + "page": "Settings index", + "group": "Vault setup" + }, + "rationale": "The contextual alias already describes the displayed choice “Supported (opens in Obsidian)”." + }, + { + "source": "settings.items.fileVisibility.options.all", + "target": "settings.items.showFileTypes.options.all", + "decision": "retain", + "display": "All (may open externally)", + "owner": { + "page": "Settings index", + "group": "Vault setup" + }, + "rationale": "The contextual alias already describes the displayed choice “All (may open externally)”." + }, + { + "source": "settings.items.homepage.options.none", + "target": "settings.items.homepage.options.none", + "decision": "retain", + "display": "None", + "owner": { + "page": "Appearance & behavior", + "group": "Startup" + }, + "rationale": "The contextual alias already describes the displayed choice “None”." + }, + { + "source": "settings.items.homepage.options.file", + "target": "settings.items.homepage.options.file", + "decision": "retain", + "display": "File", + "owner": { + "page": "Appearance & behavior", + "group": "Startup" + }, + "rationale": "The contextual alias already describes the displayed choice “File”." + }, + { + "source": "settings.items.homepage.options.dailyNote", + "target": "settings.items.homepage.options.dailyNote", + "decision": "retain", + "display": "Daily note", + "owner": { + "page": "Appearance & behavior", + "group": "Startup" + }, + "rationale": "The contextual alias already describes the displayed choice “Daily note”." + }, + { + "source": "settings.items.homepage.options.weeklyNote", + "target": "settings.items.homepage.options.weeklyNote", + "decision": "retain", + "display": "Weekly note", + "owner": { + "page": "Appearance & behavior", + "group": "Startup" + }, + "rationale": "The contextual alias already describes the displayed choice “Weekly note”." + }, + { + "source": "settings.items.homepage.options.monthlyNote", + "target": "settings.items.homepage.options.monthlyNote", + "decision": "retain", + "display": "Monthly note", + "owner": { + "page": "Appearance & behavior", + "group": "Startup" + }, + "rationale": "The contextual alias already describes the displayed choice “Monthly note”." + }, + { + "source": "settings.items.homepage.options.quarterlyNote", + "target": "settings.items.homepage.options.quarterlyNote", + "decision": "retain", + "display": "Quarterly note", + "owner": { + "page": "Appearance & behavior", + "group": "Startup" + }, + "rationale": "The contextual alias already describes the displayed choice “Quarterly note”." + }, + { + "source": "settings.items.homepage.options.yearlyNote", + "target": "settings.items.homepage.options.yearlyNote", + "decision": "retain", + "display": "Yearly note", + "owner": { + "page": "Appearance & behavior", + "group": "Startup" + }, + "rationale": "The contextual alias already describes the displayed choice “Yearly note”." + }, + { + "source": "settings.items.vaultTitle.options.header", + "target": "settings.items.vaultTitlePlacement.options.header", + "decision": "retain", + "display": "Show in header", + "owner": { + "page": "Settings index", + "group": "Vault setup" + }, + "rationale": "The contextual alias already describes the displayed choice “Show in header”." + }, + { + "source": "settings.items.vaultTitle.options.navigation", + "target": "settings.items.vaultTitlePlacement.options.navigation", + "decision": "retain", + "display": "Show in navigation pane", + "owner": { + "page": "Settings index", + "group": "Vault setup" + }, + "rationale": "The contextual alias already describes the displayed choice “Show in navigation pane”." + }, + { + "source": "settings.items.alphabeticalDateMode.options.created", + "target": "settings.items.dateWhenSortingByName.options.created", + "decision": "retain", + "display": "Created date", + "owner": { + "page": "File display", + "group": "Date" + }, + "rationale": "The contextual alias already describes the displayed choice “Created date”." + }, + { + "source": "settings.items.alphabeticalDateMode.options.modified", + "target": "settings.items.dateWhenSortingByName.options.modified", + "decision": "retain", + "display": "Modified date", + "owner": { + "page": "File display", + "group": "Date" + }, + "rationale": "The contextual alias already describes the displayed choice “Modified date”." + }, + { + "source": "settings.items.textCountDisplay.options.none", + "target": "settings.items.textCountType.options.none", + "decision": "retain", + "display": "None", + "owner": { + "page": "File display", + "group": "Word and character count" + }, + "rationale": "The contextual alias already describes the displayed choice “None”." + }, + { + "source": "settings.items.textCountDisplay.options.words", + "target": "settings.items.textCountType.options.words", + "decision": "retain", + "display": "Word count", + "owner": { + "page": "File display", + "group": "Word and character count" + }, + "rationale": "The contextual alias already describes the displayed choice “Word count”." + }, + { + "source": "settings.items.textCountDisplay.options.characters", + "target": "settings.items.textCountType.options.characters", + "decision": "retain", + "display": "Character count", + "owner": { + "page": "File display", + "group": "Word and character count" + }, + "rationale": "The contextual alias already describes the displayed choice “Character count”." + }, + { + "source": "settings.items.textCountDisplay.options.both", + "target": "settings.items.textCountType.options.both", + "decision": "retain", + "display": "Word and character count", + "owner": { + "page": "File display", + "group": "Word and character count" + }, + "rationale": "The contextual alias already describes the displayed choice “Word and character count”." + }, + { + "source": "settings.items.textCountPlacement.options.title", + "target": "settings.items.textCountPlacement.options.title", + "decision": "retain", + "display": "In title", + "owner": { + "page": "File display", + "group": "Word and character count" + }, + "rationale": "The contextual alias already describes the displayed choice “In title”." + }, + { + "source": "settings.items.textCountPlacement.options.property", + "target": "settings.items.textCountPlacement.options.property", + "decision": "retain", + "display": "As property", + "owner": { + "page": "File display", + "group": "Word and character count" + }, + "rationale": "The contextual alias already describes the displayed choice “As property”." + }, + { + "source": "settings.items.characterCountSpaces.options.include", + "target": "settings.items.characterCountSpaces.options.include", + "decision": "retain", + "display": "Including spaces", + "owner": { + "page": "File display", + "group": "Word and character count" + }, + "rationale": "The contextual alias already describes the displayed choice “Including spaces”." + }, + { + "source": "settings.items.characterCountSpaces.options.exclude", + "target": "settings.items.characterCountSpaces.options.exclude", + "decision": "retain", + "display": "Excluding spaces", + "owner": { + "page": "File display", + "group": "Word and character count" + }, + "rationale": "The contextual alias already describes the displayed choice “Excluding spaces”." + }, + { + "source": "settings.items.previewRows.options.1", + "target": "settings.items.previewRows.options.1", + "decision": "retain", + "display": "1 row", + "owner": { + "page": "File display", + "group": "Preview text" + }, + "rationale": "The contextual alias already describes the displayed choice “1 row”." + }, + { + "source": "settings.items.previewRows.options.2", + "target": "settings.items.previewRows.options.2", + "decision": "retain", + "display": "2 rows", + "owner": { + "page": "File display", + "group": "Preview text" + }, + "rationale": "The contextual alias already describes the displayed choice “2 rows”." + }, + { + "source": "settings.items.previewRows.options.3", + "target": "settings.items.previewRows.options.3", + "decision": "retain", + "display": "3 rows", + "owner": { + "page": "File display", + "group": "Preview text" + }, + "rationale": "The contextual alias already describes the displayed choice “3 rows”." + }, + { + "source": "settings.items.previewRows.options.4", + "target": "settings.items.previewRows.options.4", + "decision": "retain", + "display": "4 rows", + "owner": { + "page": "File display", + "group": "Preview text" + }, + "rationale": "The contextual alias already describes the displayed choice “4 rows”." + }, + { + "source": "settings.items.previewRows.options.5", + "target": "settings.items.previewRows.options.5", + "decision": "retain", + "display": "5 rows", + "owner": { + "page": "File display", + "group": "Preview text" + }, + "rationale": "The contextual alias already describes the displayed choice “5 rows”." + }, + { + "source": "settings.items.fileNameRows.options.1", + "target": "settings.items.titleRows.options.1", + "decision": "retain", + "display": "1 row", + "owner": { + "page": "File display", + "group": "Title" + }, + "rationale": "The contextual alias already describes the displayed choice “1 row”." + }, + { + "source": "settings.items.fileNameRows.options.2", + "target": "settings.items.titleRows.options.2", + "decision": "retain", + "display": "2 rows", + "owner": { + "page": "File display", + "group": "Title" + }, + "rationale": "The contextual alias already describes the displayed choice “2 rows”." + }, + { + "source": "settings.items.fileNameRows.options.3", + "target": "settings.items.titleRows.options.3", + "decision": "retain", + "display": "3 rows", + "owner": { + "page": "File display", + "group": "Title" + }, + "rationale": "The contextual alias already describes the displayed choice “3 rows”." + }, + { + "source": "settings.items.featureImageSize.options.standard", + "target": "settings.items.featureImageDisplaySize.options.64", + "decision": "rename", + "display": "64 px", + "owner": { + "page": "File display", + "group": "Feature image" + }, + "rationale": "The alias now names the displayed choice “64 px”; the persisted value remains unchanged." + }, + { + "source": "settings.items.featureImageSize.options.large", + "target": "settings.items.featureImageDisplaySize.options.96", + "decision": "rename", + "display": "96 px", + "owner": { + "page": "File display", + "group": "Feature image" + }, + "rationale": "The alias now names the displayed choice “96 px”; the persisted value remains unchanged." + }, + { + "source": "settings.items.featureImageSize.options.extraLarge", + "target": "settings.items.featureImageDisplaySize.options.128", + "decision": "rename", + "display": "128 px", + "owner": { + "page": "File display", + "group": "Feature image" + }, + "rationale": "The alias now names the displayed choice “128 px”; the persisted value remains unchanged." + }, + { + "source": "settings.items.featureImagePixelSize.options.standard", + "target": "settings.items.featureImagePixelSize.options.256x144", + "decision": "rename", + "display": "256 x 144 px", + "owner": { + "page": "File display", + "group": "Feature image" + }, + "rationale": "The alias now names the displayed choice “256 x 144 px”; the persisted value remains unchanged." + }, + { + "source": "settings.items.featureImagePixelSize.options.large", + "target": "settings.items.featureImagePixelSize.options.384x216", + "decision": "rename", + "display": "384 x 216 px", + "owner": { + "page": "File display", + "group": "Feature image" + }, + "rationale": "The alias now names the displayed choice “384 x 216 px”; the persisted value remains unchanged." + }, + { + "source": "settings.items.featureImagePixelSize.options.extraLarge", + "target": "settings.items.featureImagePixelSize.options.512x288", + "decision": "rename", + "display": "512 x 288 px", + "owner": { + "page": "File display", + "group": "Feature image" + }, + "rationale": "The alias now names the displayed choice “512 x 288 px”; the persisted value remains unchanged." + }, + { + "source": "settings.items.folderSortOrder.options.alphaAsc", + "target": "settings.items.folderSortOrder.options.alphaAsc", + "decision": "retain", + "display": "A to Z", + "owner": { + "page": "Folders & folder notes", + "group": "Folders" + }, + "rationale": "The contextual alias already describes the displayed choice “A to Z”." + }, + { + "source": "settings.items.folderSortOrder.options.alphaDesc", + "target": "settings.items.folderSortOrder.options.alphaDesc", + "decision": "retain", + "display": "Z to A", + "owner": { + "page": "Folders & folder notes", + "group": "Folders" + }, + "rationale": "The contextual alias already describes the displayed choice “Z to A”." + }, + { + "source": "settings.items.navRainbowMode.options.none", + "target": "settings.items.navRainbowMode.options.off", + "decision": "rename", + "display": "Off", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The alias now names the displayed choice “Off”; the persisted value remains unchanged." + }, + { + "source": "settings.items.navRainbowMode.options.foreground", + "target": "settings.items.navRainbowMode.options.textColor", + "decision": "rename", + "display": "Text color", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The alias now names the displayed choice “Text color”; the persisted value remains unchanged." + }, + { + "source": "settings.items.navRainbowMode.options.background", + "target": "settings.items.navRainbowMode.options.backgroundColor", + "decision": "rename", + "display": "Background color", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The alias now names the displayed choice “Background color”; the persisted value remains unchanged." + }, + { + "source": "settings.items.navRainbowTransitionStyle.options.hue", + "target": "settings.items.navRainbowTransitionStyle.options.hue", + "decision": "retain", + "display": "Hue", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The contextual alias already describes the displayed choice “Hue”." + }, + { + "source": "settings.items.navRainbowTransitionStyle.options.rgb", + "target": "settings.items.navRainbowTransitionStyle.options.rgb", + "decision": "retain", + "display": "RGB", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The contextual alias already describes the displayed choice “RGB”." + }, + { + "source": "settings.items.navRainbowFolderScope.options.root", + "target": "settings.items.navRainbowFolderScope.options.root", + "decision": "retain", + "display": "Root level", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The contextual alias already describes the displayed choice “Root level”." + }, + { + "source": "settings.items.navRainbowFolderScope.options.child", + "target": "settings.items.navRainbowFolderScope.options.child", + "decision": "retain", + "display": "Child level", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The contextual alias already describes the displayed choice “Child level”." + }, + { + "source": "settings.items.navRainbowFolderScope.options.all", + "target": "settings.items.navRainbowFolderScope.options.all", + "decision": "retain", + "display": "Every level", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The contextual alias already describes the displayed choice “Every level”." + }, + { + "source": "settings.items.navRainbowTagScope.options.root", + "target": "settings.items.navRainbowTagScope.options.root", + "decision": "retain", + "display": "Root level", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The contextual alias already describes the displayed choice “Root level”." + }, + { + "source": "settings.items.navRainbowTagScope.options.child", + "target": "settings.items.navRainbowTagScope.options.child", + "decision": "retain", + "display": "Child level", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The contextual alias already describes the displayed choice “Child level”." + }, + { + "source": "settings.items.navRainbowTagScope.options.all", + "target": "settings.items.navRainbowTagScope.options.all", + "decision": "retain", + "display": "Every level", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The contextual alias already describes the displayed choice “Every level”." + }, + { + "source": "settings.items.navRainbowPropertyScope.options.root", + "target": "settings.items.navRainbowPropertyScope.options.root", + "decision": "retain", + "display": "Root level", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The contextual alias already describes the displayed choice “Root level”." + }, + { + "source": "settings.items.navRainbowPropertyScope.options.child", + "target": "settings.items.navRainbowPropertyScope.options.child", + "decision": "retain", + "display": "Child level", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The contextual alias already describes the displayed choice “Child level”." + }, + { + "source": "settings.items.navRainbowPropertyScope.options.all", + "target": "settings.items.navRainbowPropertyScope.options.all", + "decision": "retain", + "display": "Every level", + "owner": { + "page": "Navigation pane", + "group": "Rainbow colors" + }, + "rationale": "The contextual alias already describes the displayed choice “Every level”." + }, + { + "source": "settings.items.collapseBehavior.options.all", + "target": "settings.items.collapseItems.options.all", + "decision": "retain", + "display": "All", + "owner": { + "page": "Navigation pane", + "group": "Collapse items" + }, + "rationale": "The contextual alias already describes the displayed choice “All”." + }, + { + "source": "settings.items.collapseBehavior.options.foldersOnly", + "target": "settings.items.collapseItems.options.foldersOnly", + "decision": "retain", + "display": "Folders only", + "owner": { + "page": "Navigation pane", + "group": "Collapse items" + }, + "rationale": "The contextual alias already describes the displayed choice “Folders only”." + }, + { + "source": "settings.items.collapseBehavior.options.tagsOnly", + "target": "settings.items.collapseItems.options.tagsOnly", + "decision": "retain", + "display": "Tags only", + "owner": { + "page": "Navigation pane", + "group": "Collapse items" + }, + "rationale": "The contextual alias already describes the displayed choice “Tags only”." + }, + { + "source": "settings.items.collapseBehavior.options.propertiesOnly", + "target": "settings.items.collapseItems.options.propertiesOnly", + "decision": "retain", + "display": "Properties only", + "owner": { + "page": "Navigation pane", + "group": "Collapse items" + }, + "rationale": "The contextual alias already describes the displayed choice “Properties only”." + }, + { + "source": "settings.items.navCountLeaderStyle.options.none", + "target": "settings.items.navCountLeaderStyle.options.none", + "decision": "retain", + "display": "None", + "owner": { + "page": "Navigation pane", + "group": "Appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “None”." + }, + { + "source": "settings.items.navCountLeaderStyle.options.dots", + "target": "settings.items.navCountLeaderStyle.options.dots", + "decision": "retain", + "display": "Dots (...)", + "owner": { + "page": "Navigation pane", + "group": "Appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Dots (...)”." + }, + { + "source": "settings.items.navCountLeaderStyle.options.dashes", + "target": "settings.items.navCountLeaderStyle.options.dashes", + "decision": "retain", + "display": "Dashes (---)", + "owner": { + "page": "Navigation pane", + "group": "Appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Dashes (---)”." + }, + { + "source": "settings.items.navCountLeaderStyle.options.line", + "target": "settings.items.navCountLeaderStyle.options.line", + "decision": "retain", + "display": "Line", + "owner": { + "page": "Navigation pane", + "group": "Appearance" + }, + "rationale": "The contextual alias already describes the displayed choice “Line”." + }, + { + "source": "settings.items.tagSortOrder.options.alphaAsc", + "target": "settings.items.tagSortOrder.options.alphaAsc", + "decision": "retain", + "display": "A to Z", + "owner": { + "page": "Tags & properties", + "group": "Tags" + }, + "rationale": "The contextual alias already describes the displayed choice “A to Z”." + }, + { + "source": "settings.items.tagSortOrder.options.alphaDesc", + "target": "settings.items.tagSortOrder.options.alphaDesc", + "decision": "retain", + "display": "Z to A", + "owner": { + "page": "Tags & properties", + "group": "Tags" + }, + "rationale": "The contextual alias already describes the displayed choice “Z to A”." + }, + { + "source": "settings.items.tagSortOrder.options.frequency", + "target": "settings.items.tagSortOrder.options.frequency", + "decision": "retain", + "display": "Frequency", + "owner": { + "page": "Tags & properties", + "group": "Tags" + }, + "rationale": "The contextual alias already describes the displayed choice “Frequency”." + }, + { + "source": "settings.items.tagSortOrder.options.lowToHigh", + "target": "settings.items.tagSortOrder.options.lowToHigh", + "decision": "retain", + "display": "low to high", + "owner": { + "page": "Tags & properties", + "group": "Tags" + }, + "rationale": "The contextual alias already describes the displayed choice “low to high”." + }, + { + "source": "settings.items.tagSortOrder.options.highToLow", + "target": "settings.items.tagSortOrder.options.highToLow", + "decision": "retain", + "display": "high to low", + "owner": { + "page": "Tags & properties", + "group": "Tags" + }, + "rationale": "The contextual alias already describes the displayed choice “high to low”." + }, + { + "source": "settings.items.propertySortOrder.options.alphaAsc", + "target": "settings.items.propertySortOrder.options.alphaAsc", + "decision": "retain", + "display": "A to Z", + "owner": { + "page": "Tags & properties", + "group": "Properties" + }, + "rationale": "The contextual alias already describes the displayed choice “A to Z”." + }, + { + "source": "settings.items.propertySortOrder.options.alphaDesc", + "target": "settings.items.propertySortOrder.options.alphaDesc", + "decision": "retain", + "display": "Z to A", + "owner": { + "page": "Tags & properties", + "group": "Properties" + }, + "rationale": "The contextual alias already describes the displayed choice “Z to A”." + }, + { + "source": "settings.items.propertySortOrder.options.frequency", + "target": "settings.items.propertySortOrder.options.frequency", + "decision": "retain", + "display": "Frequency", + "owner": { + "page": "Tags & properties", + "group": "Properties" + }, + "rationale": "The contextual alias already describes the displayed choice “Frequency”." + }, + { + "source": "settings.items.propertySortOrder.options.lowToHigh", + "target": "settings.items.propertySortOrder.options.lowToHigh", + "decision": "retain", + "display": "low to high", + "owner": { + "page": "Tags & properties", + "group": "Properties" + }, + "rationale": "The contextual alias already describes the displayed choice “low to high”." + }, + { + "source": "settings.items.propertySortOrder.options.highToLow", + "target": "settings.items.propertySortOrder.options.highToLow", + "decision": "retain", + "display": "high to low", + "owner": { + "page": "Tags & properties", + "group": "Properties" + }, + "rationale": "The contextual alias already describes the displayed choice “high to low”." + }, + { + "source": "settings.items.folderNoteType.options.ask", + "target": "settings.items.folderNoteType.options.ask", + "decision": "retain", + "display": "Ask when creating", + "owner": { + "page": "Folders & folder notes", + "group": "Folder note files" + }, + "rationale": "The contextual alias already describes the displayed choice “Ask when creating”." + }, + { + "source": "settings.items.folderNoteType.options.markdown", + "target": "settings.items.folderNoteType.options.markdown", + "decision": "retain", + "display": "Markdown", + "owner": { + "page": "Folders & folder notes", + "group": "Folder note files" + }, + "rationale": "The contextual alias already describes the displayed choice “Markdown”." + }, + { + "source": "settings.items.folderNoteType.options.canvas", + "target": "settings.items.folderNoteType.options.canvas", + "decision": "retain", + "display": "Canvas", + "owner": { + "page": "Folders & folder notes", + "group": "Folder note files" + }, + "rationale": "The contextual alias already describes the displayed choice “Canvas”." + }, + { + "source": "settings.items.folderNoteType.options.base", + "target": "settings.items.folderNoteType.options.base", + "decision": "retain", + "display": "Base", + "owner": { + "page": "Folders & folder notes", + "group": "Folder note files" + }, + "rationale": "The contextual alias already describes the displayed choice “Base”." + }, + { + "source": "settings.items.folderNoteOpenLocation.options.currentTab", + "target": "settings.items.folderNoteOpenLocation.options.currentTab", + "decision": "retain", + "display": "Current tab", + "owner": { + "page": "Folders & folder notes", + "group": "Folder notes" + }, + "rationale": "The contextual alias already describes the displayed choice “Current tab”." + }, + { + "source": "settings.items.folderNoteOpenLocation.options.newTab", + "target": "settings.items.folderNoteOpenLocation.options.newTab", + "decision": "retain", + "display": "New tab", + "owner": { + "page": "Folders & folder notes", + "group": "Folder notes" + }, + "rationale": "The contextual alias already describes the displayed choice “New tab”." + }, + { + "source": "settings.items.folderNoteOpenLocation.options.rightSidebar", + "target": "settings.items.folderNoteOpenLocation.options.rightSidebar", + "decision": "retain", + "display": "Right sidebar", + "owner": { + "page": "Folders & folder notes", + "group": "Folder notes" + }, + "rationale": "The contextual alias already describes the displayed choice “Right sidebar”." + }, + { + "source": "settings.items.deleteAttachments.options.ask", + "target": "settings.items.deleteAttachments.options.ask", + "decision": "retain", + "display": "Ask each time", + "owner": { + "page": "File operations", + "group": null + }, + "rationale": "The contextual alias already describes the displayed choice “Ask each time”." + }, + { + "source": "settings.items.deleteAttachments.options.always", + "target": "settings.items.deleteAttachments.options.always", + "decision": "retain", + "display": "Always", + "owner": { + "page": "File operations", + "group": null + }, + "rationale": "The contextual alias already describes the displayed choice “Always”." + }, + { + "source": "settings.items.deleteAttachments.options.never", + "target": "settings.items.deleteAttachments.options.never", + "decision": "retain", + "display": "Never", + "owner": { + "page": "File operations", + "group": null + }, + "rationale": "The contextual alias already describes the displayed choice “Never”." + }, + { + "source": "settings.items.moveFileConflicts.options.ask", + "target": "settings.items.moveFileConflicts.options.ask", + "decision": "retain", + "display": "Ask each time", + "owner": { + "page": "File operations", + "group": null + }, + "rationale": "The contextual alias already describes the displayed choice “Ask each time”." + }, + { + "source": "settings.items.moveFileConflicts.options.rename", + "target": "settings.items.moveFileConflicts.options.rename", + "decision": "retain", + "display": "Always rename", + "owner": { + "page": "File operations", + "group": null + }, + "rationale": "The contextual alias already describes the displayed choice “Always rename”." + } + ] +} diff --git a/images/version-banners/3.3.3.jpg b/images/version-banners/3.3.3.jpg index a21633429..e468465f0 100644 Binary files a/images/version-banners/3.3.3.jpg and b/images/version-banners/3.3.3.jpg differ diff --git a/package.json b/package.json index bfeee6617..5a0f4e32a 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "dev": "node scripts/build-icons.mjs && node scripts/build-styles.mjs && node esbuild.config.mjs", "build:icons": "node scripts/build-icons.mjs", "build:styles": "node scripts/build-styles.mjs", - "build": "node scripts/build-styles.mjs && tsc -noEmit -skipLibCheck && node esbuild.config.mjs production", + "check:strings": "node scripts/check-unused-strings.mjs --check", + "build": "node scripts/build-styles.mjs && npm run check:strings && tsc -noEmit -skipLibCheck && node esbuild.config.mjs production", "version": "node version-bump.mjs && git add manifest.json versions.json", "lint": "eslint \"src/**/*.{ts,tsx}\" \"tests/**/*.{ts,tsx}\"", "lint:styles": "npm run build:styles && stylelint \"src/styles/**/*.css\" \"styles.css\" --max-warnings=0", diff --git a/scripts/README.md b/scripts/README.md index 7ecc62104..0a9c0725e 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -21,6 +21,7 @@ powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\build.ps1 - Generates icon constants from `icon.svg` - Runs ESLint to check for code quality issues - Runs Stylelint and regenerates `styles.css` +- Checks for unused localization keys and locale schema mismatches - Validates TypeScript types - Checks for unused imports and dead code - Formats code with Prettier @@ -33,7 +34,7 @@ powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\build.ps1 - The build MUST complete with zero errors and zero warnings - The build summary must show "✅ No warnings" -- Any lint, type-check, test, or warning failure will abort the deployment +- Any lint, localization, type-check, test, or warning failure will abort the deployment - Node.js `>=24.0.0` is required by `package.json` ## build-icons.mjs @@ -177,12 +178,15 @@ cp main.js manifest.json styles.css ~/Documents/ObsidianVault/.obsidian/plugins/ Finds unused i18n keys in `src/i18n/locales/en.ts` by scanning for `strings.` usage across `src` (excluding `src/i18n/locales`). Also validates that every locale file matches the English locale shape. ```bash +npm run check:strings node scripts/check-unused-strings.mjs # Report and prompt before removing unused keys node scripts/check-unused-strings.mjs --check # Exit non-zero if unused keys or locale shape issues exist node scripts/check-unused-strings.mjs --fix # Remove unused keys without prompting node scripts/check-unused-strings.mjs --project-root /path/to/project-root ``` +`npm run build` runs `npm run check:strings` before TypeScript validation and bundling. This also covers the main build scripts and release workflow. + To keep an intentionally dynamic key, add an allowlist comment: ```ts diff --git a/scripts/compare-locale-strings.mjs b/scripts/compare-locale-strings.mjs new file mode 100644 index 000000000..4b1bd3d25 --- /dev/null +++ b/scripts/compare-locale-strings.mjs @@ -0,0 +1,847 @@ +#!/usr/bin/env node +/* + * Notebook Navigator - Plugin for Obsidian + * Copyright (c) 2025-2026 Johan Sanneblad + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +import { execFile } from 'node:child_process'; +import { promises as fs } from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { promisify } from 'node:util'; +import * as ts from 'typescript'; + +const execFileAsync = promisify(execFile); +const filename = fileURLToPath(import.meta.url); +const dirname = path.dirname(filename); +const DEFAULT_PROJECT_ROOT = path.resolve(dirname, '..'); +const LOCALES_RELATIVE_DIR = path.join('src', 'i18n', 'locales'); +const PLACEHOLDER_REGEX = /\{([a-zA-Z_][a-zA-Z0-9_]*)\}/g; +const NESTED_IDENTIFIER_FAMILIES = new Set(['options', 'directions', 'dateDirections', 'textDirections', 'fields', 'families']); +const OPERATION_KINDS = new Set(['move', 'split', 'fanOut', 'copy']); +const VALUE_KINDS = new Set(['leaf', 'array', 'function']); + +function printUsage() { + console.log(`Usage: node scripts/compare-locale-strings.mjs --manifest [--base-ref | --base-dir ] [--project-root ] + +Compares working-tree locale values with a baseline after applying an explicit +move, split, fan-out, copy, retain, and approved-addition manifest. + +Options: + --manifest Manifest path, relative to the project root by default. + --base-ref Read baseline locales from a Git ref. Overrides manifest baselineRef. + --base-dir Read baseline locales from a directory. Intended for focused tests. + --project-root Working-tree project root. Defaults to the repository root. + -h, --help Show this help message.`); +} + +function parseArgs(argv) { + const options = { + projectRoot: DEFAULT_PROJECT_ROOT, + manifestPath: null, + baseRef: null, + baseDir: null, + help: false + }; + + for (let index = 0; index < argv.length; index++) { + const arg = argv[index]; + if (arg === '-h' || arg === '--help') { + options.help = true; + continue; + } + + const [name, inlineValue] = arg.split('=', 2); + if (name !== '--manifest' && name !== '--base-ref' && name !== '--base-dir' && name !== '--project-root') { + throw new Error(`Unknown option: ${arg}`); + } + + const value = inlineValue ?? argv[index + 1]; + if (!value) { + throw new Error(`Missing value for ${name}.`); + } + if (inlineValue === undefined) { + index++; + } + + if (name === '--manifest') { + options.manifestPath = value; + } else if (name === '--base-ref') { + options.baseRef = value; + } else if (name === '--base-dir') { + options.baseDir = path.resolve(value); + } else { + options.projectRoot = path.resolve(value); + } + } + + if (!options.help && !options.manifestPath) { + throw new Error('Missing required --manifest path.'); + } + if (options.baseRef && options.baseDir) { + throw new Error('Use either --base-ref or --base-dir, not both.'); + } + + return options; +} + +function isRecord(value) { + return typeof value === 'object' && value !== null && !Array.isArray(value); +} + +function requireString(value, label) { + if (typeof value !== 'string' || value.length === 0) { + throw new Error(`${label} must be a non-empty string.`); + } + return value; +} + +function requireStringArray(value, label, minimumLength = 0) { + if (!Array.isArray(value) || value.length < minimumLength || value.some(item => typeof item !== 'string' || item.length === 0)) { + throw new Error(`${label} must be an array of at least ${minimumLength} non-empty string(s).`); + } + return value; +} + +function normalizeManifestPath(value, label) { + const normalized = requireString(value, label).replace(/^strings\./, ''); + if (normalized.startsWith('.') || normalized.endsWith('.') || normalized.includes('..')) { + throw new Error(`${label} is not a valid localization path: ${value}`); + } + return normalized; +} + +function parseManifest(rawManifest) { + if (!isRecord(rawManifest)) { + throw new Error('Manifest root must be an object.'); + } + if (rawManifest.schemaVersion !== 1) { + throw new Error('Manifest schemaVersion must be 1.'); + } + + const scopePrefixes = requireStringArray(rawManifest.scopePrefixes, 'manifest.scopePrefixes', 1).map((value, index) => + normalizeManifestPath(value, `manifest.scopePrefixes[${index}]`) + ); + const operationsValue = rawManifest.operations ?? []; + if (!Array.isArray(operationsValue)) { + throw new Error('manifest.operations must be an array.'); + } + + const operationSources = new Set(); + const operations = operationsValue.map((value, index) => { + if (!isRecord(value)) { + throw new Error(`manifest.operations[${index}] must be an object.`); + } + const kind = requireString(value.kind, `manifest.operations[${index}].kind`); + if (!OPERATION_KINDS.has(kind)) { + throw new Error(`manifest.operations[${index}].kind must be move, split, fanOut, or copy.`); + } + const source = normalizeManifestPath(value.source, `manifest.operations[${index}].source`); + const minimumTargets = kind === 'fanOut' ? 2 : 1; + const targets = requireStringArray(value.targets, `manifest.operations[${index}].targets`, minimumTargets).map( + (target, targetIndex) => normalizeManifestPath(target, `manifest.operations[${index}].targets[${targetIndex}]`) + ); + if ((kind === 'move' || kind === 'split') && targets.length !== 1) { + throw new Error(`manifest.operations[${index}] ${kind} operation must have exactly one target.`); + } + if (new Set(targets).size !== targets.length) { + throw new Error(`manifest.operations[${index}] contains duplicate targets.`); + } + if (operationSources.has(source)) { + throw new Error(`Manifest contains duplicate operation source: ${source}`); + } + operationSources.add(source); + return { kind, source, targets }; + }); + + const retainsValue = rawManifest.retains ?? []; + const retains = requireStringArray(retainsValue, 'manifest.retains').map((value, index) => + normalizeManifestPath(value, `manifest.retains[${index}]`) + ); + if (new Set(retains).size !== retains.length) { + throw new Error('manifest.retains contains duplicate paths.'); + } + for (const retainedPath of retains) { + if (operationSources.has(retainedPath)) { + throw new Error(`Manifest path is both an operation source and a retain: ${retainedPath}`); + } + } + + const additionsValue = rawManifest.approvedAdditions ?? []; + if (!Array.isArray(additionsValue)) { + throw new Error('manifest.approvedAdditions must be an array.'); + } + const additionPaths = new Set(); + const approvedAdditions = additionsValue.map((value, index) => { + if (!isRecord(value)) { + throw new Error(`manifest.approvedAdditions[${index}] must be an object.`); + } + const additionPath = normalizeManifestPath(value.path, `manifest.approvedAdditions[${index}].path`); + if (additionPaths.has(additionPath)) { + throw new Error(`manifest.approvedAdditions contains duplicate path: ${additionPath}`); + } + additionPaths.add(additionPath); + + let kind = null; + if (value.kind !== undefined) { + kind = requireString(value.kind, `manifest.approvedAdditions[${index}].kind`); + if (!VALUE_KINDS.has(kind)) { + throw new Error(`manifest.approvedAdditions[${index}].kind must be leaf, array, or function.`); + } + } + const placeholders = + value.placeholders === undefined + ? null + : requireStringArray(value.placeholders, `manifest.approvedAdditions[${index}].placeholders`).slice().sort(); + return { path: additionPath, kind, placeholders }; + }); + + const baselineRef = rawManifest.baselineRef === undefined ? null : requireString(rawManifest.baselineRef, 'manifest.baselineRef'); + const semanticReview = + rawManifest.semanticReview === undefined ? null : requireString(rawManifest.semanticReview, 'manifest.semanticReview'); + + return { baselineRef, scopePrefixes, operations, retains, approvedAdditions, semanticReview }; +} + +function getPropertyName(name) { + if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) { + return name.text; + } + return null; +} + +function findExportedStringsObject(sourceFile) { + for (const statement of sourceFile.statements) { + if (!ts.isVariableStatement(statement)) { + continue; + } + const isExported = statement.modifiers?.some(modifier => modifier.kind === ts.SyntaxKind.ExportKeyword); + if (!isExported) { + continue; + } + for (const declaration of statement.declarationList.declarations) { + if ( + ts.isIdentifier(declaration.name) && + declaration.name.text.startsWith('STRINGS_') && + declaration.initializer && + ts.isObjectLiteralExpression(declaration.initializer) + ) { + return declaration.initializer; + } + } + } + throw new Error(`No exported STRINGS_* object literal found in ${sourceFile.fileName}`); +} + +function collectPlaceholders(node) { + const placeholders = []; + + function collectFromText(text) { + let match = PLACEHOLDER_REGEX.exec(text); + while (match) { + placeholders.push(match[1]); + match = PLACEHOLDER_REGEX.exec(text); + } + PLACEHOLDER_REGEX.lastIndex = 0; + } + + function visit(current) { + if ( + ts.isStringLiteral(current) || + ts.isNoSubstitutionTemplateLiteral(current) || + current.kind === ts.SyntaxKind.TemplateHead || + current.kind === ts.SyntaxKind.TemplateMiddle || + current.kind === ts.SyntaxKind.TemplateTail + ) { + collectFromText(current.text); + } + ts.forEachChild(current, visit); + } + + visit(node); + return placeholders.sort(); +} + +// Syntax-tree serialization ignores formatting and quote style while retaining operators, +// function signatures, template expressions, and translated literal values. +function serializeSyntaxNode(node, sourceFile) { + if ( + ts.isStringLiteral(node) || + ts.isNoSubstitutionTemplateLiteral(node) || + node.kind === ts.SyntaxKind.TemplateHead || + node.kind === ts.SyntaxKind.TemplateMiddle || + node.kind === ts.SyntaxKind.TemplateTail + ) { + return [node.kind, node.text]; + } + if (ts.isIdentifier(node) || ts.isNumericLiteral(node)) { + return [node.kind, node.text]; + } + + const children = node.getChildren(sourceFile); + if (children.length === 0) { + return [node.kind, node.getText(sourceFile)]; + } + return [node.kind, children.map(child => serializeSyntaxNode(child, sourceFile))]; +} + +function canonicalizeExpression(expression, sourceFile) { + return JSON.stringify(serializeSyntaxNode(expression, sourceFile)); +} + +function getValueKind(expression) { + if (ts.isArrayLiteralExpression(expression)) { + return 'array'; + } + if (ts.isArrowFunction(expression) || ts.isFunctionExpression(expression)) { + return 'function'; + } + return 'leaf'; +} + +function parseLocaleSource(source, localeLabel) { + const sourceFile = ts.createSourceFile(localeLabel, source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS); + const stringsObject = findExportedStringsObject(sourceFile); + const leaves = new Map(); + const nodes = new Set(); + + function visitObject(objectLiteral, prefix) { + for (const property of objectLiteral.properties) { + if (!ts.isPropertyAssignment(property)) { + throw new Error(`${localeLabel} contains an unsupported non-property assignment under ${prefix || ''}.`); + } + const key = getPropertyName(property.name); + if (!key) { + throw new Error(`${localeLabel} contains an unsupported computed localization key under ${prefix || ''}.`); + } + const keyPath = prefix ? `${prefix}.${key}` : key; + if (nodes.has(keyPath)) { + throw new Error(`${localeLabel} contains duplicate localization path: ${keyPath}`); + } + nodes.add(keyPath); + + if (ts.isObjectLiteralExpression(property.initializer)) { + visitObject(property.initializer, keyPath); + continue; + } + + leaves.set(keyPath, { + kind: getValueKind(property.initializer), + value: canonicalizeExpression(property.initializer, sourceFile), + placeholders: collectPlaceholders(property.initializer) + }); + } + } + + visitObject(stringsObject, ''); + return { leaves, nodes }; +} + +function isAtOrBelow(candidate, prefix) { + return candidate === prefix || candidate.startsWith(`${prefix}.`); +} + +function isInScope(candidate, scopePrefixes) { + return scopePrefixes.some(prefix => isAtOrBelow(candidate, prefix)); +} + +function mapTargetPath(sourcePrefix, targetPrefix, baselinePath) { + return `${targetPrefix}${baselinePath.slice(sourcePrefix.length)}`; +} + +function createRules(manifest) { + const rules = [ + ...manifest.operations.map(operation => ({ type: 'operation', source: operation.source, operation })), + ...manifest.retains.map(source => ({ type: 'retain', source })) + ]; + return rules.sort((left, right) => right.source.length - left.source.length || left.source.localeCompare(right.source)); +} + +function findRuleForPath(candidate, rules) { + // A nested alias move must override its enclosing item move, while all other leaves continue + // to inherit the enclosing rule. Exact duplicate sources are rejected while parsing the manifest. + const matches = rules.filter(rule => isAtOrBelow(candidate, rule.source)); + if (matches.length === 0) { + return null; + } + const mostSpecificLength = matches[0].source.length; + const mostSpecific = matches.filter(rule => rule.source.length === mostSpecificLength); + if (mostSpecific.length !== 1) { + throw new Error( + `Manifest has ambiguous equally specific rules for ${candidate}: ${mostSpecific.map(rule => rule.source).join(', ')}` + ); + } + return mostSpecific[0]; +} + +function getExpectedTargets(baselinePath, rule) { + if (!rule || rule.type === 'retain') { + return [baselinePath]; + } + const operationTargets = rule.operation.targets.map(target => mapTargetPath(rule.source, target, baselinePath)); + // Copies produce the new target without removing the source path. + return rule.operation.kind === 'copy' ? [baselinePath, ...operationTargets] : operationTargets; +} + +function buildExpectedLeaves(localeLabel, baselineLocale, manifest, rules) { + const expected = new Map(); + const matchedRules = new Set(); + const errors = []; + + for (const [baselinePath, value] of baselineLocale.leaves) { + const rule = findRuleForPath(baselinePath, rules); + if (rule) { + matchedRules.add(rule.source); + } else if (isInScope(baselinePath, manifest.scopePrefixes)) { + errors.push(`${localeLabel}: baseline path is not mapped or retained: ${baselinePath}`); + continue; + } + + // Paths outside the declared refactor scope are implicit identity mappings. Within scope, + // every leaf must be covered explicitly so a missed settings key cannot pass silently. + + for (const targetPath of getExpectedTargets(baselinePath, rule)) { + const existing = expected.get(targetPath); + if (existing) { + errors.push(`${localeLabel}: target collision at ${targetPath} from ${existing.sourcePath} and ${baselinePath}`); + continue; + } + expected.set(targetPath, { sourcePath: baselinePath, value }); + } + } + + return { expected, matchedRules, errors }; +} + +function valuesEqual(left, right) { + return left === right; +} + +function arraysEqual(left, right) { + return left.length === right.length && left.every((value, index) => value === right[index]); +} + +function findApprovedAddition(candidate, approvedAdditions) { + const matches = approvedAdditions.filter(addition => isAtOrBelow(candidate, addition.path)); + if (matches.length === 0) { + return null; + } + matches.sort((left, right) => right.path.length - left.path.length); + return matches[0]; +} + +function compareLocale(localeLabel, baselineLocale, workingLocale, manifest, rules) { + const { expected, matchedRules, errors } = buildExpectedLeaves(localeLabel, baselineLocale, manifest, rules); + const matchedAdditions = new Set(); + + for (const [targetPath, expectation] of expected) { + const actual = workingLocale.leaves.get(targetPath); + if (!actual) { + errors.push(`${localeLabel}: missing target ${targetPath} mapped from ${expectation.sourcePath}`); + continue; + } + if (actual.kind !== expectation.value.kind) { + errors.push( + `${localeLabel}: value kind changed at ${targetPath} (${actual.kind} != ${expectation.value.kind}, source ${expectation.sourcePath})` + ); + continue; + } + if (!valuesEqual(actual.value, expectation.value.value)) { + errors.push(`${localeLabel}: translated value changed at ${targetPath} (source ${expectation.sourcePath})`); + } + if (!arraysEqual(actual.placeholders, expectation.value.placeholders)) { + errors.push( + `${localeLabel}: placeholders changed at ${targetPath} (${actual.placeholders.join(', ')} != ${expectation.value.placeholders.join(', ')})` + ); + } + } + + for (const [workingPath, value] of workingLocale.leaves) { + if (expected.has(workingPath)) { + continue; + } + const addition = findApprovedAddition(workingPath, manifest.approvedAdditions); + if (!addition) { + errors.push(`${localeLabel}: unapproved new path: ${workingPath}`); + continue; + } + matchedAdditions.add(addition.path); + if (addition.kind && addition.kind !== value.kind) { + errors.push(`${localeLabel}: approved addition ${workingPath} has kind ${value.kind}, expected ${addition.kind}`); + } + if (addition.placeholders && !arraysEqual(addition.placeholders, value.placeholders)) { + errors.push( + `${localeLabel}: approved addition ${workingPath} has placeholders ${value.placeholders.join(', ')}, expected ${addition.placeholders.join(', ')}` + ); + } + } + + return { expectedCount: expected.size, matchedRules, matchedAdditions, errors }; +} + +async function readJson(filePath, label) { + let source; + try { + source = await fs.readFile(filePath, 'utf8'); + } catch (error) { + throw new Error(`Could not read ${label} at ${filePath}: ${error instanceof Error ? error.message : String(error)}`); + } + try { + return JSON.parse(source); + } catch (error) { + throw new Error(`Could not parse ${label} at ${filePath}: ${error instanceof Error ? error.message : String(error)}`); + } +} + +async function listLocaleFiles(directory) { + const entries = await fs.readdir(directory, { withFileTypes: true }); + return entries + .filter(entry => entry.isFile() && entry.name.endsWith('.ts')) + .map(entry => entry.name) + .sort((left, right) => left.localeCompare(right)); +} + +async function loadWorkingLocales(projectRoot) { + const localeDir = path.join(projectRoot, LOCALES_RELATIVE_DIR); + const files = await listLocaleFiles(localeDir); + const locales = new Map(); + for (const file of files) { + const source = await fs.readFile(path.join(localeDir, file), 'utf8'); + locales.set(file, parseLocaleSource(source, file)); + } + return locales; +} + +async function loadBaselineLocalesFromDirectory(baseDir) { + const candidateLocaleDir = path.join(baseDir, LOCALES_RELATIVE_DIR); + let localeDir = candidateLocaleDir; + try { + await fs.access(candidateLocaleDir); + } catch { + // Fixture tests may point directly at a locale directory instead of a project root. + localeDir = baseDir; + } + const files = await listLocaleFiles(localeDir); + const locales = new Map(); + for (const file of files) { + const source = await fs.readFile(path.join(localeDir, file), 'utf8'); + locales.set(file, parseLocaleSource(source, `baseline:${file}`)); + } + return locales; +} + +async function loadBaselineLocalesFromGit(projectRoot, baseRef) { + const localePath = LOCALES_RELATIVE_DIR.split(path.sep).join('/'); + let stdout; + try { + ({ stdout } = await execFileAsync('git', ['ls-tree', '-r', '--name-only', baseRef, '--', localePath], { + cwd: projectRoot, + encoding: 'utf8', + maxBuffer: 10 * 1024 * 1024 + })); + } catch (error) { + throw new Error(`Could not list baseline locales at ${baseRef}: ${error instanceof Error ? error.message : String(error)}`); + } + + const files = String(stdout) + .split(/\r?\n/) + .filter(value => value.endsWith('.ts')) + .map(value => path.posix.basename(value)) + .sort((left, right) => left.localeCompare(right)); + if (files.length === 0) { + throw new Error(`No baseline locale files found at ${baseRef}:${localePath}`); + } + + const locales = new Map(); + for (const file of files) { + const gitPath = `${localePath}/${file}`; + let source; + try { + ({ stdout: source } = await execFileAsync('git', ['show', `${baseRef}:${gitPath}`], { + cwd: projectRoot, + encoding: 'utf8', + maxBuffer: 20 * 1024 * 1024 + })); + } catch (error) { + throw new Error(`Could not read baseline locale ${gitPath}: ${error instanceof Error ? error.message : String(error)}`); + } + locales.set(file, parseLocaleSource(String(source), `baseline:${file}`)); + } + return locales; +} + +function compareLocaleFileSets(baselineLocales, workingLocales) { + const baselineFiles = Array.from(baselineLocales.keys()); + const workingFiles = new Set(workingLocales.keys()); + const missing = baselineFiles.filter(file => !workingFiles.has(file)); + const extra = Array.from(workingFiles).filter(file => !baselineLocales.has(file)); + const errors = []; + if (missing.length > 0) { + errors.push(`Missing working locale files: ${missing.join(', ')}`); + } + if (extra.length > 0) { + errors.push(`Unapproved working locale files: ${extra.join(', ')}`); + } + return errors; +} + +function getSemanticReviewRows(rawReview) { + if (!isRecord(rawReview) || rawReview.schemaVersion !== 1) { + throw new Error('Semantic review schemaVersion must be 1.'); + } + if (!Array.isArray(rawReview.items) || !Array.isArray(rawReview.nestedIdentifiers)) { + throw new Error('Semantic review must contain items and nestedIdentifiers arrays.'); + } + return { items: rawReview.items, nestedIdentifiers: rawReview.nestedIdentifiers }; +} + +function parseSemanticRow(value, label) { + if (!isRecord(value)) { + throw new Error(`${label} must be an object.`); + } + const source = normalizeManifestPath(value.source, `${label}.source`); + const decision = requireString(value.decision, `${label}.decision`); + if (decision !== 'rename' && decision !== 'retain') { + throw new Error(`${label}.decision must be rename or retain.`); + } + + let targets; + if (value.target !== undefined && value.targets !== undefined) { + throw new Error(`${label} must use either target or targets, not both.`); + } + if (value.targets !== undefined) { + targets = requireStringArray(value.targets, `${label}.targets`, 1).map((target, index) => + normalizeManifestPath(target, `${label}.targets[${index}]`) + ); + } else { + targets = [normalizeManifestPath(value.target, `${label}.target`)]; + } + if (new Set(targets).size !== targets.length) { + throw new Error(`${label} contains duplicate targets.`); + } + return { source, targets, decision }; +} + +function getExpectedSemanticSources(englishLocale) { + const itemSources = new Set(); + const nestedSources = new Set(); + for (const nodePath of englishLocale.nodes) { + const segments = nodePath.split('.'); + if (segments[0] !== 'settings' || segments[1] !== 'items') { + continue; + } + if (segments.length === 3) { + itemSources.add(nodePath); + continue; + } + if (segments.length === 5 && NESTED_IDENTIFIER_FAMILIES.has(segments[3])) { + nestedSources.add(nodePath); + } + } + return { itemSources, nestedSources }; +} + +function validateReviewCoverage(label, rows, expectedSources, seenSources, seenTargets) { + const parsedRows = rows.map((row, index) => parseSemanticRow(row, `${label}[${index}]`)); + for (const row of parsedRows) { + if (seenSources.has(row.source)) { + throw new Error(`Semantic review contains duplicate source: ${row.source}`); + } + seenSources.add(row.source); + for (const target of row.targets) { + if (seenTargets.has(target)) { + throw new Error(`Semantic review contains duplicate target: ${target}`); + } + seenTargets.add(target); + } + } + + const actualSources = new Set(parsedRows.map(row => row.source)); + const missing = Array.from(expectedSources).filter(source => !actualSources.has(source)); + const extra = Array.from(actualSources).filter(source => !expectedSources.has(source)); + if (missing.length > 0 || extra.length > 0) { + const details = []; + if (missing.length > 0) { + details.push(`missing ${missing.join(', ')}`); + } + if (extra.length > 0) { + details.push(`extra ${extra.join(', ')}`); + } + throw new Error(`Semantic review ${label} coverage mismatch: ${details.join('; ')}`); + } + return parsedRows; +} + +function validateSemanticRowMapping(row, englishLocale, manifest, rules) { + const sourceLeaves = Array.from(englishLocale.leaves.keys()).filter(leafPath => isAtOrBelow(leafPath, row.source)); + if (sourceLeaves.length === 0) { + throw new Error(`Semantic review source has no baseline leaves: ${row.source}`); + } + + const projections = sourceLeaves.map(sourceLeaf => { + const rule = findRuleForPath(sourceLeaf, rules); + return { sourceLeaf, targets: getExpectedTargets(sourceLeaf, rule) }; + }); + const producedTargets = projections.flatMap(projection => projection.targets); + for (const projection of projections) { + // Each source leaf must reach the reviewed target. Auxiliary outputs are permitted because + // a retained parent can contain a descendant copied into a page-owned group. + if (!projection.targets.some(producedTarget => row.targets.some(target => isAtOrBelow(producedTarget, target)))) { + throw new Error( + `Semantic review target mismatch for ${row.source}: ${projection.sourceLeaf} does not map under ${row.targets.join(', ')}` + ); + } + } + for (const target of row.targets) { + if (!producedTargets.some(producedTarget => isAtOrBelow(producedTarget, target))) { + throw new Error(`Semantic review target ${target} receives no values from ${row.source}`); + } + } + + const sourceAlias = row.source.slice(row.source.lastIndexOf('.') + 1); + const targetAliases = row.targets.map(target => target.slice(target.lastIndexOf('.') + 1)); + const expectedDecision = row.targets.length === 1 && targetAliases[0] === sourceAlias ? 'retain' : 'rename'; + if (row.decision !== expectedDecision) { + throw new Error( + `Semantic review decision mismatch for ${row.source}: ${row.decision} does not match target alias decision ${expectedDecision}` + ); + } + + if (!isInScope(row.source, manifest.scopePrefixes)) { + throw new Error(`Semantic review source is outside manifest scope: ${row.source}`); + } +} + +async function validateSemanticReview(projectRoot, reviewPathValue, englishLocale, manifest, rules) { + if (!reviewPathValue) { + return 0; + } + const reviewPath = path.isAbsolute(reviewPathValue) ? reviewPathValue : path.join(projectRoot, reviewPathValue); + const rawReview = await readJson(reviewPath, 'semantic review'); + const review = getSemanticReviewRows(rawReview); + const expectedSources = getExpectedSemanticSources(englishLocale); + const seenSources = new Set(); + const seenTargets = new Set(); + const itemRows = validateReviewCoverage('items', review.items, expectedSources.itemSources, seenSources, seenTargets); + const nestedRows = validateReviewCoverage( + 'nestedIdentifiers', + review.nestedIdentifiers, + expectedSources.nestedSources, + seenSources, + seenTargets + ); + for (const row of [...itemRows, ...nestedRows]) { + validateSemanticRowMapping(row, englishLocale, manifest, rules); + } + return itemRows.length + nestedRows.length; +} + +async function main() { + const options = parseArgs(process.argv.slice(2)); + if (options.help) { + printUsage(); + return; + } + + const manifestPath = path.isAbsolute(options.manifestPath) + ? options.manifestPath + : path.join(options.projectRoot, options.manifestPath); + const manifest = parseManifest(await readJson(manifestPath, 'locale comparison manifest')); + const baseRef = options.baseRef ?? manifest.baselineRef; + if (!options.baseDir && !baseRef) { + throw new Error('Provide --base-ref, --base-dir, or manifest.baselineRef.'); + } + + const [baselineLocales, workingLocales] = await Promise.all([ + options.baseDir ? loadBaselineLocalesFromDirectory(options.baseDir) : loadBaselineLocalesFromGit(options.projectRoot, baseRef), + loadWorkingLocales(options.projectRoot) + ]); + const fileSetErrors = compareLocaleFileSets(baselineLocales, workingLocales); + if (fileSetErrors.length > 0) { + throw new Error(`Locale comparison failed:\n- ${fileSetErrors.join('\n- ')}`); + } + + const rules = createRules(manifest); + const allErrors = []; + const globallyMatchedRules = new Set(); + const globallyMatchedAdditions = new Set(); + let expectedLeafCount = 0; + + for (const [localeFile, baselineLocale] of baselineLocales) { + const workingLocale = workingLocales.get(localeFile); + const result = compareLocale(localeFile, baselineLocale, workingLocale, manifest, rules); + expectedLeafCount += result.expectedCount; + result.matchedRules.forEach(value => globallyMatchedRules.add(value)); + result.matchedAdditions.forEach(value => globallyMatchedAdditions.add(value)); + allErrors.push(...result.errors); + } + + for (const rule of rules) { + if (!globallyMatchedRules.has(rule.source)) { + allErrors.push(`Manifest rule matches no baseline leaves: ${rule.source}`); + } + } + for (const addition of manifest.approvedAdditions) { + if (!globallyMatchedAdditions.has(addition.path)) { + allErrors.push(`Approved addition matches no working leaves: ${addition.path}`); + } + } + + const englishLocale = baselineLocales.get('en.ts'); + if (!englishLocale) { + allErrors.push('Baseline locales do not contain en.ts.'); + } + + let semanticReviewCount = 0; + if (englishLocale && manifest.semanticReview) { + try { + semanticReviewCount = await validateSemanticReview( + options.projectRoot, + manifest.semanticReview, + englishLocale, + manifest, + rules + ); + } catch (error) { + allErrors.push(error instanceof Error ? error.message : String(error)); + } + } + + if (allErrors.length > 0) { + throw new Error(`Locale comparison failed:\n- ${allErrors.join('\n- ')}`); + } + + const baselineLabel = options.baseDir ? options.baseDir : baseRef; + console.log('Locale string baseline comparison'); + console.log(''); + console.log(`Baseline: ${baselineLabel}`); + console.log(`Manifest: ${path.relative(options.projectRoot, manifestPath) || path.basename(manifestPath)}`); + console.log(`Locales: ${baselineLocales.size}`); + console.log(`Expected leaves: ${expectedLeafCount}`); + console.log(`Operations: ${manifest.operations.length}`); + console.log(`Retains: ${manifest.retains.length}`); + console.log(`Approved additions: ${manifest.approvedAdditions.length}`); + if (manifest.semanticReview) { + console.log(`Semantic review decisions: ${semanticReviewCount}`); + } + console.log(''); + console.log('Locale values: OK'); +} + +main().catch(error => { + process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`); + process.exitCode = 1; +}); diff --git a/src/components/ListPaneAppearanceMenu.tsx b/src/components/ListPaneAppearanceMenu.tsx index d03ba032c..60955af02 100644 --- a/src/components/ListPaneAppearanceMenu.tsx +++ b/src/components/ListPaneAppearanceMenu.tsx @@ -244,6 +244,9 @@ export function showListPaneAppearanceMenu({ }); menu.addSeparator(); + menu.addItem(item => { + item.setTitle(strings.settings.pages.fileDisplay.label).setIcon('lucide-file-text').setDisabled(true); + }); const storedTitleRows = storedFields?.titleRows; const effectiveTitleRows = storedTitleRows ?? settings.fileNameRows; @@ -317,9 +320,6 @@ export function showListPaneAppearanceMenu({ const visibleToggles = contentToggles.filter(toggle => toggle.available); // Property-placed counts render as pills, so the choice is hidden when compact mode hides pills. const textCountAvailable = !isCompact || settings.textCountPlacement !== 'property' || settings.showFilePropertiesInCompactMode; - if (visibleToggles.length > 0 || textCountAvailable) { - menu.addSeparator(); - } visibleToggles.forEach(toggle => { const stored = storedFields?.[toggle.key]; const effective = stored ?? toggle.globalDefault; diff --git a/src/hooks/useListActions.ts b/src/hooks/useListActions.ts index 06cf0be20..db32a03dc 100644 --- a/src/hooks/useListActions.ts +++ b/src/hooks/useListActions.ts @@ -1509,15 +1509,15 @@ export function useListActions({ const isPropertySortActive = currentField === 'property'; const isManualSortActive = isPropertySortActive && isManualSortPropertyKey(settings, currentSortSpec.propertyKey); const sortFieldLabels: Record = { - modified: strings.settings.items.sortNotesBy.fields.modified, - created: strings.settings.items.sortNotesBy.fields.created, - title: strings.settings.items.sortNotesBy.fields.title, - filename: strings.settings.items.sortNotesBy.fields.filename, - property: strings.settings.items.sortNotesBy.fields.property + modified: strings.settings.items.defaultSortOrder.fields.dateEdited, + created: strings.settings.items.defaultSortOrder.fields.dateCreated, + title: strings.settings.items.defaultSortOrder.fields.title, + filename: strings.settings.items.defaultSortOrder.fields.fileName, + property: strings.settings.items.defaultSortOrder.fields.property }; const sortDirectionLabels: Record = { - asc: strings.settings.items.sortNotesBy.directions.asc, - desc: strings.settings.items.sortNotesBy.directions.desc + asc: strings.settings.items.defaultSortOrder.directions.asc, + desc: strings.settings.items.defaultSortOrder.directions.desc }; const getSortFieldLabel = (field: SortField, propertyKey?: string): string => { if (field === 'property') { @@ -1719,7 +1719,7 @@ export function useListActions({ (['custom', 'date'] as const).forEach(option => { addGroupOptionItem( option, - strings.settings.items.groupNotes.options[option], + strings.settings.items.defaultGrouping.options[option], getGroupingIcon(option), isGroupOptionDisabled(option) ); @@ -1730,7 +1730,7 @@ export function useListActions({ if (hasFolderSelection) { addGroupOptionItem( 'folder', - strings.settings.items.groupNotes.options.folder, + strings.settings.items.defaultGrouping.options.folder, getGroupingIcon('folder'), isGroupOptionDisabled('folder') ); diff --git a/src/hooks/useNavigationRootReorder.tsx b/src/hooks/useNavigationRootReorder.tsx index 6e7bdd05b..0f07187f2 100644 --- a/src/hooks/useNavigationRootReorder.tsx +++ b/src/hooks/useNavigationRootReorder.tsx @@ -806,13 +806,13 @@ export function useNavigationRootReorder(options: UseNavigationRootReorderOption }); } else { icon = NOTEBOOK_NAVIGATOR_ICON_ID; - label = strings.settings.sections.folders; + label = strings.navigationPane.folders; } chevronIcon = foldersSectionExpanded ? 'lucide-chevron-down' : 'lucide-chevron-right'; onClick = handleToggleFoldersSection; } else if (identifier === NavigationSectionId.TAGS) { icon = resolveUXIcon(settings.interfaceIcons, 'nav-tags'); - label = strings.settings.sections.tags; + label = strings.navigationPane.tags; chevronIcon = tagsSectionExpanded ? 'lucide-chevron-down' : 'lucide-chevron-right'; onClick = handleToggleTagsSection; } else if (identifier === NavigationSectionId.PROPERTIES) { diff --git a/src/i18n/locales/ar.ts b/src/i18n/locales/ar.ts index 4a5c801dc..732f1cad4 100644 --- a/src/i18n/locales/ar.ts +++ b/src/i18n/locales/ar.ts @@ -74,6 +74,9 @@ export const STRINGS_AR = { shortcutsHeader: 'اختصارات', // Header label for shortcuts section in navigation pane (English: Shortcuts) recentFilesHeader: 'ملفات حديثة', // Header label for recent files section in navigation pane (English: Recent files) properties: 'الخصائص', + folders: 'مجلدات', + tags: 'وسوم', + calendar: 'التقويم', reorderRootFoldersTitle: 'إعادة ترتيب التنقل', reorderRootFoldersHint: 'استخدم الأسهم أو اسحب لإعادة الترتيب', vaultRootLabel: 'الخزنة', @@ -1006,101 +1009,142 @@ export const STRINGS_AR = { exportSuccess: 'تم تصدير تقرير البيانات الوصفية الفاشلة إلى: {filename}', exportFailed: 'فشل تصدير تقرير البيانات الوصفية' }, - sections: { - general: 'عام', - vaultFilters: 'مرشحات العرض', - appearanceBehavior: 'المظهر والسلوك', - navigationPane: 'لوحة التنقل', - calendar: 'التقويم', - fileOperations: 'عمليات الملفات', - icons: 'حزم الأيقونات', - folders: 'مجلدات', - folderNotes: 'ملاحظات المجلد', - folderNoteFiles: 'ملفات ملاحظات المجلد', - foldersAndFolderNotes: 'المجلدات وملاحظات المجلد', - tagsAndProperties: 'الوسوم والخصائص', - tags: 'وسوم', - listPane: 'لوحة القائمة', - notes: 'عرض الملفات', - shortcutsAndRecentFiles: 'الاختصارات والملفات الأخيرة', - advanced: 'متقدم' + index: { + label: 'عام', + description: 'ملاحظات الإصدار والدعم وملف الخزنة وأنواع الملفات ومفاتيح الخصائص.', + groups: { + vaultSetup: 'إعداد الخزنة' + } }, pageGroups: { configuration: 'التكوين', - navigationAndContent: 'لوحة التنقل', - notesAndLists: 'لوحة القائمة', + navigationPane: 'لوحة التنقل', + listPane: 'لوحة القائمة', calendarAndTools: 'التقويم والأدوات' }, - pageDescriptions: { - general: 'ملاحظات الإصدار والدعم وملف الخزنة وأنواع الملفات ومفاتيح الخصائص.', - vaultFilters: 'المجلدات والوسوم والملفات ووسوم الملفات وقواعد الخصائص المخفية.', - appearanceBehavior: 'السلوك والتنقل بلوحة المفاتيح وأزرار الفأرة والمظهر والتنسيق.', - navigationPane: 'التخطيط والمظهر وعدد الملفات وسلوك الطي وألوان قوس قزح.', - shortcuts: 'رؤية الاختصارات والشارات والملفات الأخيرة والعناصر المثبتة.', - calendar: 'عرض التقويم وملاحظات التاريخ والقوالب والإعدادات المحلية وموضع الشريط الجانبي.', - fileOperations: 'قوالب، تأكيدات الحذف والمرفقات وسلوك تعارض نقل الملفات.', - foldersAndFolderNotes: 'عرض المجلدات وملاحظات المجلد وقوالب ملاحظات المجلد وسلوك ملاحظات المجلد.', - tagsProperties: 'أقسام الوسوم والخصائص والأيقونات والفرز والنطاق والوراثة.', - listPane: 'الفرز والتجميع وأوضاع القائمة والملاحظات المثبتة ومعاينات الرسومات.', - frontmatter: 'حقول البيانات الأمامية لأسماء العرض والطوابع الزمنية والأيقونات والألوان.', - notes: 'العناوين ونص المعاينة والصور المميزة والوسوم والخصائص والتواريخ وعدد الكلمات وعدد الأحرف.', - iconPacks: 'أيقونات الواجهة وأيقونات الملفات وإدارة حزم الأيقونات.', - advanced: 'التشخيص وتنظيف البيانات الوصفية والاستيراد/التصدير وإعادة التعيين.' - }, - groups: { - general: { - vaultConfiguration: 'إعداد الخزنة', - templates: 'قوالب', - behavior: 'السلوك', - startup: 'بدء التشغيل', - keyboardNavigation: 'التنقل بلوحة المفاتيح', - mouseButtons: 'أزرار الفأرة', - view: 'المظهر', - icons: 'الأيقونات', - desktopAppearance: 'مظهر سطح المكتب', - mobileAppearance: 'مظهر الهاتف المحمول', - formatting: 'التنسيق' + pages: { + displayFilters: { + label: 'مرشحات العرض', + description: 'المجلدات والوسوم والملفات ووسوم الملفات وقواعد الخصائص المخفية.' + }, + appearanceAndBehavior: { + label: 'المظهر والسلوك', + description: 'السلوك والتنقل بلوحة المفاتيح وأزرار الفأرة والمظهر والتنسيق.', + groups: { + startup: 'بدء التشغيل', + keyboardNavigation: 'التنقل بلوحة المفاتيح', + mouseButtons: 'أزرار الفأرة', + desktopAppearance: 'مظهر سطح المكتب', + mobileAppearance: 'مظهر الهاتف المحمول', + appearance: 'المظهر', + icons: 'الأيقونات', + formatting: 'التنسيق' + } + }, + navigationPane: { + label: 'لوحة التنقل', + description: 'التخطيط والمظهر وعدد الملفات وسلوك الطي وألوان قوس قزح.', + groups: { + appearance: 'المظهر', + banner: 'اللافتة', + collapseItems: 'طي العناصر', + dragAndDrop: 'السحب والإفلات', + fileCounts: 'عدد الملفات', + rainbowColors: 'ألوان قوس قزح' + } + }, + shortcutsAndRecentFiles: { + label: 'الاختصارات والملفات الأخيرة', + description: 'رؤية الاختصارات والشارات والملفات الأخيرة والعناصر المثبتة.', + groups: { + shortcuts: 'اختصارات', + recentFiles: 'ملفات حديثة' + } + }, + foldersAndFolderNotes: { + label: 'المجلدات وملاحظات المجلد', + description: 'عرض المجلدات وملاحظات المجلد وقوالب ملاحظات المجلد وسلوك ملاحظات المجلد.', + groups: { + folders: 'مجلدات', + folderNotes: 'ملاحظات المجلد', + folderNoteFiles: 'ملفات ملاحظات المجلد' + } + }, + tagsAndProperties: { + label: 'الوسوم والخصائص', + description: 'أقسام الوسوم والخصائص والأيقونات والفرز والنطاق والوراثة.', + groups: { + tags: 'وسوم', + properties: 'الخصائص' + } + }, + listPane: { + label: 'لوحة القائمة', + description: 'الفرز والتجميع وأوضاع القائمة والملاحظات المثبتة ومعاينات الرسومات.', + groups: { + appearance: 'المظهر', + sortAndGroup: 'الفرز والتجميع', + groupHeaders: 'رؤوس المجموعات', + manualSort: 'الفرز اليدوي', + pinnedNotes: 'الملاحظات المثبتة', + behavior: 'السلوك', + drawingPreviews: 'معاينات الرسومات' + } + }, + fileOperations: { + label: 'عمليات الملفات', + description: 'قوالب، تأكيدات الحذف والمرفقات وسلوك تعارض نقل الملفات.', + groups: { + templates: 'قوالب' + } + }, + frontmatterFields: { + label: 'حقول البيانات الأمامية', + description: 'حقول البيانات الأمامية لأسماء العرض والطوابع الزمنية والأيقونات والألوان.' + }, + fileDisplay: { + label: 'عرض الملفات', + description: 'العناوين ونص المعاينة والصور المميزة والوسوم والخصائص والتواريخ وعدد الكلمات وعدد الأحرف.', + groups: { + icon: 'الأيقونة', + title: 'العنوان', + previewText: 'نص المعاينة', + featureImage: 'الصورة المميزة', + tags: 'الوسوم', + properties: 'الخصائص', + tasks: 'المهام', + date: 'التاريخ', + parentFolder: 'المجلد الأصلي', + wordAndCharacterCount: 'عدد الكلمات والأحرف' + } + }, + calendar: { + label: 'التقويم', + description: 'عرض التقويم وملاحظات التاريخ والقوالب والإعدادات المحلية وموضع الشريط الجانبي.', + groups: { + appearance: 'المظهر', + leftSidebar: 'الشريط الجانبي الأيسر', + calendarIntegration: 'تكامل التقويم', + rightSidebar: 'الشريط الجانبي الأيسر' + } + }, + iconPacks: { + label: 'حزم الأيقونات', + description: 'أيقونات الواجهة وأيقونات الملفات وإدارة حزم الأيقونات.' }, advanced: { - maintenance: 'الصيانة', - resetSettings: 'إعادة ضبط الإعدادات' - }, - navigation: { - appearance: 'المظهر', - banner: 'اللافتة', - collapseItems: 'طي العناصر', - dragAndDrop: 'السحب والإفلات', - noteCounts: 'عدد الملفات', - rainbowColors: 'ألوان قوس قزح', - leftSidebar: 'الشريط الجانبي الأيسر', - calendarIntegration: 'تكامل التقويم' - }, - list: { - display: 'المظهر', - sortAndGroup: 'الفرز والتجميع', - groupHeaders: 'رؤوس المجموعات', - manualSort: 'الفرز اليدوي', - pinnedNotes: 'الملاحظات المثبتة', - drawingPreviews: 'معاينات الرسومات' - }, - notes: { - frontmatter: 'حقول البيانات الأمامية', - tasks: 'المهام', - icon: 'الأيقونة', - title: 'العنوان', - previewText: 'نص المعاينة', - featureImage: 'الصورة المميزة', - tags: 'الوسوم', - properties: 'الخصائص', - date: 'التاريخ', - parentFolder: 'المجلد الأصلي', - wordCount: 'عدد الكلمات والأحرف' + label: 'متقدم', + description: 'التشخيص وتنظيف البيانات الوصفية والاستيراد/التصدير وإعادة التعيين.', + groups: { + maintenance: 'الصيانة', + resetSettings: 'إعادة ضبط الإعدادات' + } } }, syncMode: { notSynced: '(غير متزامن)', - switchToSynced: 'تفعيل المزامنة', - switchToLocal: 'تعطيل المزامنة' + enableSync: 'تفعيل المزامنة', + disableSync: 'تعطيل المزامنة' }, items: { listPaneTitle: { @@ -1108,11 +1152,11 @@ export const STRINGS_AR = { desc: 'اختر مكان عرض عنوان لوحة القائمة.', options: { header: 'إظهار في الرأس', - list: 'إظهار في لوحة القائمة', + listPane: 'إظهار في لوحة القائمة', hidden: 'عدم الإظهار' } }, - sortNotesBy: { + defaultSortOrder: { name: 'ترتيب الفرز الافتراضي', desc: 'اختر ترتيب الفرز الافتراضي للملاحظات. تظهر الخصائص من “خصائص الفرز” كخيارات فرز إضافية.', directions: { @@ -1120,18 +1164,18 @@ export const STRINGS_AR = { desc: 'تنازلي' }, dateDirections: { - desc: 'الأحدث في الأعلى', - asc: 'الأقدم في الأعلى' + newestOnTop: 'الأحدث في الأعلى', + oldestOnTop: 'الأقدم في الأعلى' }, textDirections: { - asc: 'أ في الأعلى', - desc: 'ي في الأعلى' + aOnTop: 'أ في الأعلى', + zOnTop: 'ي في الأعلى' }, fields: { - modified: 'تاريخ التعديل', - created: 'تاريخ الإنشاء', + dateEdited: 'تاريخ التعديل', + dateCreated: 'تاريخ الإنشاء', title: 'العنوان', - filename: 'اسم الملف', + fileName: 'اسم الملف', property: 'الخاصية' } }, @@ -1144,7 +1188,7 @@ export const STRINGS_AR = { follow: 'اتباع ترتيب الفرز' } }, - propertySortKey: { + sortingProperties: { name: 'خصائص الفرز', desc: 'خصائص frontmatter مفصولة بفواصل. تظهر كل خاصية كخيار فرز في إعداد ترتيب الفرز الافتراضي وفي قائمة الفرز في لوحة القائمة. لا يتم تغيير هذه الخصائص.', placeholder: 'published, author', @@ -1154,14 +1198,14 @@ export const STRINGS_AR = { both: 'تمت إعادة تعيين ترتيب الفرز الافتراضي والتجميع الافتراضي لأن خصائصهما لم تعد متوفرة.' } }, - propertySortSecondary: { + propertySecondarySort: { name: 'الترتيب الثانوي', desc: 'يُستخدم مع ترتيب الخاصية عندما تكون للملاحظات نفس قيمة الخاصية أو بدون قيمة خاصية.', options: { title: 'العنوان', - filename: 'اسم الملف', - created: 'تاريخ الإنشاء', - modified: 'تاريخ التعديل' + fileName: 'اسم الملف', + dateCreated: 'تاريخ الإنشاء', + dateEdited: 'تاريخ التعديل' } }, propertySortInstructions: { @@ -1174,16 +1218,16 @@ export const STRINGS_AR = { '**عروض الوسوم والخصائص:** عند تحديد التجميع حسب **المجلد**، تظهر عناوين التواريخ بدلاً من ذلك.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'خصائص التجميع', desc: 'خصائص frontmatter مفصولة بفواصل. تظهر كل خاصية كخيار تجميع في إعداد التجميع الافتراضي وفي قائمة الفرز في لوحة القائمة. لا يتم تغيير هذه الخصائص.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'خاصية الفرز اليدوي', desc: 'خاصية الواجهة الأمامية المستخدمة لتخزين قيم الفهرس الرقمية للفرز اليدوي.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'خاصية عنوان المجموعة', desc: 'خاصية الواجهة الأمامية المستخدمة لتخزين رؤوس المجموعات المخصصة.' }, @@ -1200,7 +1244,7 @@ export const STRINGS_AR = { options: { top: 'الأعلى', bottom: 'الأسفل', - 'below-selected-note': 'أسفل الملاحظة المحددة', + belowSelectedNote: 'أسفل الملاحظة المحددة', unsorted: 'غير مرتبة' } }, @@ -1216,7 +1260,7 @@ export const STRINGS_AR = { 'في لوحة القائمة، حدد ملاحظة واحدة أو حدد عدة ملاحظات، ثم اضغط **Cmd/Ctrl + Arrow Up/Down** لنقل التحديد لأعلى أو لأسفل.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'التمرير إلى الملف المحدد عند تغيير القائمة', desc: 'التمرير إلى الملف المحدد عند تثبيت الملاحظات، أو إظهار ملاحظات الفروع، أو تغيير مظهر المجلد، أو تنفيذ عمليات الملفات.' }, @@ -1224,15 +1268,15 @@ export const STRINGS_AR = { name: 'إظهار ملاحظات المجلدات الفرعية / الفروع', desc: 'تضمين الملاحظات من المجلدات الفرعية المتداخلة وفروع الوسوم والخصائص عند عرض مجلد أو وسم أو خاصية.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'تثبيت الملاحظات في مجلدها فقط', desc: 'تظهر الملاحظات المثبتة كمثبتة فقط في مجلدها الخاص. مفيد لملاحظات المجلدات أو إذا كان لديك العديد من الملاحظات المثبتة. لا يؤثر على عروض الوسوم أو الخصائص.' }, - separateNoteCounts: { + separateFileCounts: { name: 'إظهار عدد الملفات الحالية والفرعية بشكل منفصل', desc: 'عرض عدد الملفات بتنسيق "الحالي ▾ الفروع" في المجلدات والوسوم والخصائص.' }, - groupNotes: { + defaultGrouping: { name: 'التجميع الافتراضي', desc: 'تضيف **العناوين** توضيحات إلى القائمة المرتبة دون تغيير ترتيبها: يعرض "مخصص" العناوين المعرفة في frontmatter، ويدرج "التاريخ" عناوين التواريخ. تعيد **المجموعات** ترتيب القائمة: تُرتب مجموعات المجلدات والخصائص بشكل مستقل، وتتبع الملاحظات داخل كل مجموعة ترتيب الفرز.', families: { @@ -1245,7 +1289,7 @@ export const STRINGS_AR = { folder: 'المجلد' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'إظهار جميع شارات الوسوم والخصائص دائمًا', desc: 'عند التعطيل، يتم إخفاء الشارات التي تتطابق مع اختيار التنقل الحالي (مثلاً، يتم إخفاء شارة وسم "وصفات" عند تصفح وسم "وصفات"). قم بالتفعيل لإبقاء جميع الشارات مرئية.' }, @@ -1253,7 +1297,7 @@ export const STRINGS_AR = { name: 'تثبيت رؤوس المجموعات', desc: 'إبقاء رأس قسم التاريخ أو المجلد أو الخاصية أو القسم المثبت الحالي مرئيًا أثناء التمرير.' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'إظهار مسارات المجلدات الفرعية', desc: 'عند التجميع حسب المجلد في لوحة القائمة، اعرض مسارات المجلدات الفرعية بدلاً من أسماء المجلدات فقط.' }, @@ -1281,9 +1325,9 @@ export const STRINGS_AR = { name: 'أيقونة المهام غير المكتملة', desc: 'استبدال أيقونة الملف عندما تحتوي الملاحظة على مهام غير مكتملة.', options: { - none: 'معطّل', + disabled: 'معطّل', compact: 'الوضع المضغوط', - all: 'الوضع القياسي والمضغوط' + standardAndCompact: 'الوضع القياسي والمضغوط' } }, useFolderIcon: { @@ -1306,7 +1350,7 @@ export const STRINGS_AR = { name: 'تقدم المهام: إخفاء عند الاكتمال', desc: 'إخفاء تقدم المهام عندما تكتمل جميع المهام في الملاحظة.' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'خلفية المهام غير المكتملة', desc: 'تطبيق لون خلفية عندما تحتوي الملاحظة على مهام غير مكتملة.' }, @@ -1314,7 +1358,7 @@ export const STRINGS_AR = { name: 'لون خلفية المهام غير المكتملة', desc: 'تعيين لون الخلفية المستخدم عندما تحتوي الملاحظة على مهام غير مكتملة.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'أيقونات حسب اسم الملف', desc: 'تعيين أيقونات للملفات بناءً على النص في أسمائها.' }, @@ -1324,7 +1368,7 @@ export const STRINGS_AR = { placeholder: '# نص=أيقونة\nاجتماع=ph-calendar\nفاتورة=ph-receipt', editTooltip: 'تعديل التعيينات' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'أيقونات حسب نوع الملف', desc: 'تعيين أيقونات للملفات بناءً على امتدادها.' }, @@ -1332,7 +1376,7 @@ export const STRINGS_AR = { name: 'إعداد أيقونات الملفات المسبق', desc: 'اختر الأيقونات المدمجة أو إعدادًا مسبقًا لحزمة أيقونات. تتجاوز قواعد الامتدادات المخصصة هذا الإعداد المسبق.', options: { - none: 'الأيقونات المدمجة' + builtIn: 'الأيقونات المدمجة' }, notInstalledWarning: 'حزمة الأيقونات هذه غير مثبتة. تُعرض الأيقونات المدمجة بدلاً منها.' }, @@ -1355,11 +1399,11 @@ export const STRINGS_AR = { name: 'إظهار المجلد الأصلي', desc: 'عرض اسم المجلد الأصلي للملاحظات في المجلدات الفرعية أو الوسوم أو الخصائص.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'إظهار مسار المجلد', desc: 'اعرض المسار نسبةً إلى المجلد المحدد بدلاً من اسم المجلد فقط. تعرض الوسوم والخصائص المسار الكامل.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'النقر على المجلد الأصلي يفتح المجلد', desc: 'النقر على تسمية المجلد الأصلي يفتح المجلد في لوحة القائمة.' }, @@ -1387,7 +1431,7 @@ export const STRINGS_AR = { vertical: 'تقسيم رأسي' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'عندما يكون الشريط الجانبي ضيقًا جدًا', desc: 'اختر ما يحدث عندما لا تتسع لوحة التنقل ولوحة القائمة جنبًا إلى جنب.', options: { @@ -1396,7 +1440,7 @@ export const STRINGS_AR = { vertical: 'التبديل إلى تقسيم عمودي' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'حد الشريط الجانبي الضيق', desc: 'اختر كيفية حساب حد عرض الشريط الجانبي.', options: { @@ -1404,41 +1448,41 @@ export const STRINGS_AR = { customWidth: 'عرض مخصص' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'عرض حد الشريط الجانبي الضيق', desc: 'يتم التبديل عندما يكون الشريط الجانبي أضيق من هذا العرض.', resetTooltip: 'إعادة التعيين إلى العرض الافتراضي' }, - appearanceBackground: { + paneBackgroundColor: { name: 'لون الخلفية', desc: 'اختر ألوان الخلفية للوحة التنقل ولوحة القائمة.', options: { separate: 'خلفيات منفصلة', - primary: 'استخدام خلفية القائمة', - secondary: 'استخدام خلفية التنقل' + listBackground: 'استخدام خلفية القائمة', + navigationBackground: 'استخدام خلفية التنقل' } }, - appearanceScale: { + zoomLevel: { name: 'مستوى التكبير', desc: 'التحكم في مستوى التكبير العام لمتصفح الدفتر (بالنسبة المئوية).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'استخدام أشرطة الأدوات العائمة على iOS', desc: 'ينطبق فقط على iOS.' }, - startView: { + defaultStartupView: { name: 'عرض البدء الافتراضي', desc: 'اختر اللوحة النشطة عند فتح متصفح الدفتر. في تخطيط اللوحة الواحدة تظهر هذه اللوحة أولًا، وفي تخطيط اللوحتين تحصل على تركيز لوحة المفاتيح.', options: { navigation: 'لوحة التنقل', - files: 'لوحة القائمة' + listPane: 'لوحة القائمة' } }, toolbarButtons: { name: 'أزرار شريط الأدوات', desc: 'اختر الأزرار التي تظهر في شريط الأدوات. الأزرار المخفية تبقى قابلة للوصول عبر الأوامر والقوائم.' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'فتح الملاحظات الجديدة في علامة تبويب جديدة', desc: 'عند التفعيل، يفتح أمر إنشاء ملاحظة جديدة الملاحظات في علامة تبويب جديدة. عند التعطيل، تحل الملاحظات محل علامة التبويب الحالية.' }, @@ -1458,20 +1502,20 @@ export const STRINGS_AR = { name: 'الكشف التلقائي: تجاهل الأحداث من النوافذ الأخرى', desc: 'عدم تغيير الملاحظة النشطة عند العمل مع الملاحظات في نافذة أخرى.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'تحريك اللوحة المفردة', desc: 'مدة الانتقال عند التبديل بين اللوحات في وضع اللوحة المفردة (ملي ثانية).', resetTooltip: 'إعادة تعيين إلى الافتراضي' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'التحديد التلقائي لأول ملاحظة', desc: 'فتح أول ملاحظة تلقائيًا عند تبديل المجلدات أو الوسوم أو الخصائص.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'تعطيل التمرير التلقائي للاختصارات', desc: 'عدم تمرير لوحة التنقل عند النقر على عناصر في الاختصارات.' }, - autoExpandNavItems: { + expandOnSelection: { name: 'التوسيع عند التحديد', desc: 'توسيع المجلدات والوسوم عند تحديدها. في وضع اللوحة الواحدة، التحديد الأول يوسع، والتحديد الثاني يعرض الملفات.' }, @@ -1509,16 +1553,16 @@ export const STRINGS_AR = { name: 'شارة الاختصار', desc: "ما يتم عرضه بجانب الاختصارات. استخدم أوامر 'فتح الاختصار 1-9' لفتح الاختصارات مباشرة.", options: { - index: 'الموضع (1-9)', + position: 'الموضع (1-9)', count: 'عدد العناصر', none: 'لا شيء' } }, - showRecentNotes: { + showRecentFiles: { name: 'إظهار الملفات الحديثة', desc: 'عرض قسم الملفات الحديثة في لوحة التنقل.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'إخفاء أنواع الملفات من الملفات الحديثة', desc: 'اختر أنواع الملفات المراد إخفاؤها في قسم الملفات الحديثة.', options: { @@ -1526,15 +1570,15 @@ export const STRINGS_AR = { folderNotes: 'ملاحظات المجلدات' } }, - recentNotesCount: { + recentFilesCount: { name: 'عدد الملفات الحديثة', desc: 'عدد الملفات الحديثة المعروضة.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'تثبيت الملفات الحديثة مع الاختصارات', desc: 'تضمين الملفات الحديثة عند تثبيت الاختصارات.' }, - calendarEnabled: { + enableCalendar: { name: 'تفعيل التقويم', desc: 'تفعيل ميزات التقويم في Notebook Navigator.' }, @@ -1546,12 +1590,12 @@ export const STRINGS_AR = { rightSidebar: 'الشريط الجانبي الأيسر' // RTL: "Right sidebar" → "Left sidebar" (appears on left in RTL) } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'موضع الجزء الفردي', desc: 'مكان عرض التقويم في وضع الجزء الفردي.', options: { navigationPane: 'جزء التنقل', - below: 'أسفل الأجزاء' + belowPanes: 'أسفل الأجزاء' } }, calendarLocale: { @@ -1572,7 +1616,7 @@ export const STRINGS_AR = { thuFri: 'الخميس والجمعة' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'تنسيق اسم الشهر', desc: 'اسم الشهر الكامل (يناير) أو المختصر (يناير).', options: { @@ -1584,7 +1628,7 @@ export const STRINGS_AR = { name: 'إظهار أزرار المعلومات', desc: 'عرض أزرار المعلومات في شريط البحث ورأس التقويم.' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'الأسابيع المعروضة في الشريط الجانبي الأيمن', // RTL: "left sidebar" → "right sidebar" desc: 'التقويم في الشريط الجانبي الأيسر يعرض الشهر كاملاً دائماً.', // RTL: "right sidebar" → "left sidebar" options: { @@ -1629,7 +1673,7 @@ export const STRINGS_AR = { name: 'إظهار العناصر المخفية', desc: 'عند التمكين، يعرض التقويم دائمًا جميع ملاحظات التقويم، بما في ذلك الملاحظات المخفية بواسطة مرشحات ملف تعريف الخزنة.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'مصدر الملاحظات اليومية', desc: 'مصدر ملاحظات التقويم.', options: { @@ -1649,34 +1693,38 @@ export const STRINGS_AR = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'المجلد الجذر', desc: 'المجلد الأساسي للملاحظات الدورية. يمكن أن تتضمن أنماط التاريخ مجلدات فرعية. يتغير مع ملف تعريف الخزنة المحدد.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'موقع مجلد القوالب', desc: 'يعرض منتقي ملفات القوالب الملاحظات من هذا المجلد.', placeholder: 'Templates', usage: 'تُستخدم بواسطة ملاحظات التقويم وملاحظات المجلد. اضبط القوالب في التقويم > تكامل التقويم والمجلدات وملاحظات المجلد > ملفات ملاحظات المجلد.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'الملاحظات اليومية', desc: 'تنسيق المسار باستخدام تنسيق تاريخ Moment. ضع أسماء المجلدات الفرعية بين أقواس معقوفة، مثال [Work]/YYYY. انقر على أيقونة القالب لتعيين قالب. حدد موقع مجلد القوالب في عمليات الملفات > قوالب.', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'يجب أن يقوم النمط بتنسيق التاريخ ثم تحليله مرة أخرى كتاريخ كامل (السنة، الشهر، اليوم).' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'تنسيق المسار باستخدام ', momentLinkText: 'تنسيق تاريخ Moment', momentDescSuffix: '. ضع أسماء المجلدات الفرعية بين أقواس معقوفة، مثال [Work]/YYYY. انقر على أيقونة القالب لتعيين قالب. حدد موقع مجلد القوالب في عمليات الملفات > قوالب.', - templaterSupportInstalled: '✅ تم تثبيت إضافة Templater مع دعم كامل للقوالب.', - templaterSupportMissing: '⚠️ ثبّت إضافة Templater للحصول على دعم القوالب.', templateTokenNoticeLabel: 'مهم!', templateTokenNotice: 'دعم القوالب يتطلب إضافة Templater. الصيغ المدمجة مثل {{date}} و {{title}} لا تعمل إلا عندما يكون {source} مضبوطًا على {option}.', - placeholder: 'YYYY/YYYYMMDD', - example: 'الصيغة الحالية: {path}', - parsingError: 'يجب أن يقوم النمط بتنسيق التاريخ ثم تحليله مرة أخرى كتاريخ كامل (السنة، الشهر، اليوم).' + example: 'الصيغة الحالية: {path}' + }, + templaterSupport: { + installed: '✅ تم تثبيت إضافة Templater مع دعم كامل للقوالب.', + missing: '⚠️ ثبّت إضافة Templater للحصول على دعم القوالب.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'الملاحظات الأسبوعية', parsingError: 'يجب أن يقوم النمط بتنسيق الأسبوع ثم تحليله مرة أخرى كأسبوع كامل (سنة الأسبوع، رقم الأسبوع).', weekPathMismatchWarning: @@ -1684,19 +1732,19 @@ export const STRINGS_AR = { mixedWeekTokensWarning: 'هذا النمط يخلط رموز الأسبوع المستندة إلى الإثنين ("W" أو "G") مع رموز الأسبوع المستندة إلى اللغة ("w" أو "g"). استخدم مجموعة واحدة باستمرار: "GGGG" مع "WW" للأسابيع المستندة إلى الإثنين، أو "gggg" مع "ww" إذا كانت الملاحظات الأسبوعية يجب أن تتبع اللغة المحددة.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'الملاحظات الشهرية', parsingError: 'يجب أن يقوم النمط بتنسيق الشهر ثم تحليله مرة أخرى كشهر كامل (السنة، الشهر).' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'الملاحظات الفصلية', parsingError: 'يجب أن يقوم النمط بتنسيق الفصل ثم تحليله مرة أخرى كفصل كامل (السنة، الفصل).' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'الملاحظات السنوية', parsingError: 'يجب أن يقوم النمط بتنسيق السنة ثم تحليلها مرة أخرى كسنة كاملة (السنة).' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'ملف القالب: {name}' }, showTooltips: { @@ -1717,7 +1765,7 @@ export const STRINGS_AR = { buttonText: 'إعادة تعيين الفاصل', notice: 'تم إعادة تعيين موضع الفاصل. أعد تشغيل Obsidian أو أعد فتح متصفح الدفتر للتطبيق.' }, - settingsTransfer: { + importAndExportSettings: { name: 'استيراد وتصدير الإعدادات', desc: 'تصدير أو استيراد إعدادات متصفح الدفتر بصيغة JSON. يؤدي الاستيراد إلى استبدال جميع الإعدادات.', importButtonText: 'استيراد', @@ -1775,15 +1823,15 @@ export const STRINGS_AR = { name: 'اضغط Enter لفتح الملفات', desc: 'فتح الملفات فقط عند الضغط على Enter أثناء التنقل بلوحة المفاتيح في القائمة. على macOS، يمنع ذلك Enter من إعادة تسمية الملفات.' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'اختر ما إذا كان Shift+Enter يفتح الملف المحدد أو يعيد تسميته.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'اختر ما إذا كان Cmd+Enter يفتح الملف المحدد أو يعيد تسميته.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'اختر ما إذا كان Ctrl+Enter يفتح الملف المحدد أو يعيد تسميته.' }, @@ -1791,12 +1839,12 @@ export const STRINGS_AR = { name: 'أزرار الرجوع/التقدم في الفأرة', desc: 'الإجراء لأزرار الرجوع والتقدم في الفأرة على سطح المكتب.', options: { - none: 'استخدام الإعداد الافتراضي للنظام', + systemDefault: 'استخدام الإعداد الافتراضي للنظام', singlePaneSwitch: 'تبديل الألواح (لوح واحد)', history: 'التنقل في السجل' } }, - fileVisibility: { + showFileTypes: { name: 'إظهار أنواع الملفات (ملف الخزنة)', desc: 'تصفية أنواع الملفات المعروضة في المتصفح. أنواع الملفات غير المدعومة من Obsidian قد تفتح في تطبيقات خارجية.', options: { @@ -1828,12 +1876,12 @@ export const STRINGS_AR = { desc: 'إنشاء الملاحظة الدورية عند بدء التشغيل أو عبر الأمر إذا لم تكن موجودة.' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'إخفاء الملاحظات بقواعد الخصائص (ملف الخزنة)', desc: 'قائمة مفصولة بفاصلة من قواعد البيانات الأمامية. استخدم إدخالات `key` أو `key=value` (مثل status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'إخفاء الملفات (ملف الخزنة)', desc: 'قائمة أنماط أسماء الملفات مفصولة بفاصلة للإخفاء. يدعم أحرف البدل * والمسارات / (مثل temp-*، *.png، /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1860,7 +1908,7 @@ export const STRINGS_AR = { duplicateName: 'اسم الملف موجود بالفعل' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'موضع عنوان الخزنة', desc: 'اختر مكان عرض عنوان الخزنة.', options: { @@ -1868,7 +1916,7 @@ export const STRINGS_AR = { navigation: 'عرض في لوحة التنقل' } }, - excludedFolders: { + hideFolders: { name: 'إخفاء المجلدات (ملف الخزنة)', desc: 'قائمة مفصولة بفاصلة من المجلدات لإخفائها. أنماط الاسم: assets* (المجلدات التي تبدأ بـ assets)، *_temp (التي تنتهي بـ _temp). أنماط المسار: /archive (الأرشيف الجذري فقط)، /res* (المجلدات الجذرية التي تبدأ بـ res)، /*/temp (مجلدات temp بمستوى واحد)، /projects/* (جميع المجلدات داخل projects).', placeholder: 'templates, assets*, /archive, /res*' @@ -1882,7 +1930,7 @@ export const STRINGS_AR = { name: 'إظهار التاريخ', desc: 'عرض التاريخ أسفل أسماء الملاحظات.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'عند الترتيب حسب الاسم', desc: 'التاريخ المعروض عند ترتيب الملاحظات أبجديًا.', options: { @@ -1894,7 +1942,7 @@ export const STRINGS_AR = { name: 'إظهار وسوم الملفات', desc: 'عرض وسوم قابلة للنقر في عناصر الملفات.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'إظهار مسارات الوسوم الكاملة', desc: "عرض مسارات تسلسل الوسوم الكاملة. عند التمكين: 'ai/openai'، 'work/projects/2024'. عند التعطيل: 'openai'، '2024'." }, @@ -1902,7 +1950,7 @@ export const STRINGS_AR = { name: 'تلوين وسوم الملفات', desc: 'تطبيق ألوان الوسوم على شارات الوسوم في عناصر الملفات.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'إظهار الوسوم الملونة أولاً', desc: 'ترتيب الوسوم الملونة قبل الوسوم الأخرى في عناصر الملفات.' }, @@ -1918,7 +1966,7 @@ export const STRINGS_AR = { name: 'تلوين خصائص الملفات', desc: 'تطبيق ألوان الخصائص على شارات الخصائص في عناصر الملفات.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'إظهار الخصائص الملونة أولاً', desc: 'ترتيب الخصائص الملونة قبل الخصائص الأخرى في عناصر الملفات.' }, @@ -1926,7 +1974,7 @@ export const STRINGS_AR = { name: 'إظهار الخصائص في الوضع المضغوط', desc: 'عرض الخصائص عند تفعيل الوضع المضغوط.' }, - textCountDisplay: { + textCountType: { name: 'نوع العدد', desc: 'اختر أي أعداد نصية تظهر في عناصر الملفات.', options: { @@ -1956,11 +2004,11 @@ export const STRINGS_AR = { name: 'خاصية الهدف', desc: 'مفتاح خاصية الواجهة الأمامية الذي يحتوي على عدد الكلمات المستهدف. اتركه فارغاً لإخفاء الأهداف.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'إظهار نسبة الهدف', desc: 'عرض نسبة التقدم فقط عند توفر عدد كلمات مستهدف.' }, - propertyFields: { + propertyKeys: { name: 'مفاتيح الخصائص (ملف القبو)', desc: 'مفاتيح خصائص الواجهة الأمامية، مع إمكانية التحكم في رؤية كل مفتاح للتنقل وقائمة الملفات.', addButtonTooltip: 'تكوين مفاتيح الخصائص', @@ -1972,11 +2020,11 @@ export const STRINGS_AR = { name: 'إظهار الخصائص في صفوف منفصلة', desc: 'عرض كل خاصية في صف منفصل.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'ربط شارات الخصائص بالملاحظات', desc: 'انقر على شارة خاصية لفتح الملاحظة المرتبطة.' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: 'ربط شارات الخصائص بالروابط', desc: 'انقر على شارة خاصية لفتح الرابط المرتبط.' }, @@ -1996,7 +2044,7 @@ export const STRINGS_AR = { helpTooltip: 'تنسيق باستخدام Moment', momentLinkText: 'تنسيق Moment' }, - showFilePreview: { + showNotePreview: { name: 'إظهار معاينة الملاحظة', desc: 'عرض نص المعاينة أسفل أسماء الملاحظات.' }, @@ -2025,7 +2073,7 @@ export const STRINGS_AR = { desc: 'قائمة مفصولة بفاصلة من خصائص البيانات الأمامية للتحقق من نص المعاينة. سيتم استخدام أول خاصية تحتوي على نص.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'الرجوع إلى محتوى الملاحظة', desc: 'عرض محتوى الملاحظة كمعاينة عندما لا تحتوي أي من الخصائص المحددة على نص.' }, @@ -2040,7 +2088,7 @@ export const STRINGS_AR = { '5': '5 صفوف' } }, - fileNameRows: { + titleRows: { name: 'صفوف العنوان', desc: 'عدد الصفوف المعروضة لعناوين الملاحظات.', options: { @@ -2071,22 +2119,22 @@ export const STRINGS_AR = { desc: 'قائمة مفصولة بفاصلة من خصائص البيانات الأمامية. الملاحظات التي تحتوي على أي من هذه الخصائص لا تخزن صور العرض.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'حجم عرض صورة الميزة', desc: 'الحجم الأقصى المعروض لصور الميزة في قوائم الملاحظات.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'دقة بكسل صورة الميزة', desc: 'الدقة المستخدمة عند إنشاء صور مصغرة محفوظة لصور الميزة. قم بزيادتها إذا بدت المعاينات الأكبر ضبابية.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2094,7 +2142,7 @@ export const STRINGS_AR = { name: 'تنزيل الصور الخارجية', desc: 'تنزيل الصور عن بُعد والصور المصغرة من YouTube للصور المميزة.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'إخفاء صور المعاينة المُصدَّرة', desc: 'إخفاء ملفات PNG لمعاينة الرسومات المُصدَّرة. فعِّل "إظهار العناصر المخفية" لعرضها.' }, @@ -2127,11 +2175,11 @@ export const STRINGS_AR = { alphaDesc: 'من ي إلى أ' } }, - showNoteCount: { + showFileCount: { name: 'إظهار عدد الملفات', desc: 'عرض عدد الملفات بجانب المجلدات والوسوم والخصائص.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'إظهار أيقونات للاختصارات والعناصر الحديثة', desc: 'عرض أيقونات بجانب العناصر في قسمَي الاختصارات والحديثة.' }, @@ -2140,7 +2188,7 @@ export const STRINGS_AR = { desc: 'تحرير أيقونات شريط الأدوات والمجلدات والوسوم والخصائص والعناصر المثبتة والبحث والفرز.', buttonText: 'تحرير الأيقونات' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'تطبيق اللون على الأيقونات فقط', desc: 'عند التمكين، تطبق الألوان المخصصة على الأيقونات فقط. عند التعطيل، تطبق الألوان على الأيقونات وتسميات النص.' }, @@ -2148,9 +2196,9 @@ export const STRINGS_AR = { name: 'وضع ألوان قوس قزح (ملف الخزنة)', desc: 'تطبيق ألوان قوس قزح في لوحة التنقل.', options: { - none: 'إيقاف', - foreground: 'لون النص', - background: 'لون الخلفية' + off: 'إيقاف', + textColor: 'لون النص', + backgroundColor: 'لون الخلفية' } }, navRainbowFirstColor: { @@ -2173,7 +2221,7 @@ export const STRINGS_AR = { name: 'تطبيق على الاختصارات', desc: 'تطبيق ألوان قوس قزح على الاختصارات.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'تطبيق على العناصر الأخيرة', desc: 'تطبيق ألوان قوس قزح على العناصر الأخيرة.' }, @@ -2207,7 +2255,7 @@ export const STRINGS_AR = { name: 'تطبيق على الخصائص', desc: 'تطبيق ألوان قوس قزح على الخصائص.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'سطوع متسق عبر الألوان', // (English: Consistent brightness across hues) desc: 'يُقحم السطوع بين ألوان البداية والنهاية أثناء انتقالات الألوان.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2225,7 +2273,7 @@ export const STRINGS_AR = { all: 'كل مستوى' } }, - collapseBehavior: { + collapseItems: { name: 'طي العناصر', desc: 'اختر ما يؤثر عليه زر توسيع/طي الكل.', options: { @@ -2235,7 +2283,7 @@ export const STRINGS_AR = { propertiesOnly: 'الخصائص فقط' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'إبقاء العنصر المحدد موسعًا', desc: 'عند الطي، إبقاء العنصر المحدد وآبائه موسعين.' }, @@ -2243,7 +2291,7 @@ export const STRINGS_AR = { name: 'تخطي جذر الخزنة عند الطي', desc: 'عند طي كل العناصر، اترك مجلد جذر الخزنة في حالته الحالية.' }, - navIndent: { + treeIndentation: { name: 'مسافة بادئة الشجرة', desc: 'ضبط عرض المسافة البادئة للمجلدات والوسوم والخصائص المتداخلة (بالبكسل).' }, @@ -2269,7 +2317,7 @@ export const STRINGS_AR = { line: 'خط' } }, - navRootSpacing: { + rootItemSpacing: { name: 'تباعد العناصر الجذرية', desc: 'التباعد بين المجلدات والوسوم والخصائص على مستوى الجذر (بالبكسل).' }, @@ -2296,15 +2344,15 @@ export const STRINGS_AR = { highToLow: 'من الأعلى إلى الأقل' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'إظهار مجلد الوسوم', desc: 'عرض "الوسوم" كمجلد قابل للطي.' }, - showUntagged: { + showUntaggedNotes: { name: 'إظهار الملاحظات بدون وسوم', desc: 'عرض عنصر "بدون وسم" للملاحظات التي ليس لها أي وسوم.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'تصفية الوسوم حسب التحديد', desc: 'إظهار الوسوم التي تظهر في الملاحظات ضمن المجلد أو الخاصية المحددة فقط.' }, @@ -2338,20 +2386,20 @@ export const STRINGS_AR = { highToLow: 'من الأعلى إلى الأقل' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'إظهار مجلد الخصائص', desc: 'عرض "الخصائص" كمجلد قابل للطي.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'تصفية الخصائص حسب التحديد', desc: 'إظهار الخصائص التي تظهر في الملاحظات ضمن المجلد أو الوسم المحدد فقط.' }, - hiddenTags: { + hideTags: { name: 'إخفاء الوسوم (ملف الخزنة)', desc: 'قائمة مفصولة بفاصلة من أنماط الوسوم. أنماط الأسماء: tag* (تبدأ بـ)، *tag (تنتهي بـ). أنماط المسارات: archive (الوسم وفروعه)، archive/* (الفروع فقط)، projects/*/drafts (حرف بدل وسطي).', placeholder: 'archive*, *draft, projects/*/old' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'إخفاء الملاحظات ذات الوسوم (ملف الخزنة)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2384,7 +2432,7 @@ export const STRINGS_AR = { desc: 'ملف قالب يُستخدم عند إنشاء ملاحظات المجلد. يمكن لقوالب Markdown استخدام Templater. تُنسخ قوالب Canvas وBase كمحتوى للملف. حدد موقع مجلد القوالب في عمليات الملفات > قوالب.', formatWarning: 'يجب أن يتطابق تنسيق القالب مع نوع ملاحظة المجلد المحدد: .md أو .canvas أو .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'أسماء المجلدات تفتح ملاحظات المجلد', desc: 'يؤدي النقر على اسم مجلد إلى فتح ملاحظة المجلد الخاصة به. عند الإيقاف، توفر ملاحظات المجلد بيانات وصفية للمجلد فقط مثل الاسم والأيقونة واللون.' }, @@ -2405,7 +2453,7 @@ export const STRINGS_AR = { rightSidebar: 'الشريط الجانبي الأيمن' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'الشريط الجانبي الأيمن: عرض أقرب ملاحظة مجلد', desc: 'عند تحديد مجلد، يعرض الشريط الجانبي الأيمن تلقائيًا أقرب ملاحظة مجلد أصلية.' }, @@ -2448,7 +2496,7 @@ export const STRINGS_AR = { indexingTitle: 'جارٍ فهرسة الخزنة...', progress: 'جارٍ تحديث ذاكرة التخزين المؤقت لـ Notebook Navigator.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'تنزيل', downloadingLabel: 'جارٍ التنزيل...', removeButton: 'إزالة', @@ -2460,7 +2508,7 @@ export const STRINGS_AR = { infoNote: 'حزم الأيقونات المنزلة تزامن حالة التثبيت عبر الأجهزة. تبقى حزم الأيقونات في قاعدة البيانات المحلية على كل جهاز؛ المزامنة تتبع فقط ما إذا كان يجب تنزيلها أو إزالتها. حزم الأيقونات تنزل من مستودع متصفح الدفتر (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'استخدام البيانات الأمامية', desc: 'استخدام البيانات الأمامية لاسم الملاحظة والطوابع الزمنية والأيقونات والألوان' }, @@ -2479,7 +2527,7 @@ export const STRINGS_AR = { desc: 'حقل البيانات الأمامية لألوان الخلفية. اتركه فارغًا لاستخدام ألوان الخلفية المخزنة في الإعدادات.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'ترحيل الأيقونات والألوان من الإعدادات', desc: 'مخزنة في الإعدادات: {icons} أيقونات، {colors} ألوان.', button: 'ترحيل', @@ -2489,7 +2537,7 @@ export const STRINGS_AR = { noticeFailures: 'إدخالات فاشلة: {failures}.', noticeError: 'فشل الترحيل. تحقق من وحدة التحكم للتفاصيل.' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'حقول الاسم', desc: 'قائمة حقول البيانات الأمامية مفصولة بفواصل. يُستخدم أول قيمة غير فارغة. يعود لاسم الملف.', placeholder: 'title, name' @@ -2504,7 +2552,7 @@ export const STRINGS_AR = { desc: 'اسم حقل البيانات الأمامية لطابع وقت التعديل. اتركه فارغًا لاستخدام تاريخ نظام الملفات فقط.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'تنسيق الطابع الزمني', desc: 'التنسيق المستخدم لتحليل الطوابع الزمنية في البيانات الأمامية. اتركه فارغًا لاستخدام تحليل ISO 8601.', helpTooltip: 'تنسيق باستخدام Moment', @@ -2517,12 +2565,12 @@ export const STRINGS_AR = { buttonText: '❤️ رعاية', coffeeButton: '☕️ اشترِ لي قهوة' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'التحقق من إصدار جديد عند البدء', desc: 'التحقق من إصدارات الإضافة الجديدة عند البدء وإظهار إشعار عند توفر تحديث. التحقق يحدث مرة واحدة يوميًا على الأكثر.', status: 'إصدار جديد متاح: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'تسجيل تصحيح أخطاء بدء التشغيل', desc: 'يكتب تشخيصات بدء التشغيل في ملف Markdown يحمل طابعًا زمنيًا في جذر الخزنة، ثم يتوقف بعد استقرار بدء التشغيل. قد تتم مزامنة الملف وقد يتضمن مسارات ملفات.' }, diff --git a/src/i18n/locales/de.ts b/src/i18n/locales/de.ts index ffdf1ffde..5d5f84ba8 100644 --- a/src/i18n/locales/de.ts +++ b/src/i18n/locales/de.ts @@ -73,6 +73,9 @@ export const STRINGS_DE = { shortcutsHeader: 'Lesezeichen', recentFilesHeader: 'Neueste Dateien', // Header label for recent files section in navigation pane (English: Recent files) properties: 'Eigenschaften', + folders: 'Ordner', + tags: 'Tags', + calendar: 'Kalender', reorderRootFoldersTitle: 'Navigation neu anordnen', reorderRootFoldersHint: 'Pfeile oder Ziehen zum Neuanordnen', vaultRootLabel: 'Tresor', @@ -1014,101 +1017,142 @@ export const STRINGS_DE = { exportSuccess: 'Fehlgeschlagene Metadaten-Bericht exportiert nach: {filename}', exportFailed: 'Export des Metadaten-Berichts fehlgeschlagen' }, - sections: { - general: 'Allgemein', - vaultFilters: 'Anzeigefilter', - appearanceBehavior: 'Darstellung & Verhalten', - navigationPane: 'Navigationsbereich', - calendar: 'Kalender', - fileOperations: 'Dateioperationen', - icons: 'Icon-Pakete', - folders: 'Ordner', - folderNotes: 'Ordnernotizen', - folderNoteFiles: 'Ordnernotiz-Dateien', - foldersAndFolderNotes: 'Ordner & Ordnernotizen', - tagsAndProperties: 'Tags & Eigenschaften', - tags: 'Tags', - listPane: 'Listenbereich', - notes: 'Dateianzeige', - shortcutsAndRecentFiles: 'Verknüpfungen & zuletzt verwendete Dateien', - advanced: 'Erweitert' + index: { + label: 'Allgemein', + description: 'Versionshinweise, Support, Tresorprofil, Dateitypen und Eigenschaftsschlüssel.', + groups: { + vaultSetup: 'Tresor-Einrichtung' + } }, pageGroups: { configuration: 'Konfiguration', - navigationAndContent: 'Navigationsbereich', - notesAndLists: 'Listenbereich', + navigationPane: 'Navigationsbereich', + listPane: 'Listenbereich', calendarAndTools: 'Kalender und Werkzeuge' }, - pageDescriptions: { - general: 'Versionshinweise, Support, Tresorprofil, Dateitypen und Eigenschaftsschlüssel.', - vaultFilters: 'Versteckte Ordner, Tags, Dateien, Datei-Tags und Eigenschaftsregeln.', - appearanceBehavior: 'Verhalten, Tastaturnavigation, Maustasten, Darstellung und Formatierung.', - navigationPane: 'Layout, Darstellung, Dateianzahl, Einklappverhalten und Regenbogenfarben.', - shortcuts: 'Verknüpfungssichtbarkeit, Abzeichen, zuletzt verwendete Dateien und angeheftete Elemente.', - calendar: 'Kalenderanzeige, Datumsnotizen, Vorlagen, Sprachumgebung und Seitenleistenposition.', - fileOperations: 'Vorlagen, Löschbestätigungen, Anhänge und Verhalten bei Dateikonflikten beim Verschieben.', - foldersAndFolderNotes: 'Ordneranzeige, Ordnernotizen, Ordnernotiz-Vorlagen und Ordnernotiz-Verhalten.', - tagsProperties: 'Tag- und Eigenschaftsbereiche, Symbole, Sortierung, Geltungsbereich und Vererbung.', - listPane: 'Sortierung, Gruppierung, Listenmodi, angeheftete Notizen und Zeichnungsvorschauen.', - frontmatter: 'Frontmatter-Felder für Anzeigenamen, Zeitstempel, Symbole und Farben.', - notes: 'Titel, Vorschautext, Hauptbilder, Tags, Eigenschaften, Daten, Wortanzahlen und Zeichenanzahlen.', - iconPacks: 'Oberflächensymbole, Dateisymbole und Icon-Paket-Verwaltung.', - advanced: 'Diagnose, Metadatenbereinigung, Import/Export und Zurücksetzen.' - }, - groups: { - general: { - vaultConfiguration: 'Tresor-Einrichtung', - templates: 'Vorlagen', - behavior: 'Verhalten', - startup: 'Start', - keyboardNavigation: 'Tastaturnavigation', - mouseButtons: 'Maustasten', - view: 'Darstellung', - icons: 'Symbole', - desktopAppearance: 'Desktop-Darstellung', - mobileAppearance: 'Mobile Darstellung', - formatting: 'Formatierung' + pages: { + displayFilters: { + label: 'Anzeigefilter', + description: 'Versteckte Ordner, Tags, Dateien, Datei-Tags und Eigenschaftsregeln.' + }, + appearanceAndBehavior: { + label: 'Darstellung & Verhalten', + description: 'Verhalten, Tastaturnavigation, Maustasten, Darstellung und Formatierung.', + groups: { + startup: 'Start', + keyboardNavigation: 'Tastaturnavigation', + mouseButtons: 'Maustasten', + desktopAppearance: 'Desktop-Darstellung', + mobileAppearance: 'Mobile Darstellung', + appearance: 'Darstellung', + icons: 'Symbole', + formatting: 'Formatierung' + } + }, + navigationPane: { + label: 'Navigationsbereich', + description: 'Layout, Darstellung, Dateianzahl, Einklappverhalten und Regenbogenfarben.', + groups: { + appearance: 'Darstellung', + banner: 'Banner', + collapseItems: 'Elemente einklappen', + dragAndDrop: 'Drag-and-drop', + fileCounts: 'Dateianzahlen', + rainbowColors: 'Regenbogenfarben' + } + }, + shortcutsAndRecentFiles: { + label: 'Verknüpfungen & zuletzt verwendete Dateien', + description: 'Verknüpfungssichtbarkeit, Abzeichen, zuletzt verwendete Dateien und angeheftete Elemente.', + groups: { + shortcuts: 'Lesezeichen', + recentFiles: 'Neueste Dateien' + } + }, + foldersAndFolderNotes: { + label: 'Ordner & Ordnernotizen', + description: 'Ordneranzeige, Ordnernotizen, Ordnernotiz-Vorlagen und Ordnernotiz-Verhalten.', + groups: { + folders: 'Ordner', + folderNotes: 'Ordnernotizen', + folderNoteFiles: 'Ordnernotiz-Dateien' + } + }, + tagsAndProperties: { + label: 'Tags & Eigenschaften', + description: 'Tag- und Eigenschaftsbereiche, Symbole, Sortierung, Geltungsbereich und Vererbung.', + groups: { + tags: 'Tags', + properties: 'Eigenschaften' + } + }, + listPane: { + label: 'Listenbereich', + description: 'Sortierung, Gruppierung, Listenmodi, angeheftete Notizen und Zeichnungsvorschauen.', + groups: { + appearance: 'Darstellung', + sortAndGroup: 'Sortierung & Gruppierung', + groupHeaders: 'Gruppenüberschriften', + manualSort: 'Manuelle Sortierung', + pinnedNotes: 'Angeheftete Notizen', + behavior: 'Verhalten', + drawingPreviews: 'Zeichnungsvorschauen' + } + }, + fileOperations: { + label: 'Dateioperationen', + description: 'Vorlagen, Löschbestätigungen, Anhänge und Verhalten bei Dateikonflikten beim Verschieben.', + groups: { + templates: 'Vorlagen' + } + }, + frontmatterFields: { + label: 'Frontmatter-Felder', + description: 'Frontmatter-Felder für Anzeigenamen, Zeitstempel, Symbole und Farben.' + }, + fileDisplay: { + label: 'Dateianzeige', + description: 'Titel, Vorschautext, Hauptbilder, Tags, Eigenschaften, Daten, Wortanzahlen und Zeichenanzahlen.', + groups: { + icon: 'Symbol', + title: 'Titel', + previewText: 'Vorschautext', + featureImage: 'Hauptbild', + tags: 'Tags', + properties: 'Eigenschaften', + tasks: 'Aufgaben', + date: 'Datum', + parentFolder: 'Übergeordneter Ordner', + wordAndCharacterCount: 'Wort- und Zeichenanzahl' + } + }, + calendar: { + label: 'Kalender', + description: 'Kalenderanzeige, Datumsnotizen, Vorlagen, Sprachumgebung und Seitenleistenposition.', + groups: { + appearance: 'Darstellung', + leftSidebar: 'Linke Seitenleiste', + calendarIntegration: 'Kalenderintegration', + rightSidebar: 'Rechte Seitenleiste' + } + }, + iconPacks: { + label: 'Icon-Pakete', + description: 'Oberflächensymbole, Dateisymbole und Icon-Paket-Verwaltung.' }, advanced: { - maintenance: 'Wartung', - resetSettings: 'Einstellungen zurücksetzen' - }, - navigation: { - appearance: 'Darstellung', - banner: 'Banner', - collapseItems: 'Elemente einklappen', - dragAndDrop: 'Drag-and-drop', - noteCounts: 'Dateianzahlen', - rainbowColors: 'Regenbogenfarben', - leftSidebar: 'Linke Seitenleiste', - calendarIntegration: 'Kalenderintegration' - }, - list: { - display: 'Darstellung', - sortAndGroup: 'Sortierung & Gruppierung', - groupHeaders: 'Gruppenüberschriften', - manualSort: 'Manuelle Sortierung', - pinnedNotes: 'Angeheftete Notizen', - drawingPreviews: 'Zeichnungsvorschauen' - }, - notes: { - frontmatter: 'Frontmatter-Felder', - tasks: 'Aufgaben', - icon: 'Symbol', - title: 'Titel', - previewText: 'Vorschautext', - featureImage: 'Hauptbild', - tags: 'Tags', - properties: 'Eigenschaften', - date: 'Datum', - parentFolder: 'Übergeordneter Ordner', - wordCount: 'Wort- und Zeichenanzahl' + label: 'Erweitert', + description: 'Diagnose, Metadatenbereinigung, Import/Export und Zurücksetzen.', + groups: { + maintenance: 'Wartung', + resetSettings: 'Einstellungen zurücksetzen' + } } }, syncMode: { notSynced: '(nicht synchronisiert)', - switchToSynced: 'Synchronisierung aktivieren', - switchToLocal: 'Synchronisierung deaktivieren' + enableSync: 'Synchronisierung aktivieren', + disableSync: 'Synchronisierung deaktivieren' }, items: { listPaneTitle: { @@ -1116,11 +1160,11 @@ export const STRINGS_DE = { desc: 'Wählen Sie, wo der Titel des Listenbereichs angezeigt wird.', options: { header: 'Im Kopfbereich anzeigen', - list: 'Im Listenbereich anzeigen', + listPane: 'Im Listenbereich anzeigen', hidden: 'Nicht anzeigen' } }, - sortNotesBy: { + defaultSortOrder: { name: 'Standard-Sortierreihenfolge', desc: 'Wählen Sie die Standard-Sortierreihenfolge für Notizen. Eigenschaften aus Sortiereigenschaften erscheinen als zusätzliche Sortieroptionen.', directions: { @@ -1128,18 +1172,18 @@ export const STRINGS_DE = { desc: 'Absteigend' }, dateDirections: { - desc: 'Neueste oben', - asc: 'Älteste oben' + newestOnTop: 'Neueste oben', + oldestOnTop: 'Älteste oben' }, textDirections: { - asc: 'A oben', - desc: 'Z oben' + aOnTop: 'A oben', + zOnTop: 'Z oben' }, fields: { - modified: 'Bearbeitungsdatum', - created: 'Erstellungsdatum', + dateEdited: 'Bearbeitungsdatum', + dateCreated: 'Erstellungsdatum', title: 'Titel', - filename: 'Dateiname', + fileName: 'Dateiname', property: 'Eigenschaft' } }, @@ -1152,7 +1196,7 @@ export const STRINGS_DE = { follow: 'Sortierreihenfolge folgen' } }, - propertySortKey: { + sortingProperties: { name: 'Sortiereigenschaften', desc: 'Kommagetrennte Frontmatter-Eigenschaften. Jede Eigenschaft erscheint als Sortieroption in der Einstellung Standard-Sortierreihenfolge und im Sortiermenü des Listenbereichs. Diese Eigenschaften werden nicht geändert.', placeholder: 'published, author', @@ -1162,14 +1206,14 @@ export const STRINGS_DE = { both: 'Standard-Sortierreihenfolge und Standardgruppierung wurden zurückgesetzt, weil ihre Eigenschaften nicht mehr verfügbar sind.' } }, - propertySortSecondary: { + propertySecondarySort: { name: 'Sekundäre Sortierung', desc: 'Wird bei der Eigenschafts-Sortierung verwendet, wenn Notizen denselben Eigenschaftswert oder keinen Eigenschaftswert haben.', options: { title: 'Titel', - filename: 'Dateiname', - created: 'Erstellungsdatum', - modified: 'Bearbeitungsdatum' + fileName: 'Dateiname', + dateCreated: 'Erstellungsdatum', + dateEdited: 'Bearbeitungsdatum' } }, propertySortInstructions: { @@ -1182,16 +1226,16 @@ export const STRINGS_DE = { '**Tag- und Eigenschaftsansichten:** Wenn **Ordner** als Gruppierung ausgewählt ist, werden stattdessen Datumsüberschriften angezeigt.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'Gruppierungseigenschaften', desc: 'Kommagetrennte Frontmatter-Eigenschaften. Jede Eigenschaft erscheint als Gruppierungsoption in der Einstellung Standardgruppierung und im Sortiermenü des Listenbereichs. Diese Eigenschaften werden nicht geändert.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'Eigenschaft für manuelle Sortierung', desc: 'Frontmatter-Eigenschaft zum Speichern der numerischen Indexwerte für die manuelle Sortierung.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'Eigenschaft für Gruppenüberschriften', desc: 'Frontmatter-Eigenschaft zum Speichern der benutzerdefinierten Gruppenüberschriften.' }, @@ -1208,7 +1252,7 @@ export const STRINGS_DE = { options: { top: 'Oben', bottom: 'Unten', - 'below-selected-note': 'Unter ausgewählter Notiz', + belowSelectedNote: 'Unter ausgewählter Notiz', unsorted: 'Unsortiert' } }, @@ -1224,7 +1268,7 @@ export const STRINGS_DE = { 'Wählen Sie im Listenbereich eine Notiz aus oder markieren Sie mehrere und drücken Sie **Cmd/Ctrl + Arrow Up/Down**, um die Auswahl nach oben oder unten zu verschieben.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'Zu ausgewählter Datei bei Listenänderungen scrollen', desc: 'Zur ausgewählten Datei scrollen beim Anheften von Notizen, Anzeigen von Unternotizen, Ändern der Ordnerdarstellung oder bei Dateioperationen.' }, @@ -1232,15 +1276,15 @@ export const STRINGS_DE = { name: 'Notizen aus Unterordnern / Nachkommen anzeigen', desc: 'Beim Anzeigen eines Ordners, Tags oder einer Eigenschaft Notizen aus Unterordnern sowie Tag- und Eigenschafts-Nachkommen einbeziehen.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'Notizen nur in ihrem Ordner anheften', desc: 'Angeheftete Notizen erscheinen nur in ihrem eigenen Ordner als angeheftet. Nützlich für Ordnernotizen oder bei vielen angehefteten Notizen. Hat keinen Einfluss auf Tag- oder Eigenschaftsansichten.' }, - separateNoteCounts: { + separateFileCounts: { name: 'Aktuelle und Nachkommen-Dateianzahl getrennt anzeigen', desc: 'Zeigt Dateianzahlen als "aktuell ▾ Nachkommen" für Ordner, Tags und Eigenschaften.' }, - groupNotes: { + defaultGrouping: { name: 'Standardgruppierung', desc: '**Überschriften** kommentieren die sortierte Liste, ohne ihre Reihenfolge zu ändern: Benutzerdefiniert zeigt im Frontmatter definierte Überschriften, Datum fügt Datumsüberschriften ein. **Gruppen** ordnen die Liste neu: Ordner- und Eigenschaftsgruppen werden eigenständig geordnet, und die Notizen in jeder Gruppe folgen der Sortierreihenfolge.', families: { @@ -1253,7 +1297,7 @@ export const STRINGS_DE = { folder: 'Ordner' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'Tag- und Eigenschaftspillen immer anzeigen', desc: 'Wenn deaktiviert, werden Pillen ausgeblendet, die der aktuellen Navigationsauswahl entsprechen (z.\u00a0B. wird die „Rezepte"-Tag-Pille beim Durchsuchen des „Rezepte"-Tags ausgeblendet). Aktivieren, um alle Pillen sichtbar zu halten.' }, @@ -1261,7 +1305,7 @@ export const STRINGS_DE = { name: 'Gruppenüberschriften fixieren', desc: 'Hält die aktuelle Datums-, Ordner-, Eigenschafts- oder Anheftbereichsüberschrift beim Scrollen sichtbar.' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'Unterordnerpfade anzeigen', desc: 'Beim Gruppieren nach Ordner im Listenbereich Unterordnerpfade statt nur Ordnernamen anzeigen.' }, @@ -1289,9 +1333,9 @@ export const STRINGS_DE = { name: 'Unerledigte-Aufgaben-Symbol', desc: 'Das Dateisymbol ersetzen, wenn eine Notiz unerledigte Aufgaben enthält.', options: { - none: 'Deaktiviert', + disabled: 'Deaktiviert', compact: 'Kompaktmodus', - all: 'Standard und kompakt' + standardAndCompact: 'Standard und kompakt' } }, useFolderIcon: { @@ -1314,7 +1358,7 @@ export const STRINGS_DE = { name: 'Aufgabenfortschritt: bei Abschluss ausblenden', desc: 'Den Aufgabenfortschritt ausblenden, wenn alle Aufgaben einer Notiz erledigt sind.' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'Unerledigte-Aufgaben-Hintergrund', desc: 'Eine Hintergrundfarbe anwenden, wenn eine Notiz unerledigte Aufgaben enthält.' }, @@ -1322,7 +1366,7 @@ export const STRINGS_DE = { name: 'Hintergrundfarbe für unerledigte Aufgaben', desc: 'Die Hintergrundfarbe festlegen, die verwendet wird, wenn eine Notiz unerledigte Aufgaben enthält.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'Symbole nach Dateiname', desc: 'Symbole basierend auf Text im Dateinamen zuweisen.' }, @@ -1332,7 +1376,7 @@ export const STRINGS_DE = { placeholder: '# Text=icon\nbesprechung=ph-calendar\nrechnung=ph-receipt', editTooltip: 'Zuordnungen bearbeiten' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'Symbole nach Dateityp', desc: 'Symbole basierend auf der Dateierweiterung zuweisen.' }, @@ -1340,7 +1384,7 @@ export const STRINGS_DE = { name: 'Dateisymbol-Voreinstellung', desc: 'Die integrierten Symbole oder eine Symbolpaket-Voreinstellung auswählen. Benutzerdefinierte Erweiterungsregeln überschreiben diese Voreinstellung.', options: { - none: 'Integrierte Symbole' + builtIn: 'Integrierte Symbole' }, notInstalledWarning: 'Dieses Symbolpaket ist nicht installiert. Stattdessen werden integrierte Symbole angezeigt.' }, @@ -1363,11 +1407,11 @@ export const STRINGS_DE = { name: 'Übergeordneten Ordner anzeigen', desc: 'Den übergeordneten Ordnernamen für Notizen in Unterordnern, Tags oder Eigenschaften anzeigen.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'Ordnerpfad anzeigen', desc: 'Den Pfad relativ zum ausgewählten Ordner statt nur den Ordnernamen anzeigen. Tags und Eigenschaften zeigen den vollständigen Pfad.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'Klick auf übergeordneten Ordner öffnet Ordner', desc: 'Klicken auf den übergeordneten Ordner öffnet den Ordner im Listenbereich.' }, @@ -1395,7 +1439,7 @@ export const STRINGS_DE = { vertical: 'Vertikale Aufteilung' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'Wenn Seitenleiste zu schmal ist', desc: 'Wählen Sie, was passiert, wenn Navigationsbereich und Listenbereich nicht nebeneinander passen.', options: { @@ -1404,7 +1448,7 @@ export const STRINGS_DE = { vertical: 'Zur vertikalen Aufteilung wechseln' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'Schwellenwert für schmale Seitenleiste', desc: 'Wählen Sie, wie der Breiten-Schwellenwert der Seitenleiste berechnet wird.', options: { @@ -1412,41 +1456,41 @@ export const STRINGS_DE = { customWidth: 'Benutzerdefinierte Breite' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'Breiten-Schwellenwert für schmale Seitenleiste', desc: 'Wechseln, wenn die Seitenleiste schmaler als diese Breite ist.', resetTooltip: 'Auf Standardbreite zurücksetzen' }, - appearanceBackground: { + paneBackgroundColor: { name: 'Hintergrundfarbe', desc: 'Wählen Sie Hintergrundfarben für Navigations- und Listenbereich.', options: { separate: 'Separate Hintergründe', - primary: 'Listenhintergrund verwenden', - secondary: 'Navigationshintergrund verwenden' + listBackground: 'Listenhintergrund verwenden', + navigationBackground: 'Navigationshintergrund verwenden' } }, - appearanceScale: { + zoomLevel: { name: 'Zoomstufe', desc: 'Steuert die gesamte Zoomstufe von Notebook Navigator (Prozent).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'Schwebende Symbolleisten auf iOS verwenden', desc: 'Gilt nur für iOS.' }, - startView: { + defaultStartupView: { name: 'Standard-Startansicht', desc: 'Wählen Sie den Bereich, der beim Öffnen von Notebook Navigator aktiv ist. In der einspaltigen Ansicht wird dieser Bereich zuerst angezeigt, in der zweispaltigen Ansicht erhält er den Tastaturfokus.', options: { navigation: 'Navigationsbereich', - files: 'Listenbereich' + listPane: 'Listenbereich' } }, toolbarButtons: { name: 'Symbolleisten-Schaltflächen', desc: 'Wählen Sie aus, welche Schaltflächen in der Symbolleiste angezeigt werden. Ausgeblendete Schaltflächen bleiben über Befehle und Menüs zugänglich.' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'Neue Notizen in neuem Tab öffnen', desc: 'Wenn aktiviert, öffnet der Befehl „Neue Notiz erstellen" Notizen in einem neuen Tab. Wenn deaktiviert, ersetzen Notizen den aktuellen Tab.' }, @@ -1466,20 +1510,20 @@ export const STRINGS_DE = { name: 'Automatisches Anzeigen: Ereignisse von anderen Fenstern ignorieren', desc: 'Aktive Notiz nicht ändern, wenn mit Notizen in einem anderen Fenster gearbeitet wird.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'Einzelbereich-Animation', desc: 'Übergangsdauer beim Wechseln zwischen Bereichen im Einzelbereich-Modus (Millisekunden).', resetTooltip: 'Auf Standard zurücksetzen' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'Erste Notiz automatisch auswählen', desc: 'Die erste Notiz automatisch öffnen, wenn Sie Ordner, Tags oder Eigenschaften wechseln.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'Auto-Scroll für Verknüpfungen deaktivieren', desc: 'Navigationsbereich nicht scrollen beim Klicken auf Elemente in Verknüpfungen.' }, - autoExpandNavItems: { + expandOnSelection: { name: 'Bei Auswahl erweitern', desc: 'Ordner und Tags bei Auswahl erweitern. Im Einzelfenster-Modus: erste Auswahl erweitert, zweite Auswahl zeigt Dateien.' }, @@ -1517,16 +1561,16 @@ export const STRINGS_DE = { name: 'Verknüpfungsabzeichen', desc: "Was neben Verknüpfungen angezeigt wird. Verwenden Sie die Befehle 'Verknüpfung 1-9 öffnen', um Verknüpfungen direkt zu öffnen.", options: { - index: 'Position (1-9)', + position: 'Position (1-9)', count: 'Elementanzahl', none: 'Keine' } }, - showRecentNotes: { + showRecentFiles: { name: 'Neueste Dateien anzeigen', desc: 'Den Bereich für neueste Dateien im Navigationsbereich anzeigen.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'Dateitypen aus neuesten Dateien ausblenden', desc: 'Wähle aus, welche Dateitypen im Bereich der neuesten Dateien ausgeblendet werden sollen.', options: { @@ -1534,15 +1578,15 @@ export const STRINGS_DE = { folderNotes: 'Ordnernotizen' } }, - recentNotesCount: { + recentFilesCount: { name: 'Anzahl neuester Dateien', desc: 'Anzahl der anzuzeigenden neuesten Dateien.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'Neueste Dateien mit Lesezeichen anheften', desc: 'Neueste Dateien beim Anheften von Lesezeichen einbeziehen.' }, - calendarEnabled: { + enableCalendar: { name: 'Kalender aktivieren', desc: 'Kalenderfunktionen von Notebook Navigator aktivieren.' }, @@ -1554,12 +1598,12 @@ export const STRINGS_DE = { rightSidebar: 'Rechte Seitenleiste' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'Einzelbereichs-Platzierung', desc: 'Wo der Kalender im Einzelbereichs-Modus angezeigt wird.', options: { navigationPane: 'Navigationsbereich', - below: 'Unter den Bereichen' + belowPanes: 'Unter den Bereichen' } }, calendarLocale: { @@ -1581,7 +1625,7 @@ export const STRINGS_DE = { thuFri: 'Donnerstag und Freitag' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'Monatsname-Format', desc: 'Langer (Januar) oder kurzer (Jan.) Monatsname.', options: { @@ -1593,7 +1637,7 @@ export const STRINGS_DE = { name: 'Info-Schaltflächen anzeigen', desc: 'Info-Schaltflächen in der Suchleiste und der Kalenderüberschrift anzeigen.' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'Angezeigte Wochen in linker Seitenleiste', desc: 'Der Kalender in der rechten Seitenleiste zeigt immer den vollen Monat an.', options: { @@ -1638,7 +1682,7 @@ export const STRINGS_DE = { name: 'Ausgeblendete Elemente anzeigen', desc: 'Wenn aktiviert, zeigt der Kalender immer alle Kalendernotizen, einschließlich Notizen, die durch Filter des Tresorprofils ausgeblendet sind.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'Tagesnotiz-Quelle', desc: 'Quelle für Kalendernotizen.', options: { @@ -1658,34 +1702,38 @@ export const STRINGS_DE = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'Stammordner', desc: 'Basisordner für periodische Notizen. Datumsmuster können Unterordner enthalten. Ändert sich mit dem ausgewählten Tresorprofil.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'Vorlagenordner', desc: 'Die Vorlagenauswahl zeigt Notizen aus diesem Ordner.', placeholder: 'Templates', usage: 'Wird von Kalendernotizen und Ordnernotizen verwendet. Vorlagen unter Kalender > Kalenderintegration und Ordner & Ordnernotizen > Ordnernotiz-Dateien konfigurieren.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'Tägliche Notizen', desc: 'Pfad mit Moment-Datumsformat formatieren. Unterordnernamen in Klammern setzen, z.B. [Work]/YYYY. Klicken Sie auf das Vorlagensymbol, um eine Vorlage festzulegen. Vorlagenordner unter Dateioperationen > Vorlagen festlegen.', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'Das Muster muss als vollständiges Datum (Jahr, Monat, Tag) formatiert und wieder geparst werden können.' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'Pfad formatieren mit ', momentLinkText: 'Moment-Datumsformat', momentDescSuffix: '. Unterordnernamen in Klammern setzen, z.B. [Work]/YYYY. Klicken Sie auf das Vorlagensymbol, um eine Vorlage festzulegen. Vorlagenordner unter Dateioperationen > Vorlagen festlegen.', - templaterSupportInstalled: '✅ Das Templater-Plugin ist mit voller Vorlagenunterstützung installiert.', - templaterSupportMissing: '⚠️ Installieren Sie das Templater-Plugin für Vorlagenunterstützung.', templateTokenNoticeLabel: 'Wichtig!', templateTokenNotice: 'Vorlagenunterstützung erfordert das Templater-Plugin. Integrierte Formate wie {{date}} und {{title}} funktionieren nur, wenn {source} auf {option} gesetzt ist.', - placeholder: 'YYYY/YYYYMMDD', - example: 'Aktuelle Syntax: {path}', - parsingError: 'Das Muster muss als vollständiges Datum (Jahr, Monat, Tag) formatiert und wieder geparst werden können.' + example: 'Aktuelle Syntax: {path}' + }, + templaterSupport: { + installed: '✅ Das Templater-Plugin ist mit voller Vorlagenunterstützung installiert.', + missing: '⚠️ Installieren Sie das Templater-Plugin für Vorlagenunterstützung.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'Wöchentliche Notizen', parsingError: 'Das Muster muss als vollständige Woche (Wochenjahr, Wochennummer) formatiert und wieder geparst werden können.', @@ -1694,19 +1742,19 @@ export const STRINGS_DE = { mixedWeekTokensWarning: 'Dieses Muster mischt montagsbasierte Wochen-Token ("W" oder "G") mit gebietsschemabasierten Wochen-Token ("w" oder "g"). Verwenden Sie konsequent einen Satz: "GGGG" mit "WW" f\u00fcr montagsbasierte Wochen oder "gggg" mit "ww", wenn w\u00f6chentliche Notizen dem gew\u00e4hlten Gebietsschema folgen sollen.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'Monatliche Notizen', parsingError: 'Das Muster muss als vollständiger Monat (Jahr, Monat) formatiert und wieder geparst werden können.' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'Vierteljährliche Notizen', parsingError: 'Das Muster muss als vollständiges Quartal (Jahr, Quartal) formatiert und wieder geparst werden können.' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'Jährliche Notizen', parsingError: 'Das Muster muss als vollständiges Jahr (Jahr) formatiert und wieder geparst werden können.' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'Vorlagendatei: {name}' }, showTooltips: { @@ -1727,7 +1775,7 @@ export const STRINGS_DE = { buttonText: 'Trennelement zurücksetzen', notice: 'Trennelementposition zurückgesetzt. Starten Sie Obsidian neu oder öffnen Sie Notebook Navigator erneut, um die Änderungen anzuwenden.' }, - settingsTransfer: { + importAndExportSettings: { name: 'Einstellungen importieren und exportieren', desc: 'Notebook Navigator-Einstellungen als JSON exportieren oder importieren. Der Import ersetzt alle Einstellungen.', importButtonText: 'Importieren', @@ -1787,15 +1835,15 @@ export const STRINGS_DE = { name: 'Enter drücken zum Öffnen', desc: 'Dateien nur mit Enter öffnen während der Tastaturnavigation in der Liste. Unter macOS verhindert dies, dass Enter Dateien umbenennt.' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'Festlegen, ob Shift+Enter die ausgewählte Datei öffnet oder umbenennt.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'Festlegen, ob Cmd+Enter die ausgewählte Datei öffnet oder umbenennt.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Strg+Enter', desc: 'Festlegen, ob Strg+Enter die ausgewählte Datei öffnet oder umbenennt.' }, @@ -1803,17 +1851,17 @@ export const STRINGS_DE = { name: 'Maustasten vor/zurück', desc: 'Aktion für die Vor- und Zurück-Tasten der Maus auf dem Desktop.', options: { - none: 'Systemstandard verwenden', + systemDefault: 'Systemstandard verwenden', singlePaneSwitch: 'Bereiche wechseln (Einzelbereich)', history: 'Verlauf navigieren' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'Notizen mit Eigenschaftsregeln verstecken (Tresorprofil)', desc: 'Kommagetrennte Liste von Frontmatter-Regeln. Verwenden Sie `key` oder `key=value` Einträge (z.B. status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'Dateien verstecken (Tresorprofil)', desc: 'Kommagetrennte Liste von Dateinamenmustern zum Ausblenden. Unterstützt * Platzhalter und / Pfade (z.B. temp-*, *.png, /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1840,7 +1888,7 @@ export const STRINGS_DE = { duplicateName: 'Profilname bereits vorhanden' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'Tresortitel-Platzierung', desc: 'Wählen Sie, wo der Tresortitel angezeigt wird.', options: { @@ -1848,7 +1896,7 @@ export const STRINGS_DE = { navigation: 'Im Navigationsbereich anzeigen' } }, - excludedFolders: { + hideFolders: { name: 'Ordner verstecken (Tresorprofil)', desc: 'Kommagetrennte Liste von auszublendenden Ordnern. Namensmuster: assets* (Ordner die mit assets beginnen), *_temp (endet mit _temp). Pfadmuster: /archive (nur Wurzel-Archive), /res* (Wurzelordner die mit res beginnen), /*/temp (temp-Ordner eine Ebene tief), /projects/* (alle Ordner in projects).', placeholder: 'templates, assets*, /archive, /res*' @@ -1858,7 +1906,7 @@ export const STRINGS_DE = { desc: 'Kommagetrennte Liste von Ordnern, die beim Sammeln von Notizen aus Unterordnern ausgelassen werden. Die Ordner bleiben sichtbar, und beim Auswählen eines Ordners werden seine Notizen weiterhin angezeigt. Verwendet dieselben Muster wie Ordner verstecken.', placeholder: 'daily, ressourcen, /archive' }, - fileVisibility: { + showFileTypes: { name: 'Dateitypen anzeigen (Tresorprofil)', desc: 'Filtern Sie, welche Dateitypen im Navigator angezeigt werden. Dateitypen, die von Obsidian nicht unterstützt werden, können in externen Anwendungen geöffnet werden.', options: { @@ -1894,7 +1942,7 @@ export const STRINGS_DE = { name: 'Datum anzeigen', desc: 'Das Datum unter Notizennamen anzeigen.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'Bei Sortierung nach Name', desc: 'Datum, das angezeigt wird, wenn Notizen alphabetisch sortiert sind.', options: { @@ -1906,7 +1954,7 @@ export const STRINGS_DE = { name: 'Datei-Tags anzeigen', desc: 'Zeigt klickbare Tags in Datei-Elementen an.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'Vollständige Tag-Pfade anzeigen', desc: "Vollständige Tag-Hierarchiepfade anzeigen. Aktiviert: 'ai/openai', 'arbeit/projekte/2024'. Deaktiviert: 'openai', '2024'." }, @@ -1914,7 +1962,7 @@ export const STRINGS_DE = { name: 'Datei-Tags einfärben', desc: 'Tag-Farben auf Tag-Abzeichen in Datei-Elementen anwenden.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'Farbige Tags zuerst anzeigen', desc: 'Farbige Tags vor anderen Tags in Datei-Elementen sortieren.' }, @@ -1930,7 +1978,7 @@ export const STRINGS_DE = { name: 'Datei-Eigenschaften einfärben', desc: 'Eigenschaftsfarben auf Eigenschafts-Badges in Datei-Elementen anwenden.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'Farbige Eigenschaften zuerst anzeigen', desc: 'Farbige Eigenschaften vor anderen Eigenschaften in Datei-Elementen sortieren.' }, @@ -1938,7 +1986,7 @@ export const STRINGS_DE = { name: 'Eigenschaften im Kompaktmodus anzeigen', desc: 'Eigenschaften anzeigen, wenn der Kompaktmodus aktiv ist.' }, - textCountDisplay: { + textCountType: { name: 'Zähltyp', desc: 'Wählen Sie, welche Textzählungen in Dateielementen angezeigt werden.', options: { @@ -1968,11 +2016,11 @@ export const STRINGS_DE = { name: 'Zieleigenschaft', desc: 'Frontmatter-Eigenschaftsschlüssel mit der Zielwortanzahl. Leer lassen, um Ziele auszublenden.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'Zielprozentsatz anzeigen', desc: 'Nur den Fortschrittsprozentsatz anzeigen, wenn eine Zielwortanzahl verfügbar ist.' }, - propertyFields: { + propertyKeys: { name: 'Eigenschaftsschlüssel (Tresorprofil)', desc: 'Frontmatter-Eigenschaftsschlüssel mit schlüsselweiser Sichtbarkeit für Navigation und Dateiliste.', addButtonTooltip: 'Eigenschaftsschlüssel konfigurieren', @@ -1984,11 +2032,11 @@ export const STRINGS_DE = { name: 'Eigenschaften in separaten Zeilen anzeigen', desc: 'Jede Eigenschaft in einer eigenen Zeile anzeigen.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'Eigenschafts-Pills mit Notizen verknüpfen', desc: 'Auf ein Eigenschafts-Pill klicken, um die verknüpfte Notiz zu öffnen.' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: 'Eigenschafts-Pills mit URLs verknüpfen', desc: 'Auf ein Eigenschafts-Pill klicken, um die verknüpfte URL zu öffnen.' }, @@ -2008,7 +2056,7 @@ export const STRINGS_DE = { helpTooltip: 'Format mit Moment', momentLinkText: 'Moment-Format' }, - showFilePreview: { + showNotePreview: { name: 'Notizenvorschau anzeigen', desc: 'Vorschautext unter Notizennamen anzeigen.' }, @@ -2037,7 +2085,7 @@ export const STRINGS_DE = { desc: 'Kommagetrennte Liste von Frontmatter-Eigenschaften für Vorschautext. Die erste Eigenschaft mit Text wird verwendet.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'Auf Notizinhalt zurückgreifen', desc: 'Notizinhalt als Vorschau anzeigen, wenn keine der angegebenen Eigenschaften Text enthält.' }, @@ -2052,7 +2100,7 @@ export const STRINGS_DE = { '5': '5 Zeilen' } }, - fileNameRows: { + titleRows: { name: 'Titelzeilen', desc: 'Anzahl der Zeilen für Notizentitel.', options: { @@ -2083,29 +2131,29 @@ export const STRINGS_DE = { desc: 'Kommagetrennte Liste von Frontmatter-Eigenschaften. Notizen mit einer dieser Eigenschaften speichern keine Feature-Bilder.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'Anzeigegröße des Feature-Bildes', desc: 'Maximale Darstellungsgröße für Feature-Bilder in Notizlisten.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'Pixelgröße des Feature-Bildes', desc: 'Auflösung für gespeicherte Feature-Bild-Vorschaubilder. Erhöhen Sie diesen Wert, wenn größere Vorschauen unscharf aussehen.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, downloadExternalFeatureImages: { name: 'Externe Bilder herunterladen', desc: 'Remote-Bilder und YouTube-Vorschaubilder für Feature-Bilder herunterladen.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'Exportierte Vorschaubilder ausblenden', desc: 'Exportierte PNG-Dateien der Zeichnungsvorschau ausblenden. Aktiviere "Versteckte Elemente anzeigen", um sie anzuzeigen.' }, @@ -2138,11 +2186,11 @@ export const STRINGS_DE = { alphaDesc: 'Z bis A' } }, - showNoteCount: { + showFileCount: { name: 'Dateianzahl anzeigen', desc: 'Dateianzahlen neben Ordnern, Tags und Eigenschaften anzeigen.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'Icons für Shortcuts und kürzliche Elemente anzeigen', desc: 'Icons neben Einträgen in den Bereichen Shortcuts und Zuletzt verwendet anzeigen.' }, @@ -2151,7 +2199,7 @@ export const STRINGS_DE = { desc: 'Symbole für Symbolleiste, Ordner, Tags, Eigenschaften, angeheftete Elemente, Suche und Sortierung bearbeiten.', buttonText: 'Symbole bearbeiten' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'Farbe nur auf Symbole anwenden', desc: 'Wenn aktiviert, werden benutzerdefinierte Farben nur auf Symbole angewendet. Wenn deaktiviert, werden Farben sowohl auf Symbole als auch auf Textbeschriftungen angewendet.' }, @@ -2159,9 +2207,9 @@ export const STRINGS_DE = { name: 'Regenbogen-Farbmodus (Tresorprofil)', desc: 'Regenbogenfarben im Navigationsbereich anwenden.', options: { - none: 'Aus', - foreground: 'Textfarbe', - background: 'Hintergrundfarbe' + off: 'Aus', + textColor: 'Textfarbe', + backgroundColor: 'Hintergrundfarbe' } }, navRainbowFirstColor: { @@ -2184,7 +2232,7 @@ export const STRINGS_DE = { name: 'Auf Verknüpfungen anwenden', desc: 'Regenbogenfarben auf Verknüpfungen anwenden.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'Auf zuletzt verwendete Elemente anwenden', desc: 'Regenbogenfarben auf zuletzt verwendete Elemente anwenden.' }, @@ -2218,7 +2266,7 @@ export const STRINGS_DE = { name: 'Auf Eigenschaften anwenden', desc: 'Regenbogenfarben auf Eigenschaften anwenden.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'Gleichmäßige Helligkeit über Farbtöne', // (English: Consistent brightness across hues) desc: 'Interpoliert die Helligkeit zwischen den Start- und Endfarben bei Farbtonübergängen.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2236,7 +2284,7 @@ export const STRINGS_DE = { all: 'Jede Ebene' } }, - collapseBehavior: { + collapseItems: { name: 'Elemente einklappen', desc: 'Wählen Sie, was die Schaltfläche zum Ein-/Ausklappen beeinflusst.', options: { @@ -2246,7 +2294,7 @@ export const STRINGS_DE = { propertiesOnly: 'Nur Eigenschaften' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'Ausgewähltes Element erweitert halten', desc: 'Beim Einklappen bleibt das ausgewählte Element und seine übergeordneten Elemente erweitert.' }, @@ -2254,7 +2302,7 @@ export const STRINGS_DE = { name: 'Tresorverzeichnis beim Einklappen überspringen', desc: 'Beim Einklappen aller Elemente bleibt der Stammordner des Tresors in seinem aktuellen Zustand.' }, - navIndent: { + treeIndentation: { name: 'Baum-Einrückung', desc: 'Passen Sie die Einrückungsbreite für verschachtelte Ordner, Tags und Eigenschaften an (Pixel).' }, @@ -2280,7 +2328,7 @@ export const STRINGS_DE = { line: 'Linie' } }, - navRootSpacing: { + rootItemSpacing: { name: 'Abstand für Wurzelelemente', desc: 'Abstand zwischen Ordnern, Tags und Eigenschaften auf der obersten Ebene (Pixel).' }, @@ -2307,15 +2355,15 @@ export const STRINGS_DE = { highToLow: 'hoch bis niedrig' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'Tags-Ordner anzeigen', desc: '"Tags" als einklappbaren Ordner anzeigen.' }, - showUntagged: { + showUntaggedNotes: { name: 'Ungetaggte Notizen anzeigen', desc: '"Ohne Tag" für Notizen ohne Tags anzeigen.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'Tags nach Auswahl filtern', desc: 'Nur Tags anzeigen, die in Notizen im ausgewählten Ordner oder der ausgewählten Eigenschaft vorkommen.' }, @@ -2349,20 +2397,20 @@ export const STRINGS_DE = { highToLow: 'hoch bis niedrig' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'Eigenschafts-Ordner anzeigen', desc: '"Eigenschaften" als einklappbaren Ordner anzeigen.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'Eigenschaften nach Auswahl filtern', desc: 'Nur Eigenschaften anzeigen, die in Notizen im ausgewählten Ordner oder dem ausgewählten Tag vorkommen.' }, - hiddenTags: { + hideTags: { name: 'Tags verstecken (Tresorprofil)', desc: 'Kommagetrennte Liste von Tag-Mustern. Namensmuster: tag* (beginnt mit), *tag (endet mit). Pfadmuster: archiv (Tag und Untergeordnete), archiv/* (nur Untergeordnete), projekte/*/entwürfe (Platzhalter in der Mitte).', placeholder: 'archiv*, *entwurf, projekte/*/alt' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'Notizen mit Tags verstecken (Tresorprofil)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2395,7 +2443,7 @@ export const STRINGS_DE = { desc: 'Vorlagendatei, die beim Erstellen von Ordnernotizen verwendet wird. Markdown-Vorlagen können Templater verwenden. Canvas- und Base-Vorlagen werden als Dateiinhalt kopiert. Vorlagenordner unter Dateioperationen > Vorlagen festlegen.', formatWarning: 'Das Vorlagenformat muss dem ausgewählten Ordnernotiztyp entsprechen: .md, .canvas oder .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'Ordnernamen öffnen Ordnernotizen', desc: 'Ein Klick auf einen Ordnernamen öffnet seine Ordnernotiz. Wenn deaktiviert, liefern Ordnernotizen nur Ordnermetadaten wie Name, Symbol und Farbe.' }, @@ -2416,7 +2464,7 @@ export const STRINGS_DE = { rightSidebar: 'Rechte Seitenleiste' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'Rechte Seitenleiste: Nächste Ordnernotiz anzeigen', desc: 'Wenn ein Ordner ausgewählt wird, zeigt die rechte Seitenleiste automatisch die nächstgelegene übergeordnete Ordnernotiz an.' }, @@ -2459,7 +2507,7 @@ export const STRINGS_DE = { indexingTitle: 'Tresor wird indexiert...', progress: 'Notebook Navigator-Cache wird aktualisiert.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'Herunterladen', downloadingLabel: 'Wird heruntergeladen...', removeButton: 'Entfernen', @@ -2471,11 +2519,11 @@ export const STRINGS_DE = { infoNote: 'Heruntergeladene Icon-Pakete synchronisieren den Installationsstatus über Geräte hinweg. Icon-Pakete bleiben in der lokalen Datenbank auf jedem Gerät; die Synchronisierung verfolgt nur, ob sie heruntergeladen oder entfernt werden sollen. Icon-Pakete werden aus dem Notebook Navigator Repository heruntergeladen (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'Frontmatter-Metadaten verwenden', desc: 'Frontmatter für Notizname, Zeitstempel, Icons und Farben verwenden' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'Namensfelder', desc: 'Kommagetrennte Liste von Frontmatter-Feldern. Erster nicht-leerer Wert wird verwendet. Fällt auf Dateinamen zurück.', placeholder: 'title, name' @@ -2495,7 +2543,7 @@ export const STRINGS_DE = { desc: 'Frontmatter-Feld für Hintergrundfarben. Leer lassen, um Hintergrundfarben aus den Einstellungen zu verwenden.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'Icons und Farben aus Einstellungen migrieren', desc: 'In Einstellungen gespeichert: {icons} Icons, {colors} Farben.', button: 'Migrieren', @@ -2515,7 +2563,7 @@ export const STRINGS_DE = { desc: 'Frontmatter-Feldname für den Änderungszeitstempel. Leer lassen, um nur das Dateisystemdatum zu verwenden.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'Zeitstempelformat', desc: 'Format zum Parsen von Zeitstempeln im Frontmatter. Leer lassen, um ISO 8601-Parsing zu verwenden.', helpTooltip: 'Format mit Moment', @@ -2528,12 +2576,12 @@ export const STRINGS_DE = { buttonText: '❤️ Sponsor', coffeeButton: '☕️ Spendiere mir einen Kaffee' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'Beim Start nach neuer Version suchen', desc: 'Prüft beim Start auf neue Plugin-Versionen und zeigt eine Benachrichtigung an, wenn ein Update verfügbar ist. Überprüfungen erfolgen höchstens einmal täglich.', status: 'Neue Version verfügbar: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'Start-Debugprotokollierung', desc: 'Schreibt Startdiagnosen in eine Markdown-Datei mit Zeitstempel im Stammverzeichnis des Vaults und stoppt, nachdem der Start abgeschlossen ist. Die Datei kann synchronisiert werden und Dateipfade enthalten.' }, diff --git a/src/i18n/locales/en.ts b/src/i18n/locales/en.ts index d104c73fa..eace2a56c 100644 --- a/src/i18n/locales/en.ts +++ b/src/i18n/locales/en.ts @@ -74,6 +74,9 @@ export const STRINGS_EN = { shortcutsHeader: 'Shortcuts', // Header label for shortcuts section in navigation pane (English: Shortcuts) recentFilesHeader: 'Recent files', // Header label for recent files section in navigation pane (English: Recent files) properties: 'Properties', // Header label for properties section in navigation pane (English: Properties) + folders: 'Folders', + tags: 'Tags', + calendar: 'Calendar', reorderRootFoldersTitle: 'Reorder navigation', reorderRootFoldersHint: 'Use arrows or drag to reorder', vaultRootLabel: 'Vault', @@ -1005,101 +1008,142 @@ export const STRINGS_EN = { exportSuccess: 'Failed metadata report exported to: {filename}', exportFailed: 'Failed to export metadata report' }, - sections: { - general: 'General', - vaultFilters: 'Display filters', - appearanceBehavior: 'Appearance & behavior', - navigationPane: 'Navigation pane', - calendar: 'Calendar', - fileOperations: 'File operations', - icons: 'Icon packs', - folders: 'Folders', - folderNotes: 'Folder notes', - folderNoteFiles: 'Folder note files', - foldersAndFolderNotes: 'Folders & folder notes', - tagsAndProperties: 'Tags & properties', - tags: 'Tags', - listPane: 'List pane', - notes: 'File display', - shortcutsAndRecentFiles: 'Shortcuts & recent files', - advanced: 'Advanced' + index: { + label: 'General', + description: 'Release notes, support, vault profile, file types, and property keys.', + groups: { + vaultSetup: 'Vault setup' + } }, pageGroups: { configuration: 'Configuration', - navigationAndContent: 'Navigation pane', - notesAndLists: 'List pane', + navigationPane: 'Navigation pane', + listPane: 'List pane', calendarAndTools: 'Calendar and tools' }, - pageDescriptions: { - general: 'Release notes, support, vault profile, file types, and property keys.', - vaultFilters: 'Hidden folders, tags, files, file tags, and property rules.', - appearanceBehavior: 'Behavior, keyboard navigation, mouse buttons, appearance, and formatting.', - navigationPane: 'Layout, appearance, file counts, collapse behavior, and rainbow colors.', - shortcuts: 'Shortcut visibility, badges, recent files, and pinned items.', - calendar: 'Calendar display, date notes, templates, locale, and sidebar placement.', - fileOperations: 'Template folder, delete confirmations, attachments, and file move conflict behavior.', - foldersAndFolderNotes: 'Folder display, folder notes, folder note templates, and folder note behavior.', - tagsProperties: 'Tag and property sections, icons, sorting, scope, and inheritance.', - listPane: 'Sorting, grouping, list modes, pinned notes, and drawing previews.', - frontmatter: 'Frontmatter fields for display names, timestamps, icons, and colors.', - notes: 'Titles, preview text, feature images, tags, properties, dates, word counts, and character counts.', - iconPacks: 'Interface icons, file icons, and icon pack management.', - advanced: 'Diagnostics, metadata cleanup, import/export, and reset.' - }, - groups: { - general: { - vaultConfiguration: 'Vault setup', - templates: 'Templates', - behavior: 'Behavior', - startup: 'Startup', - keyboardNavigation: 'Keyboard navigation', - mouseButtons: 'Mouse buttons', - view: 'Appearance', - icons: 'Icons', - desktopAppearance: 'Desktop appearance', - mobileAppearance: 'Mobile appearance', - formatting: 'Formatting' + pages: { + displayFilters: { + label: 'Display filters', + description: 'Hidden folders, tags, files, file tags, and property rules.' + }, + appearanceAndBehavior: { + label: 'Appearance & behavior', + description: 'Behavior, keyboard navigation, mouse buttons, appearance, and formatting.', + groups: { + startup: 'Startup', + keyboardNavigation: 'Keyboard navigation', + mouseButtons: 'Mouse buttons', + desktopAppearance: 'Desktop appearance', + mobileAppearance: 'Mobile appearance', + appearance: 'Appearance', + icons: 'Icons', + formatting: 'Formatting' + } + }, + navigationPane: { + label: 'Navigation pane', + description: 'Layout, appearance, file counts, collapse behavior, and rainbow colors.', + groups: { + appearance: 'Appearance', + banner: 'Banner', + collapseItems: 'Collapse items', + dragAndDrop: 'Drag and drop', + fileCounts: 'File counts', + rainbowColors: 'Rainbow colors' + } + }, + shortcutsAndRecentFiles: { + label: 'Shortcuts & recent files', + description: 'Shortcut visibility, badges, recent files, and pinned items.', + groups: { + shortcuts: 'Shortcuts', + recentFiles: 'Recent files' + } + }, + foldersAndFolderNotes: { + label: 'Folders & folder notes', + description: 'Folder display, folder notes, folder note templates, and folder note behavior.', + groups: { + folders: 'Folders', + folderNotes: 'Folder notes', + folderNoteFiles: 'Folder note files' + } + }, + tagsAndProperties: { + label: 'Tags & properties', + description: 'Tag and property sections, icons, sorting, scope, and inheritance.', + groups: { + tags: 'Tags', + properties: 'Properties' + } + }, + listPane: { + label: 'List pane', + description: 'Sorting, grouping, list modes, pinned notes, and drawing previews.', + groups: { + appearance: 'Appearance', + sortAndGroup: 'Sort & group', + groupHeaders: 'Group headers', + manualSort: 'Manual sort', + pinnedNotes: 'Pinned notes', + behavior: 'Behavior', + drawingPreviews: 'Drawing previews' + } + }, + fileOperations: { + label: 'File operations', + description: 'Template folder, delete confirmations, attachments, and file move conflict behavior.', + groups: { + templates: 'Templates' + } + }, + frontmatterFields: { + label: 'Frontmatter fields', + description: 'Frontmatter fields for display names, timestamps, icons, and colors.' + }, + fileDisplay: { + label: 'File display', + description: 'Titles, preview text, feature images, tags, properties, dates, word counts, and character counts.', + groups: { + icon: 'Icon', + title: 'Title', + previewText: 'Preview text', + featureImage: 'Feature image', + tags: 'Tags', + properties: 'Properties', + tasks: 'Tasks', + date: 'Date', + parentFolder: 'Parent folder', + wordAndCharacterCount: 'Word and character count' + } + }, + calendar: { + label: 'Calendar', + description: 'Calendar display, date notes, templates, locale, and sidebar placement.', + groups: { + appearance: 'Appearance', + leftSidebar: 'Left sidebar', + calendarIntegration: 'Calendar integration', + rightSidebar: 'Right sidebar' + } + }, + iconPacks: { + label: 'Icon packs', + description: 'Interface icons, file icons, and icon pack management.' }, advanced: { - maintenance: 'Maintenance', - resetSettings: 'Reset settings' - }, - navigation: { - appearance: 'Appearance', - banner: 'Banner', - collapseItems: 'Collapse items', - dragAndDrop: 'Drag and drop', - noteCounts: 'File counts', - rainbowColors: 'Rainbow colors', - leftSidebar: 'Left sidebar', - calendarIntegration: 'Calendar integration' - }, - list: { - display: 'Appearance', - sortAndGroup: 'Sort & group', - groupHeaders: 'Group headers', - manualSort: 'Manual sort', - pinnedNotes: 'Pinned notes', - drawingPreviews: 'Drawing previews' - }, - notes: { - frontmatter: 'Frontmatter fields', - tasks: 'Tasks', - icon: 'Icon', - title: 'Title', - previewText: 'Preview text', - featureImage: 'Feature image', - tags: 'Tags', - properties: 'Properties', - date: 'Date', - parentFolder: 'Parent folder', - wordCount: 'Word and character count' + label: 'Advanced', + description: 'Diagnostics, metadata cleanup, import/export, and reset.', + groups: { + maintenance: 'Maintenance', + resetSettings: 'Reset settings' + } } }, syncMode: { notSynced: '(not synced)', - switchToSynced: 'Enable sync', - switchToLocal: 'Disable sync' + enableSync: 'Enable sync', + disableSync: 'Disable sync' }, items: { listPaneTitle: { @@ -1107,11 +1151,11 @@ export const STRINGS_EN = { desc: 'Choose where the list pane title is shown.', options: { header: 'Show in header', - list: 'Show in list pane', + listPane: 'Show in list pane', hidden: 'Do not show' } }, - sortNotesBy: { + defaultSortOrder: { name: 'Default sort order', desc: 'Choose the default sort order for notes. Properties from Sorting properties appear as additional sort options.', directions: { @@ -1119,18 +1163,18 @@ export const STRINGS_EN = { desc: 'Descending' }, dateDirections: { - desc: 'Newest on top', - asc: 'Oldest on top' + newestOnTop: 'Newest on top', + oldestOnTop: 'Oldest on top' }, textDirections: { - asc: 'A on top', - desc: 'Z on top' + aOnTop: 'A on top', + zOnTop: 'Z on top' }, fields: { - modified: 'Date edited', - created: 'Date created', + dateEdited: 'Date edited', + dateCreated: 'Date created', title: 'Title', - filename: 'File name', + fileName: 'File name', property: 'Property' } }, @@ -1143,7 +1187,7 @@ export const STRINGS_EN = { follow: 'Follow sort order' } }, - propertySortKey: { + sortingProperties: { name: 'Sorting properties', desc: 'Comma-separated frontmatter properties. Each property appears as a sort option in the Default sort order setting and in the sort menu in the list pane. These properties are not changed.', placeholder: 'published, author', @@ -1153,14 +1197,14 @@ export const STRINGS_EN = { both: 'Default sort order and default grouping were reset because their properties are no longer available.' } }, - propertySortSecondary: { + propertySecondarySort: { name: 'Secondary sort', desc: 'Used with Property sort when notes have the same property value or no property value.', options: { title: 'Title', - filename: 'File name', - created: 'Date created', - modified: 'Date edited' + fileName: 'File name', + dateCreated: 'Date created', + dateEdited: 'Date edited' } }, propertySortInstructions: { @@ -1173,16 +1217,16 @@ export const STRINGS_EN = { '**Tag and property views:** When **Folder** grouping is selected, date headings are shown instead.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'Grouping properties', desc: 'Comma-separated frontmatter properties. Each property appears as a grouping option in the Default grouping setting and in the sort menu in the list pane. These properties are not changed.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'Manual sort property', desc: 'Frontmatter property used to store numeric index values for manual sort.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'Group header property', desc: 'Frontmatter property used to store custom group headers.' }, @@ -1199,7 +1243,7 @@ export const STRINGS_EN = { options: { top: 'Top', bottom: 'Bottom', - 'below-selected-note': 'Below selected note', + belowSelectedNote: 'Below selected note', unsorted: 'Unsorted' } }, @@ -1215,7 +1259,7 @@ export const STRINGS_EN = { 'In the list pane, select one note or multi-select several, then press **Cmd/Ctrl + Arrow Up/Down** to move the selection up or down.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'Scroll to selected file on list changes', desc: 'Scroll to the selected file when pinning notes, showing descendant notes, changing folder appearance, or running file operations.' }, @@ -1223,15 +1267,15 @@ export const STRINGS_EN = { name: 'Show notes from subfolders / descendants', desc: 'Include notes from nested subfolders and tag and property descendants when viewing a folder, tag, or property.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'Only pin notes in their folder', desc: 'Pinned notes appear pinned only in their own folder. Useful for folder notes or if you have many pinned notes. Does not affect tag or property views.' }, - separateNoteCounts: { + separateFileCounts: { name: 'Show current and descendant file counts separately', desc: 'Display file counts as "current ▾ descendants" for folders, tags, and properties.' }, - groupNotes: { + defaultGrouping: { name: 'Default grouping', desc: '**Headers** annotate the sorted list without changing its order: Custom shows headers defined in frontmatter, and Date inserts date headers. **Groups** reorder the list: folder and property groups are ordered on their own, and notes inside each group follow the sort order.', families: { @@ -1244,7 +1288,7 @@ export const STRINGS_EN = { folder: 'Folder' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'Always show all tag and property pills', desc: 'When disabled, pills matching the current navigation selection are hidden (e.g. the "recipes" tag pill is hidden when browsing the "recipes" tag). Enable to keep all pills visible.' }, @@ -1252,7 +1296,7 @@ export const STRINGS_EN = { name: 'Sticky group headers', desc: 'Keep the current date, folder, property, or pinned section header visible while scrolling.' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'Show subfolder paths', desc: 'When grouping by folder in the list pane, show subfolder paths instead of only folder names.' }, @@ -1280,9 +1324,9 @@ export const STRINGS_EN = { name: 'Unfinished task icon', desc: 'Replace the file icon when a note has unfinished tasks.', options: { - none: 'Disabled', + disabled: 'Disabled', compact: 'Compact mode', - all: 'Standard and compact' + standardAndCompact: 'Standard and compact' } }, useFolderIcon: { @@ -1305,7 +1349,7 @@ export const STRINGS_EN = { name: 'Task progress: hide when completed', desc: 'Hide the task progress when all tasks in a note are completed.' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'Unfinished task background', desc: 'Apply a background color when a note has unfinished tasks.' }, @@ -1313,7 +1357,7 @@ export const STRINGS_EN = { name: 'Unfinished task background color', desc: 'Set the background color used when a note has unfinished tasks.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'Icons by file name', desc: 'Assign icons to files based on text in their names.' }, @@ -1323,7 +1367,7 @@ export const STRINGS_EN = { placeholder: '# Text=icon\nmeeting=ph-calendar\ninvoice=ph-receipt', editTooltip: 'Edit mappings' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'Icons by file type', desc: 'Assign icons to files based on their extension.' }, @@ -1331,7 +1375,7 @@ export const STRINGS_EN = { name: 'File icon preset', desc: 'Choose the built-in icons or an icon pack preset. Custom extension rules override this preset.', options: { - none: 'Built-in icons' + builtIn: 'Built-in icons' }, notInstalledWarning: 'This icon pack is not installed. Built-in icons are shown instead.' }, @@ -1354,11 +1398,11 @@ export const STRINGS_EN = { name: 'Show parent folder', desc: 'Display the parent folder name for notes in subfolders, tags, or properties.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'Show folder path', desc: 'Display the path relative to the selected folder instead of only the folder name. Tags and properties show the full path.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'Click parent folder to go to folder', desc: 'Clicking the parent folder label opens the folder in list pane.' }, @@ -1386,7 +1430,7 @@ export const STRINGS_EN = { vertical: 'Vertical split' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'When sidebar is too narrow', desc: 'Choose what happens when the navigation pane and list pane do not fit side by side.', options: { @@ -1395,7 +1439,7 @@ export const STRINGS_EN = { vertical: 'Switch to vertical split' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'Narrow sidebar threshold', desc: 'Choose how the sidebar width threshold is calculated.', options: { @@ -1403,41 +1447,41 @@ export const STRINGS_EN = { customWidth: 'Custom width' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'Narrow sidebar threshold width', desc: 'Switch when the sidebar is narrower than this width.', resetTooltip: 'Reset to default width' }, - appearanceBackground: { + paneBackgroundColor: { name: 'Background color', desc: 'Choose background colors for navigation and list panes.', options: { separate: 'Separate backgrounds', - primary: 'Use list background', - secondary: 'Use navigation background' + listBackground: 'Use list background', + navigationBackground: 'Use navigation background' } }, - appearanceScale: { + zoomLevel: { name: 'Zoom level', desc: 'Controls the overall zoom level of Notebook Navigator (percentage).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'Use floating toolbars on iOS', desc: 'Applies only on iOS.' }, - startView: { + defaultStartupView: { name: 'Default startup view', desc: 'Choose which pane is active when Notebook Navigator opens. Single-pane layout shows this pane first; dual-pane layout gives it keyboard focus.', options: { navigation: 'Navigation pane', - files: 'List pane' + listPane: 'List pane' } }, toolbarButtons: { name: 'Toolbar buttons', desc: 'Choose which buttons appear in the toolbar. Hidden buttons remain accessible via commands and menus.' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'Open new notes in new tab', desc: 'When enabled, the Create new note command opens notes in a new tab. When disabled, notes replace the current tab.' }, @@ -1457,20 +1501,20 @@ export const STRINGS_EN = { name: 'Auto-reveal: Ignore events from other windows', desc: 'Do not change active note when clicking or changing notes in another window.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'Single pane animation', desc: 'Transition duration when switching panes in single-pane mode (milliseconds).', resetTooltip: 'Reset to default' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'Auto-select first note', desc: 'Automatically open the first note when switching folders, tags, or properties.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'Disable auto-scroll for shortcuts', desc: "Don't scroll the navigation pane when clicking items in shortcuts." }, - autoExpandNavItems: { + expandOnSelection: { name: 'Expand on selection', desc: 'Expand folders, tags, and properties when selected. In single pane mode, first selection expands, second selection shows files.' }, @@ -1508,16 +1552,16 @@ export const STRINGS_EN = { name: 'Shortcut badge', desc: "What to display next to shortcuts. Use 'Open shortcut 1-9' commands to open shortcuts directly.", options: { - index: 'Position (1-9)', + position: 'Position (1-9)', count: 'Item counts', none: 'None' } }, - showRecentNotes: { + showRecentFiles: { name: 'Show recent files', desc: 'Display the recent files section in the navigation pane.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'Hide file types from recent files', desc: 'Choose which file types to hide in the recent files section.', options: { @@ -1525,15 +1569,15 @@ export const STRINGS_EN = { folderNotes: 'Folder notes' } }, - recentNotesCount: { + recentFilesCount: { name: 'Recent files count', desc: 'Number of recent files to display.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'Pin recent files with shortcuts', desc: 'Include recent files when shortcuts are pinned.' }, - calendarEnabled: { + enableCalendar: { name: 'Enable calendar', desc: 'Enable calendar features of Notebook Navigator.' }, @@ -1545,12 +1589,12 @@ export const STRINGS_EN = { rightSidebar: 'Right sidebar' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'Single pane placement', desc: 'Where the calendar is shown in single pane mode.', options: { navigationPane: 'Navigation pane', - below: 'Below panes' + belowPanes: 'Below panes' } }, calendarLocale: { @@ -1571,7 +1615,7 @@ export const STRINGS_EN = { thuFri: 'Thursday and Friday' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'Month name format', desc: 'Long (January) or short (Jan) month name.', options: { @@ -1583,7 +1627,7 @@ export const STRINGS_EN = { name: 'Show info buttons', desc: 'Display info buttons in the search bar and calendar header.' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'Weeks to show in left sidebar', desc: 'Calendar in the right sidebar always displays the full month.', options: { @@ -1628,7 +1672,7 @@ export const STRINGS_EN = { name: 'Show hidden items', desc: 'When enabled, the calendar always shows all calendar notes, including notes hidden by vault profile filters.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'Daily note source', desc: 'Source for calendar notes.', options: { @@ -1648,34 +1692,38 @@ export const STRINGS_EN = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'Root folder (vault profile)', desc: 'Base folder for periodic notes. Date patterns can include subfolders. Changes with the selected vault profile.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'Template folder location', desc: 'Template file picker shows notes from this folder.', placeholder: 'Templates', usage: 'Used by calendar notes and folder notes. Configure templates in Calendar > Calendar integration and Folders & folder notes > Folder note files.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'Daily notes', desc: 'Format path using Moment date format. Wrap subfolder names in brackets, e.g., [Work]/YYYY. Click template icon to set template. Set template folder location in File operations > Templates.', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'Pattern must format and parse back to a full date (year, month, day).' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'Format path using ', momentLinkText: 'Moment date format', momentDescSuffix: '. Wrap subfolder names in brackets, e.g., [Work]/YYYY. Click template icon to set template. Set template folder location in File operations > Templates.', - templaterSupportInstalled: '✅ Templater plugin is installed with full template support.', - templaterSupportMissing: '⚠️ Install Templater plugin for template support.', templateTokenNoticeLabel: 'Important!', templateTokenNotice: 'Template support requires the Templater plugin. Built-in formats such as {{date}} and {{title}} can only be used when {source} is set to {option}.', - placeholder: 'YYYY/YYYYMMDD', - example: 'Current syntax: {path}', - parsingError: 'Pattern must format and parse back to a full date (year, month, day).' + example: 'Current syntax: {path}' + }, + templaterSupport: { + installed: '✅ Templater plugin is installed with full template support.', + missing: '⚠️ Install Templater plugin for template support.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'Weekly notes', parsingError: 'Pattern must format and parse back to a full week (week year, week number).', weekPathMismatchWarning: @@ -1683,19 +1731,19 @@ export const STRINGS_EN = { mixedWeekTokensWarning: 'This pattern mixes Monday-based week tokens ("W" or "G") with locale-based week tokens ("w" or "g"). Use one set consistently: "GGGG" with "WW" for Monday-based weeks, or "gggg" with "ww" if weekly notes should follow the selected locale.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'Monthly notes', parsingError: 'Pattern must format and parse back to a full month (year, month).' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'Quarterly notes', parsingError: 'Pattern must format and parse back to a full quarter (year, quarter).' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'Yearly notes', parsingError: 'Pattern must format and parse back to a full year (year).' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'Template file: {name}' }, showTooltips: { @@ -1716,7 +1764,7 @@ export const STRINGS_EN = { buttonText: 'Reset separator', notice: 'Separator position reset. Restart Obsidian or reopen Notebook Navigator to apply.' }, - settingsTransfer: { + importAndExportSettings: { name: 'Import and export settings', desc: 'Export or import Notebook Navigator settings as JSON. Importing replaces all settings.', importButtonText: 'Import', @@ -1774,15 +1822,15 @@ export const STRINGS_EN = { name: 'Press Enter to open files', desc: 'Open files only when pressing Enter during list keyboard navigation. On macOS, this stops Enter from renaming files.' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'Choose whether Shift+Enter opens or renames the selected file.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'Choose whether Cmd+Enter opens or renames the selected file.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'Choose whether Ctrl+Enter opens or renames the selected file.' }, @@ -1790,12 +1838,12 @@ export const STRINGS_EN = { name: 'Mouse back/forward buttons', desc: 'Action for mouse back and forward buttons on desktop.', options: { - none: 'Use system default', + systemDefault: 'Use system default', singlePaneSwitch: 'Switch panes (single-pane)', history: 'Navigate history' } }, - fileVisibility: { + showFileTypes: { name: 'Show file types (vault profile)', desc: 'Filter which file types are shown in the navigator. File types not supported by Obsidian may open in external applications.', options: { @@ -1827,12 +1875,12 @@ export const STRINGS_EN = { desc: 'Create the periodic note on startup or command if it does not exist.' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'Hide notes with property rules (vault profile)', desc: 'Comma-separated list of frontmatter rules. Use `key` or `key=value` entries (e.g., status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'Hide files (vault profile)', desc: 'Comma-separated list of filename patterns to hide. Supports * wildcards and / paths (e.g., temp-*, *.png, /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1859,7 +1907,7 @@ export const STRINGS_EN = { duplicateName: 'Profile name already exists' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'Vault title placement', desc: 'Choose where the vault title is shown.', options: { @@ -1867,7 +1915,7 @@ export const STRINGS_EN = { navigation: 'Show in navigation pane' } }, - excludedFolders: { + hideFolders: { name: 'Hide folders (vault profile)', desc: 'Comma-separated list of folders to hide. Name patterns: assets* (folders starting with assets), *_temp (ending with _temp). Path patterns: /archive (root archive only), /res* (root folders starting with res), /*/temp (temp folders one level deep), /projects/* (all folders inside projects).', placeholder: 'templates, assets*, /archive, /res*' @@ -1881,7 +1929,7 @@ export const STRINGS_EN = { name: 'Show date', desc: 'Display the date below note names.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'When sorting by name', desc: 'Date to show when notes are alphabetically sorted.', options: { @@ -1893,7 +1941,7 @@ export const STRINGS_EN = { name: 'Show file tags', desc: 'Display clickable tags in file items.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'Show full tag paths', desc: "Display complete tag hierarchy paths. When enabled: 'ai/openai', 'work/projects/2024'. When disabled: 'openai', '2024'." }, @@ -1901,7 +1949,7 @@ export const STRINGS_EN = { name: 'Color file tags', desc: 'Apply tag colors to tag badges on file items.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'Show colored tags first', desc: 'Sort colored tags before other tags on file items.' }, @@ -1917,7 +1965,7 @@ export const STRINGS_EN = { name: 'Color file properties', desc: 'Apply property colors to property badges on file items.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'Show colored properties first', desc: 'Sort colored properties before other properties on file items.' }, @@ -1925,7 +1973,7 @@ export const STRINGS_EN = { name: 'Show properties in compact mode', desc: 'Display properties when compact mode is active.' }, - propertyFields: { + propertyKeys: { name: 'Property keys (vault profile)', desc: 'Frontmatter property keys, with per-key visibility for navigation and file list.', addButtonTooltip: 'Configure property keys', @@ -1937,15 +1985,15 @@ export const STRINGS_EN = { name: 'Show properties on separate rows', desc: 'Display each property on its own row.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'Link property pills to notes', desc: 'Click a property pill to open the linked note.' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: 'Link property pills to URLs', desc: 'Click a property pill to open the linked URL.' }, - textCountDisplay: { + textCountType: { name: 'Count type', desc: 'Choose which text counts appear in file items.', options: { @@ -1975,7 +2023,7 @@ export const STRINGS_EN = { name: 'Target property', desc: 'Frontmatter property key containing the target word count. Leave empty to hide targets.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'Show target percentage', desc: 'Display only the progress percentage when a target word count is available.' }, @@ -1995,7 +2043,7 @@ export const STRINGS_EN = { helpTooltip: 'Format using Moment', momentLinkText: 'Moment format' }, - showFilePreview: { + showNotePreview: { name: 'Show note preview', desc: 'Display preview text beneath note names.' }, @@ -2024,7 +2072,7 @@ export const STRINGS_EN = { desc: 'Comma-separated list of frontmatter properties to check for preview text. The first property with text will be used.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'Fall back to note content', desc: 'Show note content as preview when none of the specified properties contain text.' }, @@ -2039,7 +2087,7 @@ export const STRINGS_EN = { '5': '5 rows' } }, - fileNameRows: { + titleRows: { name: 'Title rows', desc: 'Number of rows to display for note titles.', options: { @@ -2070,29 +2118,29 @@ export const STRINGS_EN = { desc: 'Comma-separated list of frontmatter properties. Notes containing any of these properties do not store feature images.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'Feature image display size', desc: 'Maximum rendered size for feature images in note lists.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'Feature image pixel size', desc: 'Resolution used when generating stored feature-image thumbnails. Increase this if larger previews look blurry.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, downloadExternalFeatureImages: { name: 'Download external images', desc: 'Download remote images and YouTube thumbnails for feature images.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'Hide exported preview images', desc: 'Hide exported drawing preview PNG files. Turn on Show hidden items to display them.' }, @@ -2125,11 +2173,11 @@ export const STRINGS_EN = { alphaDesc: 'Z to A' } }, - showNoteCount: { + showFileCount: { name: 'Show file count', desc: 'Display file counts next to folders, tags, and properties.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'Show icons for shortcuts and recent items', desc: 'Display icons next to items in the Shortcuts and Recent sections.' }, @@ -2138,7 +2186,7 @@ export const STRINGS_EN = { desc: 'Edit toolbar, folder, tag, property, pinned, search, and sort icons.', buttonText: 'Edit icons' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'Apply color to icons only', desc: 'When enabled, custom colors are applied only to icons. When disabled, colors are applied to both icons and text labels.' }, @@ -2146,9 +2194,9 @@ export const STRINGS_EN = { name: 'Rainbow color mode (vault profile)', desc: 'Apply rainbow colors in the navigation pane.', options: { - none: 'Off', - foreground: 'Text color', - background: 'Background color' + off: 'Off', + textColor: 'Text color', + backgroundColor: 'Background color' } }, navRainbowFirstColor: { @@ -2171,7 +2219,7 @@ export const STRINGS_EN = { name: 'Apply to shortcuts', desc: 'Apply rainbow colors to shortcuts.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'Apply to recent items', desc: 'Apply rainbow colors to recent items.' }, @@ -2205,7 +2253,7 @@ export const STRINGS_EN = { name: 'Apply to properties', desc: 'Apply rainbow colors to properties.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'Consistent brightness across hues', desc: 'Interpolates brightness between the start and end colors during hue transitions.' }, @@ -2223,7 +2271,7 @@ export const STRINGS_EN = { all: 'Every level' } }, - collapseBehavior: { + collapseItems: { name: 'Collapse items', desc: 'Choose what the expand/collapse all button affects.', options: { @@ -2233,7 +2281,7 @@ export const STRINGS_EN = { propertiesOnly: 'Properties only' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'Keep selected item expanded', desc: 'When collapsing, keep the selected item and its parents expanded.' }, @@ -2241,7 +2289,7 @@ export const STRINGS_EN = { name: 'Skip vault root when collapsing', desc: 'When collapsing all items, leave the vault root folder in its current state.' }, - navIndent: { + treeIndentation: { name: 'Tree indentation', desc: 'Adjust the indentation width for nested folders, tags, and properties (pixels).' }, @@ -2267,7 +2315,7 @@ export const STRINGS_EN = { line: 'Line' } }, - navRootSpacing: { + rootItemSpacing: { name: 'Root item spacing', desc: 'Spacing between root-level folders, tags, and properties (pixels).' }, @@ -2294,15 +2342,15 @@ export const STRINGS_EN = { highToLow: 'high to low' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'Show tags folder', desc: 'Display "Tags" as a collapsible folder.' }, - showUntagged: { + showUntaggedNotes: { name: 'Show untagged notes', desc: 'Display "Untagged" item for notes without any tags.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'Filter tags by selection', desc: 'Only show tags that appear in notes within the selected folder or property.' }, @@ -2336,20 +2384,20 @@ export const STRINGS_EN = { highToLow: 'high to low' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'Show properties folder', desc: 'Display "Properties" as a collapsible folder.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'Filter properties by selection', desc: 'Only show properties that appear in notes within the selected folder or tag.' }, - hiddenTags: { + hideTags: { name: 'Hide tags (vault profile)', desc: 'Comma-separated list of tag patterns. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'Hide notes with tags (vault profile)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2382,7 +2430,7 @@ export const STRINGS_EN = { desc: 'Template file used when creating folder notes. Markdown templates can use Templater. Canvas and Base templates are copied as file content. Set template folder location in File operations > Templates.', formatWarning: 'Template format must match the selected folder note type: .md, .canvas, or .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'Folder names open folder notes', desc: 'Clicking a folder name opens its folder note. When off, folder notes only provide folder metadata such as name, icon, and color.' }, @@ -2403,7 +2451,7 @@ export const STRINGS_EN = { rightSidebar: 'Right sidebar' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'Right sidebar: Show closest folder note', desc: 'When a folder is selected, the right sidebar automatically shows the nearest ancestor folder note.' }, @@ -2446,7 +2494,7 @@ export const STRINGS_EN = { indexingTitle: 'Indexing vault...', progress: 'Updating Notebook Navigator cache.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'Download', downloadingLabel: 'Downloading...', removeButton: 'Remove', @@ -2458,7 +2506,7 @@ export const STRINGS_EN = { infoNote: 'Downloaded icon packs sync installation state across devices. Icon packs stay in the local database on each device; sync only tracks whether to download or remove them. Icon packs download from the Notebook Navigator repository (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'Use frontmatter metadata', desc: 'Use frontmatter for note name, timestamps, icons, and colors' }, @@ -2477,7 +2525,7 @@ export const STRINGS_EN = { desc: 'Frontmatter field for background colors. Leave empty to use background colors stored in settings.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'Migrate icons and colors from settings', desc: 'Stored in settings: {icons} icons, {colors} colors.', button: 'Migrate', @@ -2487,7 +2535,7 @@ export const STRINGS_EN = { noticeFailures: 'Failed entries: {failures}.', noticeError: 'Migration failed. Check console for details.' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'Name fields', desc: 'Comma-separated list of frontmatter fields. First non-empty value is used. Falls back to file name.', placeholder: 'title, name' @@ -2502,7 +2550,7 @@ export const STRINGS_EN = { desc: 'Frontmatter field name for the modified timestamp. Leave empty to only use file system date.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'Timestamp format', desc: 'Format used to parse timestamps in frontmatter. Leave empty to use ISO 8601 parsing.', helpTooltip: 'Format using Moment', @@ -2515,12 +2563,12 @@ export const STRINGS_EN = { buttonText: '❤️ Sponsor', coffeeButton: '☕️ Buy me a coffee' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'Check for new version on start', desc: 'Checks for new plugin releases on startup and shows a notification when an update is available. Checks occur at most once per day.', status: 'New version available: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'Startup debug logging', desc: 'Write startup diagnostics to a timestamped markdown file in the vault root, then stop after startup settles. The file may sync and can include file paths.' }, diff --git a/src/i18n/locales/es.ts b/src/i18n/locales/es.ts index 1367dd7f6..ae6488f14 100644 --- a/src/i18n/locales/es.ts +++ b/src/i18n/locales/es.ts @@ -73,6 +73,9 @@ export const STRINGS_ES = { shortcutsHeader: 'Accesos directos', recentFilesHeader: 'Archivos recientes', // Header label for recent files section in navigation pane (English: Recent files) properties: 'Propiedades', + folders: 'Carpetas', + tags: 'Etiquetas', + calendar: 'Calendario', reorderRootFoldersTitle: 'Reordenar navegación', reorderRootFoldersHint: 'Usa flechas o arrastra para reordenar', vaultRootLabel: 'Bóveda', @@ -1012,101 +1015,144 @@ export const STRINGS_ES = { exportSuccess: 'Informe de metadatos fallidos exportado a: {filename}', exportFailed: 'Error al exportar el informe de metadatos' }, - sections: { - general: 'General', - vaultFilters: 'Filtros de visualización', - appearanceBehavior: 'Apariencia y comportamiento', - navigationPane: 'Panel de navegación', - calendar: 'Calendario', - fileOperations: 'Operaciones de archivos', - icons: 'Paquetes de iconos', - folders: 'Carpetas', - folderNotes: 'Notas de carpeta', - folderNoteFiles: 'Archivos de notas de carpeta', - foldersAndFolderNotes: 'Carpetas y notas de carpeta', - tagsAndProperties: 'Etiquetas y propiedades', - tags: 'Etiquetas', - listPane: 'Panel de lista', - notes: 'Visualización de archivos', - shortcutsAndRecentFiles: 'Accesos directos y archivos recientes', - advanced: 'Avanzado' + index: { + label: 'General', + description: 'Notas de versión, soporte, perfil de bóveda, tipos de archivo y claves de propiedades.', + groups: { + vaultSetup: 'Configuración de la bóveda' + } }, pageGroups: { configuration: 'Configuración', - navigationAndContent: 'Panel de navegación', - notesAndLists: 'Panel de lista', + navigationPane: 'Panel de navegación', + listPane: 'Panel de lista', calendarAndTools: 'Calendario y herramientas' }, - pageDescriptions: { - general: 'Notas de versión, soporte, perfil de bóveda, tipos de archivo y claves de propiedades.', - vaultFilters: 'Carpetas, etiquetas, archivos, etiquetas de archivo y reglas de propiedades ocultos.', - appearanceBehavior: 'Comportamiento, navegación con teclado, botones del ratón, apariencia y formato.', - navigationPane: 'Diseño, apariencia, recuento de archivos, comportamiento de colapso y colores arcoíris.', - shortcuts: 'Visibilidad de accesos directos, insignias, archivos recientes y elementos fijados.', - calendar: 'Visualización del calendario, notas de fecha, plantillas, configuración regional y ubicación de la barra lateral.', - fileOperations: 'Plantillas, confirmaciones de eliminación, adjuntos y comportamiento ante conflictos al mover archivos.', - foldersAndFolderNotes: 'Visualización de carpetas, notas de carpeta, plantillas y comportamiento de notas de carpeta.', - tagsProperties: 'Secciones de etiquetas y propiedades, iconos, ordenación, alcance y herencia.', - listPane: 'Ordenación, agrupación, modos de lista, notas fijadas y vistas previas de dibujos.', - frontmatter: 'Campos de frontmatter para nombres mostrados, marcas de tiempo, iconos y colores.', - notes: 'Títulos, texto de vista previa, imágenes destacadas, etiquetas, propiedades, fechas, recuento de palabras y recuento de caracteres.', - iconPacks: 'Iconos de interfaz, iconos de archivos y gestión de paquetes de iconos.', - advanced: 'Diagnósticos, limpieza de metadatos, importación/exportación y restablecimiento.' - }, - groups: { - general: { - vaultConfiguration: 'Configuración de la bóveda', - templates: 'Plantillas', - behavior: 'Comportamiento', - startup: 'Inicio', - keyboardNavigation: 'Navegación con teclado', - mouseButtons: 'Botones del ratón', - view: 'Apariencia', - icons: 'Iconos', - desktopAppearance: 'Apariencia de escritorio', - mobileAppearance: 'Apariencia móvil', - formatting: 'Formato' + pages: { + displayFilters: { + label: 'Filtros de visualización', + description: 'Carpetas, etiquetas, archivos, etiquetas de archivo y reglas de propiedades ocultos.' + }, + appearanceAndBehavior: { + label: 'Apariencia y comportamiento', + description: 'Comportamiento, navegación con teclado, botones del ratón, apariencia y formato.', + groups: { + startup: 'Inicio', + keyboardNavigation: 'Navegación con teclado', + mouseButtons: 'Botones del ratón', + desktopAppearance: 'Apariencia de escritorio', + mobileAppearance: 'Apariencia móvil', + appearance: 'Apariencia', + icons: 'Iconos', + formatting: 'Formato' + } + }, + navigationPane: { + label: 'Panel de navegación', + description: 'Diseño, apariencia, recuento de archivos, comportamiento de colapso y colores arcoíris.', + groups: { + appearance: 'Apariencia', + banner: 'Banner', + collapseItems: 'Contraer elementos', + dragAndDrop: 'Arrastrar y soltar', + fileCounts: 'Conteos de archivos', + rainbowColors: 'Colores arcoíris' + } + }, + shortcutsAndRecentFiles: { + label: 'Accesos directos y archivos recientes', + description: 'Visibilidad de accesos directos, insignias, archivos recientes y elementos fijados.', + groups: { + shortcuts: 'Accesos directos', + recentFiles: 'Archivos recientes' + } + }, + foldersAndFolderNotes: { + label: 'Carpetas y notas de carpeta', + description: 'Visualización de carpetas, notas de carpeta, plantillas y comportamiento de notas de carpeta.', + groups: { + folders: 'Carpetas', + folderNotes: 'Notas de carpeta', + folderNoteFiles: 'Archivos de notas de carpeta' + } + }, + tagsAndProperties: { + label: 'Etiquetas y propiedades', + description: 'Secciones de etiquetas y propiedades, iconos, ordenación, alcance y herencia.', + groups: { + tags: 'Etiquetas', + properties: 'Propiedades' + } + }, + listPane: { + label: 'Panel de lista', + description: 'Ordenación, agrupación, modos de lista, notas fijadas y vistas previas de dibujos.', + groups: { + appearance: 'Apariencia', + sortAndGroup: 'Orden y agrupación', + groupHeaders: 'Encabezados de grupo', + manualSort: 'Orden manual', + pinnedNotes: 'Notas fijadas', + behavior: 'Comportamiento', + drawingPreviews: 'Vistas previas de dibujos' + } + }, + fileOperations: { + label: 'Operaciones de archivos', + description: 'Plantillas, confirmaciones de eliminación, adjuntos y comportamiento ante conflictos al mover archivos.', + groups: { + templates: 'Plantillas' + } + }, + frontmatterFields: { + label: 'Campos de frontmatter', + description: 'Campos de frontmatter para nombres mostrados, marcas de tiempo, iconos y colores.' + }, + fileDisplay: { + label: 'Visualización de archivos', + description: + 'Títulos, texto de vista previa, imágenes destacadas, etiquetas, propiedades, fechas, recuento de palabras y recuento de caracteres.', + groups: { + icon: 'Icono', + title: 'Título', + previewText: 'Texto de vista previa', + featureImage: 'Imagen destacada', + tags: 'Etiquetas', + properties: 'Propiedades', + tasks: 'Tareas', + date: 'Fecha', + parentFolder: 'Carpeta superior', + wordAndCharacterCount: 'Recuento de palabras y caracteres' + } + }, + calendar: { + label: 'Calendario', + description: + 'Visualización del calendario, notas de fecha, plantillas, configuración regional y ubicación de la barra lateral.', + groups: { + appearance: 'Apariencia', + leftSidebar: 'Barra lateral izquierda', + calendarIntegration: 'Integración de calendario', + rightSidebar: 'Barra lateral derecha' + } + }, + iconPacks: { + label: 'Paquetes de iconos', + description: 'Iconos de interfaz, iconos de archivos y gestión de paquetes de iconos.' }, advanced: { - maintenance: 'Mantenimiento', - resetSettings: 'Restablecer ajustes' - }, - navigation: { - appearance: 'Apariencia', - banner: 'Banner', - collapseItems: 'Contraer elementos', - dragAndDrop: 'Arrastrar y soltar', - noteCounts: 'Conteos de archivos', - rainbowColors: 'Colores arcoíris', - leftSidebar: 'Barra lateral izquierda', - calendarIntegration: 'Integración de calendario' - }, - list: { - display: 'Apariencia', - sortAndGroup: 'Orden y agrupación', - groupHeaders: 'Encabezados de grupo', - manualSort: 'Orden manual', - pinnedNotes: 'Notas fijadas', - drawingPreviews: 'Vistas previas de dibujos' - }, - notes: { - frontmatter: 'Campos de frontmatter', - tasks: 'Tareas', - icon: 'Icono', - title: 'Título', - previewText: 'Texto de vista previa', - featureImage: 'Imagen destacada', - tags: 'Etiquetas', - properties: 'Propiedades', - date: 'Fecha', - parentFolder: 'Carpeta superior', - wordCount: 'Recuento de palabras y caracteres' + label: 'Avanzado', + description: 'Diagnósticos, limpieza de metadatos, importación/exportación y restablecimiento.', + groups: { + maintenance: 'Mantenimiento', + resetSettings: 'Restablecer ajustes' + } } }, syncMode: { notSynced: '(no sincronizado)', - switchToSynced: 'Activar sincronización', - switchToLocal: 'Desactivar sincronización' + enableSync: 'Activar sincronización', + disableSync: 'Desactivar sincronización' }, items: { listPaneTitle: { @@ -1114,11 +1160,11 @@ export const STRINGS_ES = { desc: 'Elige dónde se muestra el título del panel de lista.', options: { header: 'Mostrar en el encabezado', - list: 'Mostrar en el panel de lista', + listPane: 'Mostrar en el panel de lista', hidden: 'No mostrar' } }, - sortNotesBy: { + defaultSortOrder: { name: 'Orden predeterminado', desc: 'Elige el orden predeterminado para las notas. Las propiedades de Propiedades de orden aparecen como opciones de orden adicionales.', directions: { @@ -1126,18 +1172,18 @@ export const STRINGS_ES = { desc: 'Descendente' }, dateDirections: { - desc: 'Más reciente arriba', - asc: 'Más antigua arriba' + newestOnTop: 'Más reciente arriba', + oldestOnTop: 'Más antigua arriba' }, textDirections: { - asc: 'A arriba', - desc: 'Z arriba' + aOnTop: 'A arriba', + zOnTop: 'Z arriba' }, fields: { - modified: 'Fecha de edición', - created: 'Fecha de creación', + dateEdited: 'Fecha de edición', + dateCreated: 'Fecha de creación', title: 'Título', - filename: 'Nombre de archivo', + fileName: 'Nombre de archivo', property: 'Propiedad' } }, @@ -1150,7 +1196,7 @@ export const STRINGS_ES = { follow: 'Seguir el orden de clasificación' } }, - propertySortKey: { + sortingProperties: { name: 'Propiedades de orden', desc: 'Propiedades del frontmatter separadas por comas. Cada propiedad aparece como una opción de orden en el ajuste Orden predeterminado y en el menú de ordenación del panel de lista. Estas propiedades no se modifican.', placeholder: 'published, author', @@ -1160,14 +1206,14 @@ export const STRINGS_ES = { both: 'El orden predeterminado y la agrupación predeterminada se restablecieron porque sus propiedades ya no están disponibles.' } }, - propertySortSecondary: { + propertySecondarySort: { name: 'Orden secundario', desc: 'Se usa con el orden por propiedad cuando las notas tienen el mismo valor de propiedad o no tienen valor.', options: { title: 'Título', - filename: 'Nombre de archivo', - created: 'Fecha de creación', - modified: 'Fecha de edición' + fileName: 'Nombre de archivo', + dateCreated: 'Fecha de creación', + dateEdited: 'Fecha de edición' } }, propertySortInstructions: { @@ -1180,16 +1226,16 @@ export const STRINGS_ES = { '**Vistas de etiquetas y propiedades:** Cuando se selecciona la agrupación **Carpeta**, se muestran encabezados de fecha en su lugar.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'Propiedades de agrupación', desc: 'Propiedades del frontmatter separadas por comas. Cada propiedad aparece como una opción de agrupación en el ajuste Agrupación predeterminada y en el menú de ordenación del panel de lista. Estas propiedades no se modifican.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'Propiedad de orden manual', desc: 'Propiedad del frontmatter usada para almacenar los valores numéricos de índice del orden manual.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'Propiedad de encabezado de grupo', desc: 'Propiedad del frontmatter usada para almacenar los encabezados de grupo personalizados.' }, @@ -1206,7 +1252,7 @@ export const STRINGS_ES = { options: { top: 'Arriba', bottom: 'Abajo', - 'below-selected-note': 'Debajo de la nota seleccionada', + belowSelectedNote: 'Debajo de la nota seleccionada', unsorted: 'Sin ordenar' } }, @@ -1222,7 +1268,7 @@ export const STRINGS_ES = { 'En el panel de lista, selecciona una nota o varias, y luego pulsa **Cmd/Ctrl + Arrow Up/Down** para mover la selección hacia arriba o hacia abajo.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'Desplazar al archivo seleccionado cuando cambia la lista', desc: 'Desplazar al archivo seleccionado al anclar notas, mostrar notas descendientes, cambiar la apariencia de carpetas o ejecutar operaciones de archivos.' }, @@ -1230,15 +1276,15 @@ export const STRINGS_ES = { name: 'Mostrar notas de subcarpetas / descendientes', desc: 'Incluir notas de subcarpetas y descendientes de etiquetas y propiedades al ver una carpeta, etiqueta o propiedad.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'Fijar notas solo en su carpeta', desc: 'Las notas fijadas aparecen fijadas solo en su propia carpeta. Útil para notas de carpeta o si tiene muchas notas fijadas. No afecta las vistas de etiquetas o propiedades.' }, - separateNoteCounts: { + separateFileCounts: { name: 'Mostrar recuentos de archivos actuales y descendientes por separado', desc: 'Muestra el conteo de archivos como "actual ▾ descendientes" para carpetas, etiquetas y propiedades.' }, - groupNotes: { + defaultGrouping: { name: 'Agrupación predeterminada', desc: 'Los **encabezados** anotan la lista ordenada sin cambiar su orden: Personalizada muestra los encabezados definidos en el frontmatter y Fecha inserta encabezados de fecha. Los **grupos** reordenan la lista: los grupos de carpetas y propiedades se ordenan por su cuenta y las notas dentro de cada grupo siguen el orden configurado.', families: { @@ -1251,7 +1297,7 @@ export const STRINGS_ES = { folder: 'Carpeta' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'Mostrar siempre todas las etiquetas y propiedades', desc: 'Cuando está desactivado, las etiquetas que coinciden con la selección de navegación actual se ocultan (p. ej., la etiqueta "recetas" se oculta al navegar por la etiqueta "recetas"). Activar para mantener todas las etiquetas visibles.' }, @@ -1259,7 +1305,7 @@ export const STRINGS_ES = { name: 'Encabezados de grupo fijos', desc: 'Mantén visible el encabezado actual de fecha, carpeta, propiedad o sección anclada al desplazarte.' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'Mostrar rutas de subcarpetas', desc: 'Al agrupar por carpeta en el panel de lista, muestra rutas de subcarpetas en lugar de solo nombres de carpeta.' }, @@ -1287,9 +1333,9 @@ export const STRINGS_ES = { name: 'Icono de tareas pendientes', desc: 'Reemplazar el icono del archivo cuando una nota tiene tareas pendientes.', options: { - none: 'Desactivado', + disabled: 'Desactivado', compact: 'Modo compacto', - all: 'Estándar y compacto' + standardAndCompact: 'Estándar y compacto' } }, useFolderIcon: { @@ -1312,7 +1358,7 @@ export const STRINGS_ES = { name: 'Progreso de tareas: ocultar al completar', desc: 'Ocultar el progreso de tareas cuando todas las tareas de una nota están completadas.' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'Fondo de tareas pendientes', desc: 'Aplicar un color de fondo cuando una nota tiene tareas pendientes.' }, @@ -1320,7 +1366,7 @@ export const STRINGS_ES = { name: 'Color de fondo de tareas pendientes', desc: 'Establecer el color de fondo usado cuando una nota tiene tareas pendientes.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'Iconos por nombre de archivo', desc: 'Asignar iconos a archivos según el texto en sus nombres.' }, @@ -1330,7 +1376,7 @@ export const STRINGS_ES = { placeholder: '# texto=icono\nreunión=ph-calendar\nfactura=ph-receipt', editTooltip: 'Editar asignaciones' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'Iconos por tipo de archivo', desc: 'Asignar iconos a archivos según su extensión.' }, @@ -1338,7 +1384,7 @@ export const STRINGS_ES = { name: 'Preajuste de iconos de archivo', desc: 'Elegir los iconos integrados o un preajuste de paquete de iconos. Las reglas de extensión personalizadas anulan este preajuste.', options: { - none: 'Iconos integrados' + builtIn: 'Iconos integrados' }, notInstalledWarning: 'Este paquete de iconos no está instalado. En su lugar se muestran los iconos integrados.' }, @@ -1361,11 +1407,11 @@ export const STRINGS_ES = { name: 'Mostrar carpeta principal', desc: 'Muestra el nombre de la carpeta principal para las notas en subcarpetas, etiquetas o propiedades.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'Mostrar ruta de carpeta', desc: 'Muestra la ruta relativa a la carpeta seleccionada en lugar de solo el nombre de la carpeta. Las etiquetas y propiedades muestran la ruta completa.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'Clic en carpeta principal abre carpeta', desc: 'Al hacer clic en la etiqueta de la carpeta principal se abre la carpeta en el panel de lista.' }, @@ -1393,7 +1439,7 @@ export const STRINGS_ES = { vertical: 'División vertical' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'Cuando la barra lateral es demasiado estrecha', desc: 'Elige qué ocurre cuando el panel de navegación y el panel de lista no caben lado a lado.', options: { @@ -1402,7 +1448,7 @@ export const STRINGS_ES = { vertical: 'Cambiar a división vertical' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'Umbral de barra lateral estrecha', desc: 'Elige cómo se calcula el umbral de ancho de la barra lateral.', options: { @@ -1410,41 +1456,41 @@ export const STRINGS_ES = { customWidth: 'Ancho personalizado' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'Ancho del umbral de barra lateral estrecha', desc: 'Cambia cuando la barra lateral es más estrecha que este ancho.', resetTooltip: 'Restablecer al ancho predeterminado' }, - appearanceBackground: { + paneBackgroundColor: { name: 'Color de fondo', desc: 'Elige colores de fondo para los paneles de navegación y lista.', options: { separate: 'Fondos separados', - primary: 'Usar fondo de lista', - secondary: 'Usar fondo de navegación' + listBackground: 'Usar fondo de lista', + navigationBackground: 'Usar fondo de navegación' } }, - appearanceScale: { + zoomLevel: { name: 'Nivel de zoom', desc: 'Controla el nivel de zoom general de Notebook Navigator (porcentaje).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'Usar barras de herramientas flotantes en iOS', desc: 'Solo se aplica en iOS.' }, - startView: { + defaultStartupView: { name: 'Vista de inicio predeterminada', desc: 'Elige qué panel está activo al abrir Notebook Navigator. El diseño de panel único muestra este panel primero; el diseño de doble panel le da el foco del teclado.', options: { navigation: 'Panel de navegación', - files: 'Panel de lista' + listPane: 'Panel de lista' } }, toolbarButtons: { name: 'Botones de la barra de herramientas', desc: 'Elige qué botones aparecen en la barra de herramientas. Los botones ocultos siguen siendo accesibles mediante comandos y menús.' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'Abrir notas nuevas en pestaña nueva', desc: 'Cuando está activado, el comando Crear nueva nota abre las notas en una pestaña nueva. Cuando está desactivado, las notas reemplazan la pestaña actual.' }, @@ -1464,20 +1510,20 @@ export const STRINGS_ES = { name: 'Revelación automática: Ignorar eventos de otras ventanas', desc: 'No cambiar la nota activa al trabajar con notas en otra ventana.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'Animación de panel único', desc: 'Duración de la transición al cambiar entre paneles en modo panel único (milisegundos).', resetTooltip: 'Restablecer a predeterminado' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'Seleccionar automáticamente la primera nota', desc: 'Abre automáticamente la primera nota al cambiar de carpeta, etiqueta o propiedad.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'Desactivar desplazamiento automático para accesos directos', desc: 'No desplazar el panel de navegación al hacer clic en elementos de accesos directos.' }, - autoExpandNavItems: { + expandOnSelection: { name: 'Expandir al seleccionar', desc: 'Expandir carpetas y etiquetas al seleccionar. En modo de panel único, la primera selección expande, la segunda muestra archivos.' }, @@ -1515,16 +1561,16 @@ export const STRINGS_ES = { name: 'Insignia de acceso directo', desc: "Qué mostrar junto a los accesos directos. Usa los comandos 'Abrir acceso directo 1-9' para abrir los accesos directos directamente.", options: { - index: 'Posición (1-9)', + position: 'Posición (1-9)', count: 'Cantidad de elementos', none: 'Ninguno' } }, - showRecentNotes: { + showRecentFiles: { name: 'Mostrar archivos recientes', desc: 'Mostrar la sección de archivos recientes en el panel de navegación.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'Ocultar tipos de archivos de archivos recientes', desc: 'Elige qué tipos de archivos ocultar en la sección de archivos recientes.', options: { @@ -1532,15 +1578,15 @@ export const STRINGS_ES = { folderNotes: 'Notas de carpeta' } }, - recentNotesCount: { + recentFilesCount: { name: 'Cantidad de archivos recientes', desc: 'Número de archivos recientes a mostrar.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'Fijar archivos recientes con accesos directos', desc: 'Incluir archivos recientes cuando se fijan los accesos directos.' }, - calendarEnabled: { + enableCalendar: { name: 'Activar calendario', desc: 'Activar las funciones de calendario de Notebook Navigator.' }, @@ -1552,12 +1598,12 @@ export const STRINGS_ES = { rightSidebar: 'Barra lateral derecha' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'Ubicación en panel único', desc: 'Dónde se muestra el calendario en modo de panel único.', options: { navigationPane: 'Panel de navegación', - below: 'Debajo de los paneles' + belowPanes: 'Debajo de los paneles' } }, calendarLocale: { @@ -1579,7 +1625,7 @@ export const STRINGS_ES = { thuFri: 'Jueves y viernes' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'Formato del nombre del mes', desc: 'Nombre del mes largo (enero) o abreviado (ene.).', options: { @@ -1591,7 +1637,7 @@ export const STRINGS_ES = { name: 'Mostrar botones de información', desc: 'Mostrar botones de información en la barra de búsqueda y el encabezado del calendario.' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'Semanas a mostrar en barra lateral izquierda', desc: 'El calendario en la barra lateral derecha siempre muestra el mes completo.', options: { @@ -1636,7 +1682,7 @@ export const STRINGS_ES = { name: 'Mostrar elementos ocultos', desc: 'Cuando está habilitado, el calendario siempre muestra todas las notas del calendario, incluidas las notas ocultas por los filtros del perfil de bóveda.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'Fuente de notas diarias', desc: 'Fuente para notas del calendario.', options: { @@ -1656,34 +1702,38 @@ export const STRINGS_ES = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'Carpeta raíz', desc: 'Carpeta base para notas periódicas. Los patrones de fecha pueden incluir subcarpetas. Cambia con el perfil de bóveda seleccionado.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'Ubicación de carpeta de plantillas', desc: 'El selector de archivos de plantilla muestra notas de esta carpeta.', placeholder: 'Templates', usage: 'Se usa en notas de calendario y notas de carpeta. Configura las plantillas en Calendario > Integración de calendario y Carpetas y notas de carpeta > Archivos de notas de carpeta.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'Notas diarias', desc: 'Formatear ruta usando formato de fecha de Moment. Envuelve los nombres de subcarpetas entre corchetes, ej. [Work]/YYYY. Haz clic en el icono de plantilla para establecer una plantilla. Establecer ubicación de carpeta de plantillas en Operaciones de archivos > Plantillas.', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'El patrón debe formatear y volver a analizarse como una fecha completa (año, mes, día).' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'Formatear ruta usando ', momentLinkText: 'formato de fecha Moment', momentDescSuffix: '. Envuelve los nombres de subcarpetas entre corchetes, ej. [Work]/YYYY. Haz clic en el icono de plantilla para establecer una plantilla. Establecer ubicación de carpeta de plantillas en Operaciones de archivos > Plantillas.', - templaterSupportInstalled: '✅ El plugin Templater está instalado con soporte completo de plantillas.', - templaterSupportMissing: '⚠️ Instala el plugin Templater para obtener soporte de plantillas.', templateTokenNoticeLabel: '¡Importante!', templateTokenNotice: 'El soporte de plantillas requiere el plugin Templater. Los formatos integrados como {{date}} y {{title}} solo funcionan cuando {source} está configurado como {option}.', - placeholder: 'YYYY/YYYYMMDD', - example: 'Sintaxis actual: {path}', - parsingError: 'El patrón debe formatear y volver a analizarse como una fecha completa (año, mes, día).' + example: 'Sintaxis actual: {path}' + }, + templaterSupport: { + installed: '✅ El plugin Templater está instalado con soporte completo de plantillas.', + missing: '⚠️ Instala el plugin Templater para obtener soporte de plantillas.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'Notas semanales', parsingError: 'El patrón debe formatear y volver a analizarse como una semana completa (año de semana, número de semana).', weekPathMismatchWarning: @@ -1691,19 +1741,19 @@ export const STRINGS_ES = { mixedWeekTokensWarning: 'Este patrón mezcla tokens de semana basados en lunes ("W" o "G") con tokens de semana basados en la configuración regional ("w" o "g"). Use un conjunto de forma coherente: "GGGG" con "WW" para semanas basadas en lunes, o "gggg" con "ww" si las notas semanales deben seguir la configuración regional seleccionada.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'Notas mensuales', parsingError: 'El patrón debe formatear y volver a analizarse como un mes completo (año, mes).' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'Notas trimestrales', parsingError: 'El patrón debe formatear y volver a analizarse como un trimestre completo (año, trimestre).' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'Notas anuales', parsingError: 'El patrón debe formatear y volver a analizarse como un año completo (año).' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'Archivo de plantilla: {name}' }, showTooltips: { @@ -1724,7 +1774,7 @@ export const STRINGS_ES = { buttonText: 'Restablecer separador', notice: 'Posición del separador restablecida. Reinicia Obsidian o vuelve a abrir Notebook Navigator para aplicar.' }, - settingsTransfer: { + importAndExportSettings: { name: 'Importar y exportar ajustes', desc: 'Exporta o importa los ajustes de Notebook Navigator como JSON. La importación reemplaza todos los ajustes.', importButtonText: 'Importar', @@ -1784,15 +1834,15 @@ export const STRINGS_ES = { name: 'Pulsar Enter para abrir archivos', desc: 'Abrir archivos solo al pulsar Enter durante la navegación con teclado en la lista. En macOS, esto impide que Enter cambie el nombre de los archivos.' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'Elegir si Shift+Enter abre o cambia el nombre del archivo seleccionado.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'Elegir si Cmd+Enter abre o cambia el nombre del archivo seleccionado.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'Elegir si Ctrl+Enter abre o cambia el nombre del archivo seleccionado.' }, @@ -1800,17 +1850,17 @@ export const STRINGS_ES = { name: 'Botones atrás/adelante del ratón', desc: 'Acción de los botones atrás y adelante del ratón en escritorio.', options: { - none: 'Usar predeterminado del sistema', + systemDefault: 'Usar predeterminado del sistema', singlePaneSwitch: 'Cambiar paneles (panel único)', history: 'Navegar en el historial' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'Ocultar notas con reglas de propiedades (perfil de bóveda)', desc: 'Lista de reglas de frontmatter separadas por comas. Use entradas `key` o `key=value` (ej.: status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'Ocultar archivos (perfil de bóveda)', desc: 'Lista de patrones de nombre de archivo separados por comas para ocultar. Soporta comodines * y rutas / (ej.: temp-*, *.png, /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1837,7 +1887,7 @@ export const STRINGS_ES = { duplicateName: 'El nombre del perfil ya existe' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'Ubicación del título de bóveda', desc: 'Elige dónde se muestra el título de la bóveda.', options: { @@ -1845,7 +1895,7 @@ export const STRINGS_ES = { navigation: 'Mostrar en el panel de navegación' } }, - excludedFolders: { + hideFolders: { name: 'Ocultar carpetas (perfil de bóveda)', desc: 'Lista de carpetas a ocultar separadas por comas. Patrones de nombre: assets* (carpetas que comienzan con assets), *_temp (terminan con _temp). Patrones de ruta: /archive (solo archivo raíz), /res* (carpetas raíz que comienzan con res), /*/temp (carpetas temp un nivel abajo), /projects/* (todas las carpetas dentro de projects).', placeholder: 'templates, assets*, /archive, /res*' @@ -1855,7 +1905,7 @@ export const STRINGS_ES = { desc: 'Lista de carpetas separadas por comas que se omiten al recopilar notas de subcarpetas. Las carpetas permanecen visibles, y al seleccionar una se siguen mostrando sus notas. Usa los mismos patrones que Ocultar carpetas.', placeholder: 'diario, recursos, /archivo' }, - fileVisibility: { + showFileTypes: { name: 'Mostrar tipos de archivo (perfil de bóveda)', desc: 'Filtre qué tipos de archivo se muestran en el navegador. Los tipos de archivo no soportados por Obsidian pueden abrirse en aplicaciones externas.', options: { @@ -1891,7 +1941,7 @@ export const STRINGS_ES = { name: 'Mostrar fecha', desc: 'Muestra la fecha debajo de los nombres de las notas.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'Al ordenar por nombre', desc: 'Fecha que se muestra cuando las notas están ordenadas alfabéticamente.', options: { @@ -1903,7 +1953,7 @@ export const STRINGS_ES = { name: 'Mostrar etiquetas de archivo', desc: 'Muestra etiquetas clicables en los elementos de archivo.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'Mostrar rutas completas de etiquetas', desc: "Mostrar rutas completas de jerarquía de etiquetas. Activado: 'ai/openai', 'trabajo/proyectos/2024'. Desactivado: 'openai', '2024'." }, @@ -1911,7 +1961,7 @@ export const STRINGS_ES = { name: 'Colorear etiquetas de archivo', desc: 'Aplicar colores de etiquetas a las insignias de etiquetas en elementos de archivo.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'Mostrar primero las etiquetas coloreadas', desc: 'Ordena las etiquetas coloreadas antes que otras etiquetas en los elementos de archivo.' }, @@ -1927,7 +1977,7 @@ export const STRINGS_ES = { name: 'Colorear propiedades de archivo', desc: 'Aplicar colores de propiedad a las insignias de propiedad en los elementos de archivo.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'Mostrar primero las propiedades coloreadas', desc: 'Ordenar las propiedades coloreadas antes que otras propiedades en los elementos de archivo.' }, @@ -1935,7 +1985,7 @@ export const STRINGS_ES = { name: 'Mostrar propiedades en modo compacto', desc: 'Mostrar propiedades cuando el modo compacto está activo.' }, - textCountDisplay: { + textCountType: { name: 'Tipo de recuento', desc: 'Elige qué recuentos de texto aparecen en los elementos de archivo.', options: { @@ -1965,11 +2015,11 @@ export const STRINGS_ES = { name: 'Propiedad objetivo', desc: 'Clave de propiedad del frontmatter que contiene el recuento de palabras objetivo. Déjela vacía para ocultar objetivos.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'Mostrar porcentaje objetivo', desc: 'Mostrar solo el porcentaje de progreso cuando haya un recuento de palabras objetivo disponible.' }, - propertyFields: { + propertyKeys: { name: 'Claves de propiedades (perfil de bóveda)', desc: 'Claves de propiedades de metadatos, con visibilidad por clave para la navegación y la lista de archivos.', addButtonTooltip: 'Configurar claves de propiedad', @@ -1981,11 +2031,11 @@ export const STRINGS_ES = { name: 'Mostrar propiedades en filas separadas', desc: 'Mostrar cada propiedad en su propia fila.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'Vincular etiquetas de propiedad a notas', desc: 'Haz clic en una etiqueta de propiedad para abrir la nota vinculada.' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: 'Vincular etiquetas de propiedad a URLs', desc: 'Haz clic en una etiqueta de propiedad para abrir la URL vinculada.' }, @@ -2005,7 +2055,7 @@ export const STRINGS_ES = { helpTooltip: 'Formato usando Moment', momentLinkText: 'formato Moment' }, - showFilePreview: { + showNotePreview: { name: 'Mostrar vista previa de nota', desc: 'Muestra texto de vista previa debajo de los nombres de las notas.' }, @@ -2034,7 +2084,7 @@ export const STRINGS_ES = { desc: 'Lista separada por comas de propiedades de frontmatter para buscar texto de vista previa. Se usará la primera propiedad con texto.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'Recurrir al contenido de la nota', desc: 'Mostrar el contenido de la nota como vista previa cuando ninguna de las propiedades especificadas contiene texto.' }, @@ -2049,7 +2099,7 @@ export const STRINGS_ES = { '5': '5 filas' } }, - fileNameRows: { + titleRows: { name: 'Filas de título', desc: 'Número de filas a mostrar para los títulos de las notas.', options: { @@ -2080,22 +2130,22 @@ export const STRINGS_ES = { desc: 'Lista separada por comas de propiedades del frontmatter. Las notas que contengan cualquiera de estas propiedades no almacenan imágenes destacadas.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'Tamaño de visualización de imagen destacada', desc: 'Tamaño máximo de renderizado para imágenes destacadas en listas de notas.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'Tamaño en píxeles de imagen destacada', desc: 'Resolución utilizada al generar miniaturas almacenadas de imágenes destacadas. Aumente este valor si las previsualizaciones grandes se ven borrosas.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2103,7 +2153,7 @@ export const STRINGS_ES = { name: 'Descargar imágenes externas', desc: 'Descargar imágenes remotas y miniaturas de YouTube para imágenes destacadas.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'Ocultar imágenes de previsualización exportadas', desc: 'Oculta los archivos PNG de previsualización de dibujo exportados. Activa "Mostrar elementos ocultos" para verlos.' }, @@ -2136,11 +2186,11 @@ export const STRINGS_ES = { alphaDesc: 'Z a A' } }, - showNoteCount: { + showFileCount: { name: 'Mostrar conteo de archivos', desc: 'Muestra el conteo de archivos junto a carpetas, etiquetas y propiedades.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'Mostrar iconos para atajos y elementos recientes', desc: 'Muestra iconos junto a los elementos en las secciones Atajos y Recientes.' }, @@ -2149,7 +2199,7 @@ export const STRINGS_ES = { desc: 'Editar iconos de barra de herramientas, carpetas, etiquetas, propiedades, elementos fijados, búsqueda y ordenación.', buttonText: 'Editar iconos' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'Aplicar color solo a los iconos', desc: 'Cuando está habilitado, los colores personalizados se aplican solo a los iconos. Cuando está deshabilitado, los colores se aplican tanto a los iconos como a las etiquetas de texto.' }, @@ -2157,9 +2207,9 @@ export const STRINGS_ES = { name: 'Modo de colores arcoíris (perfil de bóveda)', desc: 'Aplicar colores arcoíris en el panel de navegación.', options: { - none: 'Desactivado', - foreground: 'Color de texto', - background: 'Color de fondo' + off: 'Desactivado', + textColor: 'Color de texto', + backgroundColor: 'Color de fondo' } }, navRainbowFirstColor: { @@ -2182,7 +2232,7 @@ export const STRINGS_ES = { name: 'Aplicar a accesos directos', desc: 'Aplicar colores arcoíris a los accesos directos.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'Aplicar a elementos recientes', desc: 'Aplicar colores arcoíris a los elementos recientes.' }, @@ -2216,7 +2266,7 @@ export const STRINGS_ES = { name: 'Aplicar a propiedades', desc: 'Aplicar colores arcoíris a las propiedades.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'Brillo uniforme entre tonos', // (English: Consistent brightness across hues) desc: 'Interpola el brillo entre los colores de inicio y fin durante las transiciones de tono.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2234,7 +2284,7 @@ export const STRINGS_ES = { all: 'Todos los niveles' } }, - collapseBehavior: { + collapseItems: { name: 'Contraer elementos', desc: 'Elige qué afecta el botón de expandir/contraer todo.', options: { @@ -2244,7 +2294,7 @@ export const STRINGS_ES = { propertiesOnly: 'Solo propiedades' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'Mantener elemento seleccionado expandido', desc: 'Al contraer, mantiene el elemento seleccionado y sus elementos principales expandidos.' }, @@ -2252,7 +2302,7 @@ export const STRINGS_ES = { name: 'Omitir raíz de la bóveda al contraer', desc: 'Al contraer todos los elementos, deja la carpeta raíz de la bóveda en su estado actual.' }, - navIndent: { + treeIndentation: { name: 'Sangría del árbol', desc: 'Ajustar el ancho de sangría para carpetas, etiquetas y propiedades anidadas (píxeles).' }, @@ -2278,7 +2328,7 @@ export const STRINGS_ES = { line: 'Línea' } }, - navRootSpacing: { + rootItemSpacing: { name: 'Espaciado de elementos raíz', desc: 'Espaciado entre carpetas, etiquetas y propiedades de nivel superior (píxeles).' }, @@ -2305,15 +2355,15 @@ export const STRINGS_ES = { highToLow: 'alta a baja' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'Mostrar carpeta de etiquetas', desc: 'Muestra "Etiquetas" como una carpeta plegable.' }, - showUntagged: { + showUntaggedNotes: { name: 'Mostrar notas sin etiquetas', desc: 'Muestra el elemento "Sin etiquetas" para notas sin ninguna etiqueta.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'Filtrar etiquetas por selección', desc: 'Mostrar solo etiquetas que aparecen en notas dentro de la carpeta o propiedad seleccionada.' }, @@ -2347,20 +2397,20 @@ export const STRINGS_ES = { highToLow: 'de mayor a menor' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'Mostrar carpeta de propiedades', desc: 'Mostrar "Propiedades" como una carpeta desplegable.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'Filtrar propiedades por selección', desc: 'Mostrar solo propiedades que aparecen en notas dentro de la carpeta o etiqueta seleccionada.' }, - hiddenTags: { + hideTags: { name: 'Ocultar etiquetas (perfil de bóveda)', desc: 'Lista separada por comas de patrones de etiquetas. Patrones de nombre: tag* (empieza con), *tag (termina con). Patrones de ruta: archivo (etiqueta y descendientes), archivo/* (solo descendientes), proyectos/*/borradores (comodín intermedio).', placeholder: 'archivo*, *borrador, proyectos/*/antiguo' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'Ocultar notas con etiquetas (perfil de bóveda)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2394,7 +2444,7 @@ export const STRINGS_ES = { formatWarning: 'El formato de la plantilla debe coincidir con el tipo de nota de carpeta seleccionado: .md, .canvas o .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'Los nombres de carpeta abren notas de carpeta', desc: 'Al hacer clic en el nombre de una carpeta, se abre su nota de carpeta. Cuando está desactivado, las notas de carpeta solo proporcionan metadatos de carpeta como nombre, icono y color.' }, @@ -2415,7 +2465,7 @@ export const STRINGS_ES = { rightSidebar: 'Barra lateral derecha' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'Barra lateral derecha: Mostrar nota de carpeta más cercana', desc: 'Cuando se selecciona una carpeta, la barra lateral derecha muestra automáticamente la nota de carpeta ancestro más cercana.' }, @@ -2458,7 +2508,7 @@ export const STRINGS_ES = { indexingTitle: 'Indexando la bóveda...', progress: 'Actualizando la caché de Notebook Navigator.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'Descargar', downloadingLabel: 'Descargando...', removeButton: 'Eliminar', @@ -2470,11 +2520,11 @@ export const STRINGS_ES = { infoNote: 'Los paquetes de iconos descargados sincronizan el estado de instalación entre dispositivos. Los paquetes de iconos permanecen en la base de datos local en cada dispositivo; la sincronización solo rastrea si deben descargarse o eliminarse. Los paquetes de iconos se descargan del repositorio de Notebook Navigator (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'Usar metadatos del frontmatter', desc: 'Usar frontmatter para nombre de nota, marcas de tiempo, iconos y colores' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'Campos de nombre', desc: 'Lista de campos frontmatter separados por comas. Se usa el primer valor no vacío. Usa el nombre de archivo como alternativa.', placeholder: 'title, name' @@ -2494,7 +2544,7 @@ export const STRINGS_ES = { desc: 'Campo del frontmatter para colores de fondo. Dejar vacío para usar colores de fondo guardados en los ajustes.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'Migrar iconos y colores desde los ajustes', desc: 'Guardado en los ajustes: {icons} iconos, {colors} colores.', button: 'Migrar', @@ -2514,7 +2564,7 @@ export const STRINGS_ES = { desc: 'Nombre del campo del frontmatter para la marca de tiempo de modificación. Dejar vacío para usar solo la fecha del sistema.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'Formato de marca de tiempo', desc: 'Formato utilizado para analizar marcas de tiempo en el frontmatter. Dejar vacío para usar parsing ISO 8601.', helpTooltip: 'Formato usando Moment', @@ -2527,12 +2577,12 @@ export const STRINGS_ES = { buttonText: '❤️ Patrocinar', coffeeButton: '☕️ Invítame un café' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'Buscar nueva versión al iniciar', desc: 'Busca nuevas versiones del complemento al iniciar y muestra una notificación cuando hay una actualización disponible. Las comprobaciones se realizan como máximo una vez al día.', status: 'Nueva versión disponible: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'Registro de depuración de inicio', desc: 'Escribe diagnósticos de inicio en un archivo Markdown con marca de tiempo en la raíz de la bóveda y se detiene cuando el inicio se estabiliza. El archivo puede sincronizarse y puede incluir rutas de archivos.' }, diff --git a/src/i18n/locales/fa.ts b/src/i18n/locales/fa.ts index d6907a39c..7f789b91c 100644 --- a/src/i18n/locales/fa.ts +++ b/src/i18n/locales/fa.ts @@ -74,6 +74,9 @@ export const STRINGS_FA = { shortcutsHeader: 'میانبرها', recentFilesHeader: 'فایل‌های اخیر', // Header label for recent files section in navigation pane (English: Recent files) properties: 'ویژگی‌ها', + folders: 'پوشه‌ها', + tags: 'برچسب‌ها', + calendar: 'تقویم', reorderRootFoldersTitle: 'مرتب‌سازی مجدد ناوبری', reorderRootFoldersHint: 'از فلش‌ها یا کشیدن برای مرتب‌سازی استفاده کنید', vaultRootLabel: 'خزانه', @@ -1011,101 +1014,142 @@ export const STRINGS_FA = { exportSuccess: 'گزارش متادیتای ناموفق به {filename} صادر شد', exportFailed: 'صادر کردن گزارش متادیتا ناموفق بود' }, - sections: { - general: 'عمومی', - vaultFilters: 'فیلترهای نمایش', - appearanceBehavior: 'ظاهر و رفتار', - navigationPane: 'پنل ناوبری', - calendar: 'تقویم', - fileOperations: 'عملیات فایل', - icons: 'بسته‌های آیکون', - folders: 'پوشه‌ها', - folderNotes: 'یادداشت‌های پوشه', - folderNoteFiles: 'فایل‌های یادداشت پوشه', - foldersAndFolderNotes: 'پوشه‌ها و یادداشت‌های پوشه', - tagsAndProperties: 'برچسب‌ها و ویژگی‌ها', - tags: 'برچسب‌ها', - listPane: 'پنل لیست', - notes: 'نمایش فایل', - shortcutsAndRecentFiles: 'میان‌برها و فایل‌های اخیر', - advanced: 'پیشرفته' + index: { + label: 'عمومی', + description: 'یادداشت‌های انتشار، پشتیبانی، پروفایل خزانه، انواع فایل و کلیدهای ویژگی.', + groups: { + vaultSetup: 'پیکربندی خزانه' + } }, pageGroups: { configuration: 'پیکربندی', - navigationAndContent: 'پنل ناوبری', - notesAndLists: 'پنل لیست', + navigationPane: 'پنل ناوبری', + listPane: 'پنل لیست', calendarAndTools: 'تقویم و ابزارها' }, - pageDescriptions: { - general: 'یادداشت‌های انتشار، پشتیبانی، پروفایل خزانه، انواع فایل و کلیدهای ویژگی.', - vaultFilters: 'پوشه‌ها، برچسب‌ها، فایل‌ها، برچسب‌های فایل و قوانین ویژگی پنهان.', - appearanceBehavior: 'رفتار، پیمایش با صفحه‌کلید، دکمه‌های ماوس، ظاهر و قالب‌بندی.', - navigationPane: 'چیدمان، ظاهر، تعداد فایل‌ها، رفتار جمع‌شدن و رنگ‌های رنگین‌کمان.', - shortcuts: 'قابلیت دید میان‌برها، نشان‌ها، فایل‌های اخیر و موارد سنجاق‌شده.', - calendar: 'نمایش تقویم، یادداشت‌های تاریخ، الگوها، تنظیمات محلی و مکان نوار کناری.', - fileOperations: 'الگوها، تأییدیه‌های حذف، پیوست‌ها و رفتار تعارض در جابجایی فایل.', - foldersAndFolderNotes: 'نمایش پوشه‌ها، یادداشت‌های پوشه، الگوهای یادداشت پوشه و رفتار یادداشت پوشه.', - tagsProperties: 'بخش‌های برچسب و ویژگی، آیکون‌ها، مرتب‌سازی، محدوده و وراثت.', - listPane: 'مرتب‌سازی، گروه‌بندی، حالت‌های لیست، یادداشت‌های سنجاق‌شده و پیش‌نمایش‌های طراحی.', - frontmatter: 'فیلدهای فرانت‌متر برای نام‌های نمایشی، نشانه‌های زمانی، آیکون‌ها و رنگ‌ها.', - notes: 'عناوین، متن پیش‌نمایش، تصاویر ویژه، برچسب‌ها، ویژگی‌ها، تاریخ‌ها، تعداد کلمات و تعداد نویسه‌ها.', - iconPacks: 'آیکون‌های رابط کاربری، آیکون‌های فایل و مدیریت بسته‌های آیکون.', - advanced: 'تشخیص، پاکسازی متادیتا، واردکردن/صادرکردن و بازنشانی.' - }, - groups: { - general: { - vaultConfiguration: 'پیکربندی خزانه', - templates: 'الگوها', - behavior: 'رفتار', - startup: 'راه‌اندازی', - keyboardNavigation: 'پیمایش با صفحه‌کلید', - mouseButtons: 'دکمه‌های ماوس', - view: 'ظاهر', - icons: 'آیکون‌ها', - desktopAppearance: 'ظاهر دسکتاپ', - mobileAppearance: 'ظاهر موبایل', - formatting: 'قالب‌بندی' + pages: { + displayFilters: { + label: 'فیلترهای نمایش', + description: 'پوشه‌ها، برچسب‌ها، فایل‌ها، برچسب‌های فایل و قوانین ویژگی پنهان.' + }, + appearanceAndBehavior: { + label: 'ظاهر و رفتار', + description: 'رفتار، پیمایش با صفحه‌کلید، دکمه‌های ماوس، ظاهر و قالب‌بندی.', + groups: { + startup: 'راه‌اندازی', + keyboardNavigation: 'پیمایش با صفحه‌کلید', + mouseButtons: 'دکمه‌های ماوس', + desktopAppearance: 'ظاهر دسکتاپ', + mobileAppearance: 'ظاهر موبایل', + appearance: 'ظاهر', + icons: 'آیکون‌ها', + formatting: 'قالب‌بندی' + } + }, + navigationPane: { + label: 'پنل ناوبری', + description: 'چیدمان، ظاهر، تعداد فایل‌ها، رفتار جمع‌شدن و رنگ‌های رنگین‌کمان.', + groups: { + appearance: 'ظاهر', + banner: 'بنر', + collapseItems: 'جمع کردن آیتم‌ها', + dragAndDrop: 'کشیدن و رها کردن', + fileCounts: 'تعداد فایل‌ها', + rainbowColors: 'رنگ‌های رنگین‌کمان' + } + }, + shortcutsAndRecentFiles: { + label: 'میان‌برها و فایل‌های اخیر', + description: 'قابلیت دید میان‌برها، نشان‌ها، فایل‌های اخیر و موارد سنجاق‌شده.', + groups: { + shortcuts: 'میانبرها', + recentFiles: 'فایل‌های اخیر' + } + }, + foldersAndFolderNotes: { + label: 'پوشه‌ها و یادداشت‌های پوشه', + description: 'نمایش پوشه‌ها، یادداشت‌های پوشه، الگوهای یادداشت پوشه و رفتار یادداشت پوشه.', + groups: { + folders: 'پوشه‌ها', + folderNotes: 'یادداشت‌های پوشه', + folderNoteFiles: 'فایل‌های یادداشت پوشه' + } + }, + tagsAndProperties: { + label: 'برچسب‌ها و ویژگی‌ها', + description: 'بخش‌های برچسب و ویژگی، آیکون‌ها، مرتب‌سازی، محدوده و وراثت.', + groups: { + tags: 'برچسب‌ها', + properties: 'ویژگی‌ها' + } + }, + listPane: { + label: 'پنل لیست', + description: 'مرتب‌سازی، گروه‌بندی، حالت‌های لیست، یادداشت‌های سنجاق‌شده و پیش‌نمایش‌های طراحی.', + groups: { + appearance: 'ظاهر', + sortAndGroup: 'مرتب‌سازی و گروه‌بندی', + groupHeaders: 'هدرهای گروه', + manualSort: 'مرتب‌سازی دستی', + pinnedNotes: 'یادداشت‌های سنجاق‌شده', + behavior: 'رفتار', + drawingPreviews: 'پیش‌نمایش‌های طراحی' + } + }, + fileOperations: { + label: 'عملیات فایل', + description: 'الگوها، تأییدیه‌های حذف، پیوست‌ها و رفتار تعارض در جابجایی فایل.', + groups: { + templates: 'الگوها' + } + }, + frontmatterFields: { + label: 'فیلدهای فرانت‌متر', + description: 'فیلدهای فرانت‌متر برای نام‌های نمایشی، نشانه‌های زمانی، آیکون‌ها و رنگ‌ها.' + }, + fileDisplay: { + label: 'نمایش فایل', + description: 'عناوین، متن پیش‌نمایش، تصاویر ویژه، برچسب‌ها، ویژگی‌ها، تاریخ‌ها، تعداد کلمات و تعداد نویسه‌ها.', + groups: { + icon: 'آیکون', + title: 'عنوان', + previewText: 'متن پیش‌نمایش', + featureImage: 'تصویر ویژه', + tags: 'برچسب‌ها', + properties: 'ویژگی‌ها', + tasks: 'وظایف', + date: 'تاریخ', + parentFolder: 'پوشه والد', + wordAndCharacterCount: 'تعداد کلمات و نویسه‌ها' + } + }, + calendar: { + label: 'تقویم', + description: 'نمایش تقویم، یادداشت‌های تاریخ، الگوها، تنظیمات محلی و مکان نوار کناری.', + groups: { + appearance: 'ظاهر', + leftSidebar: 'نوار کناری چپ', + calendarIntegration: 'یکپارچه‌سازی تقویم', + rightSidebar: 'نوار کناری چپ' + } + }, + iconPacks: { + label: 'بسته‌های آیکون', + description: 'آیکون‌های رابط کاربری، آیکون‌های فایل و مدیریت بسته‌های آیکون.' }, advanced: { - maintenance: 'نگهداری', - resetSettings: 'بازنشانی تنظیمات' - }, - navigation: { - appearance: 'ظاهر', - banner: 'بنر', - collapseItems: 'جمع کردن آیتم‌ها', - dragAndDrop: 'کشیدن و رها کردن', - noteCounts: 'تعداد فایل‌ها', - rainbowColors: 'رنگ‌های رنگین‌کمان', - leftSidebar: 'نوار کناری چپ', - calendarIntegration: 'یکپارچه‌سازی تقویم' - }, - list: { - display: 'ظاهر', - sortAndGroup: 'مرتب‌سازی و گروه‌بندی', - groupHeaders: 'هدرهای گروه', - manualSort: 'مرتب‌سازی دستی', - pinnedNotes: 'یادداشت‌های سنجاق‌شده', - drawingPreviews: 'پیش‌نمایش‌های طراحی' - }, - notes: { - frontmatter: 'فیلدهای فرانت‌متر', - tasks: 'وظایف', - icon: 'آیکون', - title: 'عنوان', - previewText: 'متن پیش‌نمایش', - featureImage: 'تصویر ویژه', - tags: 'برچسب‌ها', - properties: 'ویژگی‌ها', - date: 'تاریخ', - parentFolder: 'پوشه والد', - wordCount: 'تعداد کلمات و نویسه‌ها' + label: 'پیشرفته', + description: 'تشخیص، پاکسازی متادیتا، واردکردن/صادرکردن و بازنشانی.', + groups: { + maintenance: 'نگهداری', + resetSettings: 'بازنشانی تنظیمات' + } } }, syncMode: { notSynced: '(همگام نشده)', - switchToSynced: 'فعال‌سازی همگام‌سازی', - switchToLocal: 'غیرفعال‌سازی همگام‌سازی' + enableSync: 'فعال‌سازی همگام‌سازی', + disableSync: 'غیرفعال‌سازی همگام‌سازی' }, items: { listPaneTitle: { @@ -1113,11 +1157,11 @@ export const STRINGS_FA = { desc: 'محل نمایش عنوان پنل لیست را انتخاب کنید.', options: { header: 'نمایش در هدر', - list: 'نمایش در پنل لیست', + listPane: 'نمایش در پنل لیست', hidden: 'نمایش نده' } }, - sortNotesBy: { + defaultSortOrder: { name: 'ترتیب پیش‌فرض مرتب‌سازی', desc: 'ترتیب پیش‌فرض مرتب‌سازی یادداشت‌ها را انتخاب کنید. ویژگی‌های «ویژگی‌های مرتب‌سازی» به‌عنوان گزینه‌های مرتب‌سازی اضافی نمایش داده می‌شوند.', directions: { @@ -1125,18 +1169,18 @@ export const STRINGS_FA = { desc: 'نزولی' }, dateDirections: { - desc: 'جدیدترین بالا', - asc: 'قدیمی‌ترین بالا' + newestOnTop: 'جدیدترین بالا', + oldestOnTop: 'قدیمی‌ترین بالا' }, textDirections: { - asc: 'الف بالا', - desc: 'ی بالا' + aOnTop: 'الف بالا', + zOnTop: 'ی بالا' }, fields: { - modified: 'تاریخ ویرایش', - created: 'تاریخ ایجاد', + dateEdited: 'تاریخ ویرایش', + dateCreated: 'تاریخ ایجاد', title: 'عنوان', - filename: 'نام فایل', + fileName: 'نام فایل', property: 'ویژگی' } }, @@ -1149,7 +1193,7 @@ export const STRINGS_FA = { follow: 'پیروی از ترتیب مرتب‌سازی' } }, - propertySortKey: { + sortingProperties: { name: 'ویژگی‌های مرتب‌سازی', desc: 'ویژگی‌های frontmatter جداشده با ویرگول. هر ویژگی به‌عنوان یک گزینه مرتب‌سازی در تنظیم ترتیب پیش‌فرض مرتب‌سازی و در منوی مرتب‌سازی پنل لیست نمایش داده می‌شود. این ویژگی‌ها تغییر نمی‌کنند.', placeholder: 'published, author', @@ -1159,14 +1203,14 @@ export const STRINGS_FA = { both: 'ترتیب پیش‌فرض مرتب‌سازی و گروه‌بندی پیش‌فرض بازنشانی شدند زیرا ویژگی‌های آن‌ها دیگر در دسترس نیستند.' } }, - propertySortSecondary: { + propertySecondarySort: { name: 'مرتب‌سازی ثانویه', desc: 'با مرتب‌سازی بر اساس ویژگی استفاده می‌شود، زمانی که یادداشت‌ها مقدار ویژگی یکسان یا بدون مقدار ویژگی باشند.', options: { title: 'عنوان', - filename: 'نام فایل', - created: 'تاریخ ایجاد', - modified: 'تاریخ ویرایش' + fileName: 'نام فایل', + dateCreated: 'تاریخ ایجاد', + dateEdited: 'تاریخ ویرایش' } }, propertySortInstructions: { @@ -1179,16 +1223,16 @@ export const STRINGS_FA = { '**نماهای برچسب و ویژگی:** با انتخاب گروه‌بندی **پوشه**، سرصفحه‌های تاریخ نمایش داده می‌شوند.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'ویژگی‌های گروه‌بندی', desc: 'ویژگی‌های frontmatter جداشده با ویرگول. هر ویژگی به‌عنوان یک گزینه گروه‌بندی در تنظیم گروه‌بندی پیش‌فرض و در منوی مرتب‌سازی پنل لیست نمایش داده می‌شود. این ویژگی‌ها تغییر نمی‌کنند.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'ویژگی مرتب‌سازی دستی', desc: 'ویژگی frontmatter که برای ذخیره مقادیر شاخص عددی در مرتب‌سازی دستی استفاده می‌شود.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'ویژگی هدر گروه', desc: 'ویژگی frontmatter که برای ذخیره هدرهای سفارشی گروه استفاده می‌شود.' }, @@ -1205,7 +1249,7 @@ export const STRINGS_FA = { options: { top: 'بالا', bottom: 'پایین', - 'below-selected-note': 'زیر یادداشت انتخاب‌شده', + belowSelectedNote: 'زیر یادداشت انتخاب‌شده', unsorted: 'مرتب‌نشده' } }, @@ -1221,7 +1265,7 @@ export const STRINGS_FA = { 'در پنل لیست، یک یادداشت را انتخاب کنید یا چندین یادداشت را به صورت چندانتخابی انتخاب کنید، سپس **Cmd/Ctrl + Arrow Up/Down** را فشار دهید تا انتخاب به بالا یا پایین جابه‌جا شود.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'اسکرول به فایل انتخابی هنگام تغییر لیست', desc: 'هنگام سنجاق کردن یادداشت‌ها، نمایش یادداشت‌های زیرمجموعه، تغییر ظاهر پوشه، یا اجرای عملیات فایل به فایل انتخابی اسکرول کنید.' }, @@ -1229,15 +1273,15 @@ export const STRINGS_FA = { name: 'نمایش یادداشت‌ها از زیرپوشه‌ها / زیرمجموعه‌ها', desc: 'یادداشت‌های زیرپوشه‌های تودرتو و زیرمجموعه‌های برچسب و ویژگی را هنگام مشاهده پوشه، برچسب یا ویژگی شامل کنید.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'سنجاق کردن یادداشت‌ها فقط در پوشه خودشان', desc: 'یادداشت‌های سنجاق‌شده فقط در پوشه خودشان سنجاق‌شده نشان داده می‌شوند. مفید برای یادداشت‌های پوشه یا اگر تعداد زیادی یادداشت سنجاق‌شده دارید. بر نماهای برچسب یا ویژگی تأثیر نمی‌گذارد.' }, - separateNoteCounts: { + separateFileCounts: { name: 'نمایش جداگانه تعداد فایل‌های فعلی و زیرمجموعه', desc: 'تعداد فایل‌ها را به صورت "فعلی ▾ زیرمجموعه" برای پوشه‌ها، برچسب‌ها و ویژگی‌ها نمایش دهید.' }, - groupNotes: { + defaultGrouping: { name: 'گروه‌بندی پیش‌فرض', desc: '**سرصفحه‌ها** فهرست مرتب‌شده را بدون تغییر ترتیب آن نشانه‌گذاری می‌کنند: «سفارشی» سرصفحه‌های تعریف‌شده در frontmatter را نمایش می‌دهد و «تاریخ» سرصفحه‌های تاریخ را درج می‌کند. **گروه‌ها** فهرست را دوباره مرتب می‌کنند: گروه‌های پوشه و ویژگی به‌طور مستقل مرتب می‌شوند و یادداشت‌های درون هر گروه از ترتیب مرتب‌سازی پیروی می‌کنند.', families: { @@ -1250,7 +1294,7 @@ export const STRINGS_FA = { folder: 'پوشه' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'نمایش همیشگی تمام نشان‌های برچسب و ویژگی', desc: 'در صورت غیرفعال بودن، نشان‌هایی که با انتخاب ناوبری فعلی مطابقت دارند پنهان می‌شوند (مثلاً نشان برچسب «دستور پخت» هنگام مرور برچسب «دستور پخت» پنهان می‌شود). فعال کنید تا همه نشان‌ها همیشه نمایش داده شوند.' }, @@ -1258,7 +1302,7 @@ export const STRINGS_FA = { name: 'هدرهای گروه چسبان', desc: 'هدر بخش تاریخ، پوشه، ویژگی یا قسمت سنجاق‌شده فعلی را هنگام پیمایش نمایان نگه می‌دارد.' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'نمایش مسیرهای زیرپوشه', desc: 'هنگام گروه‌بندی بر اساس پوشه در پنل لیست، مسیرهای زیرپوشه را به جای فقط نام پوشه‌ها نمایش دهید.' }, @@ -1286,9 +1330,9 @@ export const STRINGS_FA = { name: 'نماد وظایف ناتمام', desc: 'هنگامی که یادداشت وظایف ناتمام دارد، آیکون فایل را جایگزین کنید.', options: { - none: 'غیرفعال', + disabled: 'غیرفعال', compact: 'حالت فشرده', - all: 'استاندارد و فشرده' + standardAndCompact: 'استاندارد و فشرده' } }, useFolderIcon: { @@ -1311,7 +1355,7 @@ export const STRINGS_FA = { name: 'پیشرفت کارها: پنهان کردن پس از تکمیل', desc: 'پنهان کردن پیشرفت وظایف زمانی که همه وظایف یادداشت تکمیل شده‌اند.' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'پس‌زمینه وظایف ناتمام', desc: 'اعمال رنگ پس‌زمینه زمانی که یادداشت وظایف ناتمام دارد.' }, @@ -1319,7 +1363,7 @@ export const STRINGS_FA = { name: 'رنگ پس‌زمینه وظایف ناتمام', desc: 'تنظیم رنگ پس‌زمینه مورد استفاده زمانی که یادداشت وظایف ناتمام دارد.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'آیکون بر اساس نام فایل', desc: 'تخصیص آیکون به فایل‌ها بر اساس متن در نام آن‌ها.' }, @@ -1329,7 +1373,7 @@ export const STRINGS_FA = { placeholder: '# متن=آیکون\nجلسه=ph-calendar\nفاکتور=ph-receipt', editTooltip: 'ویرایش نگاشت‌ها' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'آیکون بر اساس نوع فایل', desc: 'تخصیص آیکون به فایل‌ها بر اساس پسوند آن‌ها.' }, @@ -1337,7 +1381,7 @@ export const STRINGS_FA = { name: 'پیش‌تنظیم آیکون فایل', desc: 'آیکون‌های داخلی یا یک پیش‌تنظیم بسته آیکون را انتخاب کنید. قوانین سفارشی پسوند این پیش‌تنظیم را بازنویسی می‌کنند.', options: { - none: 'آیکون‌های داخلی' + builtIn: 'آیکون‌های داخلی' }, notInstalledWarning: 'این بسته آیکون نصب نشده است. به‌جای آن آیکون‌های داخلی نمایش داده می‌شوند.' }, @@ -1360,11 +1404,11 @@ export const STRINGS_FA = { name: 'نمایش پوشه والد', desc: 'نام پوشه والد را برای یادداشت‌ها در زیرپوشه‌ها، برچسب‌ها یا ویژگی‌ها نمایش دهید.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'نمایش مسیر پوشه', desc: 'مسیر را نسبت به پوشه انتخاب‌شده به جای فقط نام پوشه نمایش دهید. برچسب‌ها و ویژگی‌ها مسیر کامل را نشان می‌دهند.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'کلیک روی پوشه والد پوشه را باز می‌کند', desc: 'کلیک روی برچسب پوشه والد پوشه را در پنل لیست باز می‌کند.' }, @@ -1392,7 +1436,7 @@ export const STRINGS_FA = { vertical: 'تقسیم عمودی' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'وقتی نوار کناری خیلی باریک است', desc: 'انتخاب کنید وقتی پنل ناوبری و پنل فهرست کنار هم جا نمی‌شوند چه اتفاقی بیفتد.', options: { @@ -1401,7 +1445,7 @@ export const STRINGS_FA = { vertical: 'تغییر به تقسیم عمودی' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'آستانهٔ نوار کناری باریک', desc: 'انتخاب کنید آستانهٔ عرض نوار کناری چگونه محاسبه شود.', options: { @@ -1409,41 +1453,41 @@ export const STRINGS_FA = { customWidth: 'عرض سفارشی' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'عرض آستانهٔ نوار کناری باریک', desc: 'وقتی نوار کناری از این عرض باریک‌تر است تغییر کند.', resetTooltip: 'بازنشانی به عرض پیش‌فرض' }, - appearanceBackground: { + paneBackgroundColor: { name: 'رنگ پس‌زمینه', desc: 'رنگ‌های پس‌زمینه را برای پنل‌های ناوبری و لیست انتخاب کنید.', options: { separate: 'پس‌زمینه‌های جداگانه', - primary: 'استفاده از پس‌زمینه لیست', - secondary: 'استفاده از پس‌زمینه ناوبری' + listBackground: 'استفاده از پس‌زمینه لیست', + navigationBackground: 'استفاده از پس‌زمینه ناوبری' } }, - appearanceScale: { + zoomLevel: { name: 'سطح زوم', desc: 'سطح زوم کلی Notebook Navigator را کنترل می‌کند (درصد).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'استفاده از نوار ابزار شناور در iOS', desc: 'فقط برای iOS اعمال می‌شود.' }, - startView: { + defaultStartupView: { name: 'نمای پیش‌فرض شروع', desc: 'پنل فعال هنگام باز شدن Notebook Navigator را انتخاب کنید. در چیدمان تک‌پنلی این پنل ابتدا نمایش داده می‌شود؛ در چیدمان دوپنلی فوکوس صفحه‌کلید به آن داده می‌شود.', options: { navigation: 'پنل ناوبری', - files: 'پنل لیست' + listPane: 'پنل لیست' } }, toolbarButtons: { name: 'دکمه‌های نوار ابزار', desc: 'دکمه‌هایی که در نوار ابزار نمایش داده می‌شوند را انتخاب کنید. دکمه‌های مخفی از طریق دستورات و منوها قابل دسترسی هستند.' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'باز کردن یادداشت‌های جدید در زبانه جدید', desc: 'وقتی فعال باشد، فرمان ایجاد یادداشت جدید یادداشت‌ها را در زبانه جدید باز می‌کند. وقتی غیرفعال باشد، یادداشت‌ها جایگزین زبانه فعلی می‌شوند.' }, @@ -1463,20 +1507,20 @@ export const STRINGS_FA = { name: 'نمایش خودکار: نادیده گرفتن رویدادها از پنجره‌های دیگر', desc: 'یادداشت فعال را هنگام کار با یادداشت‌ها در پنجره دیگر تغییر ندهید.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'انیمیشن پنل تکی', desc: 'مدت زمان انتقال هنگام جابجایی بین پنل‌ها در حالت پنل تکی (میلی‌ثانیه).', resetTooltip: 'بازنشانی به پیش‌فرض' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'انتخاب خودکار اولین یادداشت', desc: 'هنگام تعویض پوشه‌ها، برچسب‌ها یا ویژگی‌ها به طور خودکار اولین یادداشت را باز کنید.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'غیرفعال کردن اسکرول خودکار برای میانبرها', desc: 'هنگام کلیک روی آیتم‌ها در میانبرها پنل ناوبری را اسکرول نکنید.' }, - autoExpandNavItems: { + expandOnSelection: { name: 'باز کردن هنگام انتخاب', desc: 'پوشه‌ها و برچسب‌ها را هنگام انتخاب باز کنید. در حالت پنل تکی، اولین انتخاب باز می‌کند، دومین انتخاب فایل‌ها را نمایش می‌دهد.' }, @@ -1514,16 +1558,16 @@ export const STRINGS_FA = { name: 'نشان میانبر', desc: "چه چیزی در کنار میانبرها نمایش داده شود. از دستورات 'باز کردن میانبر 1-9' برای باز کردن مستقیم میانبرها استفاده کنید.", options: { - index: 'موقعیت (1-9)', + position: 'موقعیت (1-9)', count: 'تعداد موارد', none: 'هیچ' } }, - showRecentNotes: { + showRecentFiles: { name: 'نمایش فایل‌های اخیر', desc: 'بخش فایل‌های اخیر را در پنل ناوبری نمایش دهید.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'پنهان کردن انواع فایل از فایل‌های اخیر', desc: 'انتخاب کنید کدام انواع فایل در بخش فایل‌های اخیر پنهان شوند.', options: { @@ -1531,15 +1575,15 @@ export const STRINGS_FA = { folderNotes: 'یادداشت‌های پوشه' } }, - recentNotesCount: { + recentFilesCount: { name: 'تعداد فایل‌های اخیر', desc: 'تعداد فایل‌های اخیر که نمایش داده می‌شوند.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'سنجاق کردن فایل‌های اخیر با میانبرها', desc: 'هنگام سنجاق کردن میانبرها، فایل‌های اخیر را نیز شامل شود.' }, - calendarEnabled: { + enableCalendar: { name: 'فعال‌سازی تقویم', desc: 'فعال‌سازی ویژگی‌های تقویم در Notebook Navigator.' }, @@ -1551,12 +1595,12 @@ export const STRINGS_FA = { rightSidebar: 'نوار کناری چپ' // RTL: "Right sidebar" → "Left sidebar" (appears on left in RTL) } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'جایگاه پنل تکی', desc: 'محل نمایش تقویم در حالت پنل تکی.', options: { navigationPane: 'پنل ناوبری', - below: 'زیر پنل‌ها' + belowPanes: 'زیر پنل‌ها' } }, calendarLocale: { @@ -1578,7 +1622,7 @@ export const STRINGS_FA = { thuFri: 'پنجشنبه و جمعه' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'قالب نام ماه', desc: 'نام ماه کامل (ژانویه) یا کوتاه (ژانویه).', options: { @@ -1590,7 +1634,7 @@ export const STRINGS_FA = { name: 'نمایش دکمه‌های اطلاعات', desc: 'نمایش دکمه‌های اطلاعات در نوار جستجو و سربرگ تقویم.' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'هفته‌های نمایش در نوار کناری راست', // RTL: "left sidebar" → "right sidebar" desc: 'تقویم در نوار کناری چپ همیشه ماه کامل را نمایش می‌دهد.', // RTL: "right sidebar" → "left sidebar" options: { @@ -1635,7 +1679,7 @@ export const STRINGS_FA = { name: 'نمایش آیتم‌های مخفی', desc: 'وقتی فعال، تقویم همیشه همه یادداشت‌های تقویم را نشان می‌دهد، از جمله یادداشت‌های پنهان‌شده توسط فیلترهای نمایه خزانه.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'منبع یادداشت روزانه', desc: 'منبع یادداشت‌های تقویم.', options: { @@ -1655,34 +1699,38 @@ export const STRINGS_FA = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'پوشه ریشه', desc: 'پوشه پایه برای یادداشت‌های دوره‌ای. الگوهای تاریخ می‌توانند شامل زیرپوشه‌ها باشند. با پروفایل صندوق انتخاب شده تغییر می‌کند.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'محل پوشه قالب', desc: 'انتخابگر فایل قالب یادداشت‌های این پوشه را نمایش می‌دهد.', placeholder: 'Templates', usage: 'برای یادداشت‌های تقویم و یادداشت‌های پوشه استفاده می‌شود. الگوها را در تقویم > یکپارچه‌سازی تقویم و پوشه‌ها و یادداشت‌های پوشه > فایل‌های یادداشت پوشه پیکربندی کنید.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'یادداشت‌های روزانه', desc: 'قالب‌بندی مسیر با استفاده از فرمت تاریخ Moment. نام زیرپوشه‌ها را در کروشه قرار دهید، مثال [Work]/YYYY. روی نماد قالب کلیک کنید تا قالب تنظیم شود. محل پوشه الگوها را در عملیات فایل > الگوها تنظیم کنید.', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'الگو باید بتواند به یک تاریخ کامل (سال، ماه، روز) قالب‌بندی شود و دوباره به همان تاریخ تجزیه شود.' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'قالب‌بندی مسیر با استفاده از ', momentLinkText: 'فرمت تاریخ Moment', momentDescSuffix: '. نام زیرپوشه‌ها را در کروشه قرار دهید، مثال [Work]/YYYY. روی نماد قالب کلیک کنید تا قالب تنظیم شود. محل پوشه الگوها را در عملیات فایل > الگوها تنظیم کنید.', - templaterSupportInstalled: '✅ افزونه Templater با پشتیبانی کامل از قالب‌ها نصب شده است.', - templaterSupportMissing: '⚠️ برای پشتیبانی از قالب‌ها، افزونه Templater را نصب کنید.', templateTokenNoticeLabel: 'مهم!', templateTokenNotice: 'پشتیبانی از قالب‌ها به افزونه Templater نیاز دارد. قالب‌های داخلی مانند {{date}} و {{title}} فقط زمانی کار می‌کنند که {source} روی {option} تنظیم شده باشد.', - placeholder: 'YYYY/YYYYMMDD', - example: 'نحوه نگارش فعلی: {path}', - parsingError: 'الگو باید بتواند به یک تاریخ کامل (سال، ماه، روز) قالب‌بندی شود و دوباره به همان تاریخ تجزیه شود.' + example: 'نحوه نگارش فعلی: {path}' + }, + templaterSupport: { + installed: '✅ افزونه Templater با پشتیبانی کامل از قالب‌ها نصب شده است.', + missing: '⚠️ برای پشتیبانی از قالب‌ها، افزونه Templater را نصب کنید.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'یادداشت‌های هفتگی', parsingError: 'الگو باید بتواند به یک هفته کامل (سال هفته، شماره هفته) قالب‌بندی شود و دوباره تجزیه شود.', weekPathMismatchWarning: @@ -1690,19 +1738,19 @@ export const STRINGS_FA = { mixedWeekTokensWarning: 'این الگو توکن‌های هفته مبتنی بر دوشنبه ("W" یا "G") را با توکن‌های هفته مبتنی بر زبان ("w" یا "g") ترکیب می‌کند. به طور مداوم از یک مجموعه استفاده کنید: "GGGG" با "WW" برای هفته‌های مبتنی بر دوشنبه، یا "gggg" با "ww" اگر یادداشت‌های هفتگی باید از زبان انتخاب‌شده پیروی کنند.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'یادداشت‌های ماهانه', parsingError: 'الگو باید بتواند به یک ماه کامل (سال، ماه) قالب‌بندی شود و دوباره تجزیه شود.' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'یادداشت‌های فصلی', parsingError: 'الگو باید بتواند به یک فصل کامل (سال، فصل) قالب‌بندی شود و دوباره تجزیه شود.' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'یادداشت‌های سالانه', parsingError: 'الگو باید بتواند به یک سال کامل (سال) قالب‌بندی شود و دوباره تجزیه شود.' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'فایل قالب: {name}' }, showTooltips: { @@ -1723,7 +1771,7 @@ export const STRINGS_FA = { buttonText: 'بازنشانی جداکننده', notice: 'موقعیت جداکننده بازنشانی شد. اوبسیدین را ری‌استارت کنید یا Notebook Navigator را دوباره باز کنید.' }, - settingsTransfer: { + importAndExportSettings: { name: 'وارد و صادر کردن تنظیمات', desc: 'تنظیمات Notebook Navigator را به صورت JSON صادر یا وارد کنید. وارد کردن، همه تنظیمات را جایگزین می‌کند.', importButtonText: 'وارد کردن', @@ -1781,15 +1829,15 @@ export const STRINGS_FA = { name: 'فشار Enter برای باز کردن فایل‌ها', desc: 'فایل‌ها فقط با فشار دادن Enter در هنگام پیمایش با صفحه‌کلید در لیست باز شوند. در macOS، این کار از تغییر نام فایل‌ها با Enter جلوگیری می‌کند.' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'انتخاب کنید که Shift+Enter فایل انتخاب‌شده را باز کند یا نام آن را تغییر دهد.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'انتخاب کنید که Cmd+Enter فایل انتخاب‌شده را باز کند یا نام آن را تغییر دهد.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'انتخاب کنید که Ctrl+Enter فایل انتخاب‌شده را باز کند یا نام آن را تغییر دهد.' }, @@ -1797,12 +1845,12 @@ export const STRINGS_FA = { name: 'دکمه‌های عقب/جلو ماوس', desc: 'عملکرد دکمه‌های عقب و جلو ماوس در دسکتاپ.', options: { - none: 'استفاده از پیش‌فرض سیستم', + systemDefault: 'استفاده از پیش‌فرض سیستم', singlePaneSwitch: 'تغییر پنل (تک‌پنل)', history: 'پیمایش تاریخچه' } }, - fileVisibility: { + showFileTypes: { name: 'نمایش انواع فایل (پروفایل خزانه)', desc: 'فیلتر کنید کدام انواع فایل در ناوبر نمایش داده شوند. انواع فایل پشتیبانی‌نشده توسط اوبسیدین ممکن است در برنامه‌های خارجی باز شوند.', options: { @@ -1834,12 +1882,12 @@ export const STRINGS_FA = { desc: 'در صورت عدم وجود، یادداشت دوره‌ای را هنگام راه‌اندازی یا با فرمان ایجاد می‌کند.' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'مخفی کردن یادداشت‌ها با قوانین ویژگی (پروفایل خزانه)', desc: 'لیست قوانین فرانت‌متر جدا شده با کاما. از ورودی‌های `key` یا `key=value` استفاده کنید (مثل status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'مخفی کردن فایل‌ها (پروفایل خزانه)', desc: 'لیست الگوهای نام فایل جدا شده با کاما برای مخفی کردن. از علامت‌های عام * و مسیرهای / پشتیبانی می‌کند (مثل temp-*، *.png، /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1866,7 +1914,7 @@ export const STRINGS_FA = { duplicateName: 'نام پروفایل وجود دارد' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'محل عنوان خزانه', desc: 'انتخاب کنید عنوان خزانه کجا نمایش داده شود.', options: { @@ -1874,7 +1922,7 @@ export const STRINGS_FA = { navigation: 'نمایش در پنل ناوبری' } }, - excludedFolders: { + hideFolders: { name: 'مخفی کردن پوشه‌ها (پروفایل خزانه)', desc: 'لیست پوشه‌های جدا شده با کاما برای مخفی کردن. الگوهای نام: assets* (پوشه‌های شروع‌شده با assets)، *_temp (پایان‌یافته با _temp). الگوهای مسیر: /archive (فقط archive اصلی)، /res* (پوشه‌های اصلی شروع‌شده با res)، /*/temp (پوشه‌های temp یک سطح عمیق)، /projects/* (همه پوشه‌های داخل projects).', placeholder: 'قالب‌ها، assets*، /archive، /res*' @@ -1888,7 +1936,7 @@ export const STRINGS_FA = { name: 'نمایش تاریخ', desc: 'تاریخ را زیر نام یادداشت نمایش دهید.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'هنگام مرتب‌سازی بر اساس نام', desc: 'تاریخی که هنگام مرتب‌سازی الفبایی یادداشت‌ها نمایش داده می‌شود.', options: { @@ -1900,7 +1948,7 @@ export const STRINGS_FA = { name: 'نمایش برچسب‌های فایل', desc: 'برچسب‌های قابل کلیک را در آیتم‌های فایل نمایش دهید.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'نمایش مسیرهای کامل برچسب', desc: 'مسیرهای کامل سلسله‌مراتب برچسب را نمایش دهید. وقتی فعال: «ai/openai»، «کار/پروژه‌ها/۲۰۲۴». وقتی غیرفعال: «openai»، «۲۰۲۴».' }, @@ -1908,7 +1956,7 @@ export const STRINGS_FA = { name: 'رنگ‌آمیزی برچسب‌های فایل', desc: 'رنگ‌های برچسب را به نشان‌های برچسب روی آیتم‌های فایل اعمال کنید.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'نمایش اول برچسب‌های رنگی', desc: 'برچسب‌های رنگی را قبل از برچسب‌های دیگر روی آیتم‌های فایل مرتب کنید.' }, @@ -1924,7 +1972,7 @@ export const STRINGS_FA = { name: 'رنگ‌آمیزی ویژگی‌های فایل', desc: 'رنگ‌های ویژگی را روی نشان‌های ویژگی در آیتم‌های فایل اعمال کنید.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'نمایش ویژگی‌های رنگی در اولویت', desc: 'ویژگی‌های رنگی را قبل از ویژگی‌های دیگر روی آیتم‌های فایل مرتب کنید.' }, @@ -1932,7 +1980,7 @@ export const STRINGS_FA = { name: 'نمایش ویژگی‌ها در حالت فشرده', desc: 'نمایش ویژگی‌ها هنگام فعال بودن حالت فشرده.' }, - textCountDisplay: { + textCountType: { name: 'نوع شمارش', desc: 'انتخاب کنید کدام شمارش‌های متن در موارد فایل نمایش داده شوند.', options: { @@ -1962,11 +2010,11 @@ export const STRINGS_FA = { name: 'ویژگی هدف', desc: 'کلید ویژگی فرانت‌متر که تعداد کلمات هدف را نگه می‌دارد. برای پنهان کردن هدف‌ها خالی بگذارید.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'نمایش درصد هدف', desc: 'وقتی تعداد کلمات هدف موجود است، فقط درصد پیشرفت را نمایش دهید.' }, - propertyFields: { + propertyKeys: { name: 'کلیدهای ویژگی (پروفایل خزانه)', desc: 'کلیدهای ویژگی فرانت‌متر، با قابلیت تنظیم نمایش هر کلید برای ناوبری و فهرست فایل.', addButtonTooltip: 'پیکربندی کلیدهای ویژگی', @@ -1978,11 +2026,11 @@ export const STRINGS_FA = { name: 'نمایش ویژگی‌ها در ردیف‌های جداگانه', desc: 'هر ویژگی را در ردیف جداگانه نمایش می‌دهد.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'پیوند نشان‌های ویژگی به یادداشت‌ها', desc: 'روی نشان ویژگی کلیک کنید تا یادداشت مرتبط باز شود.' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: 'پیوند نشان‌های ویژگی به نشانی‌ها', desc: 'روی نشان ویژگی کلیک کنید تا نشانی مرتبط باز شود.' }, @@ -2002,7 +2050,7 @@ export const STRINGS_FA = { helpTooltip: 'قالب با استفاده از Moment', momentLinkText: 'قالب Moment' }, - showFilePreview: { + showNotePreview: { name: 'نمایش پیش‌نمایش یادداشت', desc: 'متن پیش‌نمایش را زیر نام یادداشت نمایش دهید.' }, @@ -2031,7 +2079,7 @@ export const STRINGS_FA = { desc: 'لیست ویژگی‌های فرانت‌متر جدا شده با کاما برای بررسی متن پیش‌نمایش. اولین ویژگی با متن استفاده می‌شود.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'بازگشت به محتوای یادداشت', desc: 'نمایش محتوای یادداشت به عنوان پیش‌نمایش وقتی هیچ‌کدام از ویژگی‌های مشخص‌شده حاوی متن نیستند.' }, @@ -2046,7 +2094,7 @@ export const STRINGS_FA = { '5': '۵ ردیف' } }, - fileNameRows: { + titleRows: { name: 'ردیف‌های عنوان', desc: 'تعداد ردیف‌ها برای نمایش عناوین یادداشت.', options: { @@ -2077,22 +2125,22 @@ export const STRINGS_FA = { desc: 'لیست ویژگی‌های فرانت‌متر جدا شده با کاما. یادداشت‌هایی که هر یک از این ویژگی‌ها را دارند، تصاویر ویژه را ذخیره نمی‌کنند.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'اندازه نمایش تصویر شاخص', desc: 'حداکثر اندازه رندر شده برای تصاویر شاخص در لیست یادداشت‌ها.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'اندازه پیکسل تصویر شاخص', desc: 'وضوح تصویر هنگام تولید تصاویر بندانگشتی ذخیره‌شده تصویر شاخص. اگر پیش‌نمایش‌های بزرگ‌تر تار به نظر می‌رسند، این مقدار را افزایش دهید.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2100,7 +2148,7 @@ export const STRINGS_FA = { name: 'دانلود تصاویر خارجی', desc: 'دانلود تصاویر از راه دور و تصاویر کوچک YouTube برای تصاویر ویژه.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'پنهان کردن تصاویر پیش‌نمایش صادر شده', desc: 'پنهان کردن فایل‌های PNG پیش‌نمایش طراحی صادر شده. برای نمایش آن‌ها، «نمایش موارد پنهان» را روشن کنید.' }, @@ -2133,11 +2181,11 @@ export const STRINGS_FA = { alphaDesc: 'ی تا الف' } }, - showNoteCount: { + showFileCount: { name: 'نمایش تعداد فایل', desc: 'تعداد فایل‌ها را کنار پوشه‌ها، برچسب‌ها و ویژگی‌ها نمایش دهید.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'نمایش آیکون برای میانبرها و آیتم‌های اخیر', desc: 'آیکون‌ها را در کنار آیتم‌ها در بخش‌های میانبرها و اخیر نمایش دهید.' }, @@ -2146,7 +2194,7 @@ export const STRINGS_FA = { desc: 'ویرایش آیکون‌های نوار ابزار، پوشه، برچسب، ویژگی، سنجاق شده، جستجو و مرتب‌سازی.', buttonText: 'ویرایش آیکون‌ها' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'اعمال رنگ فقط به آیکون‌ها', desc: 'وقتی فعال، رنگ‌های سفارشی فقط به آیکون‌ها اعمال می‌شوند. وقتی غیرفعال، رنگ‌ها به آیکون‌ها و برچسب‌های متن اعمال می‌شوند.' }, @@ -2154,9 +2202,9 @@ export const STRINGS_FA = { name: 'حالت رنگ‌های رنگین‌کمان (پروفایل خزانه)', desc: 'اعمال رنگ‌های رنگین‌کمان در پنل ناوبری.', options: { - none: 'خاموش', - foreground: 'رنگ متن', - background: 'رنگ پس‌زمینه' + off: 'خاموش', + textColor: 'رنگ متن', + backgroundColor: 'رنگ پس‌زمینه' } }, navRainbowFirstColor: { @@ -2179,7 +2227,7 @@ export const STRINGS_FA = { name: 'اعمال بر میانبرها', desc: 'اعمال رنگ‌های رنگین‌کمان بر میانبرها.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'اعمال بر موارد اخیر', desc: 'اعمال رنگ‌های رنگین‌کمان بر موارد اخیر.' }, @@ -2213,7 +2261,7 @@ export const STRINGS_FA = { name: 'اعمال بر ویژگی‌ها', desc: 'اعمال رنگ‌های رنگین‌کمان بر ویژگی‌ها.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'روشنایی یکنواخت در بین رنگ‌ها', // (English: Consistent brightness across hues) desc: 'روشنایی را بین رنگ‌های شروع و پایان در طول انتقال‌های رنگی درون‌یابی می‌کند.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2231,7 +2279,7 @@ export const STRINGS_FA = { all: 'هر سطح' } }, - collapseBehavior: { + collapseItems: { name: 'جمع کردن آیتم‌ها', desc: 'انتخاب کنید دکمه باز/بسته کردن همه چه چیزی را تحت تأثیر قرار دهد.', options: { @@ -2241,7 +2289,7 @@ export const STRINGS_FA = { propertiesOnly: 'فقط ویژگی‌ها' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'باز نگه داشتن آیتم انتخابی', desc: 'هنگام جمع کردن، آیتم انتخابی و والدین آن را باز نگه دارید.' }, @@ -2249,7 +2297,7 @@ export const STRINGS_FA = { name: 'نادیده گرفتن ریشه خزانه هنگام جمع کردن', desc: 'هنگام جمع کردن همه آیتم‌ها، پوشه ریشه خزانه را در وضعیت فعلی نگه دارید.' }, - navIndent: { + treeIndentation: { name: 'تورفتگی درخت', desc: 'عرض تورفتگی را برای پوشه‌ها، برچسب‌ها و ویژگی‌های تودرتو تنظیم کنید (پیکسل).' }, @@ -2275,7 +2323,7 @@ export const STRINGS_FA = { line: 'خط' } }, - navRootSpacing: { + rootItemSpacing: { name: 'فاصله آیتم اصلی', desc: 'فاصله بین پوشه‌ها، برچسب‌ها و ویژگی‌های سطح اصلی (پیکسل).' }, @@ -2302,15 +2350,15 @@ export const STRINGS_FA = { highToLow: 'زیاد به کم' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'نمایش پوشه برچسب‌ها', desc: '"برچسب‌ها" را به عنوان پوشه قابل جمع‌شدن نمایش دهید.' }, - showUntagged: { + showUntaggedNotes: { name: 'نمایش یادداشت‌های بدون برچسب', desc: 'آیتم "بدون برچسب" را برای یادداشت‌های بدون برچسب نمایش دهید.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'فیلتر برچسب‌ها بر اساس انتخاب', desc: 'فقط برچسب‌هایی را نشان دهید که در یادداشت‌های پوشه یا ویژگی انتخاب‌شده وجود دارند.' }, @@ -2344,20 +2392,20 @@ export const STRINGS_FA = { highToLow: 'زیاد به کم' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'نمایش پوشه ویژگی‌ها', desc: 'نمایش "ویژگی‌ها" به عنوان پوشه جمع‌شدنی.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'فیلتر ویژگی‌ها بر اساس انتخاب', desc: 'فقط ویژگی‌هایی را نشان دهید که در یادداشت‌های پوشه یا برچسب انتخاب‌شده وجود دارند.' }, - hiddenTags: { + hideTags: { name: 'مخفی کردن برچسب‌ها (پروفایل خزانه)', desc: 'لیست الگوهای برچسب جدا شده با کاما. الگوهای نام: tag* (شروع با)، *tag (پایان با). الگوهای مسیر: archive (برچسب و فرزندان)، archive/* (فقط فرزندان)، projects/*/drafts (wildcard میانی).', placeholder: 'archive*, *draft, projects/*/old' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'مخفی کردن یادداشت‌ها با برچسب‌ها (پروفایل خزانه)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2390,7 +2438,7 @@ export const STRINGS_FA = { desc: 'فایل الگویی که هنگام ایجاد یادداشت‌های پوشه استفاده می‌شود. الگوهای Markdown می‌توانند از Templater استفاده کنند. الگوهای Canvas و Base به‌عنوان محتوای فایل کپی می‌شوند. محل پوشه الگوها را در عملیات فایل > الگوها تنظیم کنید.', formatWarning: 'قالب الگو باید با نوع یادداشت پوشه انتخاب‌شده مطابقت داشته باشد: .md، .canvas یا .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'نام پوشه‌ها یادداشت‌های پوشه را باز می‌کند', desc: 'کلیک روی نام پوشه، یادداشت پوشه آن را باز می‌کند. در صورت غیرفعال بودن، یادداشت‌های پوشه فقط فراداده پوشه مانند نام، آیکون و رنگ را ارائه می‌دهند.' }, @@ -2411,7 +2459,7 @@ export const STRINGS_FA = { rightSidebar: 'نوار کناری راست' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'نوار کناری راست: نمایش نزدیک‌ترین یادداشت پوشه', desc: 'وقتی پوشه‌ای انتخاب می‌شود، نوار کناری راست به‌طور خودکار نزدیک‌ترین یادداشت پوشه والد را نشان می‌دهد.' }, @@ -2454,7 +2502,7 @@ export const STRINGS_FA = { indexingTitle: 'در حال نمایه\u200cسازی خزانه...', progress: 'Notebook Navigator در حال به\u200cروزرسانی کش است.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'دانلود', downloadingLabel: 'در حال دانلود...', removeButton: 'حذف', @@ -2466,7 +2514,7 @@ export const STRINGS_FA = { infoNote: 'بسته‌های آیکون دانلود شده وضعیت نصب را بین دستگاه‌ها همگام می‌کنند. بسته‌های آیکون در پایگاه داده محلی هر دستگاه می‌مانند؛ همگام‌سازی فقط پیگیری می‌کند آیا دانلود یا حذف شوند. بسته‌های آیکون از مخزن Notebook Navigator دانلود می‌شوند (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'استفاده از متادیتای فرانت‌متر', desc: 'از فرانت‌متر برای نام یادداشت، زمان‌ها، آیکون‌ها و رنگ‌ها استفاده کنید' }, @@ -2485,7 +2533,7 @@ export const STRINGS_FA = { desc: 'فیلد فرانت‌متر برای رنگ‌های پس‌زمینه. برای استفاده از رنگ‌های پس‌زمینه ذخیره‌شده در تنظیمات خالی بگذارید.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'مهاجرت آیکون‌ها و رنگ‌ها از تنظیمات', desc: 'ذخیره‌شده در تنظیمات: {icons} آیکون، {colors} رنگ.', button: 'مهاجرت', @@ -2495,7 +2543,7 @@ export const STRINGS_FA = { noticeFailures: 'ورودی‌های ناموفق: {failures}.', noticeError: 'مهاجرت ناموفق بود. کنسول را برای جزئیات بررسی کنید.' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'فیلدهای نام', desc: 'لیست فیلدهای فرانت‌متر جداشده با کاما. اولین مقدار غیرخالی استفاده می‌شود. به نام فایل برمی‌گردد.', placeholder: 'title, name' @@ -2510,7 +2558,7 @@ export const STRINGS_FA = { desc: 'نام فیلد فرانت‌متر برای زمان تغییر. برای استفاده فقط از تاریخ سیستم فایل خالی بگذارید.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'قالب زمان', desc: 'قالب استفاده‌شده برای تجزیه زمان‌ها در فرانت‌متر. برای استفاده از تجزیه ISO 8601 خالی بگذارید.', helpTooltip: 'قالب با استفاده از Moment', @@ -2523,12 +2571,12 @@ export const STRINGS_FA = { buttonText: '❤️ حمایت مالی', coffeeButton: '☕️ یک قهوه مهمانم کن' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'بررسی نسخه جدید هنگام شروع', desc: 'هنگام شروع نسخه‌های جدید افزونه را بررسی می‌کند و هنگام در دسترس بودن به‌روزرسانی اعلان نمایش می‌دهد. بررسی‌ها حداکثر روزی یک بار انجام می‌شوند.', status: 'نسخه جدید موجود: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'ثبت اشکال‌زدایی راه‌اندازی', desc: 'تشخیص‌های راه‌اندازی را در یک فایل Markdown زمان‌دار در ریشه خزانه می‌نویسد و پس از پایدار شدن راه‌اندازی متوقف می‌شود. فایل ممکن است همگام‌سازی شود و می‌تواند مسیرهای فایل را شامل شود.' }, diff --git a/src/i18n/locales/fr.ts b/src/i18n/locales/fr.ts index 30312332c..84060c25f 100644 --- a/src/i18n/locales/fr.ts +++ b/src/i18n/locales/fr.ts @@ -74,6 +74,9 @@ export const STRINGS_FR = { shortcutsHeader: 'Raccourcis', recentFilesHeader: 'Fichiers récents', // Header label for recent files section in navigation pane (English: Recent files) properties: 'Propriétés', + folders: 'Dossiers', + tags: 'Étiquettes', + calendar: 'Calendrier', reorderRootFoldersTitle: 'Réorganiser la navigation', reorderRootFoldersHint: 'Utilisez les flèches ou glissez pour réorganiser', vaultRootLabel: 'Coffre', @@ -1014,102 +1017,144 @@ export const STRINGS_FR = { exportSuccess: 'Rapport de métadonnées échouées exporté vers : {filename}', exportFailed: "Échec de l'exportation du rapport de métadonnées" }, - sections: { - general: 'Général', - vaultFilters: "Filtres d'affichage", - appearanceBehavior: 'Apparence et comportement', - navigationPane: 'Panneau de navigation', - calendar: 'Calendrier', - fileOperations: 'Opérations sur les fichiers', - icons: "Packs d'icônes", - folders: 'Dossiers', - folderNotes: 'Notes de dossier', - folderNoteFiles: 'Fichiers de notes de dossier', - foldersAndFolderNotes: 'Dossiers et notes de dossier', - tagsAndProperties: 'Tags et propriétés', - tags: 'Étiquettes', - listPane: 'Panneau de liste', - notes: 'Affichage des fichiers', - shortcutsAndRecentFiles: 'Raccourcis et fichiers récents', - advanced: 'Avancé' + index: { + label: 'Général', + description: 'Notes de version, support, profil du coffre, types de fichiers et clés de propriétés.', + groups: { + vaultSetup: 'Configuration du coffre' + } }, pageGroups: { configuration: 'Configuration', - navigationAndContent: 'Panneau de navigation', - notesAndLists: 'Panneau de liste', + navigationPane: 'Panneau de navigation', + listPane: 'Panneau de liste', calendarAndTools: 'Calendrier et outils' }, - pageDescriptions: { - general: 'Notes de version, support, profil du coffre, types de fichiers et clés de propriétés.', - vaultFilters: 'Dossiers, étiquettes, fichiers, étiquettes de fichiers et règles de propriétés masqués.', - appearanceBehavior: 'Comportement, navigation au clavier, boutons de souris, apparence et formatage.', - navigationPane: 'Disposition, apparence, comptage des fichiers, comportement de repli et couleurs arc-en-ciel.', - shortcuts: 'Visibilité des raccourcis, badges, fichiers récents et éléments épinglés.', - calendar: 'Affichage du calendrier, notes de date, modèles, paramètres régionaux et emplacement de la barre latérale.', - fileOperations: - 'Modèles, confirmations de suppression, pièces jointes et comportement en cas de conflit de déplacement de fichiers.', - foldersAndFolderNotes: 'Affichage des dossiers, notes de dossier, modèles et comportement des notes de dossier.', - tagsProperties: 'Sections de tags et propriétés, icônes, tri, portée et héritage.', - listPane: 'Tri, regroupement, modes de liste, notes épinglées et aperçus de dessins.', - frontmatter: "Champs frontmatter pour noms d'affichage, horodatages, icônes et couleurs.", - notes: 'Titres, texte d’aperçu, images mises en avant, tags, propriétés, dates, nombres de mots et nombres de caractères.', - iconPacks: "Icônes d'interface, icônes de fichiers et gestion des packs d'icônes.", - advanced: 'Diagnostics, nettoyage des métadonnées, import/export et réinitialisation.' - }, - groups: { - general: { - vaultConfiguration: 'Configuration du coffre', - templates: 'Modèles', - behavior: 'Comportement', - startup: 'Démarrage', - keyboardNavigation: 'Navigation au clavier', - mouseButtons: 'Boutons de souris', - view: 'Apparence', - icons: 'Icônes', - desktopAppearance: 'Apparence sur ordinateur', - mobileAppearance: 'Apparence mobile', - formatting: 'Formatage' + pages: { + displayFilters: { + label: "Filtres d'affichage", + description: 'Dossiers, étiquettes, fichiers, étiquettes de fichiers et règles de propriétés masqués.' + }, + appearanceAndBehavior: { + label: 'Apparence et comportement', + description: 'Comportement, navigation au clavier, boutons de souris, apparence et formatage.', + groups: { + startup: 'Démarrage', + keyboardNavigation: 'Navigation au clavier', + mouseButtons: 'Boutons de souris', + desktopAppearance: 'Apparence sur ordinateur', + mobileAppearance: 'Apparence mobile', + appearance: 'Apparence', + icons: 'Icônes', + formatting: 'Formatage' + } + }, + navigationPane: { + label: 'Panneau de navigation', + description: 'Disposition, apparence, comptage des fichiers, comportement de repli et couleurs arc-en-ciel.', + groups: { + appearance: 'Apparence', + banner: 'Bannière', + collapseItems: 'Replier les éléments', + dragAndDrop: 'Glisser-déposer', + fileCounts: 'Nombre de fichiers', + rainbowColors: 'Couleurs arc-en-ciel' + } + }, + shortcutsAndRecentFiles: { + label: 'Raccourcis et fichiers récents', + description: 'Visibilité des raccourcis, badges, fichiers récents et éléments épinglés.', + groups: { + shortcuts: 'Raccourcis', + recentFiles: 'Fichiers récents' + } + }, + foldersAndFolderNotes: { + label: 'Dossiers et notes de dossier', + description: 'Affichage des dossiers, notes de dossier, modèles et comportement des notes de dossier.', + groups: { + folders: 'Dossiers', + folderNotes: 'Notes de dossier', + folderNoteFiles: 'Fichiers de notes de dossier' + } + }, + tagsAndProperties: { + label: 'Tags et propriétés', + description: 'Sections de tags et propriétés, icônes, tri, portée et héritage.', + groups: { + tags: 'Étiquettes', + properties: 'Propriétés' + } + }, + listPane: { + label: 'Panneau de liste', + description: 'Tri, regroupement, modes de liste, notes épinglées et aperçus de dessins.', + groups: { + appearance: 'Apparence', + sortAndGroup: 'Tri et regroupement', + groupHeaders: 'En-têtes de groupe', + manualSort: 'Tri manuel', + pinnedNotes: 'Notes épinglées', + behavior: 'Comportement', + drawingPreviews: 'Aperçus des dessins' + } + }, + fileOperations: { + label: 'Opérations sur les fichiers', + description: + 'Modèles, confirmations de suppression, pièces jointes et comportement en cas de conflit de déplacement de fichiers.', + groups: { + templates: 'Modèles' + } + }, + frontmatterFields: { + label: 'Champs frontmatter', + description: "Champs frontmatter pour noms d'affichage, horodatages, icônes et couleurs." + }, + fileDisplay: { + label: 'Affichage des fichiers', + description: + 'Titres, texte d’aperçu, images mises en avant, tags, propriétés, dates, nombres de mots et nombres de caractères.', + groups: { + icon: 'Icône', + title: 'Titre', + previewText: "Texte d'aperçu", + featureImage: 'Image vedette', + tags: 'Étiquettes', + properties: 'Propriétés', + tasks: 'Tâches', + date: 'Date', + parentFolder: 'Dossier parent', + wordAndCharacterCount: 'Nombre de mots et de caractères' + } + }, + calendar: { + label: 'Calendrier', + description: 'Affichage du calendrier, notes de date, modèles, paramètres régionaux et emplacement de la barre latérale.', + groups: { + appearance: 'Apparence', + leftSidebar: 'Barre latérale gauche', + calendarIntegration: 'Intégration du calendrier', + rightSidebar: 'Barre latérale droite' + } + }, + iconPacks: { + label: "Packs d'icônes", + description: "Icônes d'interface, icônes de fichiers et gestion des packs d'icônes." }, advanced: { - maintenance: 'Maintenance', - resetSettings: 'Réinitialiser les paramètres' - }, - navigation: { - appearance: 'Apparence', - banner: 'Bannière', - collapseItems: 'Replier les éléments', - dragAndDrop: 'Glisser-déposer', - noteCounts: 'Nombre de fichiers', - rainbowColors: 'Couleurs arc-en-ciel', - leftSidebar: 'Barre latérale gauche', - calendarIntegration: 'Intégration du calendrier' - }, - list: { - display: 'Apparence', - sortAndGroup: 'Tri et regroupement', - groupHeaders: 'En-têtes de groupe', - manualSort: 'Tri manuel', - pinnedNotes: 'Notes épinglées', - drawingPreviews: 'Aperçus des dessins' - }, - notes: { - frontmatter: 'Champs frontmatter', - tasks: 'Tâches', - icon: 'Icône', - title: 'Titre', - previewText: "Texte d'aperçu", - featureImage: 'Image vedette', - tags: 'Étiquettes', - properties: 'Propriétés', - date: 'Date', - parentFolder: 'Dossier parent', - wordCount: 'Nombre de mots et de caractères' + label: 'Avancé', + description: 'Diagnostics, nettoyage des métadonnées, import/export et réinitialisation.', + groups: { + maintenance: 'Maintenance', + resetSettings: 'Réinitialiser les paramètres' + } } }, syncMode: { notSynced: '(non synchronisé)', - switchToSynced: 'Activer la synchronisation', - switchToLocal: 'Désactiver la synchronisation' + enableSync: 'Activer la synchronisation', + disableSync: 'Désactiver la synchronisation' }, items: { listPaneTitle: { @@ -1117,11 +1162,11 @@ export const STRINGS_FR = { desc: 'Choisissez où afficher le titre du panneau de liste.', options: { header: 'Afficher dans l’en-tête', - list: 'Afficher dans le panneau de liste', + listPane: 'Afficher dans le panneau de liste', hidden: 'Ne pas afficher' } }, - sortNotesBy: { + defaultSortOrder: { name: 'Ordre de tri par défaut', desc: "Choisissez l'ordre de tri par défaut des notes. Les propriétés de Propriétés de tri apparaissent comme options de tri supplémentaires.", directions: { @@ -1129,18 +1174,18 @@ export const STRINGS_FR = { desc: 'Décroissant' }, dateDirections: { - desc: 'Plus récente en haut', - asc: 'Plus ancienne en haut' + newestOnTop: 'Plus récente en haut', + oldestOnTop: 'Plus ancienne en haut' }, textDirections: { - asc: 'A en haut', - desc: 'Z en haut' + aOnTop: 'A en haut', + zOnTop: 'Z en haut' }, fields: { - modified: 'Date de modification', - created: 'Date de création', + dateEdited: 'Date de modification', + dateCreated: 'Date de création', title: 'Titre', - filename: 'Nom de fichier', + fileName: 'Nom de fichier', property: 'Propriété' } }, @@ -1153,7 +1198,7 @@ export const STRINGS_FR = { follow: "Suivre l'ordre de tri" } }, - propertySortKey: { + sortingProperties: { name: 'Propriétés de tri', desc: 'Propriétés frontmatter séparées par des virgules. Chaque propriété apparaît comme option de tri dans le réglage Ordre de tri par défaut et dans le menu de tri du panneau de liste. Ces propriétés ne sont pas modifiées.', placeholder: 'published, author', @@ -1163,14 +1208,14 @@ export const STRINGS_FR = { both: "L'ordre de tri par défaut et le regroupement par défaut ont été réinitialisés car leurs propriétés ne sont plus disponibles." } }, - propertySortSecondary: { + propertySecondarySort: { name: 'Tri secondaire', desc: 'Utilisé avec le tri par propriété lorsque les notes ont la même valeur de propriété ou aucune valeur.', options: { title: 'Titre', - filename: 'Nom de fichier', - created: 'Date de création', - modified: 'Date de modification' + fileName: 'Nom de fichier', + dateCreated: 'Date de création', + dateEdited: 'Date de modification' } }, propertySortInstructions: { @@ -1183,16 +1228,16 @@ export const STRINGS_FR = { '**Vues par étiquette et par propriété :** Lorsque le regroupement **Dossier** est sélectionné, des en-têtes de date sont affichés à la place.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'Propriétés de regroupement', desc: 'Propriétés frontmatter séparées par des virgules. Chaque propriété apparaît comme option de regroupement dans le réglage Regroupement par défaut et dans le menu de tri du panneau de liste. Ces propriétés ne sont pas modifiées.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'Propriété de tri manuel', desc: 'Propriété frontmatter utilisée pour enregistrer les valeurs numériques du tri manuel.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: "Propriété d'en-tête de groupe", desc: 'Propriété frontmatter utilisée pour enregistrer les en-têtes de groupe personnalisés.' }, @@ -1209,7 +1254,7 @@ export const STRINGS_FR = { options: { top: 'En haut', bottom: 'En bas', - 'below-selected-note': 'Sous la note sélectionnée', + belowSelectedNote: 'Sous la note sélectionnée', unsorted: 'Non trié' } }, @@ -1225,7 +1270,7 @@ export const STRINGS_FR = { 'Dans le panneau de liste, sélectionnez une note ou plusieurs notes, puis appuyez sur **Cmd/Ctrl + Arrow Up/Down** pour déplacer la sélection vers le haut ou le bas.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'Défiler vers le fichier sélectionné lors des changements de liste', desc: "Défiler vers le fichier sélectionné lors de l'épinglage de notes, l'affichage de notes descendantes, le changement d'apparence de dossier ou l'exécution d'opérations sur les fichiers." }, @@ -1233,15 +1278,15 @@ export const STRINGS_FR = { name: 'Afficher les notes des sous-dossiers / descendants', desc: "Inclure les notes des sous-dossiers imbriqués et des descendants d'étiquettes et de propriétés lors de l'affichage d'un dossier, d'une étiquette ou d'une propriété." }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'Épingler les notes uniquement dans leur dossier', desc: 'Les notes épinglées n’apparaissent épinglées que dans leur propre dossier. Utile pour les notes de dossier ou si vous avez beaucoup de notes épinglées. N’affecte pas les vues par étiquette ou propriété.' }, - separateNoteCounts: { + separateFileCounts: { name: 'Afficher les nombres de fichiers actuels et descendants séparément', desc: 'Affiche le nombre de fichiers au format "actuel ▾ descendants" pour les dossiers, étiquettes et propriétés.' }, - groupNotes: { + defaultGrouping: { name: 'Regroupement par défaut', desc: "Les **en-têtes** annotent la liste triée sans changer son ordre : Personnalisé affiche les en-têtes définis dans le frontmatter et Date insère des en-têtes de date. Les **groupes** réordonnent la liste : les groupes de dossiers et de propriétés sont ordonnés séparément et les notes de chaque groupe suivent l'ordre de tri.", families: { @@ -1254,7 +1299,7 @@ export const STRINGS_FR = { folder: 'Dossier' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'Toujours afficher toutes les pastilles de tags et propriétés', desc: 'Lorsque désactivé, les pastilles correspondant à la sélection de navigation actuelle sont masquées (par ex. la pastille du tag « recettes » est masquée lors de la navigation dans le tag « recettes »). Activer pour garder toutes les pastilles visibles.' }, @@ -1262,7 +1307,7 @@ export const STRINGS_FR = { name: 'En-têtes de groupe épinglés', desc: "Garder visible l'en-tête de section actuel (date, dossier, propriété ou épinglé) lors du défilement." }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'Afficher les chemins des sous-dossiers', desc: 'Lors du regroupement par dossier dans le panneau de liste, afficher les chemins des sous-dossiers au lieu des seuls noms de dossier.' }, @@ -1290,9 +1335,9 @@ export const STRINGS_FR = { name: 'Icône de tâches inachevées', desc: "Remplacer l'icône du fichier lorsqu'une note contient des tâches inachevées.", options: { - none: 'Désactivé', + disabled: 'Désactivé', compact: 'Mode compact', - all: 'Standard et compact' + standardAndCompact: 'Standard et compact' } }, useFolderIcon: { @@ -1315,7 +1360,7 @@ export const STRINGS_FR = { name: 'Progression des tâches : masquer une fois terminées', desc: "Masquer la progression des tâches lorsque toutes les tâches d'une note sont terminées." }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'Fond de tâches inachevées', desc: "Appliquer une couleur de fond lorsqu'une note contient des tâches inachevées." }, @@ -1323,7 +1368,7 @@ export const STRINGS_FR = { name: 'Couleur de fond des tâches inachevées', desc: "Définir la couleur de fond utilisée lorsqu'une note contient des tâches inachevées." }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'Icônes par nom de fichier', desc: 'Attribuer des icônes aux fichiers selon le texte dans leurs noms.' }, @@ -1333,7 +1378,7 @@ export const STRINGS_FR = { placeholder: '# texte=icône\nréunion=ph-calendar\nfacture=ph-receipt', editTooltip: 'Modifier les correspondances' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'Icônes par type de fichier', desc: 'Attribuer des icônes aux fichiers selon leur extension.' }, @@ -1341,7 +1386,7 @@ export const STRINGS_FR = { name: "Préréglage d'icônes de fichiers", desc: "Choisissez les icônes intégrées ou un préréglage de pack d'icônes. Les règles d'extension personnalisées remplacent ce préréglage.", options: { - none: 'Icônes intégrées' + builtIn: 'Icônes intégrées' }, notInstalledWarning: "Ce pack d'icônes n'est pas installé. Les icônes intégrées sont affichées à la place." }, @@ -1364,11 +1409,11 @@ export const STRINGS_FR = { name: 'Afficher le dossier parent', desc: 'Afficher le nom du dossier parent pour les notes dans les sous-dossiers, étiquettes ou propriétés.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'Afficher le chemin du dossier', desc: 'Afficher le chemin relatif au dossier sélectionné au lieu du seul nom de dossier. Les étiquettes et propriétés affichent le chemin complet.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'Clic sur dossier parent ouvre le dossier', desc: "Cliquer sur l'étiquette du dossier parent ouvre le dossier dans le panneau de liste." }, @@ -1396,7 +1441,7 @@ export const STRINGS_FR = { vertical: 'Séparation verticale' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'Lorsque la barre latérale est trop étroite', desc: 'Choisissez ce qui se passe lorsque le panneau de navigation et le panneau de liste ne tiennent pas côte à côte.', options: { @@ -1405,7 +1450,7 @@ export const STRINGS_FR = { vertical: 'Passer à la séparation verticale' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'Seuil de barre latérale étroite', desc: 'Choisissez comment le seuil de largeur de la barre latérale est calculé.', options: { @@ -1413,41 +1458,41 @@ export const STRINGS_FR = { customWidth: 'Largeur personnalisée' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'Largeur du seuil de barre latérale étroite', desc: 'Basculer lorsque la barre latérale est plus étroite que cette largeur.', resetTooltip: 'Réinitialiser à la largeur par défaut' }, - appearanceBackground: { + paneBackgroundColor: { name: 'Couleur de fond', desc: 'Choisissez les couleurs de fond pour les volets de navigation et de liste.', options: { separate: 'Arrière-plans séparés', - primary: 'Utiliser le fond de la liste', - secondary: 'Utiliser le fond de navigation' + listBackground: 'Utiliser le fond de la liste', + navigationBackground: 'Utiliser le fond de navigation' } }, - appearanceScale: { + zoomLevel: { name: 'Niveau de zoom', desc: 'Contrôle le niveau de zoom global de Notebook Navigator (pourcentage).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: "Utiliser les barres d'outils flottantes sur iOS", desc: "S'applique uniquement à iOS." }, - startView: { + defaultStartupView: { name: 'Vue de démarrage par défaut', desc: "Choisissez le panneau actif à l'ouverture de Notebook Navigator. La disposition à panneau unique affiche ce panneau en premier ; la disposition à double panneau lui donne le focus clavier.", options: { navigation: 'Panneau de navigation', - files: 'Panneau de liste' + listPane: 'Panneau de liste' } }, toolbarButtons: { name: "Boutons de la barre d'outils", desc: "Choisissez quels boutons apparaissent dans la barre d'outils. Les boutons masqués restent accessibles via les commandes et les menus." }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'Ouvrir les nouvelles notes dans un nouvel onglet', desc: "Lorsque activé, la commande Créer une nouvelle note ouvre les notes dans un nouvel onglet. Lorsque désactivé, les notes remplacent l'onglet actuel." }, @@ -1467,20 +1512,20 @@ export const STRINGS_FR = { name: "Révélation automatique : Ignorer les événements d'autres fenêtres", desc: 'Ne pas changer la note active lorsque vous travaillez avec des notes dans une autre fenêtre.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'Animation panneau unique', desc: 'Durée de transition lors du changement de panneau en mode panneau unique (millisecondes).', resetTooltip: 'Réinitialiser par défaut' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'Sélectionner automatiquement la première note', desc: "Ouvrir automatiquement la première note lors du changement de dossier, d'étiquette ou de propriété." }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'Désactiver le défilement automatique pour les raccourcis', desc: 'Ne pas faire défiler le panneau de navigation lors du clic sur les éléments de raccourcis.' }, - autoExpandNavItems: { + expandOnSelection: { name: 'Développer à la sélection', desc: 'Développer les dossiers et étiquettes lors de la sélection. En mode panneau unique, la première sélection développe, la seconde affiche les fichiers.' }, @@ -1518,16 +1563,16 @@ export const STRINGS_FR = { name: 'Badge de raccourci', desc: "Contenu affiché à côté des raccourcis. Utilisez les commandes 'Ouvrir le raccourci 1-9' pour ouvrir les raccourcis directement.", options: { - index: 'Position (1-9)', + position: 'Position (1-9)', count: "Nombre d'éléments", none: 'Aucun' } }, - showRecentNotes: { + showRecentFiles: { name: 'Afficher les fichiers récents', desc: 'Afficher la section des fichiers récents dans le panneau de navigation.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'Masquer les types de fichiers des fichiers récents', desc: 'Choisir les types de fichiers à masquer dans la section des fichiers récents.', options: { @@ -1535,15 +1580,15 @@ export const STRINGS_FR = { folderNotes: 'Notes de dossier' } }, - recentNotesCount: { + recentFilesCount: { name: 'Nombre de fichiers récents', desc: 'Nombre de fichiers récents à afficher.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'Épingler les fichiers récents avec les raccourcis', desc: "Inclure les fichiers récents lors de l'épinglage des raccourcis." }, - calendarEnabled: { + enableCalendar: { name: 'Activer le calendrier', desc: 'Activer les fonctionnalités de calendrier de Notebook Navigator.' }, @@ -1555,12 +1600,12 @@ export const STRINGS_FR = { rightSidebar: 'Barre latérale droite' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'Emplacement en mode panneau unique', desc: 'Où le calendrier est affiché en mode panneau unique.', options: { navigationPane: 'Panneau de navigation', - below: 'Sous les panneaux' + belowPanes: 'Sous les panneaux' } }, calendarLocale: { @@ -1582,7 +1627,7 @@ export const STRINGS_FR = { thuFri: 'Jeudi et vendredi' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'Format du nom du mois', desc: 'Nom du mois complet (janvier) ou abrégé (janv.).', options: { @@ -1594,7 +1639,7 @@ export const STRINGS_FR = { name: "Afficher les boutons d'information", desc: "Afficher les boutons d'information dans la barre de recherche et l'en-tête du calendrier." }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'Semaines à afficher dans la barre latérale gauche', desc: 'Le calendrier dans la barre latérale droite affiche toujours le mois complet.', options: { @@ -1639,7 +1684,7 @@ export const STRINGS_FR = { name: 'Afficher les éléments masqués', desc: "Lorsqu'activé, le calendrier affiche toujours toutes les notes du calendrier, y compris les notes masquées par les filtres du profil de coffre." }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'Source des notes quotidiennes', desc: 'Source pour les notes du calendrier.', options: { @@ -1659,34 +1704,38 @@ export const STRINGS_FR = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'Dossier racine', desc: 'Dossier de base pour les notes périodiques. Les modèles de date peuvent inclure des sous-dossiers. Change avec le profil de coffre sélectionné.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'Emplacement du dossier de modèles', desc: 'Le sélecteur de fichiers de modèles affiche les notes de ce dossier.', placeholder: 'Templates', usage: 'Utilisé par les notes de calendrier et les notes de dossier. Configurez les modèles dans Calendrier > Intégration du calendrier et Dossiers et notes de dossier > Fichiers de notes de dossier.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'Notes quotidiennes', desc: "Formater le chemin en utilisant le format de date Moment. Entourez les noms de sous-dossiers de crochets, par ex. [Work]/YYYY. Cliquez sur l'icône de modèle pour définir un modèle. Définir l'emplacement du dossier de modèles dans Opérations sur les fichiers > Modèles.", + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'Le modèle doit pouvoir être formaté et ré-analysé comme une date complète (année, mois, jour).' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'Formater le chemin en utilisant le ', momentLinkText: 'format de date Moment', momentDescSuffix: ". Entourez les noms de sous-dossiers de crochets, par ex. [Work]/YYYY. Cliquez sur l'icône de modèle pour définir un modèle. Définir l'emplacement du dossier de modèles dans Opérations sur les fichiers > Modèles.", - templaterSupportInstalled: '✅ Le plugin Templater est installé avec la prise en charge complète des modèles.', - templaterSupportMissing: '⚠️ Installez le plugin Templater pour la prise en charge des modèles.', templateTokenNoticeLabel: 'Important !', templateTokenNotice: 'La prise en charge des modèles nécessite le plugin Templater. Les formats intégrés comme {{date}} et {{title}} fonctionnent uniquement lorsque {source} est défini sur {option}.', - placeholder: 'YYYY/YYYYMMDD', - example: 'Syntaxe actuelle : {path}', - parsingError: 'Le modèle doit pouvoir être formaté et ré-analysé comme une date complète (année, mois, jour).' + example: 'Syntaxe actuelle : {path}' + }, + templaterSupport: { + installed: '✅ Le plugin Templater est installé avec la prise en charge complète des modèles.', + missing: '⚠️ Installez le plugin Templater pour la prise en charge des modèles.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'Notes hebdomadaires', parsingError: 'Le modèle doit pouvoir être formaté et ré-analysé comme une semaine complète (année de semaine, numéro de semaine).', @@ -1695,19 +1744,19 @@ export const STRINGS_FR = { mixedWeekTokensWarning: 'Ce modèle mélange des jetons de semaine basés sur le lundi ("W" ou "G") avec des jetons de semaine basés sur la langue ("w" ou "g"). Utilisez un seul ensemble de manière cohérente : "GGGG" avec "WW" pour des semaines basées sur le lundi, ou "gggg" avec "ww" si les notes hebdomadaires doivent suivre la langue sélectionnée.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'Notes mensuelles', parsingError: 'Le modèle doit pouvoir être formaté et ré-analysé comme un mois complet (année, mois).' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'Notes trimestrielles', parsingError: 'Le modèle doit pouvoir être formaté et ré-analysé comme un trimestre complet (année, trimestre).' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'Notes annuelles', parsingError: 'Le modèle doit pouvoir être formaté et ré-analysé comme une année complète (année).' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'Fichier modèle : {name}' }, showTooltips: { @@ -1728,7 +1777,7 @@ export const STRINGS_FR = { buttonText: 'Réinitialiser le séparateur', notice: 'Position du séparateur réinitialisée. Redémarrez Obsidian ou rouvrez Notebook Navigator pour appliquer.' }, - settingsTransfer: { + importAndExportSettings: { name: 'Importer et exporter les paramètres', desc: 'Exporter ou importer les paramètres de Notebook Navigator au format JSON. L\u2019importation remplace tous les paramètres.', importButtonText: 'Importer', @@ -1788,15 +1837,15 @@ export const STRINGS_FR = { name: 'Appuyer sur Entrée pour ouvrir', desc: 'Ouvrir les fichiers uniquement en appuyant sur Entrée lors de la navigation au clavier dans la liste. Sur macOS, cela empêche Entrée de renommer les fichiers.' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Entrée', desc: 'Choisir si Shift+Entrée ouvre ou renomme le fichier sélectionné.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Entrée', desc: 'Choisir si Cmd+Entrée ouvre ou renomme le fichier sélectionné.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Entrée', desc: 'Choisir si Ctrl+Entrée ouvre ou renomme le fichier sélectionné.' }, @@ -1804,17 +1853,17 @@ export const STRINGS_FR = { name: 'Boutons précédent/suivant de la souris', desc: 'Action des boutons précédent et suivant de la souris sur ordinateur.', options: { - none: 'Utiliser la valeur système par défaut', + systemDefault: 'Utiliser la valeur système par défaut', singlePaneSwitch: 'Changer de volet (volet unique)', history: "Naviguer dans l'historique" } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'Masquer les notes avec des règles de propriétés (profil du coffre)', desc: 'Liste de règles de métadonnées séparées par des virgules. Utilisez des entrées `key` ou `key=value` (ex. : status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'Masquer les fichiers (profil du coffre)', desc: 'Liste de motifs de noms de fichiers séparés par des virgules à masquer. Prend en charge les caractères génériques * et les chemins / (ex. : temp-*, *.png, /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1841,7 +1890,7 @@ export const STRINGS_FR = { duplicateName: 'Le nom du profil existe déjà' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'Placement du titre du coffre', desc: 'Choisissez où le titre du coffre est affiché.', options: { @@ -1849,7 +1898,7 @@ export const STRINGS_FR = { navigation: 'Afficher dans le panneau de navigation' } }, - excludedFolders: { + hideFolders: { name: 'Masquer les dossiers (profil du coffre)', desc: 'Liste de dossiers à masquer séparés par des virgules. Modèles de nom : assets* (dossiers commençant par assets), *_temp (finissant par _temp). Modèles de chemin : /archive (archive racine uniquement), /res* (dossiers racine commençant par res), /*/temp (dossiers temp un niveau plus bas), /projects/* (tous les dossiers dans projects).', placeholder: 'templates, assets*, /archive, /res*' @@ -1859,7 +1908,7 @@ export const STRINGS_FR = { desc: 'Liste de dossiers séparés par des virgules à ignorer lors de la collecte des notes des sous-dossiers. Les dossiers restent visibles, et leur sélection affiche toujours leurs notes. Utilise les mêmes modèles que Masquer les dossiers.', placeholder: 'quotidien, ressources, /archive' }, - fileVisibility: { + showFileTypes: { name: 'Afficher les types de fichiers (profil du coffre)', desc: "Filtrez quels types de fichiers sont affichés dans le navigateur. Les types de fichiers non pris en charge par Obsidian peuvent s'ouvrir dans des applications externes.", options: { @@ -1895,7 +1944,7 @@ export const STRINGS_FR = { name: 'Afficher la date', desc: 'Afficher la date sous les noms des notes.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'Lors du tri par nom', desc: 'Date affichée lorsque les notes sont triées alphabétiquement.', options: { @@ -1907,7 +1956,7 @@ export const STRINGS_FR = { name: 'Afficher les tags de fichier', desc: 'Affiche les tags cliquables dans les éléments de fichier.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'Afficher les chemins complets des tags', desc: "Afficher les chemins complets de la hiérarchie des tags. Activé : 'ai/openai', 'travail/projets/2024'. Désactivé : 'openai', '2024'." }, @@ -1915,7 +1964,7 @@ export const STRINGS_FR = { name: 'Colorer les tags de fichier', desc: 'Appliquer les couleurs de tags aux badges de tags sur les éléments de fichier.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'Afficher les tags colorés en premier', desc: 'Trie les tags colorés avant les autres tags dans les éléments de fichier.' }, @@ -1931,7 +1980,7 @@ export const STRINGS_FR = { name: 'Colorer les propriétés de fichier', desc: 'Appliquer les couleurs de propriété aux badges de propriété dans les éléments de fichier.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'Afficher les propriétés colorées en premier', desc: 'Trier les propriétés colorées avant les autres propriétés dans les éléments de fichier.' }, @@ -1939,7 +1988,7 @@ export const STRINGS_FR = { name: 'Afficher les propriétés en mode compact', desc: 'Afficher les propriétés lorsque le mode compact est actif.' }, - textCountDisplay: { + textCountType: { name: 'Type de compteur', desc: 'Choisissez les compteurs de texte affichés dans les éléments de fichier.', options: { @@ -1969,11 +2018,11 @@ export const STRINGS_FR = { name: 'Propriété cible', desc: 'Clé de propriété frontmatter contenant l’objectif de nombre de mots. Laissez vide pour masquer les objectifs.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'Afficher le pourcentage cible', desc: 'Afficher uniquement le pourcentage de progression lorsqu’un objectif de nombre de mots est disponible.' }, - propertyFields: { + propertyKeys: { name: 'Clés de propriétés (profil de coffre)', desc: 'Clés de propriétés de métadonnées, avec visibilité par clé pour la navigation et la liste de fichiers.', addButtonTooltip: 'Configurer les clés de propriété', @@ -1985,11 +2034,11 @@ export const STRINGS_FR = { name: 'Afficher les propriétés sur des lignes séparées', desc: 'Afficher chaque propriété sur sa propre ligne.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'Lier les pastilles de propriété aux notes', desc: 'Cliquer sur une pastille de propriété pour ouvrir la note liée.' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: 'Lier les pastilles de propriété aux URLs', desc: "Cliquer sur une pastille de propriété pour ouvrir l'URL liée." }, @@ -2009,7 +2058,7 @@ export const STRINGS_FR = { helpTooltip: 'Format avec Moment', momentLinkText: 'format Moment' }, - showFilePreview: { + showNotePreview: { name: "Afficher l'aperçu de la note", desc: "Afficher le texte d'aperçu sous les noms des notes." }, @@ -2038,7 +2087,7 @@ export const STRINGS_FR = { desc: "Liste séparée par des virgules de propriétés frontmatter pour le texte d'aperçu. La première propriété avec du texte sera utilisée.", placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'Revenir au contenu de la note', desc: "Afficher le contenu de la note en aperçu lorsqu'aucune des propriétés spécifiées ne contient de texte." }, @@ -2053,7 +2102,7 @@ export const STRINGS_FR = { '5': '5 lignes' } }, - fileNameRows: { + titleRows: { name: 'Lignes de titre', desc: 'Nombre de lignes à afficher pour les titres des notes.', options: { @@ -2084,22 +2133,22 @@ export const STRINGS_FR = { desc: "Liste de propriétés frontmatter séparées par des virgules. Les notes contenant l'une de ces propriétés ne stockent pas d'images principales.", placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: "Taille d'affichage de l'image à la une", desc: 'Taille maximale de rendu pour les images à la une dans les listes de notes.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: "Taille en pixels de l'image à la une", desc: 'Résolution utilisée lors de la génération des vignettes stockées des images à la une. Augmentez cette valeur si les aperçus plus grands semblent flous.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2107,7 +2156,7 @@ export const STRINGS_FR = { name: 'Télécharger les images externes', desc: 'Télécharger les images distantes et les miniatures YouTube pour les images à la une.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'Masquer les images de prévisualisation exportées', desc: 'Masquer les fichiers PNG de prévisualisation de dessin exportés. Activez « Afficher les éléments masqués » pour les afficher.' }, @@ -2140,11 +2189,11 @@ export const STRINGS_FR = { alphaDesc: 'Z à A' } }, - showNoteCount: { + showFileCount: { name: 'Afficher le nombre de fichiers', desc: 'Afficher le nombre de fichiers à côté des dossiers, étiquettes et propriétés.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'Afficher les icônes pour les raccourcis et les éléments récents', desc: 'Afficher les icônes à côté des éléments dans les sections Raccourcis et Récents.' }, @@ -2153,7 +2202,7 @@ export const STRINGS_FR = { desc: "Modifier les icônes de barre d'outils, dossiers, étiquettes, propriétés, éléments épinglés, recherche et tri.", buttonText: 'Modifier les icônes' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'Appliquer la couleur uniquement aux icônes', desc: "Lorsqu'activé, les couleurs personnalisées sont appliquées uniquement aux icônes. Lorsque désactivé, les couleurs sont appliquées aux icônes et aux étiquettes de texte." }, @@ -2161,9 +2210,9 @@ export const STRINGS_FR = { name: 'Mode couleurs arc-en-ciel (profil du coffre)', desc: 'Appliquer les couleurs arc-en-ciel dans le volet de navigation.', options: { - none: 'Désactivé', - foreground: 'Couleur du texte', - background: 'Couleur de fond' + off: 'Désactivé', + textColor: 'Couleur du texte', + backgroundColor: 'Couleur de fond' } }, navRainbowFirstColor: { @@ -2186,7 +2235,7 @@ export const STRINGS_FR = { name: 'Appliquer aux raccourcis', desc: 'Appliquer les couleurs arc-en-ciel aux raccourcis.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'Appliquer aux éléments récents', desc: 'Appliquer les couleurs arc-en-ciel aux éléments récents.' }, @@ -2220,7 +2269,7 @@ export const STRINGS_FR = { name: 'Appliquer aux propriétés', desc: 'Appliquer les couleurs arc-en-ciel aux propriétés.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'Luminosité uniforme entre les teintes', // (English: Consistent brightness across hues) desc: 'Interpole la luminosité entre les couleurs de début et de fin lors des transitions de teinte.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2238,7 +2287,7 @@ export const STRINGS_FR = { all: 'Tous les niveaux' } }, - collapseBehavior: { + collapseItems: { name: 'Replier les éléments', desc: 'Choisissez ce que le bouton déplier/replier tout affecte.', options: { @@ -2248,7 +2297,7 @@ export const STRINGS_FR = { propertiesOnly: 'Propriétés uniquement' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: "Garder l'élément sélectionné déplié", desc: "Lors du repliement, garde l'élément sélectionné et ses parents dépliés." }, @@ -2256,7 +2305,7 @@ export const STRINGS_FR = { name: 'Ignorer la racine du coffre lors du repliement', desc: 'Lors du repliement de tous les éléments, garde le dossier racine du coffre dans son état actuel.' }, - navIndent: { + treeIndentation: { name: "Indentation de l'arbre", desc: "Ajuster la largeur d'indentation pour les dossiers, étiquettes et propriétés imbriqués (pixels)." }, @@ -2282,7 +2331,7 @@ export const STRINGS_FR = { line: 'Ligne' } }, - navRootSpacing: { + rootItemSpacing: { name: 'Espacement des éléments racine', desc: 'Espacement entre les dossiers, étiquettes et propriétés de niveau racine (pixels).' }, @@ -2309,15 +2358,15 @@ export const STRINGS_FR = { highToLow: 'élevée vers faible' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'Afficher le dossier des étiquettes', desc: 'Afficher "Étiquettes" comme un dossier repliable.' }, - showUntagged: { + showUntaggedNotes: { name: 'Afficher les notes sans étiquette', desc: 'Afficher l\'élément "Sans étiquette" pour les notes sans aucune étiquette.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'Filtrer les étiquettes par sélection', desc: 'Afficher uniquement les étiquettes présentes dans les notes du dossier ou de la propriété sélectionnée.' }, @@ -2351,20 +2400,20 @@ export const STRINGS_FR = { highToLow: 'décroissant' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'Afficher le dossier des propriétés', desc: 'Afficher "Propriétés" comme un dossier repliable.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'Filtrer les propriétés par sélection', desc: "Afficher uniquement les propriétés présentes dans les notes du dossier ou de l'étiquette sélectionnée." }, - hiddenTags: { + hideTags: { name: 'Masquer les étiquettes (profil du coffre)', desc: "Liste séparée par des virgules de motifs d'étiquettes. Motifs de nom : tag* (commence par), *tag (termine par). Motifs de chemin : archive (étiquette et descendants), archive/* (descendants uniquement), projets/*/brouillons (joker intermédiaire).", placeholder: 'archive*, *brouillon, projets/*/ancien' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'Masquer les notes avec tags (profil du coffre)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2397,7 +2446,7 @@ export const STRINGS_FR = { desc: "Fichier modèle utilisé lors de la création de notes de dossier. Les modèles Markdown peuvent utiliser Templater. Les modèles Canvas et Base sont copiés comme contenu de fichier. Définir l'emplacement du dossier de modèles dans Opérations sur les fichiers > Modèles.", formatWarning: 'Le format du modèle doit correspondre au type de note de dossier sélectionné : .md, .canvas ou .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'Les noms de dossier ouvrent les notes de dossier', desc: "Cliquer sur un nom de dossier ouvre sa note de dossier. Lorsque cette option est désactivée, les notes de dossier fournissent uniquement des métadonnées de dossier comme le nom, l'icône et la couleur." }, @@ -2418,7 +2467,7 @@ export const STRINGS_FR = { rightSidebar: 'Barre latérale droite' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'Barre latérale droite : Afficher la note de dossier la plus proche', desc: "Lorsqu'un dossier est sélectionné, la barre latérale droite affiche automatiquement la note de dossier ancêtre la plus proche." }, @@ -2461,7 +2510,7 @@ export const STRINGS_FR = { indexingTitle: 'Indexation du coffre...', progress: 'Mise à jour du cache de Notebook Navigator.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'Télécharger', downloadingLabel: 'Téléchargement...', removeButton: 'Supprimer', @@ -2473,11 +2522,11 @@ export const STRINGS_FR = { infoNote: "Les packs d'icônes téléchargés synchronisent l'état d'installation entre les appareils. Les packs d'icônes restent dans la base de données locale sur chaque appareil ; la synchronisation ne fait que suivre s'ils doivent être téléchargés ou supprimés. Les packs d'icônes sont téléchargés depuis le dépôt Notebook Navigator (https://github.com/johansan/notebook-navigator/tree/main/icon-assets)." }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'Utiliser les métadonnées du frontmatter', desc: 'Utiliser le frontmatter pour le nom de note, horodatages, icônes et couleurs' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'Champs de nom', desc: 'Liste de champs frontmatter séparés par des virgules. La première valeur non vide est utilisée. Retombe sur le nom du fichier.', placeholder: 'title, name' @@ -2497,7 +2546,7 @@ export const STRINGS_FR = { desc: "Champ frontmatter pour les couleurs d'arrière-plan. Laisser vide pour utiliser les couleurs d'arrière-plan enregistrées dans les paramètres.", placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'Migrer les icônes et couleurs depuis les paramètres', desc: 'Stocké dans les paramètres : {icons} icônes, {colors} couleurs.', button: 'Migrer', @@ -2517,7 +2566,7 @@ export const STRINGS_FR = { desc: "Nom du champ frontmatter pour l'horodatage de modification. Laisser vide pour utiliser uniquement la date du système.", placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: "Format d'horodatage", desc: 'Format utilisé pour analyser les horodatages dans le frontmatter. Laisser vide pour utiliser le parsing ISO 8601.', helpTooltip: 'Format avec Moment', @@ -2530,12 +2579,12 @@ export const STRINGS_FR = { buttonText: '❤️ Sponsoriser', coffeeButton: '☕️ Offrez-moi un café' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'Vérifier les nouvelles versions au démarrage', desc: "Vérifie les nouvelles versions du plugin au démarrage et affiche une notification lorsqu'une mise à jour est disponible. Les vérifications ont lieu au maximum une fois par jour.", status: 'Nouvelle version disponible : {version}' }, - debugLogging: { + startupDebugLogging: { name: 'Journal de débogage du démarrage', desc: 'Écrit les diagnostics de démarrage dans un fichier Markdown horodaté à la racine du coffre, puis s’arrête une fois le démarrage stabilisé. Le fichier peut être synchronisé et contenir des chemins de fichiers.' }, diff --git a/src/i18n/locales/id.ts b/src/i18n/locales/id.ts index 8e734054c..c29d62162 100644 --- a/src/i18n/locales/id.ts +++ b/src/i18n/locales/id.ts @@ -74,6 +74,9 @@ export const STRINGS_ID = { shortcutsHeader: 'Pintasan', recentFilesHeader: 'File terbaru', // Header label for recent files section in navigation pane (English: Recent files) properties: 'Properti', + folders: 'Folder', + tags: 'Tag', + calendar: 'Kalender', reorderRootFoldersTitle: 'Atur ulang navigasi', reorderRootFoldersHint: 'Gunakan panah atau seret untuk mengatur ulang', vaultRootLabel: 'Vault', @@ -1011,101 +1014,142 @@ export const STRINGS_ID = { exportSuccess: 'Laporan metadata yang gagal diekspor ke: {filename}', exportFailed: 'Gagal mengekspor laporan metadata' }, - sections: { - general: 'Umum', - vaultFilters: 'Filter tampilan', - appearanceBehavior: 'Tampilan & perilaku', - navigationPane: 'Panel navigasi', - calendar: 'Kalender', - fileOperations: 'Operasi file', - icons: 'Paket ikon', - folders: 'Folder', - folderNotes: 'Catatan folder', - folderNoteFiles: 'File catatan folder', - foldersAndFolderNotes: 'Folder & catatan folder', - tagsAndProperties: 'Tag & properti', - tags: 'Tag', - listPane: 'Panel daftar', - notes: 'Tampilan file', - shortcutsAndRecentFiles: 'Pintasan & file terbaru', - advanced: 'Lanjutan' + index: { + label: 'Umum', + description: 'Catatan rilis, dukungan, profil vault, tipe file, dan kunci properti.', + groups: { + vaultSetup: 'Penyiapan vault' + } }, pageGroups: { configuration: 'Konfigurasi', - navigationAndContent: 'Panel navigasi', - notesAndLists: 'Panel daftar', + navigationPane: 'Panel navigasi', + listPane: 'Panel daftar', calendarAndTools: 'Kalender dan alat' }, - pageDescriptions: { - general: 'Catatan rilis, dukungan, profil vault, tipe file, dan kunci properti.', - vaultFilters: 'Folder, tag, file, tag file, dan aturan properti tersembunyi.', - appearanceBehavior: 'Perilaku, navigasi keyboard, tombol mouse, tampilan, dan pemformatan.', - navigationPane: 'Tata letak, tampilan, jumlah file, perilaku menciutkan, dan warna pelangi.', - shortcuts: 'Visibilitas pintasan, lencana, file terbaru, dan item yang disematkan.', - calendar: 'Tampilan kalender, catatan tanggal, templat, lokal, dan penempatan bilah sisi.', - fileOperations: 'Templat, konfirmasi hapus, lampiran, dan perilaku konflik saat memindahkan file.', - foldersAndFolderNotes: 'Tampilan folder, catatan folder, templat catatan folder, dan perilaku catatan folder.', - tagsProperties: 'Bagian tag dan properti, ikon, pengurutan, cakupan, dan pewarisan.', - listPane: 'Pengurutan, pengelompokan, mode daftar, catatan yang disematkan, dan pratinjau gambar.', - frontmatter: 'Bidang frontmatter untuk nama tampilan, stempel waktu, ikon, dan warna.', - notes: 'Judul, teks pratinjau, gambar fitur, tag, properti, tanggal, jumlah kata, dan jumlah karakter.', - iconPacks: 'Ikon antarmuka, ikon file, dan manajemen paket ikon.', - advanced: 'Diagnostik, pembersihan metadata, impor/ekspor, dan reset.' - }, - groups: { - general: { - vaultConfiguration: 'Penyiapan vault', - templates: 'Templat', - behavior: 'Perilaku', - startup: 'Startup', - keyboardNavigation: 'Navigasi keyboard', - mouseButtons: 'Tombol mouse', - view: 'Tampilan', - icons: 'Ikon', - desktopAppearance: 'Tampilan desktop', - mobileAppearance: 'Tampilan seluler', - formatting: 'Pemformatan' + pages: { + displayFilters: { + label: 'Filter tampilan', + description: 'Folder, tag, file, tag file, dan aturan properti tersembunyi.' + }, + appearanceAndBehavior: { + label: 'Tampilan & perilaku', + description: 'Perilaku, navigasi keyboard, tombol mouse, tampilan, dan pemformatan.', + groups: { + startup: 'Startup', + keyboardNavigation: 'Navigasi keyboard', + mouseButtons: 'Tombol mouse', + desktopAppearance: 'Tampilan desktop', + mobileAppearance: 'Tampilan seluler', + appearance: 'Tampilan', + icons: 'Ikon', + formatting: 'Pemformatan' + } + }, + navigationPane: { + label: 'Panel navigasi', + description: 'Tata letak, tampilan, jumlah file, perilaku menciutkan, dan warna pelangi.', + groups: { + appearance: 'Tampilan', + banner: 'Banner', + collapseItems: 'Ciutkan item', + dragAndDrop: 'Seret dan lepas', + fileCounts: 'Jumlah file', + rainbowColors: 'Warna pelangi' + } + }, + shortcutsAndRecentFiles: { + label: 'Pintasan & file terbaru', + description: 'Visibilitas pintasan, lencana, file terbaru, dan item yang disematkan.', + groups: { + shortcuts: 'Pintasan', + recentFiles: 'File terbaru' + } + }, + foldersAndFolderNotes: { + label: 'Folder & catatan folder', + description: 'Tampilan folder, catatan folder, templat catatan folder, dan perilaku catatan folder.', + groups: { + folders: 'Folder', + folderNotes: 'Catatan folder', + folderNoteFiles: 'File catatan folder' + } + }, + tagsAndProperties: { + label: 'Tag & properti', + description: 'Bagian tag dan properti, ikon, pengurutan, cakupan, dan pewarisan.', + groups: { + tags: 'Tag', + properties: 'Properti' + } + }, + listPane: { + label: 'Panel daftar', + description: 'Pengurutan, pengelompokan, mode daftar, catatan yang disematkan, dan pratinjau gambar.', + groups: { + appearance: 'Tampilan', + sortAndGroup: 'Urutan & pengelompokan', + groupHeaders: 'Header grup', + manualSort: 'Urutan manual', + pinnedNotes: 'Catatan yang disematkan', + behavior: 'Perilaku', + drawingPreviews: 'Pratinjau gambar' + } + }, + fileOperations: { + label: 'Operasi file', + description: 'Templat, konfirmasi hapus, lampiran, dan perilaku konflik saat memindahkan file.', + groups: { + templates: 'Templat' + } + }, + frontmatterFields: { + label: 'Bidang frontmatter', + description: 'Bidang frontmatter untuk nama tampilan, stempel waktu, ikon, dan warna.' + }, + fileDisplay: { + label: 'Tampilan file', + description: 'Judul, teks pratinjau, gambar fitur, tag, properti, tanggal, jumlah kata, dan jumlah karakter.', + groups: { + icon: 'Ikon', + title: 'Judul', + previewText: 'Teks pratinjau', + featureImage: 'Gambar fitur', + tags: 'Tag', + properties: 'Properti', + tasks: 'Tugas', + date: 'Tanggal', + parentFolder: 'Folder induk', + wordAndCharacterCount: 'Jumlah kata dan karakter' + } + }, + calendar: { + label: 'Kalender', + description: 'Tampilan kalender, catatan tanggal, templat, lokal, dan penempatan bilah sisi.', + groups: { + appearance: 'Tampilan', + leftSidebar: 'Bilah sisi kiri', + calendarIntegration: 'Integrasi kalender', + rightSidebar: 'Sidebar kanan' + } + }, + iconPacks: { + label: 'Paket ikon', + description: 'Ikon antarmuka, ikon file, dan manajemen paket ikon.' }, advanced: { - maintenance: 'Pemeliharaan', - resetSettings: 'Atur ulang pengaturan' - }, - navigation: { - appearance: 'Tampilan', - banner: 'Banner', - collapseItems: 'Ciutkan item', - dragAndDrop: 'Seret dan lepas', - noteCounts: 'Jumlah file', - rainbowColors: 'Warna pelangi', - leftSidebar: 'Bilah sisi kiri', - calendarIntegration: 'Integrasi kalender' - }, - list: { - display: 'Tampilan', - sortAndGroup: 'Urutan & pengelompokan', - groupHeaders: 'Header grup', - manualSort: 'Urutan manual', - pinnedNotes: 'Catatan yang disematkan', - drawingPreviews: 'Pratinjau gambar' - }, - notes: { - frontmatter: 'Bidang frontmatter', - tasks: 'Tugas', - icon: 'Ikon', - title: 'Judul', - previewText: 'Teks pratinjau', - featureImage: 'Gambar fitur', - tags: 'Tag', - properties: 'Properti', - date: 'Tanggal', - parentFolder: 'Folder induk', - wordCount: 'Jumlah kata dan karakter' + label: 'Lanjutan', + description: 'Diagnostik, pembersihan metadata, impor/ekspor, dan reset.', + groups: { + maintenance: 'Pemeliharaan', + resetSettings: 'Atur ulang pengaturan' + } } }, syncMode: { notSynced: '(tidak disinkronkan)', - switchToSynced: 'Aktifkan sinkronisasi', - switchToLocal: 'Nonaktifkan sinkronisasi' + enableSync: 'Aktifkan sinkronisasi', + disableSync: 'Nonaktifkan sinkronisasi' }, items: { listPaneTitle: { @@ -1113,11 +1157,11 @@ export const STRINGS_ID = { desc: 'Pilih di mana judul panel daftar ditampilkan.', options: { header: 'Tampilkan di header', - list: 'Tampilkan di panel daftar', + listPane: 'Tampilkan di panel daftar', hidden: 'Jangan tampilkan' } }, - sortNotesBy: { + defaultSortOrder: { name: 'Urutan default', desc: 'Pilih urutan default untuk catatan. Properti dari Properti urutan muncul sebagai opsi urutan tambahan.', directions: { @@ -1125,18 +1169,18 @@ export const STRINGS_ID = { desc: 'Menurun' }, dateDirections: { - desc: 'Terbaru di atas', - asc: 'Terlama di atas' + newestOnTop: 'Terbaru di atas', + oldestOnTop: 'Terlama di atas' }, textDirections: { - asc: 'A di atas', - desc: 'Z di atas' + aOnTop: 'A di atas', + zOnTop: 'Z di atas' }, fields: { - modified: 'Tanggal diedit', - created: 'Tanggal dibuat', + dateEdited: 'Tanggal diedit', + dateCreated: 'Tanggal dibuat', title: 'Judul', - filename: 'Nama file', + fileName: 'Nama file', property: 'Properti' } }, @@ -1149,7 +1193,7 @@ export const STRINGS_ID = { follow: 'Ikuti urutan' } }, - propertySortKey: { + sortingProperties: { name: 'Properti urutan', desc: 'Properti frontmatter dipisahkan koma. Setiap properti muncul sebagai opsi urutan di pengaturan Urutan default dan di menu urutan pada panel daftar. Properti ini tidak diubah.', placeholder: 'published, author', @@ -1159,14 +1203,14 @@ export const STRINGS_ID = { both: 'Urutan default dan pengelompokan default direset karena propertinya tidak lagi tersedia.' } }, - propertySortSecondary: { + propertySecondarySort: { name: 'Urutan sekunder', desc: 'Digunakan dengan urutan Properti ketika catatan memiliki nilai properti yang sama atau tidak memiliki nilai properti.', options: { title: 'Judul', - filename: 'Nama file', - created: 'Tanggal dibuat', - modified: 'Tanggal diedit' + fileName: 'Nama file', + dateCreated: 'Tanggal dibuat', + dateEdited: 'Tanggal diedit' } }, propertySortInstructions: { @@ -1179,16 +1223,16 @@ export const STRINGS_ID = { '**Tampilan tag dan properti:** Saat pengelompokan **Folder** dipilih, header tanggal ditampilkan sebagai gantinya.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'Properti pengelompokan', desc: 'Properti frontmatter dipisahkan koma. Setiap properti muncul sebagai opsi pengelompokan di pengaturan Pengelompokan default dan di menu urutan pada panel daftar. Properti ini tidak diubah.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'Properti urutan manual', desc: 'Properti frontmatter yang digunakan untuk menyimpan nilai indeks numerik untuk urutan manual.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'Properti header grup', desc: 'Properti frontmatter yang digunakan untuk menyimpan header grup kustom.' }, @@ -1205,7 +1249,7 @@ export const STRINGS_ID = { options: { top: 'Atas', bottom: 'Bawah', - 'below-selected-note': 'Di bawah catatan yang dipilih', + belowSelectedNote: 'Di bawah catatan yang dipilih', unsorted: 'Belum diurutkan' } }, @@ -1221,7 +1265,7 @@ export const STRINGS_ID = { 'Di panel daftar, pilih satu catatan atau pilih beberapa, lalu tekan **Cmd/Ctrl + Arrow Up/Down** untuk memindahkan pilihan ke atas atau ke bawah.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'Gulir ke file yang dipilih saat perubahan daftar', desc: 'Gulir ke file yang dipilih saat menyematkan catatan, menampilkan catatan turunan, mengubah tampilan folder, atau menjalankan operasi file.' }, @@ -1229,15 +1273,15 @@ export const STRINGS_ID = { name: 'Tampilkan catatan dari subfolder / turunan', desc: 'Sertakan catatan dari subfolder bersarang serta turunan tag dan properti saat melihat folder, tag, atau properti.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'Sematkan catatan hanya di foldernya', desc: 'Catatan yang disematkan hanya tampil disematkan di folder miliknya sendiri. Berguna untuk catatan folder atau jika Anda memiliki banyak catatan yang disematkan. Tidak memengaruhi tampilan tag atau properti.' }, - separateNoteCounts: { + separateFileCounts: { name: 'Tampilkan jumlah file saat ini dan turunan secara terpisah', desc: 'Tampilkan jumlah file sebagai "saat ini ▾ turunan" untuk folder, tag, dan properti.' }, - groupNotes: { + defaultGrouping: { name: 'Pengelompokan default', desc: '**Header** memberi anotasi pada daftar yang sudah diurutkan tanpa mengubah urutannya: Kustom menampilkan header yang didefinisikan dalam frontmatter dan Tanggal menyisipkan header tanggal. **Grup** mengurutkan ulang daftar: grup folder dan properti diurutkan sendiri, dan catatan di dalam setiap grup mengikuti urutan yang dipilih.', families: { @@ -1250,7 +1294,7 @@ export const STRINGS_ID = { folder: 'Folder' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'Selalu tampilkan semua pil tag dan properti', desc: 'Saat dinonaktifkan, pil yang cocok dengan pilihan navigasi saat ini disembunyikan (misalnya, pil tag "resep" disembunyikan saat menelusuri tag "resep"). Aktifkan untuk menampilkan semua pil.' }, @@ -1258,7 +1302,7 @@ export const STRINGS_ID = { name: 'Header grup tetap', desc: 'Jaga header bagian tanggal, folder, properti, atau yang disematkan saat ini tetap terlihat saat menggulir.' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'Tampilkan jalur subfolder', desc: 'Saat mengelompokkan berdasarkan folder di panel daftar, tampilkan jalur subfolder alih-alih hanya nama folder.' }, @@ -1286,9 +1330,9 @@ export const STRINGS_ID = { name: 'Ikon tugas belum selesai', desc: 'Ganti ikon file saat catatan memiliki tugas yang belum selesai.', options: { - none: 'Dinonaktifkan', + disabled: 'Dinonaktifkan', compact: 'Mode kompak', - all: 'Standar dan kompak' + standardAndCompact: 'Standar dan kompak' } }, useFolderIcon: { @@ -1311,7 +1355,7 @@ export const STRINGS_ID = { name: 'Kemajuan tugas: sembunyikan saat selesai', desc: 'Sembunyikan progres tugas saat semua tugas dalam catatan selesai.' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'Latar belakang tugas belum selesai', desc: 'Terapkan warna latar belakang saat catatan memiliki tugas yang belum selesai.' }, @@ -1319,7 +1363,7 @@ export const STRINGS_ID = { name: 'Warna latar belakang tugas belum selesai', desc: 'Atur warna latar belakang yang digunakan saat catatan memiliki tugas yang belum selesai.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'Ikon berdasarkan nama file', desc: 'Tetapkan ikon ke file berdasarkan teks dalam namanya.' }, @@ -1329,7 +1373,7 @@ export const STRINGS_ID = { placeholder: '# teks=ikon\nrapat=ph-calendar\nfaktur=ph-receipt', editTooltip: 'Edit pemetaan' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'Ikon berdasarkan tipe file', desc: 'Tetapkan ikon ke file berdasarkan ekstensinya.' }, @@ -1337,7 +1381,7 @@ export const STRINGS_ID = { name: 'Preset ikon file', desc: 'Pilih ikon bawaan atau preset paket ikon. Aturan ekstensi khusus menggantikan preset ini.', options: { - none: 'Ikon bawaan' + builtIn: 'Ikon bawaan' }, notInstalledWarning: 'Paket ikon ini belum terpasang. Ikon bawaan ditampilkan sebagai gantinya.' }, @@ -1360,11 +1404,11 @@ export const STRINGS_ID = { name: 'Tampilkan folder induk', desc: 'Tampilkan nama folder induk untuk catatan di subfolder, tag, atau properti.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'Tampilkan jalur folder', desc: 'Tampilkan jalur relatif terhadap folder yang dipilih alih-alih hanya nama folder. Tag dan properti menampilkan jalur lengkap.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'Klik folder induk untuk membuka folder', desc: 'Mengklik label folder induk membuka folder di panel daftar.' }, @@ -1392,7 +1436,7 @@ export const STRINGS_ID = { vertical: 'Pembagian vertikal' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'Saat bilah samping terlalu sempit', desc: 'Pilih apa yang terjadi saat panel navigasi dan panel daftar tidak muat berdampingan.', options: { @@ -1401,7 +1445,7 @@ export const STRINGS_ID = { vertical: 'Beralih ke pemisahan vertikal' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'Ambang bilah samping sempit', desc: 'Pilih bagaimana ambang lebar bilah samping dihitung.', options: { @@ -1409,41 +1453,41 @@ export const STRINGS_ID = { customWidth: 'Lebar khusus' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'Lebar ambang bilah samping sempit', desc: 'Beralih saat bilah samping lebih sempit dari lebar ini.', resetTooltip: 'Reset ke lebar bawaan' }, - appearanceBackground: { + paneBackgroundColor: { name: 'Warna latar belakang', desc: 'Pilih warna latar belakang untuk panel navigasi dan daftar.', options: { separate: 'Latar belakang terpisah', - primary: 'Gunakan latar belakang daftar', - secondary: 'Gunakan latar belakang navigasi' + listBackground: 'Gunakan latar belakang daftar', + navigationBackground: 'Gunakan latar belakang navigasi' } }, - appearanceScale: { + zoomLevel: { name: 'Tingkat zoom', desc: 'Mengontrol tingkat zoom keseluruhan Notebook Navigator (persentase).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'Gunakan toolbar mengambang di iOS', desc: 'Hanya berlaku di iOS.' }, - startView: { + defaultStartupView: { name: 'Tampilan startup default', desc: 'Pilih panel yang aktif saat Notebook Navigator dibuka. Tata letak panel tunggal menampilkan panel ini lebih dulu; tata letak panel ganda memberinya fokus keyboard.', options: { navigation: 'Panel navigasi', - files: 'Panel daftar' + listPane: 'Panel daftar' } }, toolbarButtons: { name: 'Tombol toolbar', desc: 'Pilih tombol mana yang muncul di toolbar. Tombol tersembunyi tetap dapat diakses melalui perintah dan menu.' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'Buka catatan baru di tab baru', desc: 'Jika diaktifkan, perintah Buat catatan baru membuka catatan di tab baru. Jika dinonaktifkan, catatan menggantikan tab saat ini.' }, @@ -1463,20 +1507,20 @@ export const STRINGS_ID = { name: 'Auto-reveal: Abaikan peristiwa dari jendela lain', desc: 'Jangan ubah catatan aktif saat bekerja dengan catatan di jendela lain.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'Animasi panel tunggal', desc: 'Durasi transisi saat beralih panel dalam mode panel tunggal (milidetik).', resetTooltip: 'Atur ulang ke default' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'Auto-pilih catatan pertama', desc: 'Secara otomatis membuka catatan pertama saat beralih folder, tag, atau properti.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'Nonaktifkan auto-gulir untuk pintasan', desc: 'Jangan gulir panel navigasi saat mengklik item di pintasan.' }, - autoExpandNavItems: { + expandOnSelection: { name: 'Luaskan saat dipilih', desc: 'Luaskan folder dan tag saat dipilih. Dalam mode panel tunggal, pilihan pertama meluaskan, pilihan kedua menampilkan file.' }, @@ -1514,16 +1558,16 @@ export const STRINGS_ID = { name: 'Lencana pintasan', desc: "Apa yang ditampilkan di samping pintasan. Gunakan perintah 'Buka pintasan 1-9' untuk membuka pintasan secara langsung.", options: { - index: 'Posisi (1-9)', + position: 'Posisi (1-9)', count: 'Jumlah item', none: 'Tidak ada' } }, - showRecentNotes: { + showRecentFiles: { name: 'Tampilkan file terbaru', desc: 'Tampilkan bagian file terbaru di panel navigasi.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'Sembunyikan jenis file dari file terbaru', desc: 'Pilih jenis file yang disembunyikan di bagian file terbaru.', options: { @@ -1531,15 +1575,15 @@ export const STRINGS_ID = { folderNotes: 'Catatan folder' } }, - recentNotesCount: { + recentFilesCount: { name: 'Jumlah file terbaru', desc: 'Jumlah file terbaru yang ditampilkan.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'Sematkan file terbaru bersama pintasan', desc: 'Sertakan file terbaru saat pintasan disematkan.' }, - calendarEnabled: { + enableCalendar: { name: 'Aktifkan kalender', desc: 'Aktifkan fitur kalender Notebook Navigator.' }, @@ -1551,12 +1595,12 @@ export const STRINGS_ID = { rightSidebar: 'Sidebar kanan' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'Penempatan panel tunggal', desc: 'Tempat kalender ditampilkan dalam mode panel tunggal.', options: { navigationPane: 'Panel navigasi', - below: 'Di bawah panel' + belowPanes: 'Di bawah panel' } }, calendarLocale: { @@ -1578,7 +1622,7 @@ export const STRINGS_ID = { thuFri: 'Kamis dan Jumat' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'Format nama bulan', desc: 'Nama bulan lengkap (Januari) atau singkat (Jan).', options: { @@ -1590,7 +1634,7 @@ export const STRINGS_ID = { name: 'Tampilkan tombol info', desc: 'Tampilkan tombol info di bilah pencarian dan header kalender.' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'Minggu yang ditampilkan di sidebar kiri', desc: 'Kalender di sidebar kanan selalu menampilkan bulan penuh.', options: { @@ -1635,7 +1679,7 @@ export const STRINGS_ID = { name: 'Tampilkan item tersembunyi', desc: 'Saat diaktifkan, kalender selalu menampilkan semua catatan kalender, termasuk catatan yang disembunyikan oleh filter profil vault.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'Sumber catatan harian', desc: 'Sumber untuk catatan kalender.', options: { @@ -1655,34 +1699,38 @@ export const STRINGS_ID = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'Folder root', desc: 'Folder dasar untuk catatan berkala. Pola tanggal dapat menyertakan subfolder. Berubah dengan profil vault yang dipilih.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'Lokasi folder template', desc: 'Pemilih file template menampilkan catatan dari folder ini.', placeholder: 'Templates', usage: 'Digunakan oleh catatan kalender dan catatan folder. Konfigurasi template di Kalender > Integrasi kalender dan Folder & catatan folder > File catatan folder.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'Catatan harian', desc: 'Format jalur menggunakan format tanggal Moment. Bungkus nama subfolder dalam tanda kurung, misal [Work]/YYYY. Klik ikon template untuk mengatur template. Atur lokasi folder templat di Operasi file > Templat.', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'Pola harus dapat diformat dan diparse kembali sebagai tanggal lengkap (tahun, bulan, hari).' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'Format jalur menggunakan ', momentLinkText: 'format tanggal Moment', momentDescSuffix: '. Bungkus nama subfolder dalam tanda kurung, misal [Work]/YYYY. Klik ikon template untuk mengatur template. Atur lokasi folder templat di Operasi file > Templat.', - templaterSupportInstalled: '✅ Plugin Templater terpasang dengan dukungan template penuh.', - templaterSupportMissing: '⚠️ Pasang plugin Templater untuk dukungan template.', templateTokenNoticeLabel: 'Penting!', templateTokenNotice: 'Dukungan template memerlukan plugin Templater. Format bawaan seperti {{date}} dan {{title}} hanya berfungsi jika {source} disetel ke {option}.', - placeholder: 'YYYY/YYYYMMDD', - example: 'Sintaks saat ini: {path}', - parsingError: 'Pola harus dapat diformat dan diparse kembali sebagai tanggal lengkap (tahun, bulan, hari).' + example: 'Sintaks saat ini: {path}' + }, + templaterSupport: { + installed: '✅ Plugin Templater terpasang dengan dukungan template penuh.', + missing: '⚠️ Pasang plugin Templater untuk dukungan template.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'Catatan mingguan', parsingError: 'Pola harus dapat diformat dan diparse kembali sebagai minggu lengkap (tahun minggu, nomor minggu).', weekPathMismatchWarning: @@ -1690,19 +1738,19 @@ export const STRINGS_ID = { mixedWeekTokensWarning: 'Pola ini menggabungkan token minggu berbasis Senin ("W" atau "G") dengan token minggu berbasis bahasa ("w" atau "g"). Gunakan satu set secara konsisten: "GGGG" dengan "WW" untuk minggu berbasis Senin, atau "gggg" dengan "ww" jika catatan mingguan harus mengikuti bahasa yang dipilih.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'Catatan bulanan', parsingError: 'Pola harus dapat diformat dan diparse kembali sebagai bulan lengkap (tahun, bulan).' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'Catatan kuartalan', parsingError: 'Pola harus dapat diformat dan diparse kembali sebagai kuartal lengkap (tahun, kuartal).' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'Catatan tahunan', parsingError: 'Pola harus dapat diformat dan diparse kembali sebagai tahun lengkap (tahun).' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'File template: {name}' }, showTooltips: { @@ -1723,7 +1771,7 @@ export const STRINGS_ID = { buttonText: 'Atur ulang pemisah', notice: 'Posisi pemisah diatur ulang. Mulai ulang Obsidian atau buka kembali Notebook Navigator untuk menerapkan.' }, - settingsTransfer: { + importAndExportSettings: { name: 'Impor dan ekspor pengaturan', desc: 'Ekspor atau impor pengaturan Notebook Navigator sebagai JSON. Impor menggantikan semua pengaturan.', importButtonText: 'Impor', @@ -1781,15 +1829,15 @@ export const STRINGS_ID = { name: 'Tekan Enter untuk membuka file', desc: 'Buka file hanya saat menekan Enter selama navigasi keyboard di daftar. Di macOS, ini mencegah Enter mengganti nama file.' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'Pilih apakah Shift+Enter membuka atau mengganti nama file yang dipilih.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'Pilih apakah Cmd+Enter membuka atau mengganti nama file yang dipilih.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'Pilih apakah Ctrl+Enter membuka atau mengganti nama file yang dipilih.' }, @@ -1797,12 +1845,12 @@ export const STRINGS_ID = { name: 'Tombol mundur/maju mouse', desc: 'Aksi untuk tombol mundur dan maju mouse di desktop.', options: { - none: 'Gunakan default sistem', + systemDefault: 'Gunakan default sistem', singlePaneSwitch: 'Pindah panel (panel tunggal)', history: 'Navigasi riwayat' } }, - fileVisibility: { + showFileTypes: { name: 'Tampilkan jenis file (profil vault)', desc: 'Filter jenis file mana yang ditampilkan di navigator. Jenis file yang tidak didukung oleh Obsidian mungkin terbuka di aplikasi eksternal.', options: { @@ -1834,12 +1882,12 @@ export const STRINGS_ID = { desc: 'Membuat catatan berkala saat startup atau perintah jika belum ada.' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'Sembunyikan catatan dengan aturan properti (profil vault)', desc: 'Daftar aturan frontmatter yang dipisahkan koma. Gunakan entri `key` atau `key=value` (misal, status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'Sembunyikan file (profil vault)', desc: 'Daftar pola nama file yang dipisahkan koma untuk disembunyikan. Mendukung wildcard * dan jalur / (misal, temp-*, *.png, /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1866,7 +1914,7 @@ export const STRINGS_ID = { duplicateName: 'Nama profil sudah ada' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'Penempatan judul vault', desc: 'Pilih di mana judul vault ditampilkan.', options: { @@ -1874,7 +1922,7 @@ export const STRINGS_ID = { navigation: 'Tampilkan di panel navigasi' } }, - excludedFolders: { + hideFolders: { name: 'Sembunyikan folder (profil vault)', desc: 'Daftar folder yang dipisahkan koma untuk disembunyikan. Pola nama: assets* (folder yang dimulai dengan assets), *_temp (diakhiri dengan _temp). Pola path: /arsip (arsip root saja), /res* (folder root yang dimulai dengan res), /*/temp (folder temp satu level ke dalam), /proyek/* (semua folder di dalam proyek).', placeholder: 'template, assets*, /arsip, /res*' @@ -1888,7 +1936,7 @@ export const STRINGS_ID = { name: 'Tampilkan tanggal', desc: 'Tampilkan tanggal di bawah nama catatan.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'Saat mengurutkan berdasarkan nama', desc: 'Tanggal yang ditampilkan saat catatan diurutkan secara alfabetis.', options: { @@ -1900,7 +1948,7 @@ export const STRINGS_ID = { name: 'Tampilkan tag file', desc: 'Tampilkan tag yang dapat diklik di item file.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'Tampilkan path tag lengkap', desc: "Tampilkan path hierarki tag lengkap. Saat diaktifkan: 'ai/openai', 'kerja/proyek/2024'. Saat dinonaktifkan: 'openai', '2024'." }, @@ -1908,7 +1956,7 @@ export const STRINGS_ID = { name: 'Warnai tag file', desc: 'Terapkan warna tag ke badge tag di item file.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'Tampilkan tag berwarna terlebih dahulu', desc: 'Urutkan tag berwarna sebelum tag lain di item file.' }, @@ -1924,7 +1972,7 @@ export const STRINGS_ID = { name: 'Warnai properti file', desc: 'Terapkan warna properti pada lencana properti di item file.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'Tampilkan properti berwarna terlebih dahulu', desc: 'Urutkan properti berwarna sebelum properti lain di item file.' }, @@ -1932,7 +1980,7 @@ export const STRINGS_ID = { name: 'Tampilkan properti dalam mode kompak', desc: 'Tampilkan properti saat mode kompak aktif.' }, - textCountDisplay: { + textCountType: { name: 'Jenis hitungan', desc: 'Pilih hitungan teks yang muncul di item file.', options: { @@ -1962,11 +2010,11 @@ export const STRINGS_ID = { name: 'Properti target', desc: 'Kunci properti frontmatter yang berisi target jumlah kata. Biarkan kosong untuk menyembunyikan target.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'Tampilkan persentase target', desc: 'Tampilkan hanya persentase kemajuan saat target jumlah kata tersedia.' }, - propertyFields: { + propertyKeys: { name: 'Kunci properti (profil brankas)', desc: 'Kunci properti frontmatter, dengan visibilitas per kunci untuk navigasi dan daftar file.', addButtonTooltip: 'Konfigurasi kunci properti', @@ -1978,11 +2026,11 @@ export const STRINGS_ID = { name: 'Tampilkan properti pada baris terpisah', desc: 'Tampilkan setiap properti pada barisnya sendiri.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'Tautkan pil properti ke catatan', desc: 'Klik pil properti untuk membuka catatan yang ditautkan.' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: 'Tautkan pil properti ke URL', desc: 'Klik pil properti untuk membuka URL yang ditautkan.' }, @@ -2002,7 +2050,7 @@ export const STRINGS_ID = { helpTooltip: 'Format menggunakan Moment', momentLinkText: 'format Moment' }, - showFilePreview: { + showNotePreview: { name: 'Tampilkan pratinjau catatan', desc: 'Tampilkan teks pratinjau di bawah nama catatan.' }, @@ -2031,7 +2079,7 @@ export const STRINGS_ID = { desc: 'Daftar properti frontmatter yang dipisahkan koma untuk memeriksa teks pratinjau. Properti pertama dengan teks akan digunakan.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'Kembali ke konten catatan', desc: 'Tampilkan konten catatan sebagai pratinjau saat tidak ada properti yang ditentukan berisi teks.' }, @@ -2046,7 +2094,7 @@ export const STRINGS_ID = { '5': '5 baris' } }, - fileNameRows: { + titleRows: { name: 'Baris judul', desc: 'Jumlah baris yang ditampilkan untuk judul catatan.', options: { @@ -2077,22 +2125,22 @@ export const STRINGS_ID = { desc: 'Daftar properti frontmatter yang dipisahkan koma. Catatan yang mengandung properti ini tidak menyimpan gambar fitur.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'Ukuran tampilan gambar fitur', desc: 'Ukuran render maksimum untuk gambar fitur dalam daftar catatan.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'Ukuran piksel gambar fitur', desc: 'Resolusi yang digunakan saat membuat thumbnail gambar fitur yang disimpan. Tingkatkan ini jika pratinjau yang lebih besar terlihat buram.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2100,7 +2148,7 @@ export const STRINGS_ID = { name: 'Unduh gambar eksternal', desc: 'Unduh gambar jarak jauh dan thumbnail YouTube untuk gambar unggulan.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'Sembunyikan gambar pratinjau yang diekspor', desc: 'Sembunyikan berkas PNG pratinjau gambar yang diekspor. Aktifkan "Tampilkan item tersembunyi" untuk menampilkannya.' }, @@ -2133,11 +2181,11 @@ export const STRINGS_ID = { alphaDesc: 'Z ke A' } }, - showNoteCount: { + showFileCount: { name: 'Tampilkan jumlah file', desc: 'Tampilkan jumlah file di sebelah folder, tag, dan properti.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'Tampilkan ikon untuk pintasan dan item terbaru', desc: 'Tampilkan ikon di samping item pada bagian Pintasan dan Terbaru.' }, @@ -2146,7 +2194,7 @@ export const STRINGS_ID = { desc: 'Edit ikon toolbar, folder, tag, properti, item tersemat, pencarian, dan pengurutan.', buttonText: 'Edit ikon' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'Terapkan warna ke ikon saja', desc: 'Saat diaktifkan, warna kustom hanya diterapkan ke ikon. Saat dinonaktifkan, warna diterapkan ke ikon dan label teks.' }, @@ -2154,9 +2202,9 @@ export const STRINGS_ID = { name: 'Mode warna pelangi (profil vault)', desc: 'Terapkan warna pelangi di panel navigasi.', options: { - none: 'Mati', - foreground: 'Warna teks', - background: 'Warna latar' + off: 'Mati', + textColor: 'Warna teks', + backgroundColor: 'Warna latar' } }, navRainbowFirstColor: { @@ -2179,7 +2227,7 @@ export const STRINGS_ID = { name: 'Terapkan ke pintasan', desc: 'Terapkan warna pelangi ke pintasan.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'Terapkan ke item terbaru', desc: 'Terapkan warna pelangi ke item terbaru.' }, @@ -2213,7 +2261,7 @@ export const STRINGS_ID = { name: 'Terapkan ke properti', desc: 'Terapkan warna pelangi ke properti.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'Kecerahan konsisten di seluruh warna', // (English: Consistent brightness across hues) desc: 'Menginterpolasi kecerahan antara warna awal dan akhir selama transisi warna.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2231,7 +2279,7 @@ export const STRINGS_ID = { all: 'Setiap level' } }, - collapseBehavior: { + collapseItems: { name: 'Ciutkan item', desc: 'Pilih apa yang dipengaruhi tombol luaskan/ciutkan semua.', options: { @@ -2241,7 +2289,7 @@ export const STRINGS_ID = { propertiesOnly: 'Properti saja' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'Pertahankan item yang dipilih tetap terbuka', desc: 'Saat menciutkan, pertahankan item yang dipilih dan induknya tetap terbuka.' }, @@ -2249,7 +2297,7 @@ export const STRINGS_ID = { name: 'Lewati root vault saat menciutkan', desc: 'Saat menciutkan semua item, biarkan folder root vault tetap dalam keadaan saat ini.' }, - navIndent: { + treeIndentation: { name: 'Indentasi pohon', desc: 'Sesuaikan lebar indentasi untuk folder, tag, dan properti bersarang (piksel).' }, @@ -2275,7 +2323,7 @@ export const STRINGS_ID = { line: 'Garis' } }, - navRootSpacing: { + rootItemSpacing: { name: 'Spasi item root', desc: 'Spasi antara folder, tag, dan properti tingkat root (piksel).' }, @@ -2302,15 +2350,15 @@ export const STRINGS_ID = { highToLow: 'tinggi ke rendah' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'Tampilkan folder tag', desc: 'Tampilkan "Tag" sebagai folder yang dapat diciutkan.' }, - showUntagged: { + showUntaggedNotes: { name: 'Tampilkan catatan tanpa tag', desc: 'Tampilkan item "Tanpa tag" untuk catatan tanpa tag.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'Filter tag berdasarkan pilihan', desc: 'Hanya tampilkan tag yang muncul di catatan dalam folder atau properti yang dipilih.' }, @@ -2344,20 +2392,20 @@ export const STRINGS_ID = { highToLow: 'tinggi ke rendah' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'Tampilkan folder properti', desc: 'Tampilkan "Properti" sebagai folder yang dapat dilipat.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'Filter properti berdasarkan pilihan', desc: 'Hanya tampilkan properti yang muncul di catatan dalam folder atau tag yang dipilih.' }, - hiddenTags: { + hideTags: { name: 'Sembunyikan tag (profil vault)', desc: 'Daftar pola tag yang dipisahkan koma. Pola nama: tag* (dimulai dengan), *tag (diakhiri dengan). Pola jalur: arsip (tag dan turunan), arsip/* (hanya turunan), proyek/*/draf (wildcard tengah).', placeholder: 'arsip*, *draf, proyek/*/lama' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'Sembunyikan catatan dengan tag (profil vault)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2390,7 +2438,7 @@ export const STRINGS_ID = { desc: 'File templat yang digunakan saat membuat catatan folder. Templat Markdown dapat menggunakan Templater. Templat Canvas dan Base disalin sebagai isi file. Atur lokasi folder templat di Operasi file > Templat.', formatWarning: 'Format templat harus cocok dengan jenis catatan folder yang dipilih: .md, .canvas, atau .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'Nama folder membuka catatan folder', desc: 'Mengklik nama folder membuka catatan foldernya. Saat dinonaktifkan, catatan folder hanya menyediakan metadata folder seperti nama, ikon, dan warna.' }, @@ -2411,7 +2459,7 @@ export const STRINGS_ID = { rightSidebar: 'Bilah sisi kanan' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'Bilah sisi kanan: Tampilkan catatan folder terdekat', desc: 'Saat folder dipilih, bilah sisi kanan otomatis menampilkan catatan folder leluhur terdekat.' }, @@ -2454,7 +2502,7 @@ export const STRINGS_ID = { indexingTitle: 'Mengindeks vault...', progress: 'Memperbarui cache Notebook Navigator.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'Unduh', downloadingLabel: 'Mengunduh...', removeButton: 'Hapus', @@ -2466,7 +2514,7 @@ export const STRINGS_ID = { infoNote: 'Paket ikon yang diunduh menyinkronkan status instalasi di seluruh perangkat. Paket ikon tetap di database lokal di setiap perangkat; sinkronisasi hanya melacak apakah akan mengunduh atau menghapusnya. Paket ikon diunduh dari repositori Notebook Navigator (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'Gunakan metadata frontmatter', desc: 'Gunakan frontmatter untuk nama catatan, timestamp, ikon, dan warna' }, @@ -2485,7 +2533,7 @@ export const STRINGS_ID = { desc: 'Field frontmatter untuk warna latar belakang. Biarkan kosong untuk menggunakan warna latar belakang yang disimpan di pengaturan.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'Migrasi ikon dan warna dari pengaturan', desc: 'Disimpan di pengaturan: {icons} ikon, {colors} warna.', button: 'Migrasi', @@ -2495,7 +2543,7 @@ export const STRINGS_ID = { noticeFailures: 'Entri gagal: {failures}.', noticeError: 'Migrasi gagal. Periksa konsol untuk detail.' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'Field-field nama', desc: 'Daftar field frontmatter dipisahkan koma. Nilai tidak kosong pertama digunakan. Kembali ke nama file.', placeholder: 'title, name' @@ -2510,7 +2558,7 @@ export const STRINGS_ID = { desc: 'Nama field frontmatter untuk timestamp dimodifikasi. Biarkan kosong untuk hanya menggunakan tanggal sistem file.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'Format timestamp', desc: 'Format yang digunakan untuk mengurai timestamp di frontmatter. Biarkan kosong untuk menggunakan format ISO 8601', helpTooltip: 'Format menggunakan Moment', @@ -2523,12 +2571,12 @@ export const STRINGS_ID = { buttonText: '❤️ Sponsor', coffeeButton: '☕️ Traktir saya kopi' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'Periksa versi baru saat mulai', desc: 'Memeriksa rilis plugin baru saat startup dan menampilkan notifikasi saat pembaruan tersedia. Pemeriksaan terjadi paling banyak sekali sehari.', status: 'Versi baru tersedia: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'Log debug saat startup', desc: 'Menulis diagnostik startup ke file Markdown bertanda waktu di root vault, lalu berhenti setelah startup stabil. File dapat disinkronkan dan dapat menyertakan jalur file.' }, diff --git a/src/i18n/locales/it.ts b/src/i18n/locales/it.ts index 610f5751d..74baaa9d8 100644 --- a/src/i18n/locales/it.ts +++ b/src/i18n/locales/it.ts @@ -74,6 +74,9 @@ export const STRINGS_IT = { shortcutsHeader: 'Scorciatoie', // Header label for shortcuts section in navigation pane (English: Shortcuts) recentFilesHeader: 'File recenti', // Header label for recent files section in navigation pane (English: Recent files) properties: 'Proprietà', + folders: 'Cartelle', + tags: 'Tag', + calendar: 'Calendario', reorderRootFoldersTitle: 'Riordina navigazione', reorderRootFoldersHint: 'Usa frecce o trascina per riordinare', vaultRootLabel: 'Vault', @@ -1007,101 +1010,142 @@ export const STRINGS_IT = { exportSuccess: 'Report metadati falliti esportato in: {filename}', exportFailed: 'Impossibile esportare report metadati' }, - sections: { - general: 'Generale', - vaultFilters: 'Filtri di visualizzazione', - appearanceBehavior: 'Aspetto e comportamento', - navigationPane: 'Pannello di navigazione', - calendar: 'Calendario', - fileOperations: 'Operazioni sui file', - icons: 'Pacchetti icone', - folders: 'Cartelle', - folderNotes: 'Note cartella', - folderNoteFiles: 'File note cartella', - foldersAndFolderNotes: 'Cartelle e note cartella', - tagsAndProperties: 'Tag e proprietà', - tags: 'Tag', - listPane: 'Pannello lista', - notes: 'Visualizzazione file', - shortcutsAndRecentFiles: 'Scorciatoie e file recenti', - advanced: 'Avanzate' + index: { + label: 'Generale', + description: 'Note di rilascio, supporto, profilo vault, tipi di file e chiavi delle proprietà.', + groups: { + vaultSetup: 'Configurazione vault' + } }, pageGroups: { configuration: 'Configurazione', - navigationAndContent: 'Pannello di navigazione', - notesAndLists: 'Pannello lista', + navigationPane: 'Pannello di navigazione', + listPane: 'Pannello lista', calendarAndTools: 'Calendario e strumenti' }, - pageDescriptions: { - general: 'Note di rilascio, supporto, profilo vault, tipi di file e chiavi delle proprietà.', - vaultFilters: 'Cartelle, tag, file, tag dei file e regole delle proprietà nascosti.', - appearanceBehavior: 'Comportamento, navigazione da tastiera, pulsanti del mouse, aspetto e formattazione.', - navigationPane: 'Layout, aspetto, conteggio file, comportamento del collasso e colori arcobaleno.', - shortcuts: 'Visibilità delle scorciatoie, badge, file recenti ed elementi fissati.', - calendar: 'Visualizzazione calendario, note data, modelli, locale e posizionamento della barra laterale.', - fileOperations: 'Modelli, conferme di eliminazione, allegati e comportamento in caso di conflitti di spostamento dei file.', - foldersAndFolderNotes: 'Visualizzazione cartelle, note cartella, modelli di note cartella e comportamento delle note cartella.', - tagsProperties: 'Sezioni tag e proprietà, icone, ordinamento, ambito ed ereditarietà.', - listPane: 'Ordinamento, raggruppamento, modalità lista, note fissate e anteprime dei disegni.', - frontmatter: 'Campi frontmatter per nomi visualizzati, timestamp, icone e colori.', - notes: 'Titoli, testo anteprima, immagini in evidenza, tag, proprietà, date, conteggio parole e conteggio caratteri.', - iconPacks: 'Icone interfaccia, icone file e gestione pacchetti icone.', - advanced: 'Diagnostica, pulizia metadati, importazione/esportazione e ripristino.' - }, - groups: { - general: { - vaultConfiguration: 'Configurazione vault', - templates: 'Modelli', - behavior: 'Comportamento', - startup: 'Avvio', - keyboardNavigation: 'Navigazione da tastiera', - mouseButtons: 'Pulsanti del mouse', - view: 'Aspetto', - icons: 'Icone', - desktopAppearance: 'Aspetto desktop', - mobileAppearance: 'Aspetto mobile', - formatting: 'Formattazione' + pages: { + displayFilters: { + label: 'Filtri di visualizzazione', + description: 'Cartelle, tag, file, tag dei file e regole delle proprietà nascosti.' + }, + appearanceAndBehavior: { + label: 'Aspetto e comportamento', + description: 'Comportamento, navigazione da tastiera, pulsanti del mouse, aspetto e formattazione.', + groups: { + startup: 'Avvio', + keyboardNavigation: 'Navigazione da tastiera', + mouseButtons: 'Pulsanti del mouse', + desktopAppearance: 'Aspetto desktop', + mobileAppearance: 'Aspetto mobile', + appearance: 'Aspetto', + icons: 'Icone', + formatting: 'Formattazione' + } + }, + navigationPane: { + label: 'Pannello di navigazione', + description: 'Layout, aspetto, conteggio file, comportamento del collasso e colori arcobaleno.', + groups: { + appearance: 'Aspetto', + banner: 'Banner', + collapseItems: 'Comprimi elementi', + dragAndDrop: 'Trascina e rilascia', + fileCounts: 'Conteggi file', + rainbowColors: 'Colori arcobaleno' + } + }, + shortcutsAndRecentFiles: { + label: 'Scorciatoie e file recenti', + description: 'Visibilità delle scorciatoie, badge, file recenti ed elementi fissati.', + groups: { + shortcuts: 'Scorciatoie', + recentFiles: 'File recenti' + } + }, + foldersAndFolderNotes: { + label: 'Cartelle e note cartella', + description: 'Visualizzazione cartelle, note cartella, modelli di note cartella e comportamento delle note cartella.', + groups: { + folders: 'Cartelle', + folderNotes: 'Note cartella', + folderNoteFiles: 'File note cartella' + } + }, + tagsAndProperties: { + label: 'Tag e proprietà', + description: 'Sezioni tag e proprietà, icone, ordinamento, ambito ed ereditarietà.', + groups: { + tags: 'Tag', + properties: 'Proprietà' + } + }, + listPane: { + label: 'Pannello lista', + description: 'Ordinamento, raggruppamento, modalità lista, note fissate e anteprime dei disegni.', + groups: { + appearance: 'Aspetto', + sortAndGroup: 'Ordinamento e raggruppamento', + groupHeaders: 'Intestazioni di gruppo', + manualSort: 'Ordinamento manuale', + pinnedNotes: 'Note fissate', + behavior: 'Comportamento', + drawingPreviews: 'Anteprime dei disegni' + } + }, + fileOperations: { + label: 'Operazioni sui file', + description: 'Modelli, conferme di eliminazione, allegati e comportamento in caso di conflitti di spostamento dei file.', + groups: { + templates: 'Modelli' + } + }, + frontmatterFields: { + label: 'Campi frontmatter', + description: 'Campi frontmatter per nomi visualizzati, timestamp, icone e colori.' + }, + fileDisplay: { + label: 'Visualizzazione file', + description: 'Titoli, testo anteprima, immagini in evidenza, tag, proprietà, date, conteggio parole e conteggio caratteri.', + groups: { + icon: 'Icona', + title: 'Titolo', + previewText: 'Testo anteprima', + featureImage: 'Immagine in evidenza', + tags: 'Tag', + properties: 'Proprietà', + tasks: 'Attività', + date: 'Data', + parentFolder: 'Cartella superiore', + wordAndCharacterCount: 'Conteggio parole e caratteri' + } + }, + calendar: { + label: 'Calendario', + description: 'Visualizzazione calendario, note data, modelli, locale e posizionamento della barra laterale.', + groups: { + appearance: 'Aspetto', + leftSidebar: 'Barra laterale sinistra', + calendarIntegration: 'Integrazione calendario', + rightSidebar: 'Barra laterale destra' + } + }, + iconPacks: { + label: 'Pacchetti icone', + description: 'Icone interfaccia, icone file e gestione pacchetti icone.' }, advanced: { - maintenance: 'Manutenzione', - resetSettings: 'Reimposta impostazioni' - }, - navigation: { - appearance: 'Aspetto', - banner: 'Banner', - collapseItems: 'Comprimi elementi', - dragAndDrop: 'Trascina e rilascia', - noteCounts: 'Conteggi file', - rainbowColors: 'Colori arcobaleno', - leftSidebar: 'Barra laterale sinistra', - calendarIntegration: 'Integrazione calendario' - }, - list: { - display: 'Aspetto', - sortAndGroup: 'Ordinamento e raggruppamento', - groupHeaders: 'Intestazioni di gruppo', - manualSort: 'Ordinamento manuale', - pinnedNotes: 'Note fissate', - drawingPreviews: 'Anteprime dei disegni' - }, - notes: { - frontmatter: 'Campi frontmatter', - tasks: 'Attività', - icon: 'Icona', - title: 'Titolo', - previewText: 'Testo anteprima', - featureImage: 'Immagine in evidenza', - tags: 'Tag', - properties: 'Proprietà', - date: 'Data', - parentFolder: 'Cartella superiore', - wordCount: 'Conteggio parole e caratteri' + label: 'Avanzate', + description: 'Diagnostica, pulizia metadati, importazione/esportazione e ripristino.', + groups: { + maintenance: 'Manutenzione', + resetSettings: 'Reimposta impostazioni' + } } }, syncMode: { notSynced: '(non sincronizzato)', - switchToSynced: 'Attiva sincronizzazione', - switchToLocal: 'Disattiva sincronizzazione' + enableSync: 'Attiva sincronizzazione', + disableSync: 'Disattiva sincronizzazione' }, items: { listPaneTitle: { @@ -1109,11 +1153,11 @@ export const STRINGS_IT = { desc: 'Scegli dove mostrare il titolo del pannello lista.', options: { header: "Mostra nell'intestazione", - list: 'Mostra nel pannello lista', + listPane: 'Mostra nel pannello lista', hidden: 'Non mostrare' } }, - sortNotesBy: { + defaultSortOrder: { name: 'Ordinamento predefinito', desc: "Scegli l'ordinamento predefinito per le note. Le proprietà di Proprietà di ordinamento appaiono come opzioni di ordinamento aggiuntive.", directions: { @@ -1121,18 +1165,18 @@ export const STRINGS_IT = { desc: 'Decrescente' }, dateDirections: { - desc: 'Più recenti in alto', - asc: 'Più vecchie in alto' + newestOnTop: 'Più recenti in alto', + oldestOnTop: 'Più vecchie in alto' }, textDirections: { - asc: 'A in alto', - desc: 'Z in alto' + aOnTop: 'A in alto', + zOnTop: 'Z in alto' }, fields: { - modified: 'Data di modifica', - created: 'Data di creazione', + dateEdited: 'Data di modifica', + dateCreated: 'Data di creazione', title: 'Titolo', - filename: 'Nome file', + fileName: 'Nome file', property: 'Proprietà' } }, @@ -1145,7 +1189,7 @@ export const STRINGS_IT = { follow: "Segui l'ordinamento" } }, - propertySortKey: { + sortingProperties: { name: 'Proprietà di ordinamento', desc: "Proprietà frontmatter separate da virgole. Ogni proprietà appare come opzione di ordinamento nell'impostazione Ordinamento predefinito e nel menu di ordinamento nel pannello lista. Queste proprietà non vengono modificate.", placeholder: 'published, author', @@ -1155,14 +1199,14 @@ export const STRINGS_IT = { both: "L'ordinamento predefinito e il raggruppamento predefinito sono stati ripristinati perché le loro proprietà non sono più disponibili." } }, - propertySortSecondary: { + propertySecondarySort: { name: 'Ordinamento secondario', desc: "Usato con l'ordinamento per proprietà quando le note hanno lo stesso valore di proprietà o nessun valore.", options: { title: 'Titolo', - filename: 'Nome file', - created: 'Data di creazione', - modified: 'Data di modifica' + fileName: 'Nome file', + dateCreated: 'Data di creazione', + dateEdited: 'Data di modifica' } }, propertySortInstructions: { @@ -1175,16 +1219,16 @@ export const STRINGS_IT = { '**Viste per tag e proprietà:** Quando viene selezionato il raggruppamento **Cartella**, vengono mostrate invece intestazioni di data.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'Proprietà di raggruppamento', desc: "Proprietà frontmatter separate da virgole. Ogni proprietà appare come opzione di raggruppamento nell'impostazione Raggruppamento predefinito e nel menu di ordinamento nel pannello lista. Queste proprietà non vengono modificate.", placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'Proprietà ordinamento manuale', desc: "Proprietà frontmatter usata per memorizzare i valori indice numerici per l'ordinamento manuale." }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'Proprietà intestazione gruppo', desc: 'Proprietà frontmatter usata per memorizzare le intestazioni di gruppo personalizzate.' }, @@ -1201,7 +1245,7 @@ export const STRINGS_IT = { options: { top: 'In alto', bottom: 'In basso', - 'below-selected-note': 'Sotto la nota selezionata', + belowSelectedNote: 'Sotto la nota selezionata', unsorted: 'Non ordinato' } }, @@ -1217,7 +1261,7 @@ export const STRINGS_IT = { 'Nel pannello lista, seleziona una nota o selezionane più, quindi premi **Cmd/Ctrl + Arrow Up/Down** per spostare la selezione su o giù.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'Scorri al file selezionato quando la lista cambia', desc: "Scorri al file selezionato quando fissi note, mostri note discendenti, cambi l'aspetto cartella o esegui operazioni sui file." }, @@ -1225,15 +1269,15 @@ export const STRINGS_IT = { name: 'Mostra note da sottocartelle / discendenti', desc: 'Includi note da sottocartelle nidificate e discendenti di tag e proprietà quando visualizzi una cartella, tag o proprietà.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'Fissare le note solo nella loro cartella', desc: 'Le note fissate appaiono fissate solo nella propria cartella. Utile per le note cartella o se hai molte note fissate. Non influisce sulle viste per tag o proprietà.' }, - separateNoteCounts: { + separateFileCounts: { name: 'Mostra conteggi file correnti e discendenti separatamente', desc: 'Visualizza i conteggi file nel formato "correnti ▾ discendenti" per cartelle, tag e proprietà.' }, - groupNotes: { + defaultGrouping: { name: 'Raggruppamento predefinito', desc: "Le **intestazioni** annotano l'elenco ordinato senza cambiarne l'ordine: Personalizzato mostra le intestazioni definite nel frontmatter e Data inserisce intestazioni di data. I **gruppi** riordinano l'elenco: i gruppi di cartelle e proprietà sono ordinati autonomamente e le note in ogni gruppo seguono l'ordinamento.", families: { @@ -1246,7 +1290,7 @@ export const STRINGS_IT = { folder: 'Cartella' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'Mostra sempre tutti i badge di tag e proprietà', desc: 'Quando disattivato, i badge corrispondenti alla selezione di navigazione corrente vengono nascosti (ad es. il badge del tag "ricette" viene nascosto durante la navigazione nel tag "ricette"). Attiva per mantenere tutti i badge visibili.' }, @@ -1254,7 +1298,7 @@ export const STRINGS_IT = { name: 'Intestazioni di gruppo fisse', desc: "Mantieni visibile l'intestazione corrente di data, cartella, proprietà o sezione fissate mentre scorri." }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'Mostra percorsi sottocartelle', desc: 'Quando raggruppi per cartella nel pannello lista, mostra i percorsi delle sottocartelle invece dei soli nomi cartella.' }, @@ -1282,9 +1326,9 @@ export const STRINGS_IT = { name: 'Icona attività incomplete', desc: "Sostituisci l'icona del file quando una nota contiene attività incomplete.", options: { - none: 'Disabilitato', + disabled: 'Disabilitato', compact: 'Modalità compatta', - all: 'Standard e compatta' + standardAndCompact: 'Standard e compatta' } }, useFolderIcon: { @@ -1307,7 +1351,7 @@ export const STRINGS_IT = { name: 'Avanzamento attività: nascondi al completamento', desc: "Nasconde l'avanzamento delle attività quando tutte le attività di una nota sono completate." }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'Sfondo attività incomplete', desc: 'Applica un colore di sfondo quando una nota ha attività incomplete.' }, @@ -1315,7 +1359,7 @@ export const STRINGS_IT = { name: 'Colore sfondo attività incomplete', desc: 'Imposta il colore di sfondo usato quando una nota ha attività incomplete.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'Icone per nome file', desc: 'Assegna icone ai file in base al testo nei loro nomi.' }, @@ -1325,7 +1369,7 @@ export const STRINGS_IT = { placeholder: '# testo=icona\nriunione=ph-calendar\nfattura=ph-receipt', editTooltip: 'Modifica mappature' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'Icone per tipo file', desc: 'Assegna icone ai file in base alla loro estensione.' }, @@ -1333,7 +1377,7 @@ export const STRINGS_IT = { name: 'Preset icone file', desc: 'Scegli le icone integrate o un preset di pacchetto icone. Le regole di estensione personalizzate sostituiscono questo preset.', options: { - none: 'Icone integrate' + builtIn: 'Icone integrate' }, notInstalledWarning: 'Questo pacchetto icone non è installato. Vengono mostrate invece le icone integrate.' }, @@ -1356,11 +1400,11 @@ export const STRINGS_IT = { name: 'Mostra cartella genitore', desc: 'Visualizza il nome della cartella genitore per note in sottocartelle, tag o proprietà.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'Mostra percorso cartella', desc: 'Mostra il percorso relativo alla cartella selezionata invece del solo nome della cartella. Tag e proprietà mostrano il percorso completo.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'Click su cartella genitore apre cartella', desc: "Cliccando sull'etichetta cartella genitore apre la cartella nel pannello elenco." }, @@ -1388,7 +1432,7 @@ export const STRINGS_IT = { vertical: 'Divisione verticale' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'Quando la barra laterale è troppo stretta', desc: 'Scegli cosa succede quando il pannello di navigazione e il pannello elenco non entrano affiancati.', options: { @@ -1397,7 +1441,7 @@ export const STRINGS_IT = { vertical: 'Passa a divisione verticale' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'Soglia barra laterale stretta', desc: 'Scegli come viene calcolata la soglia di larghezza della barra laterale.', options: { @@ -1405,41 +1449,41 @@ export const STRINGS_IT = { customWidth: 'Larghezza personalizzata' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'Larghezza soglia barra laterale stretta', desc: 'Passa quando la barra laterale è più stretta di questa larghezza.', resetTooltip: 'Ripristina larghezza predefinita' }, - appearanceBackground: { + paneBackgroundColor: { name: 'Colore sfondo', desc: 'Scegli i colori sfondo per i pannelli navigazione e lista.', options: { separate: 'Sfondi separati', - primary: 'Usa sfondo lista', - secondary: 'Usa sfondo navigazione' + listBackground: 'Usa sfondo lista', + navigationBackground: 'Usa sfondo navigazione' } }, - appearanceScale: { + zoomLevel: { name: 'Livello zoom', desc: 'Controlla il livello di zoom complessivo di Notebook Navigator (percentuale).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'Usa barre degli strumenti flottanti su iOS', desc: 'Si applica solo a iOS.' }, - startView: { + defaultStartupView: { name: "Vista predefinita all'avvio", desc: "Scegli quale pannello è attivo all'apertura di Notebook Navigator. Il layout a pannello singolo mostra prima questo pannello; il layout a doppio pannello gli assegna il focus della tastiera.", options: { navigation: 'Pannello navigazione', - files: 'Pannello lista' + listPane: 'Pannello lista' } }, toolbarButtons: { name: 'Pulsanti barra strumenti', desc: 'Scegli quali pulsanti appaiono nella barra strumenti. I pulsanti nascosti rimangono accessibili tramite comandi e menu.' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'Apri nuove note in una nuova scheda', desc: 'Quando attivo, il comando Crea nuova nota apre le note in una nuova scheda. Quando disattivo, le note sostituiscono la scheda corrente.' }, @@ -1459,20 +1503,20 @@ export const STRINGS_IT = { name: 'Rivelazione automatica: Ignora eventi da altre finestre', desc: "Non cambiare nota attiva quando lavori con note in un'altra finestra." }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'Animazione pannello singolo', desc: 'Durata della transizione quando si passa tra i pannelli in modalità pannello singolo (millisecondi).', resetTooltip: 'Ripristina predefinito' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'Auto-seleziona prima nota', desc: 'Apri automaticamente la prima nota quando cambi cartella, tag o proprietà.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'Disabilita auto-scroll per scorciatoie', desc: 'Non scorrere il pannello navigazione quando clicchi elementi nelle scorciatoie.' }, - autoExpandNavItems: { + expandOnSelection: { name: 'Espandi alla selezione', desc: 'Espandi cartelle e tag quando selezionati. In modalità pannello singolo, la prima selezione espande, la seconda mostra i file.' }, @@ -1510,16 +1554,16 @@ export const STRINGS_IT = { name: 'Badge scorciatoia', desc: "Cosa visualizzare accanto alle scorciatoie. Usa i comandi 'Apri scorciatoia 1-9' per aprire le scorciatoie direttamente.", options: { - index: 'Posizione (1-9)', + position: 'Posizione (1-9)', count: 'Numero elementi', none: 'Nessuno' } }, - showRecentNotes: { + showRecentFiles: { name: 'Mostra file recenti', desc: 'Visualizza la sezione file recenti nel pannello navigazione.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'Nascondi tipi di file dai file recenti', desc: 'Scegli quali tipi di file nascondere nella sezione file recenti.', options: { @@ -1527,15 +1571,15 @@ export const STRINGS_IT = { folderNotes: 'Note cartella' } }, - recentNotesCount: { + recentFilesCount: { name: 'Numero file recenti', desc: 'Numero di file recenti da visualizzare.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'Fissa file recenti con scorciatoie', desc: 'Includi i file recenti quando le scorciatoie sono fissate.' }, - calendarEnabled: { + enableCalendar: { name: 'Attiva calendario', desc: 'Attivare le funzionalità del calendario di Notebook Navigator.' }, @@ -1547,12 +1591,12 @@ export const STRINGS_IT = { rightSidebar: 'Barra laterale destra' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'Posizione pannello singolo', desc: 'Dove viene mostrato il calendario in modalità pannello singolo.', options: { navigationPane: 'Pannello di navigazione', - below: 'Sotto i pannelli' + belowPanes: 'Sotto i pannelli' } }, calendarLocale: { @@ -1574,7 +1618,7 @@ export const STRINGS_IT = { thuFri: 'Giovedì e venerdì' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'Formato del nome del mese', desc: 'Nome del mese lungo (gennaio) o abbreviato (gen).', options: { @@ -1586,7 +1630,7 @@ export const STRINGS_IT = { name: 'Mostra pulsanti informazioni', desc: "Mostra i pulsanti informazioni nella barra di ricerca e nell'intestazione del calendario." }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'Settimane da mostrare nella barra laterale sinistra', desc: 'Il calendario nella barra laterale destra mostra sempre il mese completo.', options: { @@ -1631,7 +1675,7 @@ export const STRINGS_IT = { name: 'Mostra elementi nascosti', desc: 'Quando abilitato, il calendario mostra sempre tutte le note del calendario, incluse le note nascoste dai filtri del profilo del vault.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'Fonte note giornaliere', desc: 'Fonte per le note del calendario.', options: { @@ -1651,34 +1695,38 @@ export const STRINGS_IT = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'Cartella radice', desc: 'Cartella base per le note periodiche. I pattern di data possono includere sottocartelle. Cambia con il profilo del vault selezionato.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'Posizione cartella modelli', desc: 'Il selettore file modello mostra le note da questa cartella.', placeholder: 'Templates', usage: 'Usato dalle note calendario e dalle note cartella. Configura i modelli in Calendario > Integrazione calendario e Cartelle e note cartella > File note cartella.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'Note giornaliere', desc: "Formatta percorso usando formato data Moment. Racchiudi i nomi delle sottocartelle tra parentesi quadre, es. [Work]/YYYY. Clicca sull'icona del modello per impostare un modello. Impostare la posizione della cartella modelli in Operazioni sui file > Modelli.", + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'Il modello deve poter essere formattato e rianalizzato come una data completa (anno, mese, giorno).' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'Formatta percorso usando ', momentLinkText: 'formato data Moment', momentDescSuffix: ". Racchiudi i nomi delle sottocartelle tra parentesi quadre, es. [Work]/YYYY. Clicca sull'icona del modello per impostare un modello. Impostare la posizione della cartella modelli in Operazioni sui file > Modelli.", - templaterSupportInstalled: '✅ Il plugin Templater è installato con supporto completo ai modelli.', - templaterSupportMissing: '⚠️ Installa il plugin Templater per il supporto ai modelli.', templateTokenNoticeLabel: 'Importante!', templateTokenNotice: 'Il supporto ai modelli richiede il plugin Templater. I formati integrati come {{date}} e {{title}} funzionano solo quando {source} è impostato su {option}.', - placeholder: 'YYYY/YYYYMMDD', - example: 'Sintassi attuale: {path}', - parsingError: 'Il modello deve poter essere formattato e rianalizzato come una data completa (anno, mese, giorno).' + example: 'Sintassi attuale: {path}' + }, + templaterSupport: { + installed: '✅ Il plugin Templater è installato con supporto completo ai modelli.', + missing: '⚠️ Installa il plugin Templater per il supporto ai modelli.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'Note settimanali', parsingError: 'Il modello deve poter essere formattato e rianalizzato come una settimana completa (anno settimana, numero settimana).', @@ -1687,19 +1735,19 @@ export const STRINGS_IT = { mixedWeekTokensWarning: 'Questo modello mescola token di settimana basati sul lunedì ("W" o "G") con token di settimana basati sulla lingua ("w" o "g"). Usa un solo insieme in modo coerente: "GGGG" con "WW" per settimane basate sul lunedì, o "gggg" con "ww" se le note settimanali devono seguire la lingua selezionata.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'Note mensili', parsingError: 'Il modello deve poter essere formattato e rianalizzato come un mese completo (anno, mese).' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'Note trimestrali', parsingError: 'Il modello deve poter essere formattato e rianalizzato come un trimestre completo (anno, trimestre).' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'Note annuali', parsingError: 'Il modello deve poter essere formattato e rianalizzato come un anno completo (anno).' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'File modello: {name}' }, showTooltips: { @@ -1720,7 +1768,7 @@ export const STRINGS_IT = { buttonText: 'Ripristina separatore', notice: 'Posizione separatore ripristinata. Riavvia Obsidian o riapri Notebook Navigator per applicare.' }, - settingsTransfer: { + importAndExportSettings: { name: 'Importa ed esporta impostazioni', desc: 'Esporta o importa le impostazioni di Notebook Navigator come JSON. L\u2019importazione sostituisce tutte le impostazioni.', importButtonText: 'Importa', @@ -1780,15 +1828,15 @@ export const STRINGS_IT = { name: 'Premi Invio per aprire i file', desc: "Apri i file solo premendo Invio durante la navigazione da tastiera nell'elenco. Su macOS, questo impedisce a Invio di rinominare i file." }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Invio', desc: 'Scegli se Shift+Invio apre o rinomina il file selezionato.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Invio', desc: 'Scegli se Cmd+Invio apre o rinomina il file selezionato.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Invio', desc: 'Scegli se Ctrl+Invio apre o rinomina il file selezionato.' }, @@ -1796,12 +1844,12 @@ export const STRINGS_IT = { name: 'Pulsanti indietro/avanti del mouse', desc: 'Azione per i pulsanti indietro e avanti del mouse su desktop.', options: { - none: 'Usa impostazione predefinita di sistema', + systemDefault: 'Usa impostazione predefinita di sistema', singlePaneSwitch: 'Cambia pannello (pannello singolo)', history: 'Naviga nella cronologia' } }, - fileVisibility: { + showFileTypes: { name: 'Mostra tipi file (profilo vault)', desc: 'Filtra quali tipi di file vengono mostrati nel navigatore. I tipi file non supportati da Obsidian potrebbero aprirsi in applicazioni esterne.', options: { @@ -1833,12 +1881,12 @@ export const STRINGS_IT = { desc: "Crea la nota periodica all'avvio o tramite comando se non esiste." } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'Nascondi note con regole di proprietà (profilo vault)', desc: 'Lista di regole frontmatter separate da virgola. Usa voci `key` o `key=value` (es. status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'Nascondi file (profilo vault)', desc: 'Lista di pattern di nomi file separati da virgola da nascondere. Supporta caratteri jolly * e percorsi / (es. temp-*, *.png, /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1865,7 +1913,7 @@ export const STRINGS_IT = { duplicateName: 'Nome profilo già esistente' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'Posizione titolo vault', desc: 'Scegli dove viene mostrato il titolo del vault.', options: { @@ -1873,7 +1921,7 @@ export const STRINGS_IT = { navigation: 'Mostra nel pannello di navigazione' } }, - excludedFolders: { + hideFolders: { name: 'Nascondi cartelle (profilo vault)', desc: 'Lista di cartelle da nascondere separate da virgola. Pattern nome: assets* (cartelle che iniziano con assets), *_temp (che finiscono con _temp). Pattern percorso: /archivio (solo archivio root), /res* (cartelle root che iniziano con res), /*/temp (cartelle temp un livello sotto), /progetti/* (tutte le cartelle in progetti).', placeholder: 'modelli, assets*, /archivio, /res*' @@ -1887,7 +1935,7 @@ export const STRINGS_IT = { name: 'Mostra data', desc: 'Visualizza la data sotto i nomi note.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'Quando ordini per nome', desc: 'Data da mostrare quando le note sono ordinate alfabeticamente.', options: { @@ -1899,7 +1947,7 @@ export const STRINGS_IT = { name: 'Mostra tag file', desc: 'Visualizza tag cliccabili negli elementi file.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'Mostra percorsi tag completi', desc: "Visualizza percorsi gerarchia tag completi. Quando abilitato: 'ai/openai', 'lavoro/progetti/2024'. Quando disabilitato: 'openai', '2024'." }, @@ -1907,7 +1955,7 @@ export const STRINGS_IT = { name: 'Colora tag file', desc: 'Applica colori tag ai badge tag sugli elementi file.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'Mostra tag colorati prima', desc: 'Ordina i tag colorati prima degli altri tag sugli elementi file.' }, @@ -1923,7 +1971,7 @@ export const STRINGS_IT = { name: 'Colora proprietà file', desc: 'Applica i colori delle proprietà ai badge delle proprietà negli elementi file.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'Mostra proprietà colorate prima', desc: 'Ordina le proprietà colorate prima delle altre proprietà negli elementi file.' }, @@ -1931,7 +1979,7 @@ export const STRINGS_IT = { name: 'Mostra proprietà in modalità compatta', desc: 'Visualizza le proprietà quando la modalità compatta è attiva.' }, - textCountDisplay: { + textCountType: { name: 'Tipo di conteggio', desc: 'Scegli quali conteggi del testo mostrare negli elementi file.', options: { @@ -1961,11 +2009,11 @@ export const STRINGS_IT = { name: 'Proprietà obiettivo', desc: 'Chiave della proprietà frontmatter contenente l’obiettivo di conteggio parole. Lascia vuoto per nascondere gli obiettivi.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'Mostra percentuale obiettivo', desc: 'Mostra solo la percentuale di avanzamento quando è disponibile un obiettivo di conteggio parole.' }, - propertyFields: { + propertyKeys: { name: 'Chiavi proprietà (profilo cassaforte)', desc: "Chiavi proprietà dei metadati, con visibilità per chiave per la navigazione e l'elenco file.", addButtonTooltip: 'Configura chiavi proprietà', @@ -1977,11 +2025,11 @@ export const STRINGS_IT = { name: 'Mostra proprietà su righe separate', desc: 'Mostra ogni proprietà sulla propria riga.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'Collega le etichette proprietà alle note', desc: "Fai clic su un'etichetta proprietà per aprire la nota collegata." }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: 'Collega le etichette proprietà agli URL', desc: "Fai clic su un'etichetta proprietà per aprire l'URL collegato." }, @@ -2001,7 +2049,7 @@ export const STRINGS_IT = { helpTooltip: 'Formato con Moment', momentLinkText: 'formato Moment' }, - showFilePreview: { + showNotePreview: { name: 'Mostra anteprima nota', desc: 'Visualizza testo anteprima sotto i nomi note.' }, @@ -2030,7 +2078,7 @@ export const STRINGS_IT = { desc: 'Lista di proprietà frontmatter separate da virgola da controllare per testo anteprima. La prima proprietà con testo sarà usata.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'Ricorri al contenuto della nota', desc: 'Mostra il contenuto della nota come anteprima quando nessuna delle proprietà specificate contiene testo.' }, @@ -2045,7 +2093,7 @@ export const STRINGS_IT = { '5': '5 righe' } }, - fileNameRows: { + titleRows: { name: 'Righe titolo', desc: 'Numero di righe da visualizzare per i titoli note.', options: { @@ -2076,22 +2124,22 @@ export const STRINGS_IT = { desc: 'Lista di proprietà frontmatter separate da virgola. Le note contenenti una di queste proprietà non memorizzano immagini di copertina.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: "Dimensione di visualizzazione dell'immagine in evidenza", desc: 'Dimensione massima di rendering per le immagini in evidenza nelle liste di note.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: "Dimensione in pixel dell'immagine in evidenza", desc: 'Risoluzione utilizzata per generare le miniature memorizzate delle immagini in evidenza. Aumenta questo valore se le anteprime più grandi appaiono sfocate.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2099,7 +2147,7 @@ export const STRINGS_IT = { name: 'Scarica immagini esterne', desc: 'Scarica immagini remote e miniature di YouTube per le immagini in evidenza.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'Nascondi le immagini di anteprima esportate', desc: 'Nasconde i file PNG di anteprima dei disegni esportati. Attiva "Mostra elementi nascosti" per visualizzarli.' }, @@ -2132,11 +2180,11 @@ export const STRINGS_IT = { alphaDesc: 'Z a A' } }, - showNoteCount: { + showFileCount: { name: 'Mostra conteggio file', desc: 'Visualizza i conteggi file accanto a cartelle, tag e proprietà.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'Mostra icone per scorciatoie e elementi recenti', desc: 'Visualizza icone accanto agli elementi nelle sezioni Scorciatoie e Recenti.' }, @@ -2145,7 +2193,7 @@ export const STRINGS_IT = { desc: 'Modifica icone di barra strumenti, cartelle, tag, proprietà, elementi fissati, ricerca e ordinamento.', buttonText: 'Modifica icone' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'Applica colore solo alle icone', desc: 'Quando abilitato, i colori personalizzati sono applicati solo alle icone. Quando disabilitato, i colori sono applicati sia alle icone che alle etichette testo.' }, @@ -2153,9 +2201,9 @@ export const STRINGS_IT = { name: 'Modalità colori arcobaleno (profilo vault)', desc: 'Applica colori arcobaleno nel pannello di navigazione.', options: { - none: 'Disattivato', - foreground: 'Colore del testo', - background: 'Colore di sfondo' + off: 'Disattivato', + textColor: 'Colore del testo', + backgroundColor: 'Colore di sfondo' } }, navRainbowFirstColor: { @@ -2178,7 +2226,7 @@ export const STRINGS_IT = { name: 'Applica alle scorciatoie', desc: 'Applica colori arcobaleno alle scorciatoie.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'Applica agli elementi recenti', desc: 'Applica colori arcobaleno agli elementi recenti.' }, @@ -2212,7 +2260,7 @@ export const STRINGS_IT = { name: 'Applica alle proprietà', desc: 'Applica colori arcobaleno alle proprietà.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'Luminosità uniforme tra le tonalità', // (English: Consistent brightness across hues) desc: 'Interpola la luminosità tra i colori iniziale e finale durante le transizioni di tonalità.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2230,7 +2278,7 @@ export const STRINGS_IT = { all: 'Ogni livello' } }, - collapseBehavior: { + collapseItems: { name: 'Comprimi elementi', desc: 'Scegli cosa influenza il pulsante espandi/comprimi tutto.', options: { @@ -2240,7 +2288,7 @@ export const STRINGS_IT = { propertiesOnly: 'Solo proprietà' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'Mantieni elemento selezionato espanso', desc: "Quando comprimi, mantieni l'elemento selezionato e i suoi genitori espansi." }, @@ -2248,7 +2296,7 @@ export const STRINGS_IT = { name: 'Ignora la root del vault quando comprimi', desc: 'Quando comprimi tutti gli elementi, lascia la cartella root del vault nello stato corrente.' }, - navIndent: { + treeIndentation: { name: 'Indentazione albero', desc: 'Regola la larghezza indentazione per cartelle, tag e proprietà nidificati (pixel).' }, @@ -2274,7 +2322,7 @@ export const STRINGS_IT = { line: 'Linea' } }, - navRootSpacing: { + rootItemSpacing: { name: 'Spaziatura elementi root', desc: 'Spaziatura tra cartelle, tag e proprietà di livello root (pixel).' }, @@ -2301,15 +2349,15 @@ export const STRINGS_IT = { highToLow: 'alta a bassa' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'Mostra cartella tag', desc: 'Visualizza "Tag" come cartella comprimibile.' }, - showUntagged: { + showUntaggedNotes: { name: 'Mostra note senza tag', desc: 'Visualizza elemento "Senza tag" per note senza alcun tag.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'Filtra tag per selezione', desc: 'Mostra solo i tag presenti nelle note nella cartella o proprietà selezionata.' }, @@ -2343,20 +2391,20 @@ export const STRINGS_IT = { highToLow: "dall'alto al basso" } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'Mostra cartella proprietà', desc: 'Visualizza "Proprietà" come cartella comprimibile.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'Filtra proprietà per selezione', desc: 'Mostra solo le proprietà presenti nelle note nella cartella o tag selezionato.' }, - hiddenTags: { + hideTags: { name: 'Nascondi tag (profilo vault)', desc: 'Lista di pattern tag separati da virgola. Pattern nome: tag* (inizia con), *tag (finisce con). Pattern percorso: archivio (tag e discendenti), archivio/* (solo discendenti), progetti/*/bozze (wildcard intermedio).', placeholder: 'archivio*, *bozza, progetti/*/vecchio' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'Nascondi note con tag (profilo vault)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2389,7 +2437,7 @@ export const STRINGS_IT = { desc: 'File modello usato durante la creazione delle note cartella. I modelli Markdown possono usare Templater. I modelli Canvas e Base vengono copiati come contenuto del file. Impostare la posizione della cartella modelli in Operazioni sui file > Modelli.', formatWarning: 'Il formato del modello deve corrispondere al tipo di nota cartella selezionato: .md, .canvas o .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'I nomi delle cartelle aprono note cartella', desc: 'Facendo clic sul nome di una cartella si apre la relativa nota cartella. Quando disattivato, le note cartella forniscono solo metadati della cartella come nome, icona e colore.' }, @@ -2410,7 +2458,7 @@ export const STRINGS_IT = { rightSidebar: 'Barra laterale destra' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'Barra laterale destra: Mostra nota cartella più vicina', desc: 'Quando viene selezionata una cartella, la barra laterale destra mostra automaticamente la nota cartella antenata più vicina.' }, @@ -2453,7 +2501,7 @@ export const STRINGS_IT = { indexingTitle: 'Indicizzazione del vault...', progress: 'Aggiornamento della cache di Notebook Navigator.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'Scarica', downloadingLabel: 'Scaricamento...', removeButton: 'Rimuovi', @@ -2465,7 +2513,7 @@ export const STRINGS_IT = { infoNote: 'I pacchetti icone scaricati sincronizzano lo stato installazione tra dispositivi. I pacchetti icone rimangono nel database locale su ogni dispositivo; la sync traccia solo se scaricarli o rimuoverli. I pacchetti icone si scaricano dal repository Notebook Navigator (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'Usa metadati frontmatter', desc: 'Usa frontmatter per nome nota, timestamp, icone e colori' }, @@ -2484,7 +2532,7 @@ export const STRINGS_IT = { desc: 'Campo frontmatter per colori di sfondo. Lascia vuoto per usare colori di sfondo salvati nelle impostazioni.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'Migra icone e colori dalle impostazioni', desc: 'Salvati nelle impostazioni: {icons} icone, {colors} colori.', button: 'Migra', @@ -2494,7 +2542,7 @@ export const STRINGS_IT = { noticeFailures: 'Voci fallite: {failures}.', noticeError: 'Migrazione fallita. Controlla console per dettagli.' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'Campi nome', desc: 'Elenco di campi frontmatter separati da virgola. Viene usato il primo valore non vuoto. Usa il nome file come alternativa.', placeholder: 'title, name' @@ -2509,7 +2557,7 @@ export const STRINGS_IT = { desc: 'Nome campo frontmatter per timestamp modifica. Lascia vuoto per usare solo data file system.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'Formato timestamp', desc: 'Formato usato per parsare timestamp nel frontmatter. Lascia vuoto per usare parsing ISO 8601.', helpTooltip: 'Formato con Moment', @@ -2522,12 +2570,12 @@ export const STRINGS_IT = { buttonText: '❤️ Sponsorizza', coffeeButton: '☕️ Offrimi un caffè' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: "Controlla nuova versione all'avvio", desc: "Controlla nuovi rilasci plugin all'avvio e mostra notifica quando un aggiornamento è disponibile. I controlli avvengono al massimo una volta al giorno.", status: 'Nuova versione disponibile: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'Registro di debug all’avvio', desc: 'Scrive la diagnostica di avvio in un file Markdown con data e ora nella radice del vault, poi si ferma quando l’avvio si stabilizza. Il file può essere sincronizzato e può includere percorsi di file.' }, diff --git a/src/i18n/locales/ja.ts b/src/i18n/locales/ja.ts index 2334268d2..56773ebaf 100644 --- a/src/i18n/locales/ja.ts +++ b/src/i18n/locales/ja.ts @@ -73,6 +73,9 @@ export const STRINGS_JA = { shortcutsHeader: 'ショートカット', recentFilesHeader: '最近のファイル', // Header label for recent files section in navigation pane (English: Recent files) properties: 'プロパティ', + folders: 'フォルダノート', + tags: 'タグ表示', + calendar: 'カレンダー', reorderRootFoldersTitle: 'ナビゲーションを並び替え', reorderRootFoldersHint: '矢印またはドラッグで並び替え', vaultRootLabel: 'ボールト', @@ -1010,101 +1013,142 @@ export const STRINGS_JA = { exportSuccess: '失敗したメタデータレポートをエクスポートしました: {filename}', exportFailed: 'メタデータレポートのエクスポートに失敗しました' }, - sections: { - general: '一般設定', - vaultFilters: '表示フィルター', - appearanceBehavior: '外観と動作', - navigationPane: 'ナビゲーションペイン', - calendar: 'カレンダー', - fileOperations: 'ファイル操作', - icons: 'アイコンパック', - folders: 'フォルダノート', - folderNotes: 'フォルダノート', - folderNoteFiles: 'フォルダノートファイル', - foldersAndFolderNotes: 'フォルダとフォルダノート', - tagsAndProperties: 'タグとプロパティ', - tags: 'タグ表示', - listPane: 'リストペイン', - notes: 'ファイル表示', - shortcutsAndRecentFiles: 'ショートカットと最近のファイル', - advanced: '詳細設定' + index: { + label: '一般設定', + description: 'リリースノート、サポート、保管庫プロファイル、ファイルタイプ、プロパティキー。', + groups: { + vaultSetup: '保管庫のセットアップ' + } }, pageGroups: { configuration: '設定', - navigationAndContent: 'ナビゲーションペイン', - notesAndLists: 'リストペイン', + navigationPane: 'ナビゲーションペイン', + listPane: 'リストペイン', calendarAndTools: 'カレンダーとツール' }, - pageDescriptions: { - general: 'リリースノート、サポート、保管庫プロファイル、ファイルタイプ、プロパティキー。', - vaultFilters: '非表示のフォルダ、タグ、ファイル、ファイルタグ、プロパティルール。', - appearanceBehavior: '動作、キーボード操作、マウスボタン、外観、書式。', - navigationPane: 'レイアウト、外観、ファイル数、折りたたみ動作、レインボーカラー。', - shortcuts: 'ショートカットの表示、バッジ、最近のファイル、ピン留めされた項目。', - calendar: 'カレンダー表示、日付ノート、テンプレート、ロケール、サイドバーの配置。', - fileOperations: 'テンプレート、削除確認、添付ファイル、ファイル移動時の競合動作。', - foldersAndFolderNotes: 'フォルダ表示、フォルダノート、フォルダノートのテンプレート、フォルダノートの動作。', - tagsProperties: 'タグとプロパティのセクション、アイコン、並べ替え、スコープ、継承。', - listPane: '並べ替え、グループ化、リストモード、ピン留めされたノート、描画プレビュー。', - frontmatter: '表示名、タイムスタンプ、アイコン、色のフロントマターフィールド。', - notes: 'タイトル、プレビューテキスト、アイキャッチ画像、タグ、プロパティ、日付、単語数、文字数。', - iconPacks: 'インターフェースアイコン、ファイルアイコン、アイコンパック管理。', - advanced: '診断、メタデータのクリーンアップ、インポート/エクスポート、リセット。' - }, - groups: { - general: { - vaultConfiguration: '保管庫のセットアップ', - templates: 'テンプレート', - behavior: '動作', - startup: '起動', - keyboardNavigation: 'キーボード操作', - mouseButtons: 'マウスボタン', - view: '外観', - icons: 'アイコン', - desktopAppearance: 'デスクトップの外観', - mobileAppearance: 'モバイルの外観', - formatting: '書式' + pages: { + displayFilters: { + label: '表示フィルター', + description: '非表示のフォルダ、タグ、ファイル、ファイルタグ、プロパティルール。' + }, + appearanceAndBehavior: { + label: '外観と動作', + description: '動作、キーボード操作、マウスボタン、外観、書式。', + groups: { + startup: '起動', + keyboardNavigation: 'キーボード操作', + mouseButtons: 'マウスボタン', + desktopAppearance: 'デスクトップの外観', + mobileAppearance: 'モバイルの外観', + appearance: '外観', + icons: 'アイコン', + formatting: '書式' + } + }, + navigationPane: { + label: 'ナビゲーションペイン', + description: 'レイアウト、外観、ファイル数、折りたたみ動作、レインボーカラー。', + groups: { + appearance: '外観', + banner: 'バナー', + collapseItems: '項目を折りたたむ', + dragAndDrop: 'ドラッグ&ドロップ', + fileCounts: 'ファイル数', + rainbowColors: 'レインボーカラー' + } + }, + shortcutsAndRecentFiles: { + label: 'ショートカットと最近のファイル', + description: 'ショートカットの表示、バッジ、最近のファイル、ピン留めされた項目。', + groups: { + shortcuts: 'ショートカット', + recentFiles: '最近のファイル' + } + }, + foldersAndFolderNotes: { + label: 'フォルダとフォルダノート', + description: 'フォルダ表示、フォルダノート、フォルダノートのテンプレート、フォルダノートの動作。', + groups: { + folders: 'フォルダノート', + folderNotes: 'フォルダノート', + folderNoteFiles: 'フォルダノートファイル' + } + }, + tagsAndProperties: { + label: 'タグとプロパティ', + description: 'タグとプロパティのセクション、アイコン、並べ替え、スコープ、継承。', + groups: { + tags: 'タグ表示', + properties: 'プロパティ' + } + }, + listPane: { + label: 'リストペイン', + description: '並べ替え、グループ化、リストモード、ピン留めされたノート、描画プレビュー。', + groups: { + appearance: '外観', + sortAndGroup: '並べ替えとグループ化', + groupHeaders: 'グループヘッダー', + manualSort: '手動並べ替え', + pinnedNotes: 'ピン留めされたノート', + behavior: '動作', + drawingPreviews: '描画プレビュー' + } + }, + fileOperations: { + label: 'ファイル操作', + description: 'テンプレート、削除確認、添付ファイル、ファイル移動時の競合動作。', + groups: { + templates: 'テンプレート' + } + }, + frontmatterFields: { + label: 'フロントマターフィールド', + description: '表示名、タイムスタンプ、アイコン、色のフロントマターフィールド。' + }, + fileDisplay: { + label: 'ファイル表示', + description: 'タイトル、プレビューテキスト、アイキャッチ画像、タグ、プロパティ、日付、単語数、文字数。', + groups: { + icon: 'アイコン', + title: 'タイトル', + previewText: 'プレビューテキスト', + featureImage: 'アイキャッチ画像', + tags: 'タグ', + properties: 'プロパティ', + tasks: 'タスク', + date: '日付', + parentFolder: '親フォルダ', + wordAndCharacterCount: '単語数と文字数' + } + }, + calendar: { + label: 'カレンダー', + description: 'カレンダー表示、日付ノート、テンプレート、ロケール、サイドバーの配置。', + groups: { + appearance: '外観', + leftSidebar: '左サイドバー', + calendarIntegration: 'カレンダー連携', + rightSidebar: '右サイドバー' + } + }, + iconPacks: { + label: 'アイコンパック', + description: 'インターフェースアイコン、ファイルアイコン、アイコンパック管理。' }, advanced: { - maintenance: 'メンテナンス', - resetSettings: '設定をリセット' - }, - navigation: { - appearance: '外観', - banner: 'バナー', - collapseItems: '項目を折りたたむ', - dragAndDrop: 'ドラッグ&ドロップ', - noteCounts: 'ファイル数', - rainbowColors: 'レインボーカラー', - leftSidebar: '左サイドバー', - calendarIntegration: 'カレンダー連携' - }, - list: { - display: '外観', - sortAndGroup: '並べ替えとグループ化', - groupHeaders: 'グループヘッダー', - manualSort: '手動並べ替え', - pinnedNotes: 'ピン留めされたノート', - drawingPreviews: '描画プレビュー' - }, - notes: { - frontmatter: 'フロントマターフィールド', - tasks: 'タスク', - icon: 'アイコン', - title: 'タイトル', - previewText: 'プレビューテキスト', - featureImage: 'アイキャッチ画像', - tags: 'タグ', - properties: 'プロパティ', - date: '日付', - parentFolder: '親フォルダ', - wordCount: '単語数と文字数' + label: '詳細設定', + description: '診断、メタデータのクリーンアップ、インポート/エクスポート、リセット。', + groups: { + maintenance: 'メンテナンス', + resetSettings: '設定をリセット' + } } }, syncMode: { notSynced: '(未同期)', - switchToSynced: '同期を有効化', - switchToLocal: '同期を無効化' + enableSync: '同期を有効化', + disableSync: '同期を無効化' }, items: { listPaneTitle: { @@ -1112,11 +1156,11 @@ export const STRINGS_JA = { desc: 'リストペインのタイトルを表示する場所を選択します。', options: { header: 'ヘッダーに表示', - list: 'リストペインに表示', + listPane: 'リストペインに表示', hidden: '表示しない' } }, - sortNotesBy: { + defaultSortOrder: { name: 'デフォルトの並び順', desc: 'ノートのデフォルトの並び順を選択します。「並べ替えに使うプロパティ」のプロパティが追加の並び順オプションとして表示されます。', directions: { @@ -1124,18 +1168,18 @@ export const STRINGS_JA = { desc: '降順' }, dateDirections: { - desc: '新しいものが上', - asc: '古いものが上' + newestOnTop: '新しいものが上', + oldestOnTop: '古いものが上' }, textDirections: { - asc: '昇順', - desc: '降順' + aOnTop: '昇順', + zOnTop: '降順' }, fields: { - modified: '更新日時', - created: '作成日時', + dateEdited: '更新日時', + dateCreated: '作成日時', title: 'タイトル', - filename: 'ファイル名', + fileName: 'ファイル名', property: 'プロパティ' } }, @@ -1148,7 +1192,7 @@ export const STRINGS_JA = { follow: '並び順に従う' } }, - propertySortKey: { + sortingProperties: { name: '並べ替えに使うプロパティ', desc: 'カンマ区切りの frontmatter プロパティ。各プロパティは、デフォルトの並び順の設定とリストペインの並べ替えメニューに並べ替えオプションとして表示されます。これらのプロパティは変更されません。', placeholder: 'published, author', @@ -1158,14 +1202,14 @@ export const STRINGS_JA = { both: 'プロパティが利用できなくなったため、デフォルトの並び順とグループ化がリセットされました。' } }, - propertySortSecondary: { + propertySecondarySort: { name: '二次ソート', desc: 'プロパティソート使用時、同じプロパティ値またはプロパティ値がないノートに適用されます。', options: { title: 'タイトル', - filename: 'ファイル名', - created: '作成日', - modified: '編集日' + fileName: 'ファイル名', + dateCreated: '作成日', + dateEdited: '編集日' } }, propertySortInstructions: { @@ -1178,16 +1222,16 @@ export const STRINGS_JA = { '**タグとプロパティビュー:** **フォルダ** でグループ化すると、代わりに日付ヘッダーが表示されます。' ] }, - propertyGroupKey: { + groupingProperties: { name: 'グループ化に使うプロパティ', desc: 'カンマ区切りの frontmatter プロパティ。各プロパティは、デフォルトのグループ化の設定とリストペインの並べ替えメニューにグループ化オプションとして表示されます。これらのプロパティは変更されません。', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: '手動並べ替え用プロパティ', desc: '手動並べ替えの数値インデックス値を保存するために使用される frontmatter プロパティ。' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'グループヘッダープロパティ', desc: 'カスタムグループヘッダーを保存するために使用される frontmatter プロパティ。' }, @@ -1204,7 +1248,7 @@ export const STRINGS_JA = { options: { top: '先頭', bottom: '末尾', - 'below-selected-note': '選択ノートの下', + belowSelectedNote: '選択ノートの下', unsorted: '未ソート' } }, @@ -1220,7 +1264,7 @@ export const STRINGS_JA = { 'リストペインで 1 つのノートを選択するか複数選択し、**Cmd/Ctrl + Arrow Up/Down** を押すと選択範囲を上下に移動できます。' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'リスト変更時に選択ファイルへスクロール', desc: 'ノートのピン留め、子孫ノートの表示、フォルダ外観の変更、ファイル操作の実行時に選択したファイルへスクロールします。' }, @@ -1228,15 +1272,15 @@ export const STRINGS_JA = { name: 'サブフォルダ / 子孫のノートを表示', desc: 'フォルダ、タグ、またはプロパティを表示するとき、入れ子のサブフォルダとタグおよびプロパティの子孫にあるノートを含めます。' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'ノートを自身のフォルダーでのみ固定', desc: '固定したノートは自身のフォルダーでのみ固定済みとして表示されます。フォルダーノートや固定ノートが多い場合に便利です。タグやプロパティビューには影響しません。' }, - separateNoteCounts: { + separateFileCounts: { name: '現在と子孫のファイル数を個別に表示', desc: 'フォルダ、タグ、プロパティのファイル数を「現在 ▾ 子孫」形式で表示します。' }, - groupNotes: { + defaultGrouping: { name: 'デフォルトのグループ化', desc: '**ヘッダー**は並び順を変えずに、並べ替えたリストに見出しを付けます。カスタムは frontmatter で定義されたヘッダーを表示し、日付は日付ヘッダーを挿入します。**グループ**はリストを並べ替えます。フォルダとプロパティのグループは独自に並び、各グループ内のノートは並び順に従います。', families: { @@ -1249,7 +1293,7 @@ export const STRINGS_JA = { folder: 'フォルダ' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'タグとプロパティのピルを常に表示', desc: '無効の場合、現在のナビゲーション選択に一致するピルは非表示になります(例:「レシピ」タグを閲覧中は「レシピ」タグのピルが非表示になります)。有効にすると、すべてのピルが常に表示されます。' }, @@ -1257,7 +1301,7 @@ export const STRINGS_JA = { name: 'グループヘッダーを固定', desc: 'スクロール中も現在の日付・フォルダ・プロパティ・ピン留めセクションのヘッダーを表示し続けます。' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'サブフォルダーのパスを表示', desc: 'リストペインでフォルダー別にグループ化する場合、フォルダー名だけでなくサブフォルダーのパスを表示します。' }, @@ -1285,9 +1329,9 @@ export const STRINGS_JA = { name: '未完了タスクアイコン', desc: 'ノートに未完了のタスクがある場合にファイルアイコンを置き換えます。', options: { - none: '無効', + disabled: '無効', compact: 'コンパクトモード', - all: '標準とコンパクト' + standardAndCompact: '標準とコンパクト' } }, useFolderIcon: { @@ -1310,7 +1354,7 @@ export const STRINGS_JA = { name: 'タスクの進捗: 完了時に非表示', desc: 'ノートのすべてのタスクが完了したらタスク進捗を非表示にします。' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: '未完了タスク背景', desc: 'ノートに未完了のタスクがある場合に背景色を適用します。' }, @@ -1318,7 +1362,7 @@ export const STRINGS_JA = { name: '未完了タスクの背景色', desc: 'ノートに未完了のタスクがある場合に使用する背景色を設定します。' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'ファイル名でアイコン設定', desc: 'ファイル名のテキストに基づいてアイコンを割り当てます。' }, @@ -1328,7 +1372,7 @@ export const STRINGS_JA = { placeholder: '# テキスト=アイコン\n会議=ph-calendar\n請求書=ph-receipt', editTooltip: 'マッピングを編集' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'ファイルタイプでアイコン設定', desc: 'ファイルの拡張子に基づいてアイコンを割り当てます。' }, @@ -1336,7 +1380,7 @@ export const STRINGS_JA = { name: 'ファイルアイコンプリセット', desc: '内蔵アイコンまたはアイコンパックのプリセットを選択します。カスタム拡張子ルールはこのプリセットを上書きします。', options: { - none: '内蔵アイコン' + builtIn: '内蔵アイコン' }, notInstalledWarning: 'このアイコンパックはインストールされていません。代わりに内蔵アイコンが表示されます。' }, @@ -1359,11 +1403,11 @@ export const STRINGS_JA = { name: '親フォルダを表示', desc: 'サブフォルダ、タグ、またはプロパティ内のノートに親フォルダ名を表示します。' }, - showParentFolderFullPath: { + showFolderPath: { name: 'フォルダパスを表示', desc: 'フォルダ名のみではなく、選択中のフォルダからの相対パスを表示します。タグとプロパティではフルパスを表示します。' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: '親フォルダクリックでフォルダを開く', desc: '親フォルダラベルをクリックするとリストペインでフォルダを開きます。' }, @@ -1391,7 +1435,7 @@ export const STRINGS_JA = { vertical: '垂直分割' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'サイドバーが狭すぎる場合', desc: 'ナビゲーションペインとリストペインを横に並べられない場合の動作を選択します。', options: { @@ -1400,7 +1444,7 @@ export const STRINGS_JA = { vertical: '縦分割に切り替え' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: '狭いサイドバーのしきい値', desc: 'サイドバー幅のしきい値の計算方法を選択します。', options: { @@ -1408,41 +1452,41 @@ export const STRINGS_JA = { customWidth: 'カスタム幅' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: '狭いサイドバーのしきい値幅', desc: 'サイドバーがこの幅より狭い場合に切り替えます。', resetTooltip: '既定の幅に戻す' }, - appearanceBackground: { + paneBackgroundColor: { name: '背景色', desc: 'ナビゲーションペインとリストペインの背景色を選択します。', options: { separate: '背景を分ける', - primary: 'リストの背景を使用', - secondary: 'ナビゲーションの背景を使用' + listBackground: 'リストの背景を使用', + navigationBackground: 'ナビゲーションの背景を使用' } }, - appearanceScale: { + zoomLevel: { name: 'ズームレベル', desc: 'Notebook Navigator 全体のズームレベルを制御します(パーセント)。' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'iOSでフローティングツールバーを使用', desc: 'iOSでのみ適用されます。' }, - startView: { + defaultStartupView: { name: 'デフォルト起動ビュー', desc: 'Notebook Navigator を開いたときにアクティブになるペインを選択します。シングルペインレイアウトではこのペインが最初に表示され、デュアルペインレイアウトではこのペインにキーボードフォーカスが移ります。', options: { navigation: 'ナビゲーションペイン', - files: 'リストペイン' + listPane: 'リストペイン' } }, toolbarButtons: { name: 'ツールバーボタン', desc: 'ツールバーに表示するボタンを選択します。非表示のボタンはコマンドとメニューから引き続き利用できます。' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: '新しいノートを新しいタブで開く', desc: '有効にすると、「新しいノートを作成」コマンドでノートが新しいタブに開きます。無効にすると、ノートは現在のタブに置き換わります。' }, @@ -1462,20 +1506,20 @@ export const STRINGS_JA = { name: '自動表示: 他のウィンドウのイベントを無視', desc: '別のウィンドウでノートを操作しているときにアクティブノートを変更しません。' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'シングルペインアニメーション', desc: 'シングルペインモードでペイン切り替え時のトランジション時間(ミリ秒)。', resetTooltip: 'デフォルトにリセット' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: '最初のノートを自動選択', desc: 'フォルダ、タグ、またはプロパティを切り替えた際に自動的に最初のノートを開きます。' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'ショートカットの自動スクロールを無効化', desc: 'ショートカット内のアイテムをクリックしてもナビゲーションパネルをスクロールしない。' }, - autoExpandNavItems: { + expandOnSelection: { name: '選択時に展開', desc: '選択時にフォルダとタグを展開します。シングルペインモードでは、最初の選択で展開、2回目の選択でファイルを表示します。' }, @@ -1513,16 +1557,16 @@ export const STRINGS_JA = { name: 'ショートカットバッジ', desc: 'ショートカットの横に表示する内容。「ショートカット1-9を開く」コマンドでショートカットを直接開けます。', options: { - index: '位置 (1-9)', + position: '位置 (1-9)', count: 'アイテム数', none: 'なし' } }, - showRecentNotes: { + showRecentFiles: { name: '最近のファイルを表示', desc: 'ナビゲーションペインに最近のファイルセクションを表示します。' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: '最近のファイルからファイルの種類を非表示', desc: '最近のファイルセクションで非表示にするファイルの種類を選択します。', options: { @@ -1530,15 +1574,15 @@ export const STRINGS_JA = { folderNotes: 'フォルダノート' } }, - recentNotesCount: { + recentFilesCount: { name: '最近のファイル数', desc: '表示する最近のファイルの数。' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: '最近のファイルをショートカットと一緒に固定', desc: 'ショートカットを固定するときに最近のファイルを含める。' }, - calendarEnabled: { + enableCalendar: { name: 'カレンダーを有効化', desc: 'Notebook Navigatorのカレンダー機能を有効にします。' }, @@ -1550,12 +1594,12 @@ export const STRINGS_JA = { rightSidebar: '右サイドバー' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'シングルペイン配置', desc: 'シングルペインモードでのカレンダー表示位置。', options: { navigationPane: 'ナビゲーションペイン', - below: 'ペインの下' + belowPanes: 'ペインの下' } }, calendarLocale: { @@ -1576,7 +1620,7 @@ export const STRINGS_JA = { thuFri: '木曜日と金曜日' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: '月名の形式', desc: '月名を長い形式 (1月) または短い形式 (1月) で表示します。', options: { @@ -1588,7 +1632,7 @@ export const STRINGS_JA = { name: '情報ボタンを表示', desc: '検索バーとカレンダーヘッダーに情報ボタンを表示します。' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: '左サイドバーの表示週数', desc: '右サイドバーのカレンダーは常に月全体を表示します。', options: { @@ -1633,7 +1677,7 @@ export const STRINGS_JA = { name: '非表示項目を表示', desc: '有効にすると、カレンダーには常にすべてのカレンダーノートが表示され、保管庫プロファイルのフィルターで非表示になっているノートも含まれます。' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'デイリーノートのソース', desc: 'カレンダーノートのソース。', options: { @@ -1653,34 +1697,38 @@ export const STRINGS_JA = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'ルートフォルダ', desc: '定期ノートの基本フォルダ。日付パターンにはサブフォルダを含めることができます。選択されたボールトプロファイルで変更されます。', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'テンプレートフォルダの場所', desc: 'テンプレートファイルピッカーはこのフォルダからノートを表示します。', placeholder: 'Templates', usage: 'カレンダーノートとフォルダノートで使用されます。テンプレートは カレンダー > カレンダー連携 と フォルダとフォルダノート > フォルダノートファイル で設定します。' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'デイリーノート', desc: 'Moment 日付フォーマットを使用してパスを指定。サブフォルダ名は角括弧で囲みます(例:[Work]/YYYY)。テンプレートアイコンをクリックしてテンプレートを設定。 テンプレートフォルダの場所はファイル操作 > テンプレートで設定してください。', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'パターンは完全な日付(年、月、日)としてフォーマットされ、再度パースできる必要があります。' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: '', momentLinkText: 'Moment 日付フォーマット', momentDescSuffix: 'を使用してパスを指定。サブフォルダ名は角括弧で囲みます(例:[Work]/YYYY)。テンプレートアイコンをクリックしてテンプレートを設定。 テンプレートフォルダの場所はファイル操作 > テンプレートで設定してください。', - templaterSupportInstalled: '✅ Templater プラグインがインストールされており、テンプレートの完全サポートが利用できます。', - templaterSupportMissing: '⚠️ テンプレートのサポートを利用するには、Templater プラグインをインストールしてください。', templateTokenNoticeLabel: '重要!', templateTokenNotice: 'テンプレートのサポートには Templater プラグインが必要です。{{date}} や {{title}} などの組み込み形式は、{source} が {option} に設定されている場合にのみ使用できます。', - placeholder: 'YYYY/YYYYMMDD', - example: '現在の構文: {path}', - parsingError: 'パターンは完全な日付(年、月、日)としてフォーマットされ、再度パースできる必要があります。' + example: '現在の構文: {path}' + }, + templaterSupport: { + installed: '✅ Templater プラグインがインストールされており、テンプレートの完全サポートが利用できます。', + missing: '⚠️ テンプレートのサポートを利用するには、Templater プラグインをインストールしてください。' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'ウィークリーノート', parsingError: 'パターンは完全な週(週年、週番号)としてフォーマットされ、再度パースできる必要があります。', weekPathMismatchWarning: @@ -1688,19 +1736,19 @@ export const STRINGS_JA = { mixedWeekTokensWarning: 'このパターンは月曜日基準の週トークン("W" または "G")とロケール基準の週トークン("w" または "g")を混在させています。一貫して 1 つのセットを使用してください。月曜日から始まる週には "GGGG" と "WW"、ウィークリーノートが選択したロケールに従う場合は "gggg" と "ww" を使用してください。' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'マンスリーノート', parsingError: 'パターンは完全な月(年、月)としてフォーマットされ、再度パースできる必要があります。' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: '四半期ノート', parsingError: 'パターンは完全な四半期(年、四半期)としてフォーマットされ、再度パースできる必要があります。' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: '年次ノート', parsingError: 'パターンは完全な年(年)としてフォーマットされ、再度パースできる必要があります。' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'テンプレートファイル: {name}' }, showTooltips: { @@ -1721,7 +1769,7 @@ export const STRINGS_JA = { buttonText: 'セパレーターをリセット', notice: 'セパレーターの位置がリセットされました。Obsidianを再起動するか、Notebook Navigatorを開き直して適用してください。' }, - settingsTransfer: { + importAndExportSettings: { name: '設定のインポートとエクスポート', desc: 'Notebook Navigatorの設定をJSONとしてエクスポートまたはインポートします。インポートするとすべての設定が置き換えられます。', importButtonText: 'インポート', @@ -1779,15 +1827,15 @@ export const STRINGS_JA = { name: 'Enterキーでファイルを開く', desc: 'リストのキーボード操作中にEnterキーを押したときのみファイルを開きます。macOSでは、Enterキーでファイル名が変更されないようにします。' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'Shift+Enterで選択したファイルを開くか名前を変更するかを選択します。' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'Cmd+Enterで選択したファイルを開くか名前を変更するかを選択します。' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'Ctrl+Enterで選択したファイルを開くか名前を変更するかを選択します。' }, @@ -1795,17 +1843,17 @@ export const STRINGS_JA = { name: 'マウスの戻る/進むボタン', desc: 'デスクトップでのマウスの戻る/進むボタンの動作。', options: { - none: 'システムのデフォルトを使用', + systemDefault: 'システムのデフォルトを使用', singlePaneSwitch: 'ペイン切り替え(シングルペイン)', history: '履歴をナビゲート' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'プロパティルールでノートを非表示 (ボルトプロファイル)', desc: 'カンマ区切りのフロントマタールールのリスト。`key` または `key=value` エントリを使用します(例:status=done, published=true, archived)。', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'ファイルを非表示 (ボルトプロファイル)', desc: '非表示にするファイル名パターンのカンマ区切りリスト。* ワイルドカードと / パスをサポート(例:temp-*、*.png、/assets/*)。', placeholder: 'temp-*, *.png, /assets/*' @@ -1832,7 +1880,7 @@ export const STRINGS_JA = { duplicateName: 'プロファイル名は既に存在します' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'ボルトタイトルの配置', desc: 'ボルトタイトルの表示場所を選択します。', options: { @@ -1840,7 +1888,7 @@ export const STRINGS_JA = { navigation: 'ナビゲーションペインに表示' } }, - excludedFolders: { + hideFolders: { name: 'フォルダを非表示 (ボルトプロファイル)', desc: '非表示にするフォルダのカンマ区切りリスト。名前パターン: assets*(assetsで始まるフォルダ)、*_temp(_tempで終わる)。パスパターン: /archive(ルートのアーカイブのみ)、/res*(resで始まるルートフォルダ)、/*/temp(1階層下のtempフォルダ)、/projects/*(projects内のすべてのフォルダ)。', placeholder: 'templates, assets*, /archive, /res*' @@ -1850,7 +1898,7 @@ export const STRINGS_JA = { desc: 'サブフォルダからノートを収集するときに除外するフォルダのカンマ区切りリスト。フォルダは表示されたままで、選択するとそのノートは引き続き表示されます。「フォルダを非表示」と同じパターンを使用します。', placeholder: '日記, リソース, /archive' }, - fileVisibility: { + showFileTypes: { name: 'ファイルタイプを表示 (ボルトプロファイル)', desc: 'ナビゲーターに表示されるファイルタイプをフィルタリングします。Obsidianでサポートされていないファイルタイプは、外部アプリケーションで開かれる場合があります。', options: { @@ -1886,7 +1934,7 @@ export const STRINGS_JA = { name: '日付を表示', desc: 'ノート名の下に日付を表示します。' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: '名前でソート時', desc: 'ノートが名前でソートされている場合に表示する日付。', options: { @@ -1898,7 +1946,7 @@ export const STRINGS_JA = { name: 'ファイルタグを表示', desc: 'ファイルアイテムにクリック可能なタグを表示します。' }, - showFileTagAncestors: { + showFullTagPaths: { name: '完全なタグパスを表示', desc: "タグの完全な階層パスを表示します。有効時: 'ai/openai', 'work/projects/2024'。無効時: 'openai', '2024'。" }, @@ -1906,7 +1954,7 @@ export const STRINGS_JA = { name: 'ファイルタグに色を付ける', desc: 'ファイルアイテムのタグバッジにタグの色を適用します。' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: '色付きタグを先頭に配置', desc: '色付きタグを他のタグより前に並べ替えます。' }, @@ -1922,7 +1970,7 @@ export const STRINGS_JA = { name: 'ファイルプロパティに色を付ける', desc: 'ファイル項目のプロパティバッジにプロパティの色を適用します。' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: '色付きプロパティを先に表示', desc: 'ファイル項目で色付きプロパティを他のプロパティより前に並べ替えます。' }, @@ -1930,7 +1978,7 @@ export const STRINGS_JA = { name: 'コンパクトモードでプロパティを表示', desc: 'コンパクトモードが有効な時にプロパティを表示します。' }, - textCountDisplay: { + textCountType: { name: 'カウントの種類', desc: 'ファイル項目に表示するテキストのカウントを選択します。', options: { @@ -1960,11 +2008,11 @@ export const STRINGS_JA = { name: '目標プロパティ', desc: '目標単語数を含むフロントマターのプロパティキー。目標を非表示にするには空にします。' }, - showWordCountPercentage: { + showTargetPercentage: { name: '目標パーセントを表示', desc: '目標単語数がある場合、進捗パーセントのみを表示します。' }, - propertyFields: { + propertyKeys: { name: 'プロパティキー(保管庫プロファイル)', desc: 'フロントマターのプロパティキー。キーごとにナビゲーションとファイルリストの表示を設定できます。', addButtonTooltip: 'プロパティキーを設定', @@ -1976,11 +2024,11 @@ export const STRINGS_JA = { name: 'プロパティを別の行に表示', desc: '各プロパティを個別の行に表示します。' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'プロパティピルをノートにリンク', desc: 'プロパティピルをクリックしてリンク先のノートを開きます。' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: 'プロパティピルをURLにリンク', desc: 'プロパティピルをクリックしてリンク先のURLを開きます。' }, @@ -2000,7 +2048,7 @@ export const STRINGS_JA = { helpTooltip: 'Moment形式', momentLinkText: 'Moment フォーマット' }, - showFilePreview: { + showNotePreview: { name: 'ノートプレビューを表示', desc: 'ノート名の下にプレビューテキストを表示します。' }, @@ -2029,7 +2077,7 @@ export const STRINGS_JA = { desc: 'プレビューテキストを検索するフロントマタープロパティのカンマ区切りリスト。テキストがある最初のプロパティが使用されます。', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'ノート内容にフォールバック', desc: '指定されたプロパティにテキストが含まれていない場合、ノート内容をプレビューとして表示します。' }, @@ -2044,7 +2092,7 @@ export const STRINGS_JA = { '5': '5行' } }, - fileNameRows: { + titleRows: { name: 'タイトル行数', desc: 'ノートタイトルの表示行数。', options: { @@ -2075,22 +2123,22 @@ export const STRINGS_JA = { desc: 'フロントマタープロパティのカンマ区切りリスト。これらのプロパティを含むノートはフィーチャー画像を保存しません。', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'フィーチャー画像の表示サイズ', desc: 'ノートリストでのフィーチャー画像の最大レンダリングサイズ。', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'フィーチャー画像のピクセルサイズ', desc: '保存されるフィーチャー画像サムネイルの生成時に使用される解像度。大きなプレビューがぼやける場合はこの値を上げてください。', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2098,7 +2146,7 @@ export const STRINGS_JA = { name: '外部画像をダウンロード', desc: 'リモート画像とYouTubeサムネイルをフィーチャー画像としてダウンロードします。' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'エクスポートされたプレビュー画像を非表示', desc: 'エクスポートされた描画プレビューの PNG ファイルを非表示にします。表示するには「非表示の項目を表示」をオンにしてください。' }, @@ -2131,11 +2179,11 @@ export const STRINGS_JA = { alphaDesc: 'Z から A' } }, - showNoteCount: { + showFileCount: { name: 'ファイル数を表示', desc: 'フォルダ、タグ、プロパティの横にファイル数を表示します。' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'ショートカットと最近の項目のアイコンを表示', desc: 'ショートカットと最近使用したファイルセクション内の項目の横にアイコンを表示します。' }, @@ -2144,7 +2192,7 @@ export const STRINGS_JA = { desc: 'ツールバー、フォルダ、タグ、プロパティ、ピン留め、検索、並べ替えのアイコンを編集します。', buttonText: 'アイコンを編集' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'アイコンのみに色を適用', desc: '有効にすると、カスタムカラーはアイコンのみに適用されます。無効にすると、アイコンとテキストラベルの両方に色が適用されます。' }, @@ -2152,9 +2200,9 @@ export const STRINGS_JA = { name: 'レインボーカラーモード(保管庫プロファイル)', desc: 'ナビゲーションペインにレインボーカラーを適用します。', options: { - none: 'オフ', - foreground: 'テキストカラー', - background: '背景色' + off: 'オフ', + textColor: 'テキストカラー', + backgroundColor: '背景色' } }, navRainbowFirstColor: { @@ -2177,7 +2225,7 @@ export const STRINGS_JA = { name: 'ショートカットに適用', desc: 'レインボーカラーをショートカットに適用します。' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: '最近の項目に適用', desc: 'レインボーカラーを最近の項目に適用します。' }, @@ -2211,7 +2259,7 @@ export const STRINGS_JA = { name: 'プロパティに適用', desc: 'レインボーカラーをプロパティに適用します。' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: '色相間で一貫した明るさ', // (English: Consistent brightness across hues) desc: '色相の遷移中に開始色と終了色の間で明るさを補間します。' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2229,7 +2277,7 @@ export const STRINGS_JA = { all: 'すべてのレベル' } }, - collapseBehavior: { + collapseItems: { name: '項目を折りたたむ', desc: '展開/折りたたみボタンが影響する項目を選択します。', options: { @@ -2239,7 +2287,7 @@ export const STRINGS_JA = { propertiesOnly: 'プロパティのみ' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: '選択中の項目を展開したままにする', desc: '折りたたむ時、選択中の項目とその親を展開したままにします。' }, @@ -2247,7 +2295,7 @@ export const STRINGS_JA = { name: '折りたたみ時にボールトのルートをスキップ', desc: 'すべての項目を折りたたむ時、ボールトのルートフォルダを現在の状態のままにします。' }, - navIndent: { + treeIndentation: { name: 'ツリーインデント', desc: 'ネストされたフォルダ、タグ、プロパティのインデント幅を調整します(ピクセル)。' }, @@ -2273,7 +2321,7 @@ export const STRINGS_JA = { line: '線' } }, - navRootSpacing: { + rootItemSpacing: { name: 'ルート要素の間隔', desc: '最上位のフォルダ、タグ、プロパティの間隔(ピクセル)。' }, @@ -2300,15 +2348,15 @@ export const STRINGS_JA = { highToLow: '高→低' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'タグフォルダを表示', desc: '「タグ」を折りたたみ可能なフォルダとして表示します。' }, - showUntagged: { + showUntaggedNotes: { name: 'タグなしノートを表示', desc: 'タグのないノート用に「タグなし」項目を表示します。' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: '選択内容でタグを絞り込む', desc: '選択したフォルダーまたはプロパティ内のノートに含まれるタグのみ表示します。' }, @@ -2342,20 +2390,20 @@ export const STRINGS_JA = { highToLow: '高い順' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'プロパティフォルダを表示', desc: '「プロパティ」を折りたたみ可能なフォルダとして表示します。' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: '選択内容でプロパティを絞り込む', desc: '選択したフォルダーまたはタグ内のノートに含まれるプロパティのみ表示します。' }, - hiddenTags: { + hideTags: { name: 'タグを非表示 (ボルトプロファイル)', desc: 'カンマ区切りのタグパターンリスト。名前パターン: tag*(で始まる)、*tag(で終わる)。パスパターン: archive(タグと子孫)、archive/*(子孫のみ)、projects/*/drafts(中間ワイルドカード)。', placeholder: 'archive*, *draft, projects/*/old' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'タグ付きノートを非表示 (ボルトプロファイル)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2388,7 +2436,7 @@ export const STRINGS_JA = { desc: 'フォルダノート作成時に使用するテンプレートファイル。MarkdownテンプレートではTemplaterを使用できます。CanvasとBaseテンプレートはファイル内容としてコピーされます。テンプレートフォルダの場所はファイル操作 > テンプレートで設定してください。', formatWarning: 'テンプレート形式は選択したフォルダノートの種類と一致している必要があります: .md、.canvas、.base。' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'フォルダ名でフォルダノートを開く', desc: 'フォルダ名をクリックすると、そのフォルダノートを開きます。オフの場合、フォルダノートは名前、アイコン、色などのフォルダメタデータのみを提供します。' }, @@ -2409,7 +2457,7 @@ export const STRINGS_JA = { rightSidebar: '右サイドバー' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: '右サイドバー: 最も近いフォルダノートを表示', desc: 'フォルダを選択すると、右サイドバーに最も近い上位フォルダノートが自動的に表示されます。' }, @@ -2452,7 +2500,7 @@ export const STRINGS_JA = { indexingTitle: 'ボールトをインデックス中...', progress: 'Notebook Navigator のキャッシュを更新しています.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'ダウンロード', downloadingLabel: 'ダウンロード中...', removeButton: '削除', @@ -2464,11 +2512,11 @@ export const STRINGS_JA = { infoNote: 'ダウンロードしたアイコンパックはデバイス間でインストール状態を同期します。アイコンパックは各デバイスのローカルデータベースに保存されます。同期はダウンロードまたは削除の必要性のみを追跡します。アイコンパックはNotebook Navigatorリポジトリからダウンロードされます (https://github.com/johansan/notebook-navigator/tree/main/icon-assets)。' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'フロントマターメタデータを使用', desc: 'ノート名、タイムスタンプ、アイコン、色にフロントマターを使用' }, - frontmatterNameField: { + frontmatterNameFields: { name: '名前フィールド(複数可)', desc: 'フロントマターフィールドのカンマ区切りリスト。最初の空でない値を使用。ファイル名にフォールバック。', placeholder: 'title, name' @@ -2488,7 +2536,7 @@ export const STRINGS_JA = { desc: '背景色用のフロントマターフィールド。空のままにすると設定に保存された背景色を使用。', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: '設定からアイコンと色を移行', desc: '設定に保存: アイコン {icons} 個、色 {colors} 個。', button: '移行', @@ -2508,7 +2556,7 @@ export const STRINGS_JA = { desc: '変更タイムスタンプのフロントマターフィールド名。空のままにするとファイルシステムの日付のみを使用。', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'タイムスタンプ形式', desc: 'フロントマター内のタイムスタンプを解析するために使用される形式。空のままにするとISO 8601解析を使用。', helpTooltip: 'Moment形式', @@ -2521,12 +2569,12 @@ export const STRINGS_JA = { buttonText: '❤️ スポンサーになる', coffeeButton: '☕️ コーヒーをおごる' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: '起動時に新しいバージョンを確認', desc: '起動時に新しいプラグインリリースを確認し、アップデートが利用可能な場合に通知を表示します。確認は最大1日1回行われます。', status: '新しいバージョンが利用可能: {version}' }, - debugLogging: { + startupDebugLogging: { name: '起動デバッグログ', desc: '起動診断を保管庫のルートにタイムスタンプ付きの Markdown ファイルとして書き込み、起動が落ち着いた後に停止します。このファイルは同期される場合があり、ファイルパスを含むことがあります。' }, diff --git a/src/i18n/locales/ko.ts b/src/i18n/locales/ko.ts index 9d788f08e..f467017b9 100644 --- a/src/i18n/locales/ko.ts +++ b/src/i18n/locales/ko.ts @@ -73,6 +73,9 @@ export const STRINGS_KO = { shortcutsHeader: '바로가기', recentFilesHeader: '최근 파일', // Header label for recent files section in navigation pane (English: Recent files) properties: '속성', + folders: '폴더', + tags: '태그', + calendar: '달력', reorderRootFoldersTitle: '내비게이션 재정렬', reorderRootFoldersHint: '화살표 또는 드래그로 재정렬', vaultRootLabel: '보관함', @@ -1008,101 +1011,142 @@ export const STRINGS_KO = { exportSuccess: '메타데이터 보고서 내보내기 실패: {filename}', exportFailed: '메타데이터 보고서 내보내기 실패' }, - sections: { - general: '일반', - vaultFilters: '표시 필터', - appearanceBehavior: '모양 및 동작', - navigationPane: '탐색 창', - calendar: '달력', - fileOperations: '파일 작업', - icons: '아이콘 팩', - folders: '폴더', - folderNotes: '폴더 노트', - folderNoteFiles: '폴더 노트 파일', - foldersAndFolderNotes: '폴더 및 폴더 노트', - tagsAndProperties: '태그 및 속성', - tags: '태그', - listPane: '목록 창', - notes: '파일 표시', - shortcutsAndRecentFiles: '바로 가기 및 최근 파일', - advanced: '고급' + index: { + label: '일반', + description: '릴리스 노트, 지원, 보관소 프로필, 파일 유형, 속성 키.', + groups: { + vaultSetup: '보관소 설정' + } }, pageGroups: { configuration: '구성', - navigationAndContent: '탐색 창', - notesAndLists: '목록 창', + navigationPane: '탐색 창', + listPane: '목록 창', calendarAndTools: '달력 및 도구' }, - pageDescriptions: { - general: '릴리스 노트, 지원, 보관소 프로필, 파일 유형, 속성 키.', - vaultFilters: '숨겨진 폴더, 태그, 파일, 파일 태그 및 속성 규칙.', - appearanceBehavior: '동작, 키보드 탐색, 마우스 버튼, 모양 및 서식.', - navigationPane: '레이아웃, 모양, 파일 수, 접기 동작 및 무지개 색상.', - shortcuts: '바로 가기 표시, 배지, 최근 파일 및 고정된 항목.', - calendar: '달력 표시, 날짜 노트, 템플릿, 로케일 및 사이드바 위치.', - fileOperations: '템플릿, 삭제 확인, 첨부 파일 및 파일 이동 충돌 동작.', - foldersAndFolderNotes: '폴더 표시, 폴더 노트, 폴더 노트 템플릿 및 폴더 노트 동작.', - tagsProperties: '태그 및 속성 섹션, 아이콘, 정렬, 범위 및 상속.', - listPane: '정렬, 그룹화, 목록 모드, 고정된 노트 및 그림 미리보기.', - frontmatter: '표시 이름, 타임스탬프, 아이콘, 색상에 대한 프런트매터 필드.', - notes: '제목, 미리보기 텍스트, 대표 이미지, 태그, 속성, 날짜, 단어 수 및 문자 수.', - iconPacks: '인터페이스 아이콘, 파일 아이콘 및 아이콘 팩 관리.', - advanced: '진단, 메타데이터 정리, 가져오기/내보내기 및 초기화.' - }, - groups: { - general: { - vaultConfiguration: '보관소 설정', - templates: '템플릿', - behavior: '동작', - startup: '시작', - keyboardNavigation: '키보드 탐색', - mouseButtons: '마우스 버튼', - view: '모양', - icons: '아이콘', - desktopAppearance: '데스크톱 모양새', - mobileAppearance: '모바일 모양', - formatting: '서식' + pages: { + displayFilters: { + label: '표시 필터', + description: '숨겨진 폴더, 태그, 파일, 파일 태그 및 속성 규칙.' + }, + appearanceAndBehavior: { + label: '모양 및 동작', + description: '동작, 키보드 탐색, 마우스 버튼, 모양 및 서식.', + groups: { + startup: '시작', + keyboardNavigation: '키보드 탐색', + mouseButtons: '마우스 버튼', + desktopAppearance: '데스크톱 모양새', + mobileAppearance: '모바일 모양', + appearance: '모양', + icons: '아이콘', + formatting: '서식' + } + }, + navigationPane: { + label: '탐색 창', + description: '레이아웃, 모양, 파일 수, 접기 동작 및 무지개 색상.', + groups: { + appearance: '모양', + banner: '배너', + collapseItems: '항목 접기', + dragAndDrop: '끌어서 놓기', + fileCounts: '파일 수', + rainbowColors: '무지개 색상' + } + }, + shortcutsAndRecentFiles: { + label: '바로 가기 및 최근 파일', + description: '바로 가기 표시, 배지, 최근 파일 및 고정된 항목.', + groups: { + shortcuts: '바로가기', + recentFiles: '최근 파일' + } + }, + foldersAndFolderNotes: { + label: '폴더 및 폴더 노트', + description: '폴더 표시, 폴더 노트, 폴더 노트 템플릿 및 폴더 노트 동작.', + groups: { + folders: '폴더', + folderNotes: '폴더 노트', + folderNoteFiles: '폴더 노트 파일' + } + }, + tagsAndProperties: { + label: '태그 및 속성', + description: '태그 및 속성 섹션, 아이콘, 정렬, 범위 및 상속.', + groups: { + tags: '태그', + properties: '속성' + } + }, + listPane: { + label: '목록 창', + description: '정렬, 그룹화, 목록 모드, 고정된 노트 및 그림 미리보기.', + groups: { + appearance: '모양', + sortAndGroup: '정렬 및 그룹화', + groupHeaders: '그룹 머리글', + manualSort: '수동 정렬', + pinnedNotes: '고정된 노트', + behavior: '동작', + drawingPreviews: '그림 미리보기' + } + }, + fileOperations: { + label: '파일 작업', + description: '템플릿, 삭제 확인, 첨부 파일 및 파일 이동 충돌 동작.', + groups: { + templates: '템플릿' + } + }, + frontmatterFields: { + label: '프런트매터 필드', + description: '표시 이름, 타임스탬프, 아이콘, 색상에 대한 프런트매터 필드.' + }, + fileDisplay: { + label: '파일 표시', + description: '제목, 미리보기 텍스트, 대표 이미지, 태그, 속성, 날짜, 단어 수 및 문자 수.', + groups: { + icon: '아이콘', + title: '제목', + previewText: '미리보기 텍스트', + featureImage: '대표 이미지', + tags: '태그', + properties: '속성', + tasks: '작업', + date: '날짜', + parentFolder: '상위 폴더', + wordAndCharacterCount: '단어 및 문자 수' + } + }, + calendar: { + label: '달력', + description: '달력 표시, 날짜 노트, 템플릿, 로케일 및 사이드바 위치.', + groups: { + appearance: '모양', + leftSidebar: '왼쪽 사이드바', + calendarIntegration: '캘린더 연동', + rightSidebar: '오른쪽 사이드바' + } + }, + iconPacks: { + label: '아이콘 팩', + description: '인터페이스 아이콘, 파일 아이콘 및 아이콘 팩 관리.' }, advanced: { - maintenance: '유지 관리', - resetSettings: '설정 초기화' - }, - navigation: { - appearance: '모양', - banner: '배너', - collapseItems: '항목 접기', - dragAndDrop: '끌어서 놓기', - noteCounts: '파일 수', - rainbowColors: '무지개 색상', - leftSidebar: '왼쪽 사이드바', - calendarIntegration: '캘린더 연동' - }, - list: { - display: '모양', - sortAndGroup: '정렬 및 그룹화', - groupHeaders: '그룹 머리글', - manualSort: '수동 정렬', - pinnedNotes: '고정된 노트', - drawingPreviews: '그림 미리보기' - }, - notes: { - frontmatter: '프런트매터 필드', - tasks: '작업', - icon: '아이콘', - title: '제목', - previewText: '미리보기 텍스트', - featureImage: '대표 이미지', - tags: '태그', - properties: '속성', - date: '날짜', - parentFolder: '상위 폴더', - wordCount: '단어 및 문자 수' + label: '고급', + description: '진단, 메타데이터 정리, 가져오기/내보내기 및 초기화.', + groups: { + maintenance: '유지 관리', + resetSettings: '설정 초기화' + } } }, syncMode: { notSynced: '(동기화되지 않음)', - switchToSynced: '동기화 활성화', - switchToLocal: '동기화 비활성화' + enableSync: '동기화 활성화', + disableSync: '동기화 비활성화' }, items: { listPaneTitle: { @@ -1110,11 +1154,11 @@ export const STRINGS_KO = { desc: '목록 창 제목을 표시할 위치를 선택하세요.', options: { header: '헤더에 표시', - list: '목록 창에 표시', + listPane: '목록 창에 표시', hidden: '표시하지 않음' } }, - sortNotesBy: { + defaultSortOrder: { name: '기본 정렬 순서', desc: '노트의 기본 정렬 순서를 선택하세요. 정렬에 사용할 속성의 속성이 추가 정렬 옵션으로 표시됩니다.', directions: { @@ -1122,18 +1166,18 @@ export const STRINGS_KO = { desc: '내림차순' }, dateDirections: { - desc: '최신 상위', - asc: '오래된 상위' + newestOnTop: '최신 상위', + oldestOnTop: '오래된 상위' }, textDirections: { - asc: '가나다 상위', - desc: '역순 상위' + aOnTop: '가나다 상위', + zOnTop: '역순 상위' }, fields: { - modified: '수정 날짜', - created: '생성 날짜', + dateEdited: '수정 날짜', + dateCreated: '생성 날짜', title: '제목', - filename: '파일 이름', + fileName: '파일 이름', property: '속성' } }, @@ -1146,7 +1190,7 @@ export const STRINGS_KO = { follow: '정렬 순서 따르기' } }, - propertySortKey: { + sortingProperties: { name: '정렬에 사용할 속성', desc: '쉼표로 구분된 frontmatter 속성입니다. 각 속성은 기본 정렬 순서 설정과 목록 창의 정렬 메뉴에 정렬 옵션으로 표시됩니다. 이 속성들은 변경되지 않습니다.', placeholder: 'published, author', @@ -1156,14 +1200,14 @@ export const STRINGS_KO = { both: '속성을 더 이상 사용할 수 없어 기본 정렬 순서와 기본 그룹화가 초기화되었습니다.' } }, - propertySortSecondary: { + propertySecondarySort: { name: '보조 정렬', desc: '속성 정렬 사용 시 노트의 속성 값이 같거나 속성 값이 없을 때 적용됩니다.', options: { title: '제목', - filename: '파일 이름', - created: '생성 날짜', - modified: '편집 날짜' + fileName: '파일 이름', + dateCreated: '생성 날짜', + dateEdited: '편집 날짜' } }, propertySortInstructions: { @@ -1176,16 +1220,16 @@ export const STRINGS_KO = { '**태그 및 속성 보기:** **폴더** 그룹화를 선택하면 날짜 머리글이 대신 표시됩니다.' ] }, - propertyGroupKey: { + groupingProperties: { name: '그룹화에 사용할 속성', desc: '쉼표로 구분된 frontmatter 속성입니다. 각 속성은 기본 그룹화 설정과 목록 창의 정렬 메뉴에 그룹화 옵션으로 표시됩니다. 이 속성들은 변경되지 않습니다.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: '수동 정렬 속성', desc: '수동 정렬에서 숫자 인덱스 값을 저장하는 데 사용되는 frontmatter 속성입니다.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: '그룹 머리글 속성', desc: '사용자 지정 그룹 머리글을 저장하는 데 사용되는 frontmatter 속성입니다.' }, @@ -1202,7 +1246,7 @@ export const STRINGS_KO = { options: { top: '상단', bottom: '하단', - 'below-selected-note': '선택한 노트 아래', + belowSelectedNote: '선택한 노트 아래', unsorted: '정렬되지 않음' } }, @@ -1218,7 +1262,7 @@ export const STRINGS_KO = { '목록 창에서 한 노트를 선택하거나 여러 노트를 다중 선택한 다음, **Cmd/Ctrl + Arrow Up/Down**을 눌러 선택 항목을 위아래로 이동합니다.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: '목록 변경 시 선택된 파일로 스크롤', desc: '노트 고정, 하위 노트 표시, 폴더 모양 변경 또는 파일 작업 실행 시 선택된 파일로 스크롤합니다.' }, @@ -1226,15 +1270,15 @@ export const STRINGS_KO = { name: '하위 폴더 / 하위 항목 노트 표시', desc: '폴더, 태그 또는 속성을 볼 때 중첩된 하위 폴더와 태그 및 속성 하위 항목의 노트를 포함합니다.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: '노트를 해당 폴더에서만 고정', desc: '고정된 노트는 자신의 폴더에서만 고정된 것으로 표시됩니다. 폴더 노트이거나 고정된 노트가 많을 때 유용합니다. 태그 또는 속성 보기에는 영향을 주지 않습니다.' }, - separateNoteCounts: { + separateFileCounts: { name: '현재와 하위 파일 수를 별도로 표시', desc: '폴더, 태그, 속성의 파일 수를 "현재 ▾ 하위" 형식으로 표시합니다.' }, - groupNotes: { + defaultGrouping: { name: '기본 그룹화', desc: '**머리글**은 순서를 바꾸지 않고 정렬된 목록에 표시를 더합니다. 사용자 지정은 frontmatter에 정의된 머리글을 표시하고, 날짜는 날짜 머리글을 삽입합니다. **그룹**은 목록을 다시 정렬합니다. 폴더와 속성 그룹은 자체적으로 정렬되며 각 그룹 내의 노트는 정렬 순서를 따릅니다.', families: { @@ -1247,7 +1291,7 @@ export const STRINGS_KO = { folder: '폴더' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: '태그 및 속성 필을 항상 표시', desc: '비활성화하면 현재 탐색 선택과 일치하는 필이 숨겨집니다(예: "레시피" 태그를 탐색할 때 "레시피" 태그 필이 숨겨짐). 활성화하면 모든 필이 항상 표시됩니다.' }, @@ -1255,7 +1299,7 @@ export const STRINGS_KO = { name: '그룹 헤더 고정', desc: '스크롤하는 동안 현재 날짜, 폴더, 속성 또는 고정된 섹션 헤더를 계속 표시합니다.' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: '하위 폴더 경로 표시', desc: '목록 창에서 폴더별로 그룹화할 때 폴더 이름만 표시하는 대신 하위 폴더 경로를 표시합니다.' }, @@ -1283,9 +1327,9 @@ export const STRINGS_KO = { name: '미완료 작업 아이콘', desc: '노트에 미완료 작업이 있을 때 파일 아이콘을 바꿉니다.', options: { - none: '비활성화', + disabled: '비활성화', compact: '컴팩트 모드', - all: '표준 및 컴팩트' + standardAndCompact: '표준 및 컴팩트' } }, useFolderIcon: { @@ -1308,7 +1352,7 @@ export const STRINGS_KO = { name: '작업 진행률: 완료 시 숨기기', desc: '노트의 모든 작업이 완료되면 작업 진행률을 숨깁니다.' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: '미완료 작업 배경', desc: '노트에 미완료 작업이 있을 때 배경색을 적용합니다.' }, @@ -1316,7 +1360,7 @@ export const STRINGS_KO = { name: '미완료 작업 배경색', desc: '노트에 미완료 작업이 있을 때 사용할 배경색을 설정합니다.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: '파일 이름으로 아이콘 설정', desc: '파일 이름의 텍스트를 기반으로 아이콘을 지정합니다.' }, @@ -1326,7 +1370,7 @@ export const STRINGS_KO = { placeholder: '# 텍스트=아이콘\n회의=ph-calendar\n청구서=ph-receipt', editTooltip: '매핑 편집' }, - showCategoryIcons: { + showFileTypeIcons: { name: '파일 유형으로 아이콘 설정', desc: '파일 확장자를 기반으로 아이콘을 지정합니다.' }, @@ -1334,7 +1378,7 @@ export const STRINGS_KO = { name: '파일 아이콘 프리셋', desc: '기본 제공 아이콘 또는 아이콘 팩 프리셋을 선택합니다. 사용자 지정 확장자 규칙은 이 프리셋보다 우선합니다.', options: { - none: '기본 제공 아이콘' + builtIn: '기본 제공 아이콘' }, notInstalledWarning: '이 아이콘 팩이 설치되어 있지 않습니다. 대신 기본 제공 아이콘이 표시됩니다.' }, @@ -1357,11 +1401,11 @@ export const STRINGS_KO = { name: '상위 폴더 표시', desc: '하위 폴더, 태그 또는 속성의 노트에 상위 폴더 이름을 표시합니다.' }, - showParentFolderFullPath: { + showFolderPath: { name: '폴더 경로 표시', desc: '폴더 이름만 표시하는 대신 선택한 폴더를 기준으로 한 상대 경로를 표시합니다. 태그와 속성에서는 전체 경로를 표시합니다.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: '상위 폴더 클릭 시 폴더 열기', desc: '상위 폴더 레이블을 클릭하면 목록 창에서 폴더를 엽니다.' }, @@ -1389,7 +1433,7 @@ export const STRINGS_KO = { vertical: '세로 분할' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: '사이드바가 너무 좁을 때', desc: '탐색 창과 목록 창이 나란히 맞지 않을 때의 동작을 선택합니다.', options: { @@ -1398,7 +1442,7 @@ export const STRINGS_KO = { vertical: '세로 분할로 전환' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: '좁은 사이드바 임계값', desc: '사이드바 너비 임계값 계산 방법을 선택합니다.', options: { @@ -1406,41 +1450,41 @@ export const STRINGS_KO = { customWidth: '사용자 지정 너비' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: '좁은 사이드바 임계값 너비', desc: '사이드바가 이 너비보다 좁으면 전환합니다.', resetTooltip: '기본 너비로 재설정' }, - appearanceBackground: { + paneBackgroundColor: { name: '배경색', desc: '탐색 및 목록 패널의 배경색을 선택합니다.', options: { separate: '분리된 배경', - primary: '목록 배경 사용', - secondary: '탐색 배경 사용' + listBackground: '목록 배경 사용', + navigationBackground: '탐색 배경 사용' } }, - appearanceScale: { + zoomLevel: { name: '확대 수준', desc: 'Notebook Navigator의 전체 확대 수준을 제어합니다(백분율).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'iOS에서 플로팅 툴바 사용', desc: 'iOS에서만 적용됩니다.' }, - startView: { + defaultStartupView: { name: '기본 시작 보기', desc: 'Notebook Navigator를 열 때 활성화되는 창을 선택하세요. 단일 창 레이아웃에서는 이 창이 먼저 표시되고, 이중 창 레이아웃에서는 이 창에 키보드 포커스가 이동합니다.', options: { navigation: '탐색 창', - files: '목록 창' + listPane: '목록 창' } }, toolbarButtons: { name: '도구 모음 버튼', desc: '도구 모음에 표시할 버튼을 선택하세요. 숨겨진 버튼은 명령과 메뉴를 통해 계속 사용할 수 있습니다.' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: '새 노트를 새 탭에서 열기', desc: '활성화하면 새 노트 만들기 명령이 새 탭에서 노트를 엽니다. 비활성화하면 노트가 현재 탭을 대체합니다.' }, @@ -1460,20 +1504,20 @@ export const STRINGS_KO = { name: '자동 표시: 다른 창의 이벤트 무시', desc: '다른 창에서 노트를 작업할 때 활성 노트를 변경하지 않습니다.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: '단일 창 애니메이션', desc: '단일 창 모드에서 창 전환 시 트랜지션 시간 (밀리초).', resetTooltip: '기본값으로 재설정' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: '첫 번째 노트 자동 선택', desc: '폴더, 태그 또는 속성을 전환할 때 첫 번째 노트를 자동으로 엽니다.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: '바로가기 자동 스크롤 비활성화', desc: '바로가기 내 항목을 클릭할 때 탐색 패널을 스크롤하지 않습니다.' }, - autoExpandNavItems: { + expandOnSelection: { name: '선택 시 확장', desc: '선택 시 폴더와 태그를 확장합니다. 단일 창 모드에서는 첫 번째 선택이 확장하고 두 번째 선택이 파일을 표시합니다.' }, @@ -1511,16 +1555,16 @@ export const STRINGS_KO = { name: '바로가기 배지', desc: "바로가기 옆에 표시할 내용. '바로가기 1-9 열기' 명령으로 바로가기를 직접 열 수 있습니다.", options: { - index: '위치 (1-9)', + position: '위치 (1-9)', count: '항목 수', none: '없음' } }, - showRecentNotes: { + showRecentFiles: { name: '최근 파일 표시', desc: '탐색 창에 최근 파일 섹션을 표시합니다.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: '최근 파일에서 파일 유형 숨기기', desc: '최근 파일 섹션에서 숨길 파일 유형을 선택합니다.', options: { @@ -1528,15 +1572,15 @@ export const STRINGS_KO = { folderNotes: '폴더 노트' } }, - recentNotesCount: { + recentFilesCount: { name: '최근 파일 수', desc: '표시할 최근 파일의 수입니다.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: '바로가기와 함께 최근 파일 고정', desc: '바로가기를 고정할 때 최근 파일을 포함합니다.' }, - calendarEnabled: { + enableCalendar: { name: '캘린더 활성화', desc: 'Notebook Navigator의 캘린더 기능을 활성화합니다.' }, @@ -1548,12 +1592,12 @@ export const STRINGS_KO = { rightSidebar: '오른쪽 사이드바' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: '단일 창 배치', desc: '단일 창 모드에서 캘린더가 표시되는 위치입니다.', options: { navigationPane: '탐색 창', - below: '창 아래' + belowPanes: '창 아래' } }, calendarLocale: { @@ -1574,7 +1618,7 @@ export const STRINGS_KO = { thuFri: '목요일과 금요일' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: '월 이름 형식', desc: '월 이름을 긴 형식(1월) 또는 짧은 형식(1월)으로 표시합니다.', options: { @@ -1586,7 +1630,7 @@ export const STRINGS_KO = { name: '정보 버튼 표시', desc: '검색 바와 캘린더 헤더에 정보 버튼을 표시합니다.' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: '왼쪽 사이드바에 표시할 주', desc: '오른쪽 사이드바의 캘린더는 항상 전체 월을 표시합니다.', options: { @@ -1631,7 +1675,7 @@ export const STRINGS_KO = { name: '숨겨진 항목 표시', desc: '활성화하면 캘린더에 항상 모든 캘린더 노트가 표시되며, 보관함 프로필 필터로 숨겨진 노트도 포함됩니다.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: '데일리 노트 소스', desc: '캘린더 노트 소스.', options: { @@ -1651,34 +1695,38 @@ export const STRINGS_KO = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: '루트 폴더', desc: '정기 노트의 기본 폴더. 날짜 패턴에 하위 폴더를 포함할 수 있습니다. 선택한 보관소 프로필에 따라 변경됩니다.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: '템플릿 폴더 위치', desc: '템플릿 파일 선택기가 이 폴더의 노트를 표시합니다.', placeholder: 'Templates', usage: '달력 노트와 폴더 노트에서 사용됩니다. 템플릿은 달력 > 캘린더 연동 및 폴더 및 폴더 노트 > 폴더 노트 파일에서 설정하세요.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: '일일 노트', desc: 'Moment 날짜 형식을 사용하여 경로 지정. 하위 폴더 이름은 대괄호로 감싸세요, 예: [Work]/YYYY. 템플릿 아이콘을 클릭하여 템플릿을 설정하세요. 템플릿 폴더 위치는 파일 작업 > 템플릿에서 설정하세요.', + placeholder: 'YYYY/YYYYMMDD', + parsingError: '패턴은 전체 날짜(연, 월, 일)로 포맷되고 다시 파싱될 수 있어야 합니다.' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: '', momentLinkText: 'Moment 날짜 형식', momentDescSuffix: '을 사용하여 경로 지정. 하위 폴더 이름은 대괄호로 감싸세요, 예: [Work]/YYYY. 템플릿 아이콘을 클릭하여 템플릿을 설정하세요. 템플릿 폴더 위치는 파일 작업 > 템플릿에서 설정하세요.', - templaterSupportInstalled: '✅ Templater 플러그인이 설치되어 전체 템플릿 지원을 사용할 수 있습니다.', - templaterSupportMissing: '⚠️ 템플릿 지원을 사용하려면 Templater 플러그인을 설치하세요.', templateTokenNoticeLabel: '중요!', templateTokenNotice: '템플릿 지원에는 Templater 플러그인이 필요합니다. {{date}}, {{title}} 같은 기본 형식은 {source}이(가) {option}으로 설정된 경우에만 사용할 수 있습니다.', - placeholder: 'YYYY/YYYYMMDD', - example: '현재 구문: {path}', - parsingError: '패턴은 전체 날짜(연, 월, 일)로 포맷되고 다시 파싱될 수 있어야 합니다.' + example: '현재 구문: {path}' + }, + templaterSupport: { + installed: '✅ Templater 플러그인이 설치되어 전체 템플릿 지원을 사용할 수 있습니다.', + missing: '⚠️ 템플릿 지원을 사용하려면 Templater 플러그인을 설치하세요.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: '주간 노트', parsingError: '패턴은 전체 주(주 연도, 주 번호)로 포맷되고 다시 파싱될 수 있어야 합니다.', weekPathMismatchWarning: @@ -1686,19 +1734,19 @@ export const STRINGS_KO = { mixedWeekTokensWarning: '이 패턴은 월요일 기준 주 토큰("W" 또는 "G")과 지역 기준 주 토큰("w" 또는 "g")을 혼합하여 사용합니다. 일관되게 한 가지 세트를 사용하세요. 월요일 기준 주에는 "GGGG"와 "WW", 주간 노트가 선택한 지역 설정을 따라야 하는 경우 "gggg"와 "ww"를 사용하세요.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: '월간 노트', parsingError: '패턴은 전체 월(연도, 월)로 포맷되고 다시 파싱될 수 있어야 합니다.' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: '분기별 노트', parsingError: '패턴은 전체 분기(연도, 분기)로 포맷되고 다시 파싱될 수 있어야 합니다.' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: '연간 노트', parsingError: '패턴은 전체 연도(연도)로 포맷되고 다시 파싱될 수 있어야 합니다.' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: '템플릿 파일: {name}' }, showTooltips: { @@ -1719,7 +1767,7 @@ export const STRINGS_KO = { buttonText: '구분선 초기화', notice: '구분선 위치가 초기화되었습니다. Obsidian을 재시작하거나 Notebook Navigator를 다시 열어 적용하세요.' }, - settingsTransfer: { + importAndExportSettings: { name: '설정 가져오기 및 내보내기', desc: 'Notebook Navigator 설정을 JSON으로 내보내거나 가져옵니다. 가져오기는 모든 설정을 대체합니다.', importButtonText: '가져오기', @@ -1777,15 +1825,15 @@ export const STRINGS_KO = { name: 'Enter 키로 파일 열기', desc: '목록 키보드 탐색 중 Enter 키를 누를 때만 파일을 엽니다. macOS에서는 Enter 키가 파일 이름을 변경하지 않도록 합니다.' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'Shift+Enter를 누를 때 선택한 파일을 열지 이름을 변경할지 선택합니다.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'Cmd+Enter를 누를 때 선택한 파일을 열지 이름을 변경할지 선택합니다.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'Ctrl+Enter를 누를 때 선택한 파일을 열지 이름을 변경할지 선택합니다.' }, @@ -1793,12 +1841,12 @@ export const STRINGS_KO = { name: '마우스 뒤로/앞으로 버튼', desc: '데스크톱에서 마우스 뒤로/앞으로 버튼의 동작.', options: { - none: '시스템 기본값 사용', + systemDefault: '시스템 기본값 사용', singlePaneSwitch: '패널 전환 (단일 패널)', history: '기록 탐색' } }, - fileVisibility: { + showFileTypes: { name: '파일 유형 표시 (볼트 프로필)', desc: '네비게이터에 표시할 파일 유형을 필터링합니다. Obsidian에서 지원하지 않는 파일 유형은 외부 응용 프로그램에서 열릴 수 있습니다.', options: { @@ -1830,12 +1878,12 @@ export const STRINGS_KO = { desc: '시작 시 또는 명령 실행 시 정기 노트가 없으면 생성합니다.' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: '속성 규칙으로 노트 숨기기 (볼트 프로필)', desc: '쉼표로 구분된 frontmatter 규칙 목록입니다. `key` 또는 `key=value` 항목을 사용합니다 (예: status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: '파일 숨기기 (볼트 프로필)', desc: '숨길 파일 이름 패턴의 쉼표로 구분된 목록입니다. * 와일드카드와 / 경로를 지원합니다 (예: temp-*, *.png, /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1862,7 +1910,7 @@ export const STRINGS_KO = { duplicateName: '프로필 이름이 이미 존재합니다' } }, - vaultTitle: { + vaultTitlePlacement: { name: '볼트 제목 위치', desc: '볼트 제목이 표시되는 위치를 선택합니다.', options: { @@ -1870,7 +1918,7 @@ export const STRINGS_KO = { navigation: '탐색 창에 표시' } }, - excludedFolders: { + hideFolders: { name: '폴더 숨기기 (볼트 프로필)', desc: '숨길 폴더의 쉼표로 구분된 목록입니다. 이름 패턴: assets* (assets로 시작하는 폴더), *_temp (_temp로 끝나는). 경로 패턴: /archive (루트 archive만), /res* (res로 시작하는 루트 폴더), /*/temp (한 레벨 깊이의 temp 폴더), /projects/* (projects 내부의 모든 폴더).', placeholder: 'templates, assets*, /archive, /res*' @@ -1884,7 +1932,7 @@ export const STRINGS_KO = { name: '날짜 표시', desc: '노트 이름 아래에 날짜를 표시합니다.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: '이름 정렬 시', desc: '노트가 이름순으로 정렬될 때 표시할 날짜.', options: { @@ -1896,7 +1944,7 @@ export const STRINGS_KO = { name: '파일 태그 표시', desc: '파일 항목에 클릭 가능한 태그를 표시합니다.' }, - showFileTagAncestors: { + showFullTagPaths: { name: '전체 태그 경로 표시', desc: "태그의 전체 계층 경로를 표시합니다. 활성화: 'ai/openai', 'work/projects/2024'. 비활성화: 'openai', '2024'." }, @@ -1904,7 +1952,7 @@ export const STRINGS_KO = { name: '파일 태그 색상 지정', desc: '파일 항목의 태그 배지에 태그 색상을 적용합니다.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: '색상 태그 우선 표시', desc: '색상 태그를 다른 태그보다 먼저 정렬합니다.' }, @@ -1920,7 +1968,7 @@ export const STRINGS_KO = { name: '파일 속성에 색상 적용', desc: '파일 항목의 속성 배지에 속성 색상을 적용합니다.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: '색상 속성을 먼저 표시', desc: '파일 항목에서 색상 속성을 다른 속성보다 먼저 정렬합니다.' }, @@ -1928,7 +1976,7 @@ export const STRINGS_KO = { name: '간결 모드에서 속성 표시', desc: '간결 모드가 활성화되면 속성을 표시합니다.' }, - textCountDisplay: { + textCountType: { name: '카운트 유형', desc: '파일 항목에 표시할 텍스트 카운트를 선택합니다.', options: { @@ -1958,11 +2006,11 @@ export const STRINGS_KO = { name: '대상 속성', desc: '목표 단어 수가 들어 있는 프런트매터 속성 키입니다. 대상을 숨기려면 비워 두세요.' }, - showWordCountPercentage: { + showTargetPercentage: { name: '대상 백분율 표시', desc: '목표 단어 수가 있을 때 진행률 백분율만 표시합니다.' }, - propertyFields: { + propertyKeys: { name: '속성 키 (보관함 프로필)', desc: '프론트매터 속성 키. 키별로 탐색 창 및 파일 목록의 표시 여부를 설정할 수 있습니다.', addButtonTooltip: '속성 키 구성', @@ -1974,11 +2022,11 @@ export const STRINGS_KO = { name: '속성을 별도 행에 표시', desc: '각 속성을 개별 행에 표시합니다.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: '속성 필을 노트에 연결', desc: '속성 필을 클릭하여 연결된 노트를 엽니다.' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: '속성 필을 URL에 연결', desc: '속성 필을 클릭하여 연결된 URL을 엽니다.' }, @@ -1998,7 +2046,7 @@ export const STRINGS_KO = { helpTooltip: 'Moment 형식', momentLinkText: 'Moment 형식' }, - showFilePreview: { + showNotePreview: { name: '노트 미리보기 표시', desc: '노트 이름 아래에 미리보기 텍스트를 표시합니다.' }, @@ -2027,7 +2075,7 @@ export const STRINGS_KO = { desc: '미리보기 텍스트를 확인할 frontmatter 속성의 쉼표로 구분된 목록입니다. 텍스트가 있는 첫 번째 속성이 사용됩니다.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: '노트 내용으로 대체', desc: '지정된 속성에 텍스트가 없을 때 노트 내용을 미리보기로 표시합니다.' }, @@ -2042,7 +2090,7 @@ export const STRINGS_KO = { '5': '5행' } }, - fileNameRows: { + titleRows: { name: '제목 행', desc: '노트 제목에 표시할 행 수입니다.', options: { @@ -2073,22 +2121,22 @@ export const STRINGS_KO = { desc: '쉼표로 구분된 frontmatter 속성 목록입니다. 이러한 속성 중 하나라도 포함된 노트는 대표 이미지를 저장하지 않습니다.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: '대표 이미지 표시 크기', desc: '노트 목록에서 대표 이미지의 최대 렌더링 크기.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: '대표 이미지 픽셀 크기', desc: '저장된 대표 이미지 썸네일을 생성할 때 사용되는 해상도. 큰 미리보기가 흐릿하게 보이면 이 값을 높이세요.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2096,7 +2144,7 @@ export const STRINGS_KO = { name: '외부 이미지 다운로드', desc: '대표 이미지로 원격 이미지 및 YouTube 썸네일을 다운로드합니다.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: '내보낸 미리보기 이미지 숨기기', desc: '내보낸 그리기 미리보기 PNG 파일을 숨깁니다. 표시하려면 "숨김 항목 표시"를 켜세요.' }, @@ -2129,11 +2177,11 @@ export const STRINGS_KO = { alphaDesc: 'Z부터 A까지' } }, - showNoteCount: { + showFileCount: { name: '파일 수 표시', desc: '폴더, 태그, 속성 옆에 파일 수를 표시합니다.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: '바로 가기 및 최근 항목 아이콘 표시', desc: '바로 가기 및 최근 섹션의 항목 옆에 아이콘을 표시합니다.' }, @@ -2142,7 +2190,7 @@ export const STRINGS_KO = { desc: '도구 모음, 폴더, 태그, 속성, 고정 항목, 검색, 정렬 아이콘을 편집합니다.', buttonText: '아이콘 편집' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: '아이콘에만 색상 적용', desc: '활성화하면 사용자 지정 색상이 아이콘에만 적용됩니다. 비활성화하면 아이콘과 텍스트 레이블 모두에 색상이 적용됩니다.' }, @@ -2150,9 +2198,9 @@ export const STRINGS_KO = { name: '무지개 색상 모드 (보관소 프로필)', desc: '탐색 창에 무지개 색상을 적용합니다.', options: { - none: '끄기', - foreground: '텍스트 색상', - background: '배경 색상' + off: '끄기', + textColor: '텍스트 색상', + backgroundColor: '배경 색상' } }, navRainbowFirstColor: { @@ -2175,7 +2223,7 @@ export const STRINGS_KO = { name: '바로가기에 적용', desc: '무지개 색상을 바로가기에 적용합니다.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: '최근 항목에 적용', desc: '무지개 색상을 최근 항목에 적용합니다.' }, @@ -2209,7 +2257,7 @@ export const STRINGS_KO = { name: '속성에 적용', desc: '무지개 색상을 속성에 적용합니다.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: '색상 간 일관된 밝기', // (English: Consistent brightness across hues) desc: '색상 전환 중 시작 색상과 끝 색상 사이의 밝기를 보간합니다.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2227,7 +2275,7 @@ export const STRINGS_KO = { all: '모든 수준' } }, - collapseBehavior: { + collapseItems: { name: '항목 접기', desc: '모두 펼치기/접기 버튼이 영향을 미치는 항목을 선택하세요.', options: { @@ -2237,7 +2285,7 @@ export const STRINGS_KO = { propertiesOnly: '속성만' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: '선택한 항목 펼친 상태 유지', desc: '접을 때 선택한 항목과 상위 항목을 펼친 상태로 유지합니다.' }, @@ -2245,7 +2293,7 @@ export const STRINGS_KO = { name: '접을 때 보관소 루트 건너뛰기', desc: '모든 항목을 접을 때 보관소 루트 폴더를 현재 상태로 둡니다.' }, - navIndent: { + treeIndentation: { name: '트리 들여쓰기', desc: '중첩된 폴더, 태그, 속성의 들여쓰기 너비를 조정합니다(픽셀).' }, @@ -2271,7 +2319,7 @@ export const STRINGS_KO = { line: '선' } }, - navRootSpacing: { + rootItemSpacing: { name: '루트 항목 간격', desc: '최상위 폴더, 태그, 속성 사이의 간격(픽셀).' }, @@ -2298,15 +2346,15 @@ export const STRINGS_KO = { highToLow: '높음 → 낮음' } }, - showAllTagsFolder: { + showTagsFolder: { name: '태그 폴더 표시', desc: '"태그"를 접을 수 있는 폴더로 표시합니다.' }, - showUntagged: { + showUntaggedNotes: { name: '태그 없는 노트 표시', desc: '태그가 없는 노트에 대해 "태그 없음" 항목을 표시합니다.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: '선택 항목으로 태그 필터링', desc: '선택한 폴더 또는 속성 내 노트에 있는 태그만 표시합니다.' }, @@ -2340,20 +2388,20 @@ export const STRINGS_KO = { highToLow: '높은 순' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: '속성 폴더 표시', desc: '"속성"을 접을 수 있는 폴더로 표시합니다.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: '선택 항목으로 속성 필터링', desc: '선택한 폴더 또는 태그 내 노트에 있는 속성만 표시합니다.' }, - hiddenTags: { + hideTags: { name: '태그 숨기기 (볼트 프로필)', desc: '쉼표로 구분된 태그 패턴 목록입니다. 이름 패턴: tag* (시작), *tag (끝). 경로 패턴: archive (태그와 하위), archive/* (하위만), projects/*/drafts (중간 와일드카드).', placeholder: 'archive*, *draft, projects/*/old' }, - hiddenFileTags: { + hideNotesWithTags: { name: '태그가 있는 노트 숨기기 (볼트 프로필)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2386,7 +2434,7 @@ export const STRINGS_KO = { desc: '폴더 노트를 만들 때 사용하는 템플릿 파일입니다. Markdown 템플릿은 Templater를 사용할 수 있습니다. Canvas 및 Base 템플릿은 파일 내용으로 복사됩니다. 템플릿 폴더 위치는 파일 작업 > 템플릿에서 설정하세요.', formatWarning: '템플릿 형식은 선택한 폴더 노트 유형과 일치해야 합니다: .md, .canvas 또는 .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: '폴더 이름으로 폴더 노트 열기', desc: '폴더 이름을 클릭하면 해당 폴더 노트를 엽니다. 끄면 폴더 노트는 이름, 아이콘, 색상 같은 폴더 메타데이터만 제공합니다.' }, @@ -2407,7 +2455,7 @@ export const STRINGS_KO = { rightSidebar: '오른쪽 사이드바' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: '오른쪽 사이드바: 가장 가까운 폴더 노트 표시', desc: '폴더를 선택하면 오른쪽 사이드바에 가장 가까운 상위 폴더 노트가 자동으로 표시됩니다.' }, @@ -2449,7 +2497,7 @@ export const STRINGS_KO = { indexingTitle: '보관함을 인덱싱하는 중...', progress: 'Notebook Navigator 캐시를 업데이트하는 중.' }, - externalIcons: { + iconPackManagement: { downloadButton: '다운로드', downloadingLabel: '다운로드 중...', removeButton: '제거', @@ -2461,11 +2509,11 @@ export const STRINGS_KO = { infoNote: '다운로드된 아이콘 팩은 기기 간 설치 상태를 동기화합니다. 아이콘 팩은 각 기기의 로컬 데이터베이스에 남아 있습니다. 동기화는 다운로드 또는 제거 여부만 추적합니다. 아이콘 팩은 Notebook Navigator 저장소에서 다운로드됩니다 (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'frontmatter 메타데이터 사용', desc: '노트 이름, 타임스탬프, 아이콘, 색상에 frontmatter 사용' }, - frontmatterNameField: { + frontmatterNameFields: { name: '이름 필드들', desc: '쉼표로 구분된 frontmatter 필드 목록. 첫 번째 비어 있지 않은 값을 사용. 파일 이름으로 대체.', placeholder: 'title, name' @@ -2485,7 +2533,7 @@ export const STRINGS_KO = { desc: '배경색용 frontmatter 필드입니다. 설정에 저장된 배경색을 사용하려면 비워 두세요.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: '설정에서 아이콘과 색상 이동', desc: '설정에 저장됨: 아이콘 {icons}개, 색상 {colors}개.', button: '이동', @@ -2505,7 +2553,7 @@ export const STRINGS_KO = { desc: '수정된 타임스탬프의 frontmatter 필드 이름입니다. 파일 시스템 날짜만 사용하려면 비워 두세요.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: '타임스탬프 형식', desc: 'frontmatter에서 타임스탬프를 구문 분석하는 데 사용되는 형식입니다. ISO 8601 파싱을 사용하려면 비워 두세요.', helpTooltip: 'Moment 형식', @@ -2518,12 +2566,12 @@ export const STRINGS_KO = { buttonText: '❤️ 후원하기', coffeeButton: '☕️ 커피 한 잔 사주기' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: '시작 시 새 버전 확인', desc: '시작 시 새로운 플러그인 릴리스를 확인하고 업데이트가 있으면 알림을 표시합니다. 확인은 하루에 최대 한 번 수행됩니다.', status: '새 버전 사용 가능: {version}' }, - debugLogging: { + startupDebugLogging: { name: '시작 디버그 로그', desc: '시작 진단 정보를 보관소 루트의 타임스탬프가 있는 Markdown 파일에 기록한 뒤 시작이 안정되면 중지합니다. 이 파일은 동기화될 수 있으며 파일 경로를 포함할 수 있습니다.' }, diff --git a/src/i18n/locales/nl.ts b/src/i18n/locales/nl.ts index 508dfff72..c46af78f3 100644 --- a/src/i18n/locales/nl.ts +++ b/src/i18n/locales/nl.ts @@ -75,6 +75,9 @@ export const STRINGS_NL = { shortcutsHeader: 'Snelkoppelingen', recentFilesHeader: 'Recente bestanden', // Header label for recent files section in navigation pane (English: Recent files) properties: 'Eigenschappen', + folders: 'Mappen', + tags: 'Tags', + calendar: 'Kalender', reorderRootFoldersTitle: 'Navigatie herschikken', reorderRootFoldersHint: 'Gebruik pijlen of sleep om te herschikken', vaultRootLabel: 'Kluis', @@ -1013,101 +1016,143 @@ export const STRINGS_NL = { exportSuccess: 'Metadatarapport met fouten geëxporteerd naar: {filename}', exportFailed: 'Kan metadatarapport niet exporteren' }, - sections: { - general: 'Algemeen', - vaultFilters: 'Weergavefilters', - appearanceBehavior: 'Uiterlijk & gedrag', - navigationPane: 'Navigatiepaneel', - calendar: 'Kalender', - fileOperations: 'Bestandsbewerkingen', - icons: 'Pictogrampakketten', - folders: 'Mappen', - folderNotes: 'Mapnotities', - folderNoteFiles: 'Mapnotitiebestanden', - foldersAndFolderNotes: 'Mappen & mapnotities', - tagsAndProperties: 'Tags & eigenschappen', - tags: 'Tags', - listPane: 'Lijstpaneel', - notes: 'Bestandsweergave', - shortcutsAndRecentFiles: 'Snelkoppelingen & recente bestanden', - advanced: 'Geavanceerd' + index: { + label: 'Algemeen', + description: 'Releasenotities, ondersteuning, kluisprofiel, bestandstypen en eigenschapssleutels.', + groups: { + vaultSetup: 'Kluisinstelling' + } }, pageGroups: { configuration: 'Configuratie', - navigationAndContent: 'Navigatiepaneel', - notesAndLists: 'Lijstpaneel', + navigationPane: 'Navigatiepaneel', + listPane: 'Lijstpaneel', calendarAndTools: 'Kalender en hulpmiddelen' }, - pageDescriptions: { - general: 'Releasenotities, ondersteuning, kluisprofiel, bestandstypen en eigenschapssleutels.', - vaultFilters: 'Verborgen mappen, tags, bestanden, bestandstags en eigenschapsregels.', - appearanceBehavior: 'Gedrag, toetsenbordnavigatie, muisknoppen, uiterlijk en opmaak.', - navigationPane: 'Indeling, uiterlijk, aantal bestanden, inklapgedrag en regenboogkleuren.', - shortcuts: 'Zichtbaarheid van snelkoppelingen, badges, recente bestanden en vastgezette items.', - calendar: 'Kalenderweergave, datumnotities, sjablonen, taalinstellingen en zijbalkplaatsing.', - fileOperations: 'Sjablonen, verwijderingsbevestigingen, bijlagen en gedrag bij bestandsverplaatsingsconflicten.', - foldersAndFolderNotes: 'Mapweergave, mapnotities, mapnotitiesjablonen en mapnotitiegedrag.', - tagsProperties: 'Tag- en eigenschapssecties, pictogrammen, sortering, bereik en overerving.', - listPane: 'Sortering, groepering, lijstmodi, vastgezette notities en tekeningvoorbeelden.', - frontmatter: 'Frontmattervelden voor weergavenamen, tijdstempels, pictogrammen en kleuren.', - notes: 'Titels, voorbeeldtekst, uitgelichte afbeeldingen, tags, eigenschappen, datums, aantal woorden en aantal tekens.', - iconPacks: 'Interfacepictogrammen, bestandspictogrammen en beheer van pictogrampakketten.', - advanced: 'Diagnostiek, opschonen van metadata, import/export en herstellen.' - }, - groups: { - general: { - vaultConfiguration: 'Kluisinstelling', - templates: 'Sjablonen', - behavior: 'Gedrag', - startup: 'Opstarten', - keyboardNavigation: 'Toetsenbordnavigatie', - mouseButtons: 'Muisknoppen', - view: 'Uiterlijk', - icons: 'Iconen', - desktopAppearance: 'Desktop-uiterlijk', - mobileAppearance: 'Mobiele weergave', - formatting: 'Opmaak' + pages: { + displayFilters: { + label: 'Weergavefilters', + description: 'Verborgen mappen, tags, bestanden, bestandstags en eigenschapsregels.' + }, + appearanceAndBehavior: { + label: 'Uiterlijk & gedrag', + description: 'Gedrag, toetsenbordnavigatie, muisknoppen, uiterlijk en opmaak.', + groups: { + startup: 'Opstarten', + keyboardNavigation: 'Toetsenbordnavigatie', + mouseButtons: 'Muisknoppen', + desktopAppearance: 'Desktop-uiterlijk', + mobileAppearance: 'Mobiele weergave', + appearance: 'Uiterlijk', + icons: 'Iconen', + formatting: 'Opmaak' + } + }, + navigationPane: { + label: 'Navigatiepaneel', + description: 'Indeling, uiterlijk, aantal bestanden, inklapgedrag en regenboogkleuren.', + groups: { + appearance: 'Uiterlijk', + banner: 'Banner', + collapseItems: 'Items inklappen', + dragAndDrop: 'Slepen en neerzetten', + fileCounts: 'Bestandstellingen', + rainbowColors: 'Regenboogkleuren' + } + }, + shortcutsAndRecentFiles: { + label: 'Snelkoppelingen & recente bestanden', + description: 'Zichtbaarheid van snelkoppelingen, badges, recente bestanden en vastgezette items.', + groups: { + shortcuts: 'Snelkoppelingen', + recentFiles: 'Recente bestanden' + } + }, + foldersAndFolderNotes: { + label: 'Mappen & mapnotities', + description: 'Mapweergave, mapnotities, mapnotitiesjablonen en mapnotitiegedrag.', + groups: { + folders: 'Mappen', + folderNotes: 'Mapnotities', + folderNoteFiles: 'Mapnotitiebestanden' + } + }, + tagsAndProperties: { + label: 'Tags & eigenschappen', + description: 'Tag- en eigenschapssecties, pictogrammen, sortering, bereik en overerving.', + groups: { + tags: 'Tags', + properties: 'Eigenschappen' + } + }, + listPane: { + label: 'Lijstpaneel', + description: 'Sortering, groepering, lijstmodi, vastgezette notities en tekeningvoorbeelden.', + groups: { + appearance: 'Uiterlijk', + sortAndGroup: 'Sorteren & groeperen', + groupHeaders: 'Groepskoppen', + manualSort: 'Handmatig sorteren', + pinnedNotes: 'Vastgezette notities', + behavior: 'Gedrag', + drawingPreviews: 'Tekeningvoorbeelden' + } + }, + fileOperations: { + label: 'Bestandsbewerkingen', + description: 'Sjablonen, verwijderingsbevestigingen, bijlagen en gedrag bij bestandsverplaatsingsconflicten.', + groups: { + templates: 'Sjablonen' + } + }, + frontmatterFields: { + label: 'Frontmattervelden', + description: 'Frontmattervelden voor weergavenamen, tijdstempels, pictogrammen en kleuren.' + }, + fileDisplay: { + label: 'Bestandsweergave', + description: + 'Titels, voorbeeldtekst, uitgelichte afbeeldingen, tags, eigenschappen, datums, aantal woorden en aantal tekens.', + groups: { + icon: 'Icoon', + title: 'Titel', + previewText: 'Voorbeeldtekst', + featureImage: 'Uitgelichte afbeelding', + tags: 'Tags', + properties: 'Eigenschappen', + tasks: 'Taken', + date: 'Datum', + parentFolder: 'Bovenliggende map', + wordAndCharacterCount: 'Aantal woorden en tekens' + } + }, + calendar: { + label: 'Kalender', + description: 'Kalenderweergave, datumnotities, sjablonen, taalinstellingen en zijbalkplaatsing.', + groups: { + appearance: 'Uiterlijk', + leftSidebar: 'Linkerzijbalk', + calendarIntegration: 'Kalenderintegratie', + rightSidebar: 'Rechter zijbalk' + } + }, + iconPacks: { + label: 'Pictogrampakketten', + description: 'Interfacepictogrammen, bestandspictogrammen en beheer van pictogrampakketten.' }, advanced: { - maintenance: 'Onderhoud', - resetSettings: 'Instellingen resetten' - }, - navigation: { - appearance: 'Uiterlijk', - banner: 'Banner', - collapseItems: 'Items inklappen', - dragAndDrop: 'Slepen en neerzetten', - noteCounts: 'Bestandstellingen', - rainbowColors: 'Regenboogkleuren', - leftSidebar: 'Linkerzijbalk', - calendarIntegration: 'Kalenderintegratie' - }, - list: { - display: 'Uiterlijk', - sortAndGroup: 'Sorteren & groeperen', - groupHeaders: 'Groepskoppen', - manualSort: 'Handmatig sorteren', - pinnedNotes: 'Vastgezette notities', - drawingPreviews: 'Tekeningvoorbeelden' - }, - notes: { - frontmatter: 'Frontmattervelden', - tasks: 'Taken', - icon: 'Icoon', - title: 'Titel', - previewText: 'Voorbeeldtekst', - featureImage: 'Uitgelichte afbeelding', - tags: 'Tags', - properties: 'Eigenschappen', - date: 'Datum', - parentFolder: 'Bovenliggende map', - wordCount: 'Aantal woorden en tekens' + label: 'Geavanceerd', + description: 'Diagnostiek, opschonen van metadata, import/export en herstellen.', + groups: { + maintenance: 'Onderhoud', + resetSettings: 'Instellingen resetten' + } } }, syncMode: { notSynced: '(niet gesynchroniseerd)', - switchToSynced: 'Synchronisatie inschakelen', - switchToLocal: 'Synchronisatie uitschakelen' + enableSync: 'Synchronisatie inschakelen', + disableSync: 'Synchronisatie uitschakelen' }, items: { listPaneTitle: { @@ -1115,11 +1160,11 @@ export const STRINGS_NL = { desc: 'Kies waar de titel van het lijstpaneel wordt weergegeven.', options: { header: 'Tonen in koptekst', - list: 'Tonen in lijstpaneel', + listPane: 'Tonen in lijstpaneel', hidden: 'Niet tonen' } }, - sortNotesBy: { + defaultSortOrder: { name: 'Standaard sorteervolgorde', desc: 'Kies de standaard sorteervolgorde voor notities. Eigenschappen uit Sorteereigenschappen verschijnen als extra sorteeropties.', directions: { @@ -1127,18 +1172,18 @@ export const STRINGS_NL = { desc: 'Aflopend' }, dateDirections: { - desc: 'Nieuwste bovenaan', - asc: 'Oudste bovenaan' + newestOnTop: 'Nieuwste bovenaan', + oldestOnTop: 'Oudste bovenaan' }, textDirections: { - asc: 'A bovenaan', - desc: 'Z bovenaan' + aOnTop: 'A bovenaan', + zOnTop: 'Z bovenaan' }, fields: { - modified: 'Datum bewerkt', - created: 'Datum gemaakt', + dateEdited: 'Datum bewerkt', + dateCreated: 'Datum gemaakt', title: 'Titel', - filename: 'Bestandsnaam', + fileName: 'Bestandsnaam', property: 'Eigenschap' } }, @@ -1151,7 +1196,7 @@ export const STRINGS_NL = { follow: 'Sorteervolgorde volgen' } }, - propertySortKey: { + sortingProperties: { name: 'Sorteereigenschappen', desc: 'Kommagescheiden frontmatter-eigenschappen. Elke eigenschap verschijnt als sorteeroptie in de instelling Standaard sorteervolgorde en in het sorteermenu van het lijstpaneel. Deze eigenschappen worden niet gewijzigd.', placeholder: 'published, author', @@ -1161,14 +1206,14 @@ export const STRINGS_NL = { both: 'De standaard sorteervolgorde en standaardgroepering zijn teruggezet omdat hun eigenschappen niet meer beschikbaar zijn.' } }, - propertySortSecondary: { + propertySecondarySort: { name: 'Secundaire sortering', desc: 'Gebruikt bij Eigenschap-sortering wanneer notities dezelfde eigenschapswaarde of geen eigenschapswaarde hebben.', options: { title: 'Titel', - filename: 'Bestandsnaam', - created: 'Aanmaakdatum', - modified: 'Bewerkingsdatum' + fileName: 'Bestandsnaam', + dateCreated: 'Aanmaakdatum', + dateEdited: 'Bewerkingsdatum' } }, propertySortInstructions: { @@ -1181,16 +1226,16 @@ export const STRINGS_NL = { '**Tag- en eigenschapweergaven:** Als groeperen op **Map** is geselecteerd, worden in plaats daarvan datumkoppen weergegeven.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'Groeperingseigenschappen', desc: 'Kommagescheiden frontmatter-eigenschappen. Elke eigenschap verschijnt als groeperingsoptie in de instelling Standaardgroepering en in het sorteermenu van het lijstpaneel. Deze eigenschappen worden niet gewijzigd.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'Eigenschap voor handmatig sorteren', desc: 'Frontmatter-eigenschap gebruikt om numerieke indexwaarden voor handmatig sorteren op te slaan.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'Eigenschap voor groepskop', desc: 'Frontmatter-eigenschap gebruikt om aangepaste groepskoppen op te slaan.' }, @@ -1207,7 +1252,7 @@ export const STRINGS_NL = { options: { top: 'Bovenaan', bottom: 'Onderaan', - 'below-selected-note': 'Onder geselecteerde notitie', + belowSelectedNote: 'Onder geselecteerde notitie', unsorted: 'Niet gesorteerd' } }, @@ -1223,7 +1268,7 @@ export const STRINGS_NL = { 'Selecteer in het lijstpaneel één notitie of selecteer er meerdere, en druk vervolgens op **Cmd/Ctrl + Arrow Up/Down** om de selectie omhoog of omlaag te verplaatsen.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'Scroll naar geselecteerd bestand bij lijstwijzigingen', desc: 'Scroll naar het geselecteerde bestand bij het vastpinnen van notities, tonen van afstammelingen-notities, wijzigen van mapweergave of uitvoeren van bestandsoperaties.' }, @@ -1231,15 +1276,15 @@ export const STRINGS_NL = { name: 'Notities uit submappen / afstammelingen tonen', desc: 'Notities uit geneste submappen en tag- en eigenschap-afstammelingen opnemen bij het bekijken van een map, tag of eigenschap.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'Notities alleen in hun map vastmaken', desc: 'Vastgemaakte notities worden alleen als vastgemaakt weergegeven in hun eigen map. Handig voor mapnotities of als je veel vastgemaakte notities hebt. Heeft geen invloed op tag- of eigenschapweergaven.' }, - separateNoteCounts: { + separateFileCounts: { name: 'Huidige en afstammeling-bestandstellingen apart tonen', desc: 'Bestandstellingen weergeven in "huidig ▾ afstammelingen" formaat voor mappen, tags en eigenschappen.' }, - groupNotes: { + defaultGrouping: { name: 'Standaard groepering', desc: '**Koppen** annoteren de gesorteerde lijst zonder de volgorde te veranderen: Aangepast toont koppen gedefinieerd in frontmatter en Datum voegt datumkoppen toe. **Groepen** herordenen de lijst: map- en eigenschapsgroepen worden zelfstandig geordend en notities binnen elke groep volgen de sorteervolgorde.', families: { @@ -1252,7 +1297,7 @@ export const STRINGS_NL = { folder: 'Map' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'Tag- en eigenschapspillen altijd tonen', desc: 'Wanneer uitgeschakeld, worden pillen die overeenkomen met de huidige navigatieselectie verborgen (bijv. de "recepten"-tagpil wordt verborgen bij het bladeren door de "recepten"-tag). Inschakelen om alle pillen zichtbaar te houden.' }, @@ -1260,7 +1305,7 @@ export const STRINGS_NL = { name: 'Plakkerige groepskoppen', desc: 'Houd de huidige datum-, map-, eigenschap- of vastgepinde sectiekop zichtbaar tijdens het scrollen.' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'Submappaden tonen', desc: 'Toont bij groeperen op map in het lijstpaneel submappaden in plaats van alleen mapnamen.' }, @@ -1288,9 +1333,9 @@ export const STRINGS_NL = { name: 'Onvoltooide taken-pictogram', desc: 'Het bestandspictogram vervangen wanneer een notitie onvoltooide taken bevat.', options: { - none: 'Uitgeschakeld', + disabled: 'Uitgeschakeld', compact: 'Compacte modus', - all: 'Standaard en compact' + standardAndCompact: 'Standaard en compact' } }, useFolderIcon: { @@ -1313,7 +1358,7 @@ export const STRINGS_NL = { name: 'Taakvoortgang: verbergen wanneer voltooid', desc: 'De taakvoortgang verbergen wanneer alle taken in een notitie voltooid zijn.' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'Onvoltooide taken-achtergrond', desc: 'Een achtergrondkleur toepassen wanneer een notitie onvoltooide taken bevat.' }, @@ -1321,7 +1366,7 @@ export const STRINGS_NL = { name: 'Achtergrondkleur voor onvoltooide taken', desc: 'De achtergrondkleur instellen die wordt gebruikt wanneer een notitie onvoltooide taken bevat.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'Pictogrammen op bestandsnaam', desc: 'Pictogrammen toewijzen aan bestanden op basis van tekst in hun namen.' }, @@ -1331,7 +1376,7 @@ export const STRINGS_NL = { placeholder: '# tekst=pictogram\nvergadering=ph-calendar\nfactuur=ph-receipt', editTooltip: 'Toewijzingen bewerken' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'Pictogrammen op bestandstype', desc: 'Pictogrammen toewijzen aan bestanden op basis van hun extensie.' }, @@ -1339,7 +1384,7 @@ export const STRINGS_NL = { name: 'Voorinstelling voor bestandspictogrammen', desc: 'Kies de ingebouwde pictogrammen of een voorinstelling voor pictogrampakketten. Aangepaste extensieregels overschrijven deze voorinstelling.', options: { - none: 'Ingebouwde pictogrammen' + builtIn: 'Ingebouwde pictogrammen' }, notInstalledWarning: 'Dit pictogrampakket is niet geïnstalleerd. In plaats daarvan worden ingebouwde pictogrammen getoond.' }, @@ -1362,11 +1407,11 @@ export const STRINGS_NL = { name: 'Bovenliggende map tonen', desc: 'De naam van de bovenliggende map weergeven voor notities in submappen, tags of eigenschappen.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'Mappad tonen', desc: 'Het pad ten opzichte van de geselecteerde map weergeven in plaats van alleen de mapnaam. Tags en eigenschappen tonen het volledige pad.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'Klik op bovenliggende map opent map', desc: 'Klik op het label van de bovenliggende map om de map te openen in het lijstpaneel.' }, @@ -1394,7 +1439,7 @@ export const STRINGS_NL = { vertical: 'Verticale splitsing' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'Wanneer de zijbalk te smal is', desc: 'Kies wat er gebeurt wanneer het navigatiepaneel en lijstpaneel niet naast elkaar passen.', options: { @@ -1403,7 +1448,7 @@ export const STRINGS_NL = { vertical: 'Overschakelen naar verticale splitsing' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'Drempel voor smalle zijbalk', desc: 'Kies hoe de breedtedrempel van de zijbalk wordt berekend.', options: { @@ -1411,41 +1456,41 @@ export const STRINGS_NL = { customWidth: 'Aangepaste breedte' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'Breedtedrempel voor smalle zijbalk', desc: 'Schakel om wanneer de zijbalk smaller is dan deze breedte.', resetTooltip: 'Standaardbreedte herstellen' }, - appearanceBackground: { + paneBackgroundColor: { name: 'Achtergrondkleur', desc: 'Kies achtergrondkleuren voor navigatie- en lijstpanelen.', options: { separate: 'Afzonderlijke achtergronden', - primary: 'Gebruik lijstachtergrond', - secondary: 'Gebruik navigatieachtergrond' + listBackground: 'Gebruik lijstachtergrond', + navigationBackground: 'Gebruik navigatieachtergrond' } }, - appearanceScale: { + zoomLevel: { name: 'Zoomniveau', desc: 'Regelt het algemene zoomniveau van Notebook Navigator (procent).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'Zwevende werkbalken gebruiken op iOS', desc: 'Geldt alleen op iOS.' }, - startView: { + defaultStartupView: { name: 'Standaard opstartweergave', desc: 'Kies welk paneel actief is bij het openen van Notebook Navigator. De enkelpaneelweergave toont dit paneel eerst; de dubbelpaneelweergave geeft het de toetsenbordfocus.', options: { navigation: 'Navigatiepaneel', - files: 'Lijstpaneel' + listPane: 'Lijstpaneel' } }, toolbarButtons: { name: 'Werkbalkknoppen', desc: "Kies welke knoppen in de werkbalk worden weergegeven. Verborgen knoppen blijven toegankelijk via opdrachten en menu's." }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'Nieuwe notities in nieuw tabblad openen', desc: 'Wanneer ingeschakeld opent de opdracht Nieuwe notitie maken notities in een nieuw tabblad. Wanneer uitgeschakeld vervangen notities het huidige tabblad.' }, @@ -1465,20 +1510,20 @@ export const STRINGS_NL = { name: 'Automatisch tonen: Gebeurtenissen van andere vensters negeren', desc: 'Actieve notitie niet wijzigen bij het werken met notities in een ander venster.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'Enkelvoudig paneel animatie', desc: 'Transitieduur bij het wisselen tussen panelen in enkelvoudig-paneel-modus (milliseconden).', resetTooltip: 'Herstellen naar standaard' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'Eerste notitie automatisch selecteren', desc: 'Automatisch de eerste notitie openen bij het wisselen van mappen, tags of eigenschappen.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'Automatisch scrollen voor snelkoppelingen uitschakelen', desc: 'Het navigatiepaneel niet scrollen bij klikken op items in snelkoppelingen.' }, - autoExpandNavItems: { + expandOnSelection: { name: 'Uitvouwen bij selectie', desc: 'Mappen en tags uitvouwen bij selectie. In enkelvoudige paneelmodus: eerste selectie vouwt uit, tweede selectie toont bestanden.' }, @@ -1516,16 +1561,16 @@ export const STRINGS_NL = { name: 'Snelkoppeling badge', desc: "Wat naast snelkoppelingen weergeven. Gebruik de commando's 'Snelkoppeling 1-9 openen' om snelkoppelingen direct te openen.", options: { - index: 'Positie (1-9)', + position: 'Positie (1-9)', count: 'Aantal items', none: 'Geen' } }, - showRecentNotes: { + showRecentFiles: { name: 'Recente bestanden tonen', desc: 'De sectie recente bestanden weergeven in het navigatiepaneel.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'Bestandstypen uit recente bestanden verbergen', desc: 'Kies welke soorten bestanden verborgen worden in de sectie recente bestanden.', options: { @@ -1533,15 +1578,15 @@ export const STRINGS_NL = { folderNotes: 'Mapnotities' } }, - recentNotesCount: { + recentFilesCount: { name: 'Aantal recente bestanden', desc: 'Aantal weer te geven recente bestanden.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'Recente bestanden met snelkoppelingen vastpinnen', desc: 'Recente bestanden opnemen wanneer snelkoppelingen zijn vastgepind.' }, - calendarEnabled: { + enableCalendar: { name: 'Kalender inschakelen', desc: 'Kalenderfuncties van Notebook Navigator inschakelen.' }, @@ -1553,12 +1598,12 @@ export const STRINGS_NL = { rightSidebar: 'Rechter zijbalk' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'Enkele paneel plaatsing', desc: 'Waar de kalender wordt weergegeven in enkele paneelmodus.', options: { navigationPane: 'Navigatiepaneel', - below: 'Onder panelen' + belowPanes: 'Onder panelen' } }, calendarLocale: { @@ -1580,7 +1625,7 @@ export const STRINGS_NL = { thuFri: 'Donderdag en vrijdag' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'Maandnaam-indeling', desc: 'Lange (januari) of korte (jan.) maandnaam.', options: { @@ -1592,7 +1637,7 @@ export const STRINGS_NL = { name: 'Infoknoppen tonen', desc: 'Infoknoppen weergeven in de zoekbalk en de kalenderheader.' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'Weken om te tonen in linker zijbalk', desc: 'De kalender in de rechter zijbalk toont altijd de volledige maand.', options: { @@ -1637,7 +1682,7 @@ export const STRINGS_NL = { name: 'Verborgen items tonen', desc: 'Indien ingeschakeld, toont de kalender altijd alle kalendernotities, inclusief notities die door de filters van het kluisprofiel zijn verborgen.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'Dagelijkse notitie bron', desc: 'Bron voor kalendernotities.', options: { @@ -1657,34 +1702,38 @@ export const STRINGS_NL = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'Hoofdmap', desc: 'Basismap voor periodieke notities. Datumpatronen kunnen submappen bevatten. Wijzigt met het geselecteerde kluisprofiel.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'Sjabloonmaplocatie', desc: 'De sjabloonbestandskiezer toont notities uit deze map.', placeholder: 'Templates', usage: 'Gebruikt door kalendernotities en mapnotities. Configureer sjablonen in Kalender > Kalenderintegratie en Mappen & mapnotities > Mapnotitiebestanden.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'Dagelijkse notities', desc: 'Pad formatteren met Moment-datumnotatie. Zet submapnamen tussen haakjes, bijv. [Work]/YYYY. Klik op het sjabloonpictogram om een sjabloon in te stellen. Stel de sjabloonmaplocatie in bij Bestandsbewerkingen > Sjablonen.', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'Het patroon moet kunnen formatteren en terug-parsen naar een volledige datum (jaar, maand, dag).' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'Pad formatteren met ', momentLinkText: 'Moment-datumnotatie', momentDescSuffix: '. Zet submapnamen tussen haakjes, bijv. [Work]/YYYY. Klik op het sjabloonpictogram om een sjabloon in te stellen. Stel de sjabloonmaplocatie in bij Bestandsbewerkingen > Sjablonen.', - templaterSupportInstalled: '✅ De Templater-plug-in is geïnstalleerd met volledige sjabloonondersteuning.', - templaterSupportMissing: '⚠️ Installeer de Templater-plug-in voor sjabloonondersteuning.', templateTokenNoticeLabel: 'Belangrijk!', templateTokenNotice: 'Sjabloonondersteuning vereist de Templater-plug-in. Ingebouwde formaten zoals {{date}} en {{title}} werken alleen wanneer {source} is ingesteld op {option}.', - placeholder: 'YYYY/YYYYMMDD', - example: 'Huidige syntaxis: {path}', - parsingError: 'Het patroon moet kunnen formatteren en terug-parsen naar een volledige datum (jaar, maand, dag).' + example: 'Huidige syntaxis: {path}' + }, + templaterSupport: { + installed: '✅ De Templater-plug-in is geïnstalleerd met volledige sjabloonondersteuning.', + missing: '⚠️ Installeer de Templater-plug-in voor sjabloonondersteuning.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'Wekelijkse notities', parsingError: 'Het patroon moet kunnen formatteren en terug-parsen naar een volledige week (weekjaar, weeknummer).', weekPathMismatchWarning: @@ -1692,19 +1741,19 @@ export const STRINGS_NL = { mixedWeekTokensWarning: 'Dit patroon combineert maandag-gebaseerde weektokens ("W" of "G") met taal-gebaseerde weektokens ("w" of "g"). Gebruik consistent één set: "GGGG" met "WW" voor maandag-gebaseerde weken, of "gggg" met "ww" als wekelijkse notities de geselecteerde taal moeten volgen.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'Maandelijkse notities', parsingError: 'Het patroon moet kunnen formatteren en terug-parsen naar een volledige maand (jaar, maand).' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'Kwartaalnotities', parsingError: 'Het patroon moet kunnen formatteren en terug-parsen naar een volledig kwartaal (jaar, kwartaal).' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'Jaarlijkse notities', parsingError: 'Het patroon moet kunnen formatteren en terug-parsen naar een volledig jaar (jaar).' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'Sjabloonbestand: {name}' }, showTooltips: { @@ -1725,7 +1774,7 @@ export const STRINGS_NL = { buttonText: 'Scheiding resetten', notice: 'Scheidingspositie gereset. Herstart Obsidian of heropen Notebook Navigator om toe te passen.' }, - settingsTransfer: { + importAndExportSettings: { name: 'Instellingen importeren en exporteren', desc: 'Notebook Navigator-instellingen exporteren of importeren als JSON. Importeren vervangt alle instellingen.', importButtonText: 'Importeren', @@ -1784,15 +1833,15 @@ export const STRINGS_NL = { name: 'Druk op Enter om bestanden te openen', desc: 'Open bestanden alleen door op Enter te drukken tijdens toetsenbordnavigatie in de lijst. Op macOS voorkomt dit dat Enter bestanden hernoemt.' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'Kies of Shift+Enter het geselecteerde bestand opent of hernoemt.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'Kies of Cmd+Enter het geselecteerde bestand opent of hernoemt.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'Kies of Ctrl+Enter het geselecteerde bestand opent of hernoemt.' }, @@ -1800,12 +1849,12 @@ export const STRINGS_NL = { name: 'Muisknoppen terug/vooruit', desc: 'Actie voor de terug- en vooruitknoppen van de muis op desktop.', options: { - none: 'Systeemstandaard gebruiken', + systemDefault: 'Systeemstandaard gebruiken', singlePaneSwitch: 'Panelen wisselen (enkelvoudig paneel)', history: 'Geschiedenis navigeren' } }, - fileVisibility: { + showFileTypes: { name: 'Bestandstypes tonen (kluisprofiel)', desc: 'Filter welke bestandstypes worden weergegeven in de navigator. Bestandstypes die niet door Obsidian worden ondersteund, kunnen in externe applicaties worden geopend.', options: { @@ -1837,12 +1886,12 @@ export const STRINGS_NL = { desc: 'Maakt de periodieke notitie aan bij opstarten of via opdracht als deze niet bestaat.' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'Notities verbergen met eigenschapsregels (kluisprofiel)', desc: 'Kommagescheiden lijst van frontmatter-regels. Gebruik `key` of `key=value` items (bijv. status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'Bestanden verbergen (kluisprofiel)', desc: 'Kommagescheiden lijst van bestandsnaampatronen om te verbergen. Ondersteunt * jokertekens en / paden (bijv. temp-*, *.png, /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1869,7 +1918,7 @@ export const STRINGS_NL = { duplicateName: 'Profielnaam bestaat al' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'Kluistitel plaatsing', desc: 'Kies waar de kluistitel wordt weergegeven.', options: { @@ -1877,7 +1926,7 @@ export const STRINGS_NL = { navigation: 'Weergeven in navigatiepaneel' } }, - excludedFolders: { + hideFolders: { name: 'Mappen verbergen (kluisprofiel)', desc: 'Kommagescheiden lijst van te verbergen mappen. Naampatronen: assets* (mappen beginnend met assets), *_temp (eindigend met _temp). Padpatronen: /archive (alleen root archive), /res* (root mappen beginnend met res), /*/temp (temp mappen één niveau diep), /projects/* (alle mappen binnen projects).', placeholder: 'templates, assets*, /archive, /res*' @@ -1891,7 +1940,7 @@ export const STRINGS_NL = { name: 'Datum tonen', desc: 'De datum onder notitienamen weergeven.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'Bij sorteren op naam', desc: 'Weer te geven datum wanneer notities alfabetisch zijn gesorteerd.', options: { @@ -1903,7 +1952,7 @@ export const STRINGS_NL = { name: 'Bestandstags tonen', desc: 'Klikbare tags weergeven in bestandsitems.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'Volledige tagpaden tonen', desc: "Volledige tag-hiërarchie paden weergeven. Ingeschakeld: 'ai/openai', 'werk/projecten/2024'. Uitgeschakeld: 'openai', '2024'." }, @@ -1911,7 +1960,7 @@ export const STRINGS_NL = { name: 'Bestandstags kleuren', desc: 'Tagkleuren toepassen op tagbadges op bestandsitems.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'Gekleurde tags eerst tonen', desc: 'Sorteert gekleurde tags vóór andere tags in bestandsitems.' }, @@ -1927,7 +1976,7 @@ export const STRINGS_NL = { name: 'Bestandseigenschappen kleuren', desc: 'Eigenschapkleuren toepassen op eigenschapbadges in bestandsitems.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'Gekleurde eigenschappen eerst tonen', desc: 'Gekleurde eigenschappen sorteren vóór andere eigenschappen in bestandsitems.' }, @@ -1935,7 +1984,7 @@ export const STRINGS_NL = { name: 'Eigenschappen tonen in compacte modus', desc: 'Eigenschappen weergeven wanneer de compacte modus actief is.' }, - textCountDisplay: { + textCountType: { name: 'Type telling', desc: 'Kies welke teksttellingen in bestandsitems verschijnen.', options: { @@ -1965,11 +2014,11 @@ export const STRINGS_NL = { name: 'Doeleigenschap', desc: 'Frontmatter-eigenschapssleutel met het doelaantal woorden. Laat leeg om doelen te verbergen.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'Doelpercentage tonen', desc: 'Toon alleen het voortgangspercentage wanneer een doelaantal woorden beschikbaar is.' }, - propertyFields: { + propertyKeys: { name: 'Eigenschapssleutels (kluisprofiel)', desc: 'Frontmatter-eigenschapssleutels, met zichtbaarheid per sleutel voor navigatie en bestandslijst.', addButtonTooltip: 'Eigenschapssleutels configureren', @@ -1981,11 +2030,11 @@ export const STRINGS_NL = { name: 'Eigenschappen op afzonderlijke regels tonen', desc: 'Toon elke eigenschap op een eigen regel.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'Eigenschap-pills koppelen aan notities', desc: 'Klik op een eigenschap-pill om de gekoppelde notitie te openen.' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: "Eigenschap-pills koppelen aan URL's", desc: 'Klik op een eigenschap-pill om de gekoppelde URL te openen.' }, @@ -2005,7 +2054,7 @@ export const STRINGS_NL = { helpTooltip: 'Formaat met Moment', momentLinkText: 'Moment-formaat' }, - showFilePreview: { + showNotePreview: { name: 'Notitievoorbeeld tonen', desc: 'Voorbeeldtekst onder notitienamen weergeven.' }, @@ -2034,7 +2083,7 @@ export const STRINGS_NL = { desc: 'Kommagescheiden lijst van frontmatter-eigenschappen om te controleren op voorbeeldtekst. De eerste eigenschap met tekst wordt gebruikt.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'Terugvallen op notitie-inhoud', desc: 'Toon notitie-inhoud als voorbeeld wanneer geen van de opgegeven eigenschappen tekst bevat.' }, @@ -2049,7 +2098,7 @@ export const STRINGS_NL = { '5': '5 rijen' } }, - fileNameRows: { + titleRows: { name: 'Titelrijen', desc: 'Aantal weer te geven rijen voor notitietitels.', options: { @@ -2080,22 +2129,22 @@ export const STRINGS_NL = { desc: 'Kommagescheiden lijst van frontmatter-eigenschappen. Notities met een van deze eigenschappen slaan geen uitgelichte afbeeldingen op.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'Weergavegrootte uitgelichte afbeelding', desc: 'Maximale weergavegrootte voor uitgelichte afbeeldingen in notitie-overzichten.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'Pixelgrootte uitgelichte afbeelding', desc: 'Resolutie voor opgeslagen miniaturen van uitgelichte afbeeldingen. Verhoog deze waarde als grotere voorbeelden wazig lijken.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2103,7 +2152,7 @@ export const STRINGS_NL = { name: 'Externe afbeeldingen downloaden', desc: 'Download externe afbeeldingen en YouTube-miniaturen voor uitgelichte afbeeldingen.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'Geëxporteerde voorbeeldafbeeldingen verbergen', desc: 'Verberg geëxporteerde PNG-bestanden met tekeningvoorbeelden. Schakel "Verborgen items tonen" in om ze weer te geven.' }, @@ -2136,11 +2185,11 @@ export const STRINGS_NL = { alphaDesc: 'Z tot A' } }, - showNoteCount: { + showFileCount: { name: 'Bestandstelling tonen', desc: 'Bestandstellingen naast mappen, tags en eigenschappen weergeven.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'Pictogrammen tonen voor snelkoppelingen en recente items', desc: 'Pictogrammen naast items in de secties Snelkoppelingen en Recent weergeven.' }, @@ -2149,7 +2198,7 @@ export const STRINGS_NL = { desc: 'Bewerk werkbalk-, map-, tag-, eigenschap-, vastgezette, zoek- en sorteerichtogrammen.', buttonText: 'Iconen bewerken' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'Kleur alleen op pictogrammen toepassen', desc: 'Indien ingeschakeld, worden aangepaste kleuren alleen op pictogrammen toegepast. Indien uitgeschakeld, worden kleuren toegepast op zowel pictogrammen als tekstlabels.' }, @@ -2157,9 +2206,9 @@ export const STRINGS_NL = { name: 'Regenboogkleurmodus (kluis profiel)', desc: 'Regenboogkleuren toepassen in het navigatievenster.', options: { - none: 'Uit', - foreground: 'Tekstkleur', - background: 'Achtergrondkleur' + off: 'Uit', + textColor: 'Tekstkleur', + backgroundColor: 'Achtergrondkleur' } }, navRainbowFirstColor: { @@ -2182,7 +2231,7 @@ export const STRINGS_NL = { name: 'Toepassen op snelkoppelingen', desc: 'Regenboogkleuren toepassen op snelkoppelingen.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'Toepassen op recente items', desc: 'Regenboogkleuren toepassen op recente items.' }, @@ -2216,7 +2265,7 @@ export const STRINGS_NL = { name: 'Toepassen op eigenschappen', desc: 'Regenboogkleuren toepassen op eigenschappen.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'Consistente helderheid over kleurtonen', // (English: Consistent brightness across hues) desc: 'Interpoleert de helderheid tussen de begin- en eindkleuren tijdens kleurtoenovergangen.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2234,7 +2283,7 @@ export const STRINGS_NL = { all: 'Elk niveau' } }, - collapseBehavior: { + collapseItems: { name: 'Items inklappen', desc: 'Kies wat de uitklappen/inklappen alle knop beïnvloedt.', options: { @@ -2244,7 +2293,7 @@ export const STRINGS_NL = { propertiesOnly: 'Alleen eigenschappen' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'Geselecteerd item uitgeklapt houden', desc: 'Bij het inklappen het geselecteerde item en de bovenliggende items uitgeklapt houden.' }, @@ -2252,7 +2301,7 @@ export const STRINGS_NL = { name: 'Kluisroot overslaan bij inklappen', desc: 'Bij het inklappen van alle items blijft de rootmap van de kluis in de huidige staat.' }, - navIndent: { + treeIndentation: { name: 'Structuurinspringing', desc: 'De inspringbreedte aanpassen voor geneste mappen, tags en eigenschappen (pixels).' }, @@ -2278,7 +2327,7 @@ export const STRINGS_NL = { line: 'Lijn' } }, - navRootSpacing: { + rootItemSpacing: { name: 'Hoofditem-afstand', desc: 'Afstand tussen mappen, tags en eigenschappen op hoofdniveau (pixels).' }, @@ -2305,15 +2354,15 @@ export const STRINGS_NL = { highToLow: 'hoog naar laag' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'Tags-map tonen', desc: '"Tags" weergeven als inklapbare map.' }, - showUntagged: { + showUntaggedNotes: { name: 'Notities zonder tags tonen', desc: '"Zonder tags" item weergeven voor notities zonder tags.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'Tags filteren op selectie', desc: 'Alleen tags tonen die voorkomen in notities in de geselecteerde map of eigenschap.' }, @@ -2347,20 +2396,20 @@ export const STRINGS_NL = { highToLow: 'hoog naar laag' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'Eigenschappenmap tonen', desc: '"Eigenschappen" als een inklapbare map tonen.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'Eigenschappen filteren op selectie', desc: 'Alleen eigenschappen tonen die voorkomen in notities in de geselecteerde map of tag.' }, - hiddenTags: { + hideTags: { name: 'Tags verbergen (kluisprofiel)', desc: 'Kommagescheiden lijst van tagpatronen. Naampatronen: tag* (begint met), *tag (eindigt met). Padpatronen: archief (tag en afstammelingen), archief/* (alleen afstammelingen), projecten/*/concepten (wildcard in het midden).', placeholder: 'archief*, *concept, projecten/*/oud' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'Notities met tags verbergen (kluisprofiel)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2393,7 +2442,7 @@ export const STRINGS_NL = { desc: 'Sjabloonbestand dat wordt gebruikt bij het maken van mapnotities. Markdown-sjablonen kunnen Templater gebruiken. Canvas- en Base-sjablonen worden als bestandsinhoud gekopieerd. Stel de sjabloonmaplocatie in bij Bestandsbewerkingen > Sjablonen.', formatWarning: 'De sjabloonindeling moet overeenkomen met het geselecteerde type mapnotitie: .md, .canvas of .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'Mapnamen openen mapnotities', desc: 'Klikken op een mapnaam opent de mapnotitie. Wanneer uitgeschakeld, leveren mapnotities alleen mapmetadata zoals naam, pictogram en kleur.' }, @@ -2414,7 +2463,7 @@ export const STRINGS_NL = { rightSidebar: 'Rechterzijbalk' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'Rechterzijbalk: Dichtstbijzijnde mapnotitie tonen', desc: 'Wanneer een map wordt geselecteerd, toont de rechterzijbalk automatisch de dichtstbijzijnde bovenliggende mapnotitie.' }, @@ -2457,7 +2506,7 @@ export const STRINGS_NL = { indexingTitle: 'Kluis wordt geïndexeerd...', progress: 'Notebook Navigator-cache wordt bijgewerkt.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'Downloaden', downloadingLabel: 'Downloaden...', removeButton: 'Verwijderen', @@ -2469,7 +2518,7 @@ export const STRINGS_NL = { infoNote: 'Gedownloade pictogrampakketten synchroniseren installatiestatus tussen apparaten. Pictogrampakketten blijven in de lokale database op elk apparaat; synchronisatie houdt alleen bij of ze moeten worden gedownload of verwijderd. Pictogrampakketten downloaden van de Notebook Navigator repository (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'Frontmatter metadata gebruiken', desc: 'Frontmatter gebruiken voor notitienaam, tijdstempels, pictogrammen en kleuren' }, @@ -2488,7 +2537,7 @@ export const STRINGS_NL = { desc: 'Frontmatter-veld voor achtergrondkleuren. Laat leeg om achtergrondkleuren te gebruiken die zijn opgeslagen in instellingen.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'Pictogrammen en kleuren migreren vanuit instellingen', desc: 'Opgeslagen in instellingen: {icons} pictogrammen, {colors} kleuren.', button: 'Migreren', @@ -2498,7 +2547,7 @@ export const STRINGS_NL = { noticeFailures: 'Mislukte vermeldingen: {failures}.', noticeError: 'Migratie mislukt. Controleer console voor details.' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'Naamvelden', desc: 'Kommagescheiden lijst van frontmatter-velden. Eerste niet-lege waarde wordt gebruikt. Valt terug op bestandsnaam.', placeholder: 'title, name' @@ -2513,7 +2562,7 @@ export const STRINGS_NL = { desc: 'Frontmatter-veldnaam voor de gewijzigd tijdstempel. Laat leeg om alleen bestandssysteemdatum te gebruiken.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'Tijdstempelformaat', desc: 'Formaat gebruikt om tijdstempels in frontmatter te parseren. Laat leeg om ISO 8601 parsing te gebruiken.', helpTooltip: 'Formaat met Moment', @@ -2526,12 +2575,12 @@ export const STRINGS_NL = { buttonText: '❤️ Sponsor', coffeeButton: '☕️ Koop me een koffie' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'Controleren op nieuwe versie bij opstarten', desc: 'Controleert bij het opstarten op nieuwe plugin-releases en toont een melding wanneer een update beschikbaar is. Controles vinden hooguit één keer per dag plaats.', status: 'Nieuwe versie beschikbaar: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'Debuglogboek bij opstarten', desc: 'Schrijft opstartdiagnoses naar een Markdown-bestand met tijdstempel in de hoofdmap van de vault en stopt nadat het opstarten is gestabiliseerd. Het bestand kan worden gesynchroniseerd en bestandspaden bevatten.' }, diff --git a/src/i18n/locales/pl.ts b/src/i18n/locales/pl.ts index 47d5fa87f..4988b77e7 100644 --- a/src/i18n/locales/pl.ts +++ b/src/i18n/locales/pl.ts @@ -74,6 +74,9 @@ export const STRINGS_PL = { shortcutsHeader: 'Skróty', recentFilesHeader: 'Ostatnie pliki', // Header label for recent files section in navigation pane (English: Recent files) properties: 'Atrybuty', + folders: 'Foldery', + tags: 'Tagi', + calendar: 'Kalendarz', reorderRootFoldersTitle: 'Zmień kolejność elementów', reorderRootFoldersHint: 'Użyj strzałek lub przeciągnij, aby zmienić kolejność', vaultRootLabel: 'Sejf', @@ -1014,101 +1017,142 @@ export const STRINGS_PL = { exportSuccess: 'Raport nieprawidłowych metadanych wyeksportowany do: {filename}', exportFailed: 'Nie udało się wyeksportować raportu metadanych' }, - sections: { - general: 'Ogólne', - vaultFilters: 'Filtry wyświetlania', - appearanceBehavior: 'Wygląd i zachowanie', - navigationPane: 'Panel nawigacji', - calendar: 'Kalendarz', - fileOperations: 'Operacje na plikach', - icons: 'Pakiety ikon', - folders: 'Foldery', - folderNotes: 'Notatki folderu', - folderNoteFiles: 'Pliki notatek folderów', - foldersAndFolderNotes: 'Foldery i notatki folderu', - tagsAndProperties: 'Tagi i atrybuty', - tags: 'Tagi', - listPane: 'Panel listy', - notes: 'Wyświetlanie plików', - shortcutsAndRecentFiles: 'Skróty i ostatnie pliki', - advanced: 'Zaawansowane' + index: { + label: 'Ogólne', + description: 'Informacje o wydaniu, wsparcie, profil sejfu, typy plików i klucze atrybutów.', + groups: { + vaultSetup: 'Konfiguracja sejfu' + } }, pageGroups: { configuration: 'Konfiguracja', - navigationAndContent: 'Panel nawigacji', - notesAndLists: 'Panel listy', + navigationPane: 'Panel nawigacji', + listPane: 'Panel listy', calendarAndTools: 'Kalendarz i narzędzia' }, - pageDescriptions: { - general: 'Informacje o wydaniu, wsparcie, profil sejfu, typy plików i klucze atrybutów.', - vaultFilters: 'Ukryte foldery, tagi, pliki, tagi plików i reguły atrybutów.', - appearanceBehavior: 'Zachowanie, nawigacja klawiaturą, przyciski myszy, wygląd i formatowanie.', - navigationPane: 'Układ, wygląd, liczba plików, zachowanie zwijania i kolory tęczy.', - shortcuts: 'Widoczność skrótów, odznaki, ostatnie pliki i przypięte elementy.', - calendar: 'Wyświetlanie kalendarza, notatki dat, szablony, lokalizacja i położenie paska bocznego.', - fileOperations: 'Szablony, potwierdzenia usunięcia, załączniki i zachowanie przy konflikcie przenoszenia plików.', - foldersAndFolderNotes: 'Wyświetlanie folderów, notatki folderu, szablony notatek folderu i zachowanie notatek folderu.', - tagsProperties: 'Sekcje tagów i atrybutów, ikony, sortowanie, zakres i dziedziczenie.', - listPane: 'Sortowanie, grupowanie, tryby listy, przypięte notatki i podglądy rysunków.', - frontmatter: 'Pola metadanych dla nazw wyświetlanych, znaczników czasu, ikon i kolorów.', - notes: 'Tytuły, tekst podglądu, wyróżnione obrazy, tagi, atrybuty, daty, liczba słów i liczba znaków.', - iconPacks: 'Ikony interfejsu, ikony plików i zarządzanie pakietami ikon.', - advanced: 'Diagnostyka, czyszczenie metadanych, import/eksport i resetowanie.' - }, - groups: { - general: { - vaultConfiguration: 'Konfiguracja sejfu', - templates: 'Szablony', - behavior: 'Zachowanie', - startup: 'Uruchamianie', - keyboardNavigation: 'Nawigacja klawiaturą', - mouseButtons: 'Przyciski myszy', - view: 'Wygląd', - icons: 'Ikonki', - desktopAppearance: 'Wygląd na komputerze', - mobileAppearance: 'Wygląd mobilny', - formatting: 'Formatowanie' + pages: { + displayFilters: { + label: 'Filtry wyświetlania', + description: 'Ukryte foldery, tagi, pliki, tagi plików i reguły atrybutów.' + }, + appearanceAndBehavior: { + label: 'Wygląd i zachowanie', + description: 'Zachowanie, nawigacja klawiaturą, przyciski myszy, wygląd i formatowanie.', + groups: { + startup: 'Uruchamianie', + keyboardNavigation: 'Nawigacja klawiaturą', + mouseButtons: 'Przyciski myszy', + desktopAppearance: 'Wygląd na komputerze', + mobileAppearance: 'Wygląd mobilny', + appearance: 'Wygląd', + icons: 'Ikonki', + formatting: 'Formatowanie' + } + }, + navigationPane: { + label: 'Panel nawigacji', + description: 'Układ, wygląd, liczba plików, zachowanie zwijania i kolory tęczy.', + groups: { + appearance: 'Wygląd', + banner: 'Baner', + collapseItems: 'Zwiń elementy', + dragAndDrop: 'Przeciągnij i upuść', + fileCounts: 'Liczba plików', + rainbowColors: 'Kolory tęczy' + } + }, + shortcutsAndRecentFiles: { + label: 'Skróty i ostatnie pliki', + description: 'Widoczność skrótów, odznaki, ostatnie pliki i przypięte elementy.', + groups: { + shortcuts: 'Skróty', + recentFiles: 'Ostatnie pliki' + } + }, + foldersAndFolderNotes: { + label: 'Foldery i notatki folderu', + description: 'Wyświetlanie folderów, notatki folderu, szablony notatek folderu i zachowanie notatek folderu.', + groups: { + folders: 'Foldery', + folderNotes: 'Notatki folderu', + folderNoteFiles: 'Pliki notatek folderów' + } + }, + tagsAndProperties: { + label: 'Tagi i atrybuty', + description: 'Sekcje tagów i atrybutów, ikony, sortowanie, zakres i dziedziczenie.', + groups: { + tags: 'Tagi', + properties: 'Atrybuty' + } + }, + listPane: { + label: 'Panel listy', + description: 'Sortowanie, grupowanie, tryby listy, przypięte notatki i podglądy rysunków.', + groups: { + appearance: 'Wygląd', + sortAndGroup: 'Sortowanie i grupowanie', + groupHeaders: 'Nagłówki grup', + manualSort: 'Sortowanie ręczne', + pinnedNotes: 'Przypięte notatki', + behavior: 'Zachowanie', + drawingPreviews: 'Podglądy rysunków' + } + }, + fileOperations: { + label: 'Operacje na plikach', + description: 'Szablony, potwierdzenia usunięcia, załączniki i zachowanie przy konflikcie przenoszenia plików.', + groups: { + templates: 'Szablony' + } + }, + frontmatterFields: { + label: 'Pola metadanych', + description: 'Pola metadanych dla nazw wyświetlanych, znaczników czasu, ikon i kolorów.' + }, + fileDisplay: { + label: 'Wyświetlanie plików', + description: 'Tytuły, tekst podglądu, wyróżnione obrazy, tagi, atrybuty, daty, liczba słów i liczba znaków.', + groups: { + icon: 'Ikonka', + title: 'Tytuł', + previewText: 'Tekst podglądu', + featureImage: 'Wyróżniony obraz', + tags: 'Tagi', + properties: 'Atrybuty', + tasks: 'Zadania', + date: 'Data', + parentFolder: 'Folder nadrzędny', + wordAndCharacterCount: 'Liczba słów i znaków' + } + }, + calendar: { + label: 'Kalendarz', + description: 'Wyświetlanie kalendarza, notatki dat, szablony, lokalizacja i położenie paska bocznego.', + groups: { + appearance: 'Wygląd', + leftSidebar: 'Lewy panel boczny', + calendarIntegration: 'Integracja z kalendarzem', + rightSidebar: 'Prawy panel boczny' + } + }, + iconPacks: { + label: 'Pakiety ikon', + description: 'Ikony interfejsu, ikony plików i zarządzanie pakietami ikon.' }, advanced: { - maintenance: 'Konserwacja', - resetSettings: 'Resetowanie ustawień' - }, - navigation: { - appearance: 'Wygląd', - banner: 'Baner', - collapseItems: 'Zwiń elementy', - dragAndDrop: 'Przeciągnij i upuść', - noteCounts: 'Liczba plików', - rainbowColors: 'Kolory tęczy', - leftSidebar: 'Lewy panel boczny', - calendarIntegration: 'Integracja z kalendarzem' - }, - list: { - display: 'Wygląd', - sortAndGroup: 'Sortowanie i grupowanie', - groupHeaders: 'Nagłówki grup', - manualSort: 'Sortowanie ręczne', - pinnedNotes: 'Przypięte notatki', - drawingPreviews: 'Podglądy rysunków' - }, - notes: { - frontmatter: 'Pola metadanych', - tasks: 'Zadania', - icon: 'Ikonka', - title: 'Tytuł', - previewText: 'Tekst podglądu', - featureImage: 'Wyróżniony obraz', - tags: 'Tagi', - properties: 'Atrybuty', - date: 'Data', - parentFolder: 'Folder nadrzędny', - wordCount: 'Liczba słów i znaków' + label: 'Zaawansowane', + description: 'Diagnostyka, czyszczenie metadanych, import/eksport i resetowanie.', + groups: { + maintenance: 'Konserwacja', + resetSettings: 'Resetowanie ustawień' + } } }, syncMode: { notSynced: '(niezsynchronizowane)', - switchToSynced: 'Włącz synchronizację', - switchToLocal: 'Wyłącz synchronizację' + enableSync: 'Włącz synchronizację', + disableSync: 'Wyłącz synchronizację' }, items: { listPaneTitle: { @@ -1116,11 +1160,11 @@ export const STRINGS_PL = { desc: 'Wybierz, gdzie ma być widoczny tytuł panelu listy.', options: { header: 'Pokaż w nagłówku', - list: 'Pokaż w panelu listy', + listPane: 'Pokaż w panelu listy', hidden: 'Ukryj' } }, - sortNotesBy: { + defaultSortOrder: { name: 'Domyślny porządek sortowania', desc: 'Wybierz domyślny porządek sortowania notatek. Atrybuty z Atrybuty sortowania pojawiają się jako dodatkowe opcje sortowania.', directions: { @@ -1128,18 +1172,18 @@ export const STRINGS_PL = { desc: 'Malejąco' }, dateDirections: { - desc: 'Od najnowszych', - asc: 'Od najstarszych' + newestOnTop: 'Od najnowszych', + oldestOnTop: 'Od najstarszych' }, textDirections: { - asc: 'Od A do Z', - desc: 'Od Z do A' + aOnTop: 'Od A do Z', + zOnTop: 'Od Z do A' }, fields: { - modified: 'Data edycji', - created: 'Data utworzenia', + dateEdited: 'Data edycji', + dateCreated: 'Data utworzenia', title: 'Tytuł', - filename: 'Nazwa pliku', + fileName: 'Nazwa pliku', property: 'Atrybut' } }, @@ -1152,7 +1196,7 @@ export const STRINGS_PL = { follow: 'Zgodnie z sortowaniem' } }, - propertySortKey: { + sortingProperties: { name: 'Atrybuty sortowania', desc: 'Atrybuty frontmatter rozdzielone przecinkami. Każdy atrybut pojawia się jako opcja sortowania w ustawieniu Domyślny porządek sortowania i w menu sortowania w panelu listy. Te atrybuty nie są zmieniane.', placeholder: 'published, author', @@ -1162,14 +1206,14 @@ export const STRINGS_PL = { both: 'Domyślny porządek sortowania i domyślne grupowanie zostały zresetowane, ponieważ ich atrybuty nie są już dostępne.' } }, - propertySortSecondary: { + propertySecondarySort: { name: 'Sortowanie drugorzędne', desc: 'Używane z sortowaniem według atrybutów, gdy notatki mają taką samą wartość lub jej nie mają.', options: { title: 'Tytuł', - filename: 'Nazwa pliku', - created: 'Data utworzenia', - modified: 'Data edycji' + fileName: 'Nazwa pliku', + dateCreated: 'Data utworzenia', + dateEdited: 'Data edycji' } }, propertySortInstructions: { @@ -1182,16 +1226,16 @@ export const STRINGS_PL = { '**Widoki tagów i atrybutów:** Po wybraniu grupowania **Folder** zamiast tego wyświetlane są nagłówki dat.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'Atrybuty grupowania', desc: 'Atrybuty frontmatter rozdzielone przecinkami. Każdy atrybut pojawia się jako opcja grupowania w ustawieniu Domyślne grupowanie i w menu sortowania w panelu listy. Te atrybuty nie są zmieniane.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'Atrybut sortowania ręcznego', desc: 'Atrybut frontmatter używany do przechowywania wartości indeksu liczbowego dla sortowania ręcznego.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'Atrybut nagłówka grupy', desc: 'Atrybut frontmatter używany do przechowywania niestandardowych nagłówków grup.' }, @@ -1208,7 +1252,7 @@ export const STRINGS_PL = { options: { top: 'Na górze', bottom: 'Na dole', - 'below-selected-note': 'Pod wybraną notatką', + belowSelectedNote: 'Pod wybraną notatką', unsorted: 'Nieposortowane' } }, @@ -1224,7 +1268,7 @@ export const STRINGS_PL = { 'W panelu listy zaznacz jedną notatkę lub zaznacz wiele, a następnie naciśnij **Cmd/Ctrl + Arrow Up/Down**, aby przesunąć zaznaczenie w górę lub w dół.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'Przewiń do wybranego pliku podczas zmian na liście', desc: 'Przewiń do wybranego pliku podczas przypinania notatek, wyświetlania notatek podrzędnych, zmiany wyglądu folderu lub wykonywania operacji na plikach.' }, @@ -1232,15 +1276,15 @@ export const STRINGS_PL = { name: 'Pokaż notatki z podfolderów / elementów podrzędnych', desc: 'Podczas przeglądania folderu, tagu lub właściwości uwzględnij notatki z podfolderów oraz elementów podrzędnych tagów i właściwości.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'Przypinaj notatki tylko w ich folderze', desc: 'Przypięte notatki są wyświetlane jako przypięte tylko w swoim własnym folderze. Przydatne dla notatek folderów lub jeśli masz wiele przypiętych notatek. Nie wpływa na widoki tagów ani atrybutów.' }, - separateNoteCounts: { + separateFileCounts: { name: 'Pokaż bieżącą i podrzędną liczbę plików oddzielnie', desc: 'Wyświetla liczbę plików jako "nadrzędne ▾ podrzędne" dla folderów, tagów i właściwości.' }, - groupNotes: { + defaultGrouping: { name: 'Domyślne grupowanie', desc: '**Nagłówki** opisują posortowaną listę bez zmiany jej kolejności: Niestandardowe wyświetla nagłówki zdefiniowane w metadanych, a Data wstawia nagłówki dat. **Grupy** zmieniają kolejność listy: grupy folderów i atrybutów są porządkowane osobno, a notatki w każdej grupie zachowują porządek sortowania.', families: { @@ -1253,7 +1297,7 @@ export const STRINGS_PL = { folder: 'Folder' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'Zawsze pokazuj wszystkie etykiety tagów i atrybutów', desc: 'Po wyłączeniu etykiety odpowiadające bieżącemu wyborowi nawigacji są ukrywane (np. etykieta tagu „przepisy” jest ukrywana podczas przeglądania tagu „przepisy”). Włącz, aby wszystkie etykiety były zawsze widoczne.' }, @@ -1261,7 +1305,7 @@ export const STRINGS_PL = { name: 'Przyklejone nagłówki grup', desc: 'Bieżący nagłówek sekcji daty, folderu, atrybutu lub przypiętej pozostaje widoczny podczas przewijania.' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'Pokaż ścieżki podfolderów', desc: 'Podczas grupowania według folderu w panelu listy pokazuj ścieżki podfolderów zamiast samych nazw folderów.' }, @@ -1289,9 +1333,9 @@ export const STRINGS_PL = { name: 'Ikonka nieukończonych zadań', desc: 'Zastępuje ikonkę pliku, gdy notatka zawiera nieukończone zadania.', options: { - none: 'Wyłączone', + disabled: 'Wyłączone', compact: 'Tryb kompaktowy', - all: 'Standardowy i kompaktowy' + standardAndCompact: 'Standardowy i kompaktowy' } }, useFolderIcon: { @@ -1314,7 +1358,7 @@ export const STRINGS_PL = { name: 'Postęp zadań: ukryj po ukończeniu', desc: 'Ukrywa postęp zadań, gdy wszystkie zadania w notatce są ukończone.' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'Tło nieukończonych zadań', desc: 'Zastosuj kolor tła, gdy notatka zawiera nieukończone zadania.' }, @@ -1322,7 +1366,7 @@ export const STRINGS_PL = { name: 'Kolor tła nieukończonych zadań', desc: 'Ustaw kolor tła używany, gdy notatka zawiera nieukończone zadania.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'Ikonki na podstawie nazwy pliku', desc: 'Przypisuje ikonki do plików na podstawie tekstu w ich nazwach.' }, @@ -1332,7 +1376,7 @@ export const STRINGS_PL = { placeholder: '# tekst=ikona\nspotkanie=ph-calendar\nfaktura=ph-receipt', editTooltip: 'Edytuj przypisania' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'Ikonki według typu pliku', desc: 'Przypisuje ikonki do plików na podstawie ich rozszerzeń.' }, @@ -1340,7 +1384,7 @@ export const STRINGS_PL = { name: 'Ustawienie wstępne ikonek plików', desc: 'Wybierz wbudowane ikonki lub ustawienie wstępne pakietu ikonek. Niestandardowe reguły rozszerzeń zastępują to ustawienie wstępne.', options: { - none: 'Wbudowane ikonki' + builtIn: 'Wbudowane ikonki' }, notInstalledWarning: 'Ten pakiet ikonek nie jest zainstalowany. Zamiast niego są wyświetlane wbudowane ikonki.' }, @@ -1363,11 +1407,11 @@ export const STRINGS_PL = { name: 'Pokaż folder nadrzędny', desc: 'Wyświetla nazwę folderu nadrzędnego dla notatek w podfolderach, tagach lub właściwościach.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'Pokaż ścieżkę folderu', desc: 'Wyświetla ścieżkę względem wybranego folderu zamiast samej nazwy folderu. Tagi i właściwości pokazują pełną ścieżkę.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'Kliknięcie folderu nadrzędnego otwiera folder', desc: 'Kliknięcie etykiety folderu nadrzędnego otwiera folder w panelu listy.' }, @@ -1395,7 +1439,7 @@ export const STRINGS_PL = { vertical: 'Podział pionowy' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'Gdy pasek boczny jest zbyt wąski', desc: 'Wybierz, co się dzieje, gdy panel nawigacji i panel listy nie mieszczą się obok siebie.', options: { @@ -1404,7 +1448,7 @@ export const STRINGS_PL = { vertical: 'Przełącz na podział pionowy' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'Próg wąskiego paska bocznego', desc: 'Wybierz sposób obliczania progu szerokości paska bocznego.', options: { @@ -1412,41 +1456,41 @@ export const STRINGS_PL = { customWidth: 'Niestandardowa szerokość' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'Szerokość progu wąskiego paska bocznego', desc: 'Przełączaj, gdy pasek boczny jest węższy niż ta szerokość.', resetTooltip: 'Przywróć domyślną szerokość' }, - appearanceBackground: { + paneBackgroundColor: { name: 'Kolor tła', desc: 'Wybierz kolory tła dla panelu nawigacji i listy.', options: { separate: 'Oddzielne tła', - primary: 'Użyj tła listy', - secondary: 'Użyj tła nawigacji' + listBackground: 'Użyj tła listy', + navigationBackground: 'Użyj tła nawigacji' } }, - appearanceScale: { + zoomLevel: { name: 'Poziom przybliżenia', desc: 'Kontroluje ogólny poziom przybliżenia Notebook Navigator (procent).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'Użyj pływających pasków narzędzi w systemie iOS', desc: 'Dotyczy tylko iOS.' }, - startView: { + defaultStartupView: { name: 'Domyślny widok początkowy', desc: 'Wybierz, który panel jest aktywny po otwarciu Notebook Navigator. Układ jednopanelowy pokazuje ten panel jako pierwszy; układ dwupanelowy przenosi na niego fokus klawiatury.', options: { navigation: 'Panel nawigacji', - files: 'Panel listy' + listPane: 'Panel listy' } }, toolbarButtons: { name: 'Przyciski paska narzędzi', desc: 'Wybierz, które przyciski mają być wyświetlane na pasku narzędzi. Ukryte przyciski pozostają dostępne za pośrednictwem palety poleceń i w menu.' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'Otwieraj nowe notatki w nowej karcie', desc: 'Gdy włączone, polecenie Utwórz nową notatkę otwiera notatki w nowej karcie. Gdy wyłączone, notatki zastępują bieżącą kartę.' }, @@ -1466,20 +1510,20 @@ export const STRINGS_PL = { name: 'Automatyczne ujawnianie: Ignoruj zdarzenia z innych okien', desc: 'Nie zmieniaj aktywnej notatki podczas pracy z notatkami w innym oknie.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'Animacja pojedynczego panelu', desc: 'Czas trwania przejścia podczas przełączania paneli w trybie pojedynczego panelu (w milisekundach).', resetTooltip: 'Przywróć domyślne' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'Automatycznie wybierz pierwszą notatkę', desc: 'Automatycznie otwiera pierwszą notatkę po zmianie folderu, tagu lub właściwości.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'Wyłącz automatyczne przewijanie skrótów', desc: 'Nie przewijaj panelu nawigacji podczas klikania elementów w skrótach.' }, - autoExpandNavItems: { + expandOnSelection: { name: 'Rozwiń podczas zaznaczania', desc: 'Rozwija foldery, tagi i atrybuty po zaznaczeniu. W trybie pojedynczego panelu pierwsze zaznaczenie powoduje rozwinięcie, drugie zaznaczenie powoduje wyświetlenie plików.' }, @@ -1517,16 +1561,16 @@ export const STRINGS_PL = { name: 'Plakietka skrótu', desc: "Co ma być widoczne obok skrótów. Użyj poleceń 'Otwórz skrót 1-9', aby otworzyć skróty bezpośrednio.", options: { - index: 'Pozycja (1-9)', + position: 'Pozycja (1-9)', count: 'Liczba elementów', none: 'Brak' } }, - showRecentNotes: { + showRecentFiles: { name: 'Pokaż ostatnie pliki', desc: 'Wyświetla sekcję ostatnich plików w panelu nawigacji.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'Ukryj typy plików z ostatnich plików', desc: 'Wybierz typy plików do ukrycia w sekcji ostatnich plików.', options: { @@ -1534,15 +1578,15 @@ export const STRINGS_PL = { folderNotes: 'Notatki folderów' } }, - recentNotesCount: { + recentFilesCount: { name: 'Liczba ostatnich plików', desc: 'Liczba ostatnich plików do wyświetlenia.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'Przypnij ostatnie pliki razem ze skrótami', desc: 'Dołącz ostatnie pliki podczas przypinania skrótów.' }, - calendarEnabled: { + enableCalendar: { name: 'Włącz kalendarz', desc: 'Włącz funkcje kalendarza w Notebook Navigator.' }, @@ -1554,12 +1598,12 @@ export const STRINGS_PL = { rightSidebar: 'Prawy panel boczny' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'Pozycja w trybie pojedynczego panelu', desc: 'Gdzie kalendarz jest wyświetlany w trybie pojedynczego panelu.', options: { navigationPane: 'Panel nawigacji', - below: 'Pod panelami' + belowPanes: 'Pod panelami' } }, calendarLocale: { @@ -1581,7 +1625,7 @@ export const STRINGS_PL = { thuFri: 'czwartek i piątek' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'Format nazwy miesiąca', desc: 'Pełna (styczeń) lub skrócona (sty) nazwa miesiąca.', options: { @@ -1593,7 +1637,7 @@ export const STRINGS_PL = { name: 'Pokaż przyciski informacyjne', desc: 'Wyświetla przyciski informacyjne w pasku wyszukiwania i nagłówku kalendarza.' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'Tygodnie widoczne w lewym pasku bocznym', desc: 'Kalendarz w prawym pasku bocznym zawsze wyświetla cały miesiąc.', options: { @@ -1638,7 +1682,7 @@ export const STRINGS_PL = { name: 'Pokaż ukryte elementy', desc: 'Po włączeniu kalendarz zawsze pokazuje wszystkie notatki kalendarza, w tym notatki ukryte przez filtry profilu magazynu.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'Źródło notatek', desc: 'Źródło notatek kalendarza.', options: { @@ -1658,34 +1702,38 @@ export const STRINGS_PL = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'Folder główny', desc: 'Folder bazowy dla notatek okresowych. Wzory dat mogą zawierać podfoldery. Zmienia się wraz z wybranym profilem sejfu.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'Lokalizacja folderu szablonów', desc: 'Wybór pliku szablonu pokazuje notatki z tego folderu.', placeholder: 'Templates', usage: 'Używane przez notatki kalendarza i notatki folderów. Skonfiguruj szablony w Kalendarz > Integracja z kalendarzem oraz Foldery i notatki folderu > Pliki notatek folderów.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'Notatki dziennika', desc: 'Sformatuj ścieżkę przy użyciu formatu daty Moment. Nazwy podfolderów umieść w nawiasach, np. [Work]/YYYY. Kliknij ikonkę szablonu, aby ustawić szablon. Ustaw lokalizację folderu szablonów w sekcji Operacje na plikach > Szablony.', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'Wzór musi być tak sformatowany, aby można było odczytać kompletną datę (rok, miesiąc, dzień).' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'Sformatuj ścieżkę przy użyciu ', momentLinkText: 'formatu daty Moment', momentDescSuffix: '. Nazwy podfolderów umieść w nawiasach, np. [Work]/YYYY. Kliknij ikonkę szablonu, aby ustawić szablon. Ustaw lokalizację folderu szablonów w sekcji Operacje na plikach > Szablony.', - templaterSupportInstalled: '✅ Wtyczka Templater jest zainstalowana i zapewnia pełną obsługę szablonów.', - templaterSupportMissing: '⚠️ Zainstaluj wtyczkę Templater, aby uzyskać obsługę szablonów.', templateTokenNoticeLabel: 'Ważne!', templateTokenNotice: 'Obsługa szablonów wymaga wtyczki Templater. Wbudowane formaty, takie jak {{date}} i {{title}}, działają tylko wtedy, gdy {source} jest ustawione na {option}.', - placeholder: 'YYYY/YYYYMMDD', - example: 'Aktywna składnia: {path}', - parsingError: 'Wzór musi być tak sformatowany, aby można było odczytać kompletną datę (rok, miesiąc, dzień).' + example: 'Aktywna składnia: {path}' + }, + templaterSupport: { + installed: '✅ Wtyczka Templater jest zainstalowana i zapewnia pełną obsługę szablonów.', + missing: '⚠️ Zainstaluj wtyczkę Templater, aby uzyskać obsługę szablonów.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'Notatki tygodniowe', parsingError: 'Wzór musi być tak sformatowany, aby można było odczytać kompletną datę (rok tygodnia, numer tygodnia).', weekPathMismatchWarning: @@ -1693,19 +1741,19 @@ export const STRINGS_PL = { mixedWeekTokensWarning: 'Ten wzór miesza tokeny tygodnia rozpoczynające się w poniedziałek ("W" lub "G") z tokenami tygodnia opartymi na ustawieniach regionalnych ("w" lub "g"). Użyj konsekwentnie jednego zestawu: "GGGG" z "WW" dla tygodni rozpoczynających się w poniedziałek lub "gggg" z "ww", jeśli notatki tygodniowe mają być zgodne z wybranymi ustawieniami regionalnymi.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'Notatki miesięczne', parsingError: 'Wzór musi być tak sformatowany, aby można było odczytać kompletną datę (rok, miesiąc).' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'Notatki kwartalne', parsingError: 'Wzór musi być tak sformatowany, aby można było odczytać kompletną datę (rok, kwartał).' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'Notatki roczne', parsingError: 'Wzór musi być tak sformatowany, aby można było odczytać kompletną datę (rok).' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'Plik szablonu: {name}' }, showTooltips: { @@ -1726,7 +1774,7 @@ export const STRINGS_PL = { buttonText: 'Przywróć separator', notice: 'Przywrócono pozycję separatora. Uruchom ponownie Obsidian lub ponownie otwórz Notebook Navigator, aby zastosować zmiany.' }, - settingsTransfer: { + importAndExportSettings: { name: 'Importuj i eksportuj ustawienia', desc: 'Eksportuj lub importuj ustawienia Notebook Navigator jako JSON. Import zastępuje wszystkie ustawienia.', importButtonText: 'Importuj', @@ -1785,15 +1833,15 @@ export const STRINGS_PL = { name: 'Naciśnij Enter, aby otworzyć pliki', desc: 'Otwieraj pliki tylko po naciśnięciu Enter podczas nawigacji po liście za pomocą klawiatury. W macOS zapobiega to zmianie nazw plików klawiszem Enter.' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'Wybierz, czy Shift+Enter otwiera, czy zmienia nazwę wybranego pliku.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'Wybierz, czy Cmd+Enter otwiera, czy zmienia nazwę wybranego pliku.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'Wybierz, czy Ctrl+Enter otwiera, czy zmienia nazwę wybranego pliku.' }, @@ -1801,12 +1849,12 @@ export const STRINGS_PL = { name: 'Przyciski wstecz/dalej myszy', desc: 'Działanie przycisków wstecz i dalej myszy na komputerze.', options: { - none: 'Użyj domyślnych systemu', + systemDefault: 'Użyj domyślnych systemu', singlePaneSwitch: 'Przełącz panele (jeden panel)', history: 'Nawiguj historię' } }, - fileVisibility: { + showFileTypes: { name: 'Pokaż typy plików (profil sejfu)', desc: 'Filtruj typy plików widoczne w przeglądarce. Pliki nieobsługiwane przez Obsidian mogą być otwierane w aplikacjach zewnętrznych.', options: { @@ -1838,12 +1886,12 @@ export const STRINGS_PL = { desc: 'Tworzy notatkę okresową podczas uruchamiania lub po wywołaniu polecenia, jeśli nie istnieje.' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'Ukryj notatki na podstawie reguł atrybutów (profil sejfu)', desc: 'Lista reguł atrybutów rozdzielonych przecinkami. Użyj `key` lub `key=value` (np. status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'Ukryj pliki (profil sejfu)', desc: 'Lista nazw plików oddzielonych przecinkami. Obsługuje symbole wieloznaczne * i ścieżki / (np. temp-*, *.png, /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1870,7 +1918,7 @@ export const STRINGS_PL = { duplicateName: 'Nazwa profilu już istnieje' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'Położenie tytułu sejfu', desc: 'Wybierz, gdzie jest widoczny tytuł sejfu.', options: { @@ -1878,7 +1926,7 @@ export const STRINGS_PL = { navigation: 'Pokaż w panelu nawigacji' } }, - excludedFolders: { + hideFolders: { name: 'Ukryj foldery (profil sejfu)', desc: 'Lista folderów rozdzielonych przecinkami. Wzory nazw: assets* (foldery zaczynające się od assets), *_temp (kończące się na _temp). Wzory ścieżek: /archive (folder nadrzędny o nazwie archive), /res* (folder nadrzędny o nazwie zaczynającej się od res), /*/temp (foldery podrzędne o nazwie temp), /projects/* (wszystkie foldery wewnątrz folderu projects).', placeholder: 'templates, assets*, /archive, /res*' @@ -1892,7 +1940,7 @@ export const STRINGS_PL = { name: 'Pokaż datę', desc: 'Wyświetla datę pod nazwami notatek.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'Podczas sortowania według nazwy', desc: 'Data widoczna, gdy notatki są sortowane alfabetycznie.', options: { @@ -1904,7 +1952,7 @@ export const STRINGS_PL = { name: 'Pokaż tagi plików', desc: 'Wyświetla klikalne tagi w elementach plików.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'Pokaż kompletne ścieżki tagów', desc: "Wyświetla kompletne ścieżki hierarchii tagów. Po włączeniu: 'ai/openai', 'praca/projekty/2024'. Po wyłączeniu: 'openai', '2024'." }, @@ -1912,7 +1960,7 @@ export const STRINGS_PL = { name: 'Koloruj tagi plików', desc: 'Zastosuj kolory do tagów w elementach plików.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'Pokaż kolorowe tagi jako pierwsze', desc: 'Wyświetla kolorowe tagi przed innymi w elementach plików.' }, @@ -1928,7 +1976,7 @@ export const STRINGS_PL = { name: 'Koloruj atrybuty plików', desc: 'Zastosuj kolory do etykiet atrybutów w elementach plików.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'Wyświetl kolorowe atrybuty jako pierwsze', desc: 'Sortuj kolorowe atrybuty przed pozostałymi w elementach plików.' }, @@ -1936,7 +1984,7 @@ export const STRINGS_PL = { name: 'Pokaż atrybuty w trybie kompaktowym', desc: 'Wyświetlaj atrybuty, gdy tryb kompaktowy jest aktywny.' }, - textCountDisplay: { + textCountType: { name: 'Typ licznika', desc: 'Wybierz, które liczniki tekstu pojawiają się w elementach plików.', options: { @@ -1966,11 +2014,11 @@ export const STRINGS_PL = { name: 'Atrybut celu', desc: 'Klucz atrybutu frontmatter zawierający docelową liczbę słów. Pozostaw puste, aby ukryć cele.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'Pokaż procent celu', desc: 'Wyświetlaj tylko procent postępu, gdy dostępna jest docelowa liczba słów.' }, - propertyFields: { + propertyKeys: { name: 'Klucze atrybutów (profil sejfu)', desc: 'Klucze atrybutów frontmatter z kontrolą widoczności per klucz dla nawigacji i listy plików.', addButtonTooltip: 'Konfiguruj klucze atrybutów', @@ -1982,11 +2030,11 @@ export const STRINGS_PL = { name: 'Pokaż atrybuty w osobnych wierszach', desc: 'Wyświetl każdy atrybut w osobnym wierszu.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'Połącz etykiety atrybutów z notatkami', desc: 'Kliknij etykietę atrybutu, aby otworzyć powiązaną notatkę.' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: 'Połącz etykiety atrybutów z adresami URL', desc: 'Kliknij etykietę atrybutu, aby otworzyć powiązany adres URL.' }, @@ -2006,7 +2054,7 @@ export const STRINGS_PL = { helpTooltip: 'Format z Moment', momentLinkText: 'format Moment' }, - showFilePreview: { + showNotePreview: { name: 'Pokaż podgląd notatki', desc: 'Wyświetla tekst podglądu pod nazwami notatek.' }, @@ -2035,7 +2083,7 @@ export const STRINGS_PL = { desc: 'Lista atrybutów rozdzielonych przecinkami do sprawdzenia dla tekstu podglądu. Zostanie użyty pierwszy atrybut z tekstem.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'Użyj treści notatki zastępczo', desc: 'Wyświetl treść notatki jako podgląd, gdy żaden ze wskazanych atrybutów nie zawiera tekstu.' }, @@ -2050,7 +2098,7 @@ export const STRINGS_PL = { '5': '5 wierszy' } }, - fileNameRows: { + titleRows: { name: 'Wiersze tytułu', desc: 'Liczba widocznych wierszy tytułów notatek.', options: { @@ -2081,22 +2129,22 @@ export const STRINGS_PL = { desc: 'Lista atrybutów rozdzielonych przecinkami. Notatki zawierające którykolwiek z tych atrybutów nie wyświetlają wyróżnionych obrazów.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'Rozmiar wyświetlania obrazu wyróżniającego', desc: 'Maksymalny rozmiar renderowania wyróżnionych obrazów na listach notatek.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'Rozmiar pikseli obrazu wyróżniającego', desc: 'Rozdzielczość używana podczas generowania przechowywanych miniatur wyróżnionych obrazów. Zwiększ tę wartość, jeśli większe podglądy wyglądają na rozmyte.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2104,7 +2152,7 @@ export const STRINGS_PL = { name: 'Pobierz obrazy zewnętrzne', desc: 'Pobiera zdalne obrazy i miniatury YouTube wyróżnionych obrazów.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'Ukryj wyeksportowane obrazy podglądu', desc: 'Ukrywa wyeksportowane pliki PNG podglądu rysunków. Włącz „Pokaż ukryte elementy”, aby je wyświetlić.' }, @@ -2137,11 +2185,11 @@ export const STRINGS_PL = { alphaDesc: 'od Z do A' } }, - showNoteCount: { + showFileCount: { name: 'Pokaż liczbę plików', desc: 'Wyświetla liczbę plików obok folderów, tagów i właściwości.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'Pokaż ikonki skrótów i ostatnich elementów', desc: 'Wyświetla ikonki obok elementów w sekcjach Skróty i Ostatnie.' }, @@ -2150,7 +2198,7 @@ export const STRINGS_PL = { desc: 'Edytuj ikonki paska narzędzi, folderów, tagów, właściwości, przypiętych elementów, wyszukiwania i sortowania.', buttonText: 'Edytuj ikonki' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'Zastosuj kolor tylko do ikonek', desc: 'Po włączeniu niestandardowe kolory są stosowane tylko do ikonek. Po wyłączeniu kolory są stosowane zarówno do ikonek, jak i etykiet tekstowych.' }, @@ -2158,9 +2206,9 @@ export const STRINGS_PL = { name: 'Tryb kolorów tęczy (profil sejfu)', desc: 'Zastosuj kolory tęczy w panelu nawigacji.', options: { - none: 'Wyłączone', - foreground: 'Kolor tekstu', - background: 'Kolor tła' + off: 'Wyłączone', + textColor: 'Kolor tekstu', + backgroundColor: 'Kolor tła' } }, navRainbowFirstColor: { @@ -2183,7 +2231,7 @@ export const STRINGS_PL = { name: 'Zastosuj do skrótów', desc: 'Zastosuj kolory tęczy do skrótów.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'Zastosuj do ostatnich elementów', desc: 'Zastosuj kolory tęczy do ostatnich elementów.' }, @@ -2217,7 +2265,7 @@ export const STRINGS_PL = { name: 'Zastosuj do atrybutów', desc: 'Zastosuj kolory tęczy do atrybutów.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'Spójna jasność dla odcieni', // (English: Consistent brightness across hues) desc: 'Interpoluje jasność między kolorami początkowymi i końcowymi podczas przejść odcieni.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2235,7 +2283,7 @@ export const STRINGS_PL = { all: 'Każdy poziom' } }, - collapseBehavior: { + collapseItems: { name: 'Zwiń elementy', desc: 'Wybierz na co wpływa przycisk służący do zwijania i rozwijania elementów.', options: { @@ -2245,7 +2293,7 @@ export const STRINGS_PL = { propertiesOnly: 'Tylko atrybuty' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'Zachowaj wybrany element rozwinięty', desc: 'Podczas zwijania, zachowaj wybrany element oraz elementy nadrzędne rozwinięte.' }, @@ -2253,7 +2301,7 @@ export const STRINGS_PL = { name: 'Pomiń katalog główny sejfu podczas zwijania', desc: 'Podczas zwijania wszystkich elementów pozostaw folder główny sejfu w bieżącym stanie.' }, - navIndent: { + treeIndentation: { name: 'Wcięcie w strukturze', desc: 'Dostosuj szerokość wcięcia w strukturze folderów, tagów i właściwości (piksele).' }, @@ -2279,7 +2327,7 @@ export const STRINGS_PL = { line: 'Linia' } }, - navRootSpacing: { + rootItemSpacing: { name: 'Odstęp elementów głównych', desc: 'Odstęp między nadrzędnymi folderami, tagami i właściwościami (piksele).' }, @@ -2306,15 +2354,15 @@ export const STRINGS_PL = { highToLow: 'malejąco' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'Pokaż folder tagów', desc: 'Wyświetla "Tagi" jako folder, który można zwinąć.' }, - showUntagged: { + showUntaggedNotes: { name: 'Pokaż nieotagowane notatki', desc: 'Nieotagowane notatki zawierają etykietę "Bez tagów".' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'Filtruj tagi według wyboru', desc: 'Pokaż tylko tagi występujące w notatkach w wybranym folderze lub atrybucie.' }, @@ -2348,20 +2396,20 @@ export const STRINGS_PL = { highToLow: 'malejąco' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'Pokaż folder atrybutów', desc: 'Wyświetl "Atrybuty" jako zwijany folder.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'Filtruj atrybuty według wyboru', desc: 'Pokaż tylko atrybuty występujące w notatkach w wybranym folderze lub tagu.' }, - hiddenTags: { + hideTags: { name: 'Ukryj tagi (profil sejfu)', desc: 'Lista tagów rozdzielonych przecinkami. Format nazw: tag* (zaczynające się od), *tag (kończące się na). Format ścieżek: archiwum (tag i elementy podrzędne), archiwum/* (tylko elementy podrzędne), projekty/*/szkice (dowolne w środku).', placeholder: 'archiwum*, *szkic, projekty/*/stare' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'Ukryj notatki z tagami (profil sejfu)', desc: 'Lista tagów rozdzielonych przecinkami. Notatki zawierające pasujące tagi są ukryte. Format nazw: tag* (zaczynające się od), *tag (kończące się na). Format ścieżek: archiwum (tag i elementy podrzędne), archiwum/* (tylko elementy podrzędne), projekty/*/szkice (dowolne w środku).', placeholder: 'archiwum*, *szkic, projekty/*/stare' @@ -2394,7 +2442,7 @@ export const STRINGS_PL = { desc: 'Plik szablonu używany podczas tworzenia notatek folderów. Szablony Markdown mogą używać Templatera. Szablony Canvas i Base są kopiowane jako zawartość pliku. Ustaw lokalizację folderu szablonów w Operacje na plikach > Szablony.', formatWarning: 'Format szablonu musi odpowiadać wybranemu typowi notatki folderu: .md, .canvas lub .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'Nazwy folderów otwierają notatki folderów', desc: 'Kliknięcie nazwy folderu otwiera jego notatkę folderu. Po wyłączeniu notatki folderów dostarczają tylko metadane folderu, takie jak nazwa, ikona i kolor.' }, @@ -2415,7 +2463,7 @@ export const STRINGS_PL = { rightSidebar: 'Prawy pasek boczny' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'Prawy pasek boczny: Pokaż najbliższą notatkę folderu', desc: 'Po wybraniu folderu prawy pasek boczny automatycznie pokazuje najbliższą nadrzędną notatkę folderu.' }, @@ -2458,7 +2506,7 @@ export const STRINGS_PL = { indexingTitle: 'Indeksowanie sejfu...', progress: 'Aktualizowanie pamięci podręcznej Notebook Navigator.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'Pobierz', downloadingLabel: 'Pobieranie...', removeButton: 'Usuń', @@ -2470,7 +2518,7 @@ export const STRINGS_PL = { infoNote: 'Pobrane pakiety ikonek synchronizują się między urządzeniami. Pakiety ikonek są przechowywane lokalnie na każdym urządzeniu; synchronizacja śledzi jedynie, czy należy je pobrać, czy usunąć. Pakiety ikonek są pobierane z repozytorium Notebook Navigator (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'Używaj metadanych', desc: 'Używaj metadanych dla nazwy notatki, znaczników czasu, ikonek i kolorów' }, @@ -2489,7 +2537,7 @@ export const STRINGS_PL = { desc: 'Pole metadanych dla kolorów tła. Pozostaw puste, aby użyć kolorów tła zapisanych w ustawieniach.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'Przenieś ikonki i kolory z ustawień', desc: 'Zapisane w ustawieniach: ikonki {icons}, kolory {colors}.', button: 'Przenieś', @@ -2499,7 +2547,7 @@ export const STRINGS_PL = { noticeFailures: 'Niepowodzenie: {failures}.', noticeError: 'Przenoszenie nie powiodło się. Sprawdź konsolę, aby uzyskać więcej informacji.' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'Pola nazwy', desc: 'Lista pól metadanych rozdzielonych przecinkami. Używana jest pierwsza poprawna wartość. W przypadku braku wartości używana jest nazwa pliku.', placeholder: 'tytuł, nazwa' @@ -2514,7 +2562,7 @@ export const STRINGS_PL = { desc: 'Nazwa pola metadanych dla znacznika czasu modyfikacji. Pozostaw puste, aby używać tylko daty systemu plików.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'Format znacznika czasu', desc: 'Format używany do przetwarzania znaczników czasu w metadanych. Pozostaw puste, aby użyć formatu ISO 8601.', helpTooltip: 'Format z Moment', @@ -2527,12 +2575,12 @@ export const STRINGS_PL = { buttonText: '❤️ Wesprzyj', coffeeButton: '☕️ Postaw kawę' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'Sprawdź nową wersję podczas uruchamiania', desc: 'Sprawdza dostępność nowych wersji wtyczki podczas uruchamiania i wyświetla powiadomienie, gdy dostępna jest aktualizacja. Sprawdzanie odbywa się maksymalnie raz dziennie.', status: 'Nowa wersja dostępna: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'Rejestrowanie debugowania przy starcie', desc: 'Zapisuje diagnostykę startu w pliku Markdown ze znacznikiem czasu w katalogu głównym sejfu, a następnie zatrzymuje się po ustabilizowaniu startu. Plik może być synchronizowany i zawierać ścieżki plików.' }, diff --git a/src/i18n/locales/pt.ts b/src/i18n/locales/pt.ts index c95879041..3a7c71f75 100644 --- a/src/i18n/locales/pt.ts +++ b/src/i18n/locales/pt.ts @@ -74,6 +74,9 @@ export const STRINGS_PT = { shortcutsHeader: 'Atalhos', // Header label for shortcuts section in navigation pane (English: Shortcuts) recentFilesHeader: 'Ficheiros recentes', // Header label for recent files section in navigation pane (English: Recent files) properties: 'Propriedades', + folders: 'Pastas', + tags: 'Etiquetas', + calendar: 'Calendário', reorderRootFoldersTitle: 'Reordenar navegação', reorderRootFoldersHint: 'Use setas ou arraste para reordenar', vaultRootLabel: 'Cofre', @@ -1011,101 +1014,143 @@ export const STRINGS_PT = { exportSuccess: 'Relatório de metadados falhados exportado para: {filename}', exportFailed: 'Falha ao exportar relatório de metadados' }, - sections: { - general: 'Geral', - vaultFilters: 'Filtros de exibição', - appearanceBehavior: 'Aparência e comportamento', - navigationPane: 'Painel de navegação', - calendar: 'Calendário', - fileOperations: 'Operações de ficheiros', - icons: 'Pacotes de ícones', - folders: 'Pastas', - folderNotes: 'Notas de pasta', - folderNoteFiles: 'Ficheiros de notas de pasta', - foldersAndFolderNotes: 'Pastas e notas de pasta', - tagsAndProperties: 'Etiquetas e propriedades', - tags: 'Etiquetas', - listPane: 'Painel de lista', - notes: 'Exibição de ficheiros', - shortcutsAndRecentFiles: 'Atalhos e ficheiros recentes', - advanced: 'Avançado' + index: { + label: 'Geral', + description: 'Notas de versão, suporte, perfil do cofre, tipos de ficheiro e chaves de propriedades.', + groups: { + vaultSetup: 'Configuração do cofre' + } }, pageGroups: { configuration: 'Configuração', - navigationAndContent: 'Painel de navegação', - notesAndLists: 'Painel de lista', + navigationPane: 'Painel de navegação', + listPane: 'Painel de lista', calendarAndTools: 'Calendário e ferramentas' }, - pageDescriptions: { - general: 'Notas de versão, suporte, perfil do cofre, tipos de ficheiro e chaves de propriedades.', - vaultFilters: 'Pastas, etiquetas, ficheiros, etiquetas de ficheiro e regras de propriedades ocultas.', - appearanceBehavior: 'Comportamento, navegação por teclado, botões do rato, aparência e formatação.', - navigationPane: 'Esquema, aparência, contagem de ficheiros, comportamento de recolha e cores arco-íris.', - shortcuts: 'Visibilidade de atalhos, distintivos, ficheiros recentes e itens fixados.', - calendar: 'Exibição do calendário, notas de data, modelos, localização e posicionamento da barra lateral.', - fileOperations: 'Modelos, confirmações de eliminação, anexos e comportamento de conflitos ao mover ficheiros.', - foldersAndFolderNotes: 'Exibição de pastas, notas de pasta, modelos de notas de pasta e comportamento das notas de pasta.', - tagsProperties: 'Secções de etiquetas e propriedades, ícones, ordenação, âmbito e herança.', - listPane: 'Ordenação, agrupamento, modos de lista, notas fixadas e pré-visualizações de desenhos.', - frontmatter: 'Campos de frontmatter para nomes de exibição, carimbos de data/hora, ícones e cores.', - notes: 'Títulos, texto de pré-visualização, imagens de destaque, etiquetas, propriedades, datas, contagem de palavras e contagem de caracteres.', - iconPacks: 'Ícones de interface, ícones de ficheiros e gestão de pacotes de ícones.', - advanced: 'Diagnósticos, limpeza de metadados, importação/exportação e reposição.' - }, - groups: { - general: { - vaultConfiguration: 'Configuração do cofre', - templates: 'Modelos', - behavior: 'Comportamento', - startup: 'Arranque', - keyboardNavigation: 'Navegação por teclado', - mouseButtons: 'Botões do rato', - view: 'Aparência', - icons: 'Ícones', - desktopAppearance: 'Aparência no computador', - mobileAppearance: 'Aparência móvel', - formatting: 'Formatação' + pages: { + displayFilters: { + label: 'Filtros de exibição', + description: 'Pastas, etiquetas, ficheiros, etiquetas de ficheiro e regras de propriedades ocultas.' + }, + appearanceAndBehavior: { + label: 'Aparência e comportamento', + description: 'Comportamento, navegação por teclado, botões do rato, aparência e formatação.', + groups: { + startup: 'Arranque', + keyboardNavigation: 'Navegação por teclado', + mouseButtons: 'Botões do rato', + desktopAppearance: 'Aparência no computador', + mobileAppearance: 'Aparência móvel', + appearance: 'Aparência', + icons: 'Ícones', + formatting: 'Formatação' + } + }, + navigationPane: { + label: 'Painel de navegação', + description: 'Esquema, aparência, contagem de ficheiros, comportamento de recolha e cores arco-íris.', + groups: { + appearance: 'Aparência', + banner: 'Banner', + collapseItems: 'Recolher itens', + dragAndDrop: 'Arrastar e largar', + fileCounts: 'Contagens de ficheiros', + rainbowColors: 'Cores arco-íris' + } + }, + shortcutsAndRecentFiles: { + label: 'Atalhos e ficheiros recentes', + description: 'Visibilidade de atalhos, distintivos, ficheiros recentes e itens fixados.', + groups: { + shortcuts: 'Atalhos', + recentFiles: 'Ficheiros recentes' + } + }, + foldersAndFolderNotes: { + label: 'Pastas e notas de pasta', + description: 'Exibição de pastas, notas de pasta, modelos de notas de pasta e comportamento das notas de pasta.', + groups: { + folders: 'Pastas', + folderNotes: 'Notas de pasta', + folderNoteFiles: 'Ficheiros de notas de pasta' + } + }, + tagsAndProperties: { + label: 'Etiquetas e propriedades', + description: 'Secções de etiquetas e propriedades, ícones, ordenação, âmbito e herança.', + groups: { + tags: 'Etiquetas', + properties: 'Propriedades' + } + }, + listPane: { + label: 'Painel de lista', + description: 'Ordenação, agrupamento, modos de lista, notas fixadas e pré-visualizações de desenhos.', + groups: { + appearance: 'Aparência', + sortAndGroup: 'Ordenação e agrupamento', + groupHeaders: 'Cabeçalhos de grupo', + manualSort: 'Ordenação manual', + pinnedNotes: 'Notas fixadas', + behavior: 'Comportamento', + drawingPreviews: 'Pré-visualizações de desenhos' + } + }, + fileOperations: { + label: 'Operações de ficheiros', + description: 'Modelos, confirmações de eliminação, anexos e comportamento de conflitos ao mover ficheiros.', + groups: { + templates: 'Modelos' + } + }, + frontmatterFields: { + label: 'Campos de frontmatter', + description: 'Campos de frontmatter para nomes de exibição, carimbos de data/hora, ícones e cores.' + }, + fileDisplay: { + label: 'Exibição de ficheiros', + description: + 'Títulos, texto de pré-visualização, imagens de destaque, etiquetas, propriedades, datas, contagem de palavras e contagem de caracteres.', + groups: { + icon: 'Ícone', + title: 'Título', + previewText: 'Texto de pré-visualização', + featureImage: 'Imagem de destaque', + tags: 'Etiquetas', + properties: 'Propriedades', + tasks: 'Tarefas', + date: 'Data', + parentFolder: 'Pasta superior', + wordAndCharacterCount: 'Contagem de palavras e caracteres' + } + }, + calendar: { + label: 'Calendário', + description: 'Exibição do calendário, notas de data, modelos, localização e posicionamento da barra lateral.', + groups: { + appearance: 'Aparência', + leftSidebar: 'Barra lateral esquerda', + calendarIntegration: 'Integração do calendário', + rightSidebar: 'Barra lateral direita' + } + }, + iconPacks: { + label: 'Pacotes de ícones', + description: 'Ícones de interface, ícones de ficheiros e gestão de pacotes de ícones.' }, advanced: { - maintenance: 'Manutenção', - resetSettings: 'Repor definições' - }, - navigation: { - appearance: 'Aparência', - banner: 'Banner', - collapseItems: 'Recolher itens', - dragAndDrop: 'Arrastar e largar', - noteCounts: 'Contagens de ficheiros', - rainbowColors: 'Cores arco-íris', - leftSidebar: 'Barra lateral esquerda', - calendarIntegration: 'Integração do calendário' - }, - list: { - display: 'Aparência', - sortAndGroup: 'Ordenação e agrupamento', - groupHeaders: 'Cabeçalhos de grupo', - manualSort: 'Ordenação manual', - pinnedNotes: 'Notas fixadas', - drawingPreviews: 'Pré-visualizações de desenhos' - }, - notes: { - frontmatter: 'Campos de frontmatter', - tasks: 'Tarefas', - icon: 'Ícone', - title: 'Título', - previewText: 'Texto de pré-visualização', - featureImage: 'Imagem de destaque', - tags: 'Etiquetas', - properties: 'Propriedades', - date: 'Data', - parentFolder: 'Pasta superior', - wordCount: 'Contagem de palavras e caracteres' + label: 'Avançado', + description: 'Diagnósticos, limpeza de metadados, importação/exportação e reposição.', + groups: { + maintenance: 'Manutenção', + resetSettings: 'Repor definições' + } } }, syncMode: { notSynced: '(não sincronizado)', - switchToSynced: 'Ativar sincronização', - switchToLocal: 'Desativar sincronização' + enableSync: 'Ativar sincronização', + disableSync: 'Desativar sincronização' }, items: { listPaneTitle: { @@ -1113,11 +1158,11 @@ export const STRINGS_PT = { desc: 'Escolha onde mostrar o título do painel de lista.', options: { header: 'Mostrar no cabeçalho', - list: 'Mostrar no painel de lista', + listPane: 'Mostrar no painel de lista', hidden: 'Não mostrar' } }, - sortNotesBy: { + defaultSortOrder: { name: 'Ordem de ordenação predefinida', desc: 'Escolha a ordem de ordenação predefinida para notas. As propriedades de Propriedades de ordenação aparecem como opções de ordenação adicionais.', directions: { @@ -1125,18 +1170,18 @@ export const STRINGS_PT = { desc: 'Descendente' }, dateDirections: { - desc: 'Mais recente no topo', - asc: 'Mais antiga no topo' + newestOnTop: 'Mais recente no topo', + oldestOnTop: 'Mais antiga no topo' }, textDirections: { - asc: 'A no topo', - desc: 'Z no topo' + aOnTop: 'A no topo', + zOnTop: 'Z no topo' }, fields: { - modified: 'Data de edição', - created: 'Data de criação', + dateEdited: 'Data de edição', + dateCreated: 'Data de criação', title: 'Título', - filename: 'Nome do ficheiro', + fileName: 'Nome do ficheiro', property: 'Propriedade' } }, @@ -1149,7 +1194,7 @@ export const STRINGS_PT = { follow: 'Seguir a ordenação' } }, - propertySortKey: { + sortingProperties: { name: 'Propriedades de ordenação', desc: 'Propriedades do frontmatter separadas por vírgulas. Cada propriedade aparece como opção de ordenação na definição Ordem de ordenação predefinida e no menu de ordenação do painel de lista. Estas propriedades não são alteradas.', placeholder: 'published, author', @@ -1159,14 +1204,14 @@ export const STRINGS_PT = { both: 'A ordem de ordenação predefinida e o agrupamento predefinido foram repostos porque as suas propriedades já não estão disponíveis.' } }, - propertySortSecondary: { + propertySecondarySort: { name: 'Ordenação secundária', desc: 'Usada com a ordenação por propriedade quando as notas têm o mesmo valor de propriedade ou não têm valor.', options: { title: 'Título', - filename: 'Nome do ficheiro', - created: 'Data de criação', - modified: 'Data de edição' + fileName: 'Nome do ficheiro', + dateCreated: 'Data de criação', + dateEdited: 'Data de edição' } }, propertySortInstructions: { @@ -1179,16 +1224,16 @@ export const STRINGS_PT = { '**Vistas de etiqueta e propriedade:** Quando o agrupamento **Pasta** está selecionado, são apresentados cabeçalhos de data em vez disso.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'Propriedades de agrupamento', desc: 'Propriedades do frontmatter separadas por vírgulas. Cada propriedade aparece como opção de agrupamento na definição Agrupamento predefinido e no menu de ordenação do painel de lista. Estas propriedades não são alteradas.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'Propriedade de ordenação manual', desc: 'Propriedade frontmatter usada para guardar valores de índice numéricos para ordenação manual.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'Propriedade de cabeçalho de grupo', desc: 'Propriedade frontmatter usada para guardar cabeçalhos de grupo personalizados.' }, @@ -1205,7 +1250,7 @@ export const STRINGS_PT = { options: { top: 'Topo', bottom: 'Fundo', - 'below-selected-note': 'Abaixo da nota selecionada', + belowSelectedNote: 'Abaixo da nota selecionada', unsorted: 'Sem ordenação' } }, @@ -1221,7 +1266,7 @@ export const STRINGS_PT = { 'No painel de lista, selecione uma nota ou várias notas, e prima **Cmd/Ctrl + Arrow Up/Down** para mover a seleção para cima ou para baixo.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'Deslocar para ficheiro selecionado em alterações da lista', desc: 'Deslocar para o ficheiro selecionado ao fixar notas, mostrar notas descendentes, alterar aparência da pasta ou executar operações de ficheiros.' }, @@ -1229,15 +1274,15 @@ export const STRINGS_PT = { name: 'Mostrar notas de subpastas / descendentes', desc: 'Incluir notas de subpastas aninhadas e descendentes de etiquetas e propriedades ao visualizar uma pasta, etiqueta ou propriedade.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'Fixar notas apenas na sua pasta', desc: 'As notas fixadas aparecem fixadas apenas na sua própria pasta. Útil para notas de pasta ou se tiver muitas notas fixadas. Não afeta as vistas de etiquetas ou propriedades.' }, - separateNoteCounts: { + separateFileCounts: { name: 'Mostrar contagens de ficheiros atuais e descendentes separadamente', desc: 'Exibir contagens de ficheiros no formato "atuais ▾ descendentes" para pastas, etiquetas e propriedades.' }, - groupNotes: { + defaultGrouping: { name: 'Agrupamento predefinido', desc: 'Os **cabeçalhos** anotam a lista ordenada sem alterar a sua ordem: Personalizado mostra cabeçalhos definidos no frontmatter e Data insere cabeçalhos de data. Os **grupos** reordenam a lista: os grupos de pastas e propriedades são ordenados por si próprios e as notas dentro de cada grupo seguem a ordem de ordenação.', families: { @@ -1250,7 +1295,7 @@ export const STRINGS_PT = { folder: 'Pasta' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'Mostrar sempre todas as etiquetas e propriedades', desc: 'Quando desativado, as etiquetas que correspondem à seleção de navegação atual ficam ocultas (por exemplo, a etiqueta "receitas" fica oculta ao navegar na etiqueta "receitas"). Ative para manter todas as etiquetas visíveis.' }, @@ -1258,7 +1303,7 @@ export const STRINGS_PT = { name: 'Cabeçalhos de grupo fixos', desc: 'Mantém o cabeçalho atual de data, pasta, propriedade ou secção fixada visível ao deslocar.' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'Mostrar caminhos das subpastas', desc: 'Ao agrupar por pasta no painel de lista, mostrar caminhos das subpastas em vez de apenas nomes de pastas.' }, @@ -1286,9 +1331,9 @@ export const STRINGS_PT = { name: 'Ícone de tarefas inacabadas', desc: 'Substituir o ícone do ficheiro quando uma nota tem tarefas inacabadas.', options: { - none: 'Desativado', + disabled: 'Desativado', compact: 'Modo compacto', - all: 'Padrão e compacto' + standardAndCompact: 'Padrão e compacto' } }, useFolderIcon: { @@ -1311,7 +1356,7 @@ export const STRINGS_PT = { name: 'Progresso das tarefas: ocultar quando concluídas', desc: 'Ocultar o progresso das tarefas quando todas as tarefas de uma nota estão concluídas.' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'Fundo de tarefas inacabadas', desc: 'Aplicar uma cor de fundo quando uma nota tem tarefas inacabadas.' }, @@ -1319,7 +1364,7 @@ export const STRINGS_PT = { name: 'Cor de fundo de tarefas inacabadas', desc: 'Definir a cor de fundo usada quando uma nota tem tarefas inacabadas.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'Ícones por nome de ficheiro', desc: 'Atribuir ícones a ficheiros com base no texto nos seus nomes.' }, @@ -1329,7 +1374,7 @@ export const STRINGS_PT = { placeholder: '# texto=ícone\nreunião=ph-calendar\nfatura=ph-receipt', editTooltip: 'Editar mapeamentos' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'Ícones por tipo de ficheiro', desc: 'Atribuir ícones a ficheiros com base na sua extensão.' }, @@ -1337,7 +1382,7 @@ export const STRINGS_PT = { name: 'Predefinição de ícones de ficheiro', desc: 'Escolher os ícones integrados ou uma predefinição de pacote de ícones. As regras de extensão personalizadas substituem esta predefinição.', options: { - none: 'Ícones integrados' + builtIn: 'Ícones integrados' }, notInstalledWarning: 'Este pacote de ícones não está instalado. Em vez disso, são mostrados os ícones integrados.' }, @@ -1360,11 +1405,11 @@ export const STRINGS_PT = { name: 'Mostrar pasta pai', desc: 'Exibir o nome da pasta pai para notas em subpastas, etiquetas ou propriedades.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'Mostrar caminho da pasta', desc: 'Mostrar o caminho relativo à pasta selecionada em vez de apenas o nome da pasta. Etiquetas e propriedades mostram o caminho completo.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'Clicar na pasta pai abre pasta', desc: 'Clicar na etiqueta da pasta pai abre a pasta no painel de lista.' }, @@ -1392,7 +1437,7 @@ export const STRINGS_PT = { vertical: 'Divisão vertical' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'Quando a barra lateral é demasiado estreita', desc: 'Escolha o que acontece quando o painel de navegação e o painel de lista não cabem lado a lado.', options: { @@ -1401,7 +1446,7 @@ export const STRINGS_PT = { vertical: 'Mudar para divisão vertical' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'Limite de barra lateral estreita', desc: 'Escolha como o limite de largura da barra lateral é calculado.', options: { @@ -1409,41 +1454,41 @@ export const STRINGS_PT = { customWidth: 'Largura personalizada' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'Largura do limite de barra lateral estreita', desc: 'Mudar quando a barra lateral for mais estreita do que esta largura.', resetTooltip: 'Repor para a largura predefinida' }, - appearanceBackground: { + paneBackgroundColor: { name: 'Cor de fundo', desc: 'Escolha cores de fundo para os painéis de navegação e lista.', options: { separate: 'Fundos separados', - primary: 'Usar fundo da lista', - secondary: 'Usar fundo da navegação' + listBackground: 'Usar fundo da lista', + navigationBackground: 'Usar fundo da navegação' } }, - appearanceScale: { + zoomLevel: { name: 'Nível de zoom', desc: 'Controla o nível de zoom geral do Notebook Navigator (percentagem).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'Usar barras de ferramentas flutuantes no iOS', desc: 'Aplica-se apenas ao iOS.' }, - startView: { + defaultStartupView: { name: 'Vista de arranque predefinida', desc: 'Escolha qual painel fica ativo ao abrir o Notebook Navigator. O esquema de painel único mostra este painel primeiro; o esquema de painel duplo dá-lhe o foco do teclado.', options: { navigation: 'Painel de navegação', - files: 'Painel de lista' + listPane: 'Painel de lista' } }, toolbarButtons: { name: 'Botões da barra de ferramentas', desc: 'Escolha quais botões aparecem na barra de ferramentas. Os botões ocultos permanecem acessíveis através de comandos e menus.' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'Abrir novas notas num novo separador', desc: 'Quando ativado, o comando Criar nova nota abre as notas num novo separador. Quando desativado, as notas substituem o separador atual.' }, @@ -1463,20 +1508,20 @@ export const STRINGS_PT = { name: 'Revelação automática: Ignorar eventos de outras janelas', desc: 'Não alterar a nota ativa ao trabalhar com notas numa janela diferente.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'Animação de painel único', desc: 'Duração da transição ao alternar entre painéis no modo de painel único (milissegundos).', resetTooltip: 'Repor predefinição' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'Selecionar primeira nota automaticamente', desc: 'Abrir automaticamente a primeira nota ao mudar de pastas, etiquetas ou propriedades.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'Desativar deslocamento automático para atalhos', desc: 'Não deslocar o painel de navegação ao clicar em itens nos atalhos.' }, - autoExpandNavItems: { + expandOnSelection: { name: 'Expandir ao selecionar', desc: 'Expandir pastas e etiquetas quando selecionadas. No modo de painel único, a primeira seleção expande, a segunda mostra ficheiros.' }, @@ -1514,16 +1559,16 @@ export const STRINGS_PT = { name: 'Distintivo de atalho', desc: "O que exibir ao lado dos atalhos. Use os comandos 'Abrir atalho 1-9' para abrir atalhos diretamente.", options: { - index: 'Posição (1-9)', + position: 'Posição (1-9)', count: 'Contagem de itens', none: 'Nenhum' } }, - showRecentNotes: { + showRecentFiles: { name: 'Mostrar ficheiros recentes', desc: 'Exibir a secção de ficheiros recentes no painel de navegação.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'Ocultar tipos de ficheiros dos ficheiros recentes', desc: 'Escolher os tipos de ficheiros a ocultar na secção de ficheiros recentes.', options: { @@ -1531,15 +1576,15 @@ export const STRINGS_PT = { folderNotes: 'Notas de pasta' } }, - recentNotesCount: { + recentFilesCount: { name: 'Número de ficheiros recentes', desc: 'Número de ficheiros recentes a exibir.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'Fixar ficheiros recentes com atalhos', desc: 'Incluir ficheiros recentes quando os atalhos estão fixos.' }, - calendarEnabled: { + enableCalendar: { name: 'Ativar calendário', desc: 'Ativar funcionalidades de calendário do Notebook Navigator.' }, @@ -1551,12 +1596,12 @@ export const STRINGS_PT = { rightSidebar: 'Barra lateral direita' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'Posicionamento em painel único', desc: 'Onde o calendário é exibido no modo de painel único.', options: { navigationPane: 'Painel de navegação', - below: 'Abaixo dos painéis' + belowPanes: 'Abaixo dos painéis' } }, calendarLocale: { @@ -1578,7 +1623,7 @@ export const STRINGS_PT = { thuFri: 'Quinta-feira e sexta-feira' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'Formato do nome do mês', desc: 'Nome do mês completo (janeiro) ou abreviado (jan).', options: { @@ -1590,7 +1635,7 @@ export const STRINGS_PT = { name: 'Mostrar botões de informação', desc: 'Mostrar botões de informação na barra de pesquisa e no cabeçalho do calendário.' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'Semanas a mostrar na barra lateral esquerda', desc: 'O calendário na barra lateral direita mostra sempre o mês completo.', options: { @@ -1635,7 +1680,7 @@ export const STRINGS_PT = { name: 'Mostrar itens ocultos', desc: 'Quando ativado, o calendário mostra sempre todas as notas do calendário, incluindo notas ocultas pelos filtros do perfil do cofre.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'Fonte de notas diárias', desc: 'Fonte para notas do calendário.', options: { @@ -1655,34 +1700,38 @@ export const STRINGS_PT = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'Pasta raiz', desc: 'Pasta base para notas periódicas. Padrões de data podem incluir subpastas. Muda com o perfil do cofre selecionado.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'Localização da pasta de modelos', desc: 'O seletor de arquivos de modelo mostra notas desta pasta.', placeholder: 'Templates', usage: 'Usada por notas de calendário e notas de pasta. Configure os modelos em Calendário > Integração do calendário e Pastas e notas de pasta > Ficheiros de notas de pasta.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'Notas diárias', desc: 'Formatar caminho usando formato de data Moment. Coloque nomes de subpastas entre colchetes, ex. [Work]/YYYY. Clique no ícone de modelo para definir um modelo. Definir localização da pasta de modelos em Operações de ficheiros > Modelos.', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'O padrão deve ser formatado e analisado novamente como uma data completa (ano, mês, dia).' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'Formatar caminho usando ', momentLinkText: 'formato de data Moment', momentDescSuffix: '. Coloque nomes de subpastas entre colchetes, ex. [Work]/YYYY. Clique no ícone de modelo para definir um modelo. Definir localização da pasta de modelos em Operações de ficheiros > Modelos.', - templaterSupportInstalled: '✅ O plug-in Templater está instalado com suporte completo de modelos.', - templaterSupportMissing: '⚠️ Instale o plug-in Templater para suporte de modelos.', templateTokenNoticeLabel: 'Importante!', templateTokenNotice: 'O suporte de modelos requer o plug-in Templater. Formatos integrados como {{date}} e {{title}} só funcionam quando {source} está definido como {option}.', - placeholder: 'YYYY/YYYYMMDD', - example: 'Sintaxe atual: {path}', - parsingError: 'O padrão deve ser formatado e analisado novamente como uma data completa (ano, mês, dia).' + example: 'Sintaxe atual: {path}' + }, + templaterSupport: { + installed: '✅ O plug-in Templater está instalado com suporte completo de modelos.', + missing: '⚠️ Instale o plug-in Templater para suporte de modelos.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'Notas semanais', parsingError: 'O padrão deve ser formatado e analisado novamente como uma semana completa (ano da semana, número da semana).', @@ -1691,19 +1740,19 @@ export const STRINGS_PT = { mixedWeekTokensWarning: 'Este padrão mistura tokens de semana baseados na segunda-feira ("W" ou "G") com tokens de semana baseados no idioma ("w" ou "g"). Use um conjunto de forma consistente: "GGGG" com "WW" para semanas baseadas na segunda-feira, ou "gggg" com "ww" se as notas semanais devem seguir a língua selecionada.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'Notas mensais', parsingError: 'O padrão deve ser formatado e analisado novamente como um mês completo (ano, mês).' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'Notas trimestrais', parsingError: 'O padrão deve ser formatado e analisado novamente como um trimestre completo (ano, trimestre).' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'Notas anuais', parsingError: 'O padrão deve ser formatado e analisado novamente como um ano completo (ano).' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'Arquivo de modelo: {name}' }, showTooltips: { @@ -1724,7 +1773,7 @@ export const STRINGS_PT = { buttonText: 'Repor separador', notice: 'Posição do separador reposta. Reinicie o Obsidian ou reabra o Notebook Navigator para aplicar.' }, - settingsTransfer: { + importAndExportSettings: { name: 'Importar e exportar definições', desc: 'Exportar ou importar definições do Notebook Navigator como JSON. A importação substitui todas as definições.', importButtonText: 'Importar', @@ -1783,15 +1832,15 @@ export const STRINGS_PT = { name: 'Pressionar Enter para abrir ficheiros', desc: 'Abrir ficheiros apenas ao pressionar Enter durante a navegação por teclado na lista. No macOS, isto impede que Enter renomeie ficheiros.' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'Escolher se Shift+Enter abre ou renomeia o ficheiro selecionado.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'Escolher se Cmd+Enter abre ou renomeia o ficheiro selecionado.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'Escolher se Ctrl+Enter abre ou renomeia o ficheiro selecionado.' }, @@ -1799,12 +1848,12 @@ export const STRINGS_PT = { name: 'Botões voltar/avançar do rato', desc: 'Ação dos botões voltar e avançar do rato no ambiente de trabalho.', options: { - none: 'Usar predefinição do sistema', + systemDefault: 'Usar predefinição do sistema', singlePaneSwitch: 'Alternar painéis (painel único)', history: 'Navegar no histórico' } }, - fileVisibility: { + showFileTypes: { name: 'Mostrar tipos de ficheiro (perfil do cofre)', desc: 'Filtrar quais tipos de ficheiro são mostrados no navegador. Tipos de ficheiro não suportados pelo Obsidian podem abrir em aplicações externas.', options: { @@ -1836,12 +1885,12 @@ export const STRINGS_PT = { desc: 'Cria a nota periódica ao iniciar ou através do comando se não existir.' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'Ocultar notas com regras de propriedades (perfil do cofre)', desc: 'Lista de regras de frontmatter separadas por vírgulas. Use entradas `key` ou `key=value` (ex: status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'Ocultar ficheiros (perfil do cofre)', desc: 'Lista de padrões de nomes de ficheiros separados por vírgulas para ocultar. Suporta curingas * e caminhos / (ex: temp-*, *.png, /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1868,7 +1917,7 @@ export const STRINGS_PT = { duplicateName: 'Nome de perfil já existe' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'Posição do título do cofre', desc: 'Escolha onde o título do cofre é mostrado.', options: { @@ -1876,7 +1925,7 @@ export const STRINGS_PT = { navigation: 'Mostrar no painel de navegação' } }, - excludedFolders: { + hideFolders: { name: 'Ocultar pastas (perfil do cofre)', desc: 'Lista de pastas a ocultar separadas por vírgulas. Padrões de nome: assets* (pastas começando com assets), *_temp (terminando com _temp). Padrões de caminho: /arquivo (apenas arquivo raiz), /res* (pastas raiz começando com res), /*/temp (pastas temp um nível abaixo), /projetos/* (todas as pastas dentro de projetos).', placeholder: 'modelos, assets*, /arquivo, /res*' @@ -1890,7 +1939,7 @@ export const STRINGS_PT = { name: 'Mostrar data', desc: 'Exibir a data abaixo dos nomes das notas.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'Ao ordenar por nome', desc: 'Data a mostrar quando as notas são ordenadas alfabeticamente.', options: { @@ -1902,7 +1951,7 @@ export const STRINGS_PT = { name: 'Mostrar etiquetas de ficheiros', desc: 'Exibir etiquetas clicáveis nos itens de ficheiros.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'Mostrar caminhos completos de etiquetas', desc: "Exibir caminhos completos da hierarquia de etiquetas. Quando ativado: 'ai/openai', 'trabalho/projetos/2024'. Quando desativado: 'openai', '2024'." }, @@ -1910,7 +1959,7 @@ export const STRINGS_PT = { name: 'Colorir etiquetas de ficheiros', desc: 'Aplicar cores de etiquetas às badges de etiquetas nos itens de ficheiros.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'Mostrar etiquetas coloridas primeiro', desc: 'Ordenar etiquetas coloridas antes de outras etiquetas nos itens de ficheiros.' }, @@ -1926,7 +1975,7 @@ export const STRINGS_PT = { name: 'Colorir propriedades de ficheiros', desc: 'Aplicar cores de propriedade aos emblemas de propriedade nos itens de ficheiro.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'Mostrar propriedades coloridas primeiro', desc: 'Ordenar propriedades coloridas antes de outras propriedades nos itens de ficheiro.' }, @@ -1934,7 +1983,7 @@ export const STRINGS_PT = { name: 'Mostrar propriedades no modo compacto', desc: 'Exibir propriedades quando o modo compacto está ativo.' }, - textCountDisplay: { + textCountType: { name: 'Tipo de contagem', desc: 'Escolha que contagens de texto aparecem nos itens de ficheiro.', options: { @@ -1964,11 +2013,11 @@ export const STRINGS_PT = { name: 'Propriedade de destino', desc: 'Chave da propriedade frontmatter que contém a contagem de palavras de destino. Deixe em branco para ocultar destinos.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'Mostrar percentagem de destino', desc: 'Mostrar apenas a percentagem de progresso quando houver uma contagem de palavras de destino disponível.' }, - propertyFields: { + propertyKeys: { name: 'Chaves de propriedades (perfil do cofre)', desc: 'Chaves de propriedades de metadados, com visibilidade por chave para navegação e lista de ficheiros.', addButtonTooltip: 'Configurar chaves de propriedade', @@ -1980,11 +2029,11 @@ export const STRINGS_PT = { name: 'Mostrar propriedades em linhas separadas', desc: 'Mostrar cada propriedade na sua própria linha.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'Ligar etiquetas de propriedade a notas', desc: 'Clique numa etiqueta de propriedade para abrir a nota ligada.' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: 'Ligar etiquetas de propriedade a URLs', desc: 'Clique numa etiqueta de propriedade para abrir o URL ligado.' }, @@ -2004,7 +2053,7 @@ export const STRINGS_PT = { helpTooltip: 'Formato usando Moment', momentLinkText: 'formato Moment' }, - showFilePreview: { + showNotePreview: { name: 'Mostrar pré-visualização da nota', desc: 'Exibir texto de pré-visualização abaixo dos nomes das notas.' }, @@ -2033,7 +2082,7 @@ export const STRINGS_PT = { desc: 'Lista de propriedades frontmatter separadas por vírgulas para verificar texto de pré-visualização. A primeira propriedade com texto será usada.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'Recorrer ao conteúdo da nota', desc: 'Mostrar o conteúdo da nota como pré-visualização quando nenhuma das propriedades especificadas contém texto.' }, @@ -2048,7 +2097,7 @@ export const STRINGS_PT = { '5': '5 linhas' } }, - fileNameRows: { + titleRows: { name: 'Linhas de título', desc: 'Número de linhas a exibir para títulos de notas.', options: { @@ -2079,22 +2128,22 @@ export const STRINGS_PT = { desc: 'Lista separada por vírgulas de propriedades frontmatter. Notas contendo qualquer uma destas propriedades não armazenam imagens de destaque.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'Tamanho de exibição da imagem de destaque', desc: 'Tamanho máximo de renderização para imagens de destaque em listas de notas.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'Tamanho em pixels da imagem de destaque', desc: 'Resolução utilizada ao gerar miniaturas armazenadas de imagens de destaque. Aumente este valor se as pré-visualizações maiores parecerem desfocadas.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2102,7 +2151,7 @@ export const STRINGS_PT = { name: 'Transferir imagens externas', desc: 'Transferir imagens remotas e miniaturas do YouTube para imagens de destaque.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'Ocultar imagens de pré-visualização exportadas', desc: 'Oculta ficheiros PNG de pré-visualização de desenhos exportados. Ative "Mostrar itens ocultos" para os apresentar.' }, @@ -2135,11 +2184,11 @@ export const STRINGS_PT = { alphaDesc: 'Z a A' } }, - showNoteCount: { + showFileCount: { name: 'Mostrar contagem de ficheiros', desc: 'Exibir contagens de ficheiros junto a pastas, etiquetas e propriedades.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'Mostrar ícones para atalhos e itens recentes', desc: 'Exibir ícones junto aos itens nas secções Atalhos e Recentes.' }, @@ -2148,7 +2197,7 @@ export const STRINGS_PT = { desc: 'Editar ícones da barra de ferramentas, pastas, etiquetas, propriedades, itens fixados, pesquisa e ordenação.', buttonText: 'Editar ícones' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'Aplicar cor apenas aos ícones', desc: 'Quando ativado, as cores personalizadas são aplicadas apenas aos ícones. Quando desativado, as cores são aplicadas aos ícones e às etiquetas de texto.' }, @@ -2156,9 +2205,9 @@ export const STRINGS_PT = { name: 'Modo de cores arco-íris (perfil do cofre)', desc: 'Aplicar cores arco-íris no painel de navegação.', options: { - none: 'Desativado', - foreground: 'Cor do texto', - background: 'Cor de fundo' + off: 'Desativado', + textColor: 'Cor do texto', + backgroundColor: 'Cor de fundo' } }, navRainbowFirstColor: { @@ -2181,7 +2230,7 @@ export const STRINGS_PT = { name: 'Aplicar a atalhos', desc: 'Aplicar cores arco-íris aos atalhos.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'Aplicar a itens recentes', desc: 'Aplicar cores arco-íris aos itens recentes.' }, @@ -2215,7 +2264,7 @@ export const STRINGS_PT = { name: 'Aplicar a propriedades', desc: 'Aplicar cores arco-íris às propriedades.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'Brilho consistente entre matizes', // (English: Consistent brightness across hues) desc: 'Interpola o brilho entre as cores inicial e final durante as transições de matiz.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2233,7 +2282,7 @@ export const STRINGS_PT = { all: 'Todos os níveis' } }, - collapseBehavior: { + collapseItems: { name: 'Recolher itens', desc: 'Escolha o que o botão expandir/recolher tudo afeta.', options: { @@ -2243,7 +2292,7 @@ export const STRINGS_PT = { propertiesOnly: 'Apenas propriedades' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'Manter item selecionado expandido', desc: 'Ao recolher, manter o item selecionado e os seus pais expandidos.' }, @@ -2251,7 +2300,7 @@ export const STRINGS_PT = { name: 'Ignorar raiz do cofre ao recolher', desc: 'Ao recolher todos os itens, deixe a pasta raiz do cofre no estado atual.' }, - navIndent: { + treeIndentation: { name: 'Indentação da árvore', desc: 'Ajustar a largura de indentação para pastas, etiquetas e propriedades aninhadas (pixels).' }, @@ -2277,7 +2326,7 @@ export const STRINGS_PT = { line: 'Linha' } }, - navRootSpacing: { + rootItemSpacing: { name: 'Espaçamento de itens raiz', desc: 'Espaçamento entre pastas, etiquetas e propriedades de nível raiz (pixels).' }, @@ -2304,15 +2353,15 @@ export const STRINGS_PT = { highToLow: 'alta para baixa' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'Mostrar pasta de etiquetas', desc: 'Exibir "Etiquetas" como uma pasta recolhível.' }, - showUntagged: { + showUntaggedNotes: { name: 'Mostrar notas sem etiquetas', desc: 'Exibir item "Sem etiquetas" para notas sem etiquetas.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'Filtrar etiquetas por seleção', desc: 'Mostrar apenas etiquetas que aparecem em notas na pasta ou propriedade selecionada.' }, @@ -2346,20 +2395,20 @@ export const STRINGS_PT = { highToLow: 'alto a baixo' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'Mostrar pasta de propriedades', desc: 'Exibir "Propriedades" como uma pasta recolhível.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'Filtrar propriedades por seleção', desc: 'Mostrar apenas propriedades que aparecem em notas na pasta ou etiqueta selecionada.' }, - hiddenTags: { + hideTags: { name: 'Ocultar etiquetas (perfil do cofre)', desc: 'Lista de padrões de etiquetas separados por vírgulas. Padrões de nome: tag* (começa com), *tag (termina com). Padrões de caminho: arquivo (etiqueta e descendentes), arquivo/* (apenas descendentes), projetos/*/rascunhos (curinga intermédio).', placeholder: 'arquivo*, *rascunho, projetos/*/antigo' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'Ocultar notas com tags (perfil do cofre)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2392,7 +2441,7 @@ export const STRINGS_PT = { desc: 'Ficheiro de modelo usado ao criar notas de pasta. Os modelos Markdown podem usar Templater. Os modelos Canvas e Base são copiados como conteúdo do ficheiro. Definir localização da pasta de modelos em Operações de ficheiros > Modelos.', formatWarning: 'O formato do modelo deve corresponder ao tipo de nota de pasta selecionado: .md, .canvas ou .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'Nomes de pastas abrem notas de pasta', desc: 'Clicar no nome de uma pasta abre a respetiva nota de pasta. Quando desativado, as notas de pasta fornecem apenas metadados da pasta, como nome, ícone e cor.' }, @@ -2413,7 +2462,7 @@ export const STRINGS_PT = { rightSidebar: 'Barra lateral direita' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'Barra lateral direita: Mostrar nota de pasta mais próxima', desc: 'Quando uma pasta é selecionada, a barra lateral direita mostra automaticamente a nota de pasta ancestral mais próxima.' }, @@ -2456,7 +2505,7 @@ export const STRINGS_PT = { indexingTitle: 'A indexar o cofre...', progress: 'A atualizar a cache do Notebook Navigator.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'Transferir', downloadingLabel: 'A transferir...', removeButton: 'Remover', @@ -2468,7 +2517,7 @@ export const STRINGS_PT = { infoNote: 'Os pacotes de ícones transferidos sincronizam o estado de instalação entre dispositivos. Os pacotes de ícones permanecem na base de dados local em cada dispositivo; a sincronização apenas rastreia se devem ser transferidos ou removidos. Os pacotes de ícones são transferidos do repositório Notebook Navigator (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'Usar metadados frontmatter', desc: 'Usar frontmatter para nome da nota, timestamps, ícones e cores' }, @@ -2487,7 +2536,7 @@ export const STRINGS_PT = { desc: 'Campo frontmatter para cores de fundo. Deixe vazio para usar cores de fundo guardadas nas definições.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'Migrar ícones e cores das definições', desc: 'Guardados nas definições: {icons} ícones, {colors} cores.', button: 'Migrar', @@ -2497,7 +2546,7 @@ export const STRINGS_PT = { noticeFailures: 'Entradas falhadas: {failures}.', noticeError: 'Migração falhou. Verifique a consola para detalhes.' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'Campos de nome', desc: 'Lista de campos frontmatter separados por vírgula. O primeiro valor não vazio é usado. Usa o nome do ficheiro como alternativa.', placeholder: 'title, name' @@ -2512,7 +2561,7 @@ export const STRINGS_PT = { desc: 'Nome do campo frontmatter para o timestamp de modificação. Deixe vazio para usar apenas a data do sistema de ficheiros.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'Formato de timestamp', desc: 'Formato usado para analisar timestamps no frontmatter. Deixe vazio para usar parsing ISO 8601.', helpTooltip: 'Formato usando Moment', @@ -2525,12 +2574,12 @@ export const STRINGS_PT = { buttonText: '❤️ Patrocinar', coffeeButton: '☕️ Compre-me um café' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'Verificar nova versão ao iniciar', desc: 'Verifica novos lançamentos do plugin ao iniciar e mostra uma notificação quando uma atualização está disponível. As verificações ocorrem no máximo uma vez por dia.', status: 'Nova versão disponível: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'Registo de depuração no arranque', desc: 'Escreve diagnósticos de arranque num ficheiro Markdown com carimbo de data/hora na raiz do cofre e para depois de o arranque estabilizar. O ficheiro pode ser sincronizado e pode incluir caminhos de ficheiros.' }, diff --git a/src/i18n/locales/pt_br.ts b/src/i18n/locales/pt_br.ts index 88af40cc0..4a40fffb7 100644 --- a/src/i18n/locales/pt_br.ts +++ b/src/i18n/locales/pt_br.ts @@ -74,6 +74,9 @@ export const STRINGS_PT_BR = { shortcutsHeader: 'Atalhos', recentFilesHeader: 'Arquivos recentes', // Header label for recent files section in navigation pane (English: Recent files) properties: 'Propriedades', + folders: 'Pastas', + tags: 'Tags', + calendar: 'Calendário', reorderRootFoldersTitle: 'Reordenar navegação', reorderRootFoldersHint: 'Use setas ou arraste para reordenar', vaultRootLabel: 'Cofre', @@ -1013,101 +1016,143 @@ export const STRINGS_PT_BR = { exportSuccess: 'Relatório de metadados com falhas exportado para: {filename}', exportFailed: 'Falha ao exportar relatório de metadados' }, - sections: { - general: 'Geral', - vaultFilters: 'Filtros de exibição', - appearanceBehavior: 'Aparência e comportamento', - navigationPane: 'Painel de navegação', - calendar: 'Calendário', - fileOperations: 'Operações de arquivo', - icons: 'Pacotes de ícones', - folders: 'Pastas', - folderNotes: 'Notas de pasta', - folderNoteFiles: 'Arquivos de notas de pasta', - foldersAndFolderNotes: 'Pastas e notas de pasta', - tagsAndProperties: 'Tags e propriedades', - tags: 'Tags', - listPane: 'Painel de lista', - notes: 'Exibição de arquivos', - shortcutsAndRecentFiles: 'Atalhos e arquivos recentes', - advanced: 'Avançado' + index: { + label: 'Geral', + description: 'Notas de versão, suporte, perfil do cofre, tipos de arquivo e chaves de propriedades.', + groups: { + vaultSetup: 'Configuração do cofre' + } }, pageGroups: { configuration: 'Configuração', - navigationAndContent: 'Painel de navegação', - notesAndLists: 'Painel de lista', + navigationPane: 'Painel de navegação', + listPane: 'Painel de lista', calendarAndTools: 'Calendário e ferramentas' }, - pageDescriptions: { - general: 'Notas de versão, suporte, perfil do cofre, tipos de arquivo e chaves de propriedades.', - vaultFilters: 'Pastas, tags, arquivos, tags de arquivo e regras de propriedades ocultas.', - appearanceBehavior: 'Comportamento, navegação por teclado, botões do mouse, aparência e formatação.', - navigationPane: 'Layout, aparência, contagem de arquivos, comportamento de recolhimento e cores arco-íris.', - shortcuts: 'Visibilidade de atalhos, distintivos, arquivos recentes e itens fixados.', - calendar: 'Exibição do calendário, notas de data, modelos, localidade e posicionamento da barra lateral.', - fileOperations: 'Modelos, confirmações de exclusão, anexos e comportamento de conflito ao mover arquivos.', - foldersAndFolderNotes: 'Exibição de pastas, notas de pasta, modelos de notas de pasta e comportamento das notas de pasta.', - tagsProperties: 'Seções de tags e propriedades, ícones, classificação, escopo e herança.', - listPane: 'Classificação, agrupamento, modos de lista, notas fixadas e pré-visualizações de desenhos.', - frontmatter: 'Campos de frontmatter para nomes de exibição, carimbos de data/hora, ícones e cores.', - notes: 'Títulos, texto de pré-visualização, imagens de destaque, tags, propriedades, datas, contagem de palavras e contagem de caracteres.', - iconPacks: 'Ícones de interface, ícones de arquivo e gerenciamento de pacotes de ícones.', - advanced: 'Diagnóstico, limpeza de metadados, importação/exportação e redefinição.' - }, - groups: { - general: { - vaultConfiguration: 'Configuração do cofre', - templates: 'Modelos', - behavior: 'Comportamento', - startup: 'Inicialização', - keyboardNavigation: 'Navegação por teclado', - mouseButtons: 'Botões do mouse', - view: 'Aparência', - icons: 'Ícones', - desktopAppearance: 'Aparência do desktop', - mobileAppearance: 'Aparência móvel', - formatting: 'Formatação' + pages: { + displayFilters: { + label: 'Filtros de exibição', + description: 'Pastas, tags, arquivos, tags de arquivo e regras de propriedades ocultas.' + }, + appearanceAndBehavior: { + label: 'Aparência e comportamento', + description: 'Comportamento, navegação por teclado, botões do mouse, aparência e formatação.', + groups: { + startup: 'Inicialização', + keyboardNavigation: 'Navegação por teclado', + mouseButtons: 'Botões do mouse', + desktopAppearance: 'Aparência do desktop', + mobileAppearance: 'Aparência móvel', + appearance: 'Aparência', + icons: 'Ícones', + formatting: 'Formatação' + } + }, + navigationPane: { + label: 'Painel de navegação', + description: 'Layout, aparência, contagem de arquivos, comportamento de recolhimento e cores arco-íris.', + groups: { + appearance: 'Aparência', + banner: 'Banner', + collapseItems: 'Recolher itens', + dragAndDrop: 'Arrastar e soltar', + fileCounts: 'Contagens de arquivos', + rainbowColors: 'Cores arco-íris' + } + }, + shortcutsAndRecentFiles: { + label: 'Atalhos e arquivos recentes', + description: 'Visibilidade de atalhos, distintivos, arquivos recentes e itens fixados.', + groups: { + shortcuts: 'Atalhos', + recentFiles: 'Arquivos recentes' + } + }, + foldersAndFolderNotes: { + label: 'Pastas e notas de pasta', + description: 'Exibição de pastas, notas de pasta, modelos de notas de pasta e comportamento das notas de pasta.', + groups: { + folders: 'Pastas', + folderNotes: 'Notas de pasta', + folderNoteFiles: 'Arquivos de notas de pasta' + } + }, + tagsAndProperties: { + label: 'Tags e propriedades', + description: 'Seções de tags e propriedades, ícones, classificação, escopo e herança.', + groups: { + tags: 'Tags', + properties: 'Propriedades' + } + }, + listPane: { + label: 'Painel de lista', + description: 'Classificação, agrupamento, modos de lista, notas fixadas e pré-visualizações de desenhos.', + groups: { + appearance: 'Aparência', + sortAndGroup: 'Classificação e agrupamento', + groupHeaders: 'Cabeçalhos de grupo', + manualSort: 'Classificação manual', + pinnedNotes: 'Notas fixadas', + behavior: 'Comportamento', + drawingPreviews: 'Pré-visualizações de desenhos' + } + }, + fileOperations: { + label: 'Operações de arquivo', + description: 'Modelos, confirmações de exclusão, anexos e comportamento de conflito ao mover arquivos.', + groups: { + templates: 'Modelos' + } + }, + frontmatterFields: { + label: 'Campos de frontmatter', + description: 'Campos de frontmatter para nomes de exibição, carimbos de data/hora, ícones e cores.' + }, + fileDisplay: { + label: 'Exibição de arquivos', + description: + 'Títulos, texto de pré-visualização, imagens de destaque, tags, propriedades, datas, contagem de palavras e contagem de caracteres.', + groups: { + icon: 'Ícone', + title: 'Título', + previewText: 'Texto de pré-visualização', + featureImage: 'Imagem de destaque', + tags: 'Tags', + properties: 'Propriedades', + tasks: 'Tarefas', + date: 'Data', + parentFolder: 'Pasta superior', + wordAndCharacterCount: 'Contagem de palavras e caracteres' + } + }, + calendar: { + label: 'Calendário', + description: 'Exibição do calendário, notas de data, modelos, localidade e posicionamento da barra lateral.', + groups: { + appearance: 'Aparência', + leftSidebar: 'Barra lateral esquerda', + calendarIntegration: 'Integração do calendário', + rightSidebar: 'Barra lateral direita' + } + }, + iconPacks: { + label: 'Pacotes de ícones', + description: 'Ícones de interface, ícones de arquivo e gerenciamento de pacotes de ícones.' }, advanced: { - maintenance: 'Manutenção', - resetSettings: 'Redefinir configurações' - }, - navigation: { - appearance: 'Aparência', - banner: 'Banner', - collapseItems: 'Recolher itens', - dragAndDrop: 'Arrastar e soltar', - noteCounts: 'Contagens de arquivos', - rainbowColors: 'Cores arco-íris', - leftSidebar: 'Barra lateral esquerda', - calendarIntegration: 'Integração do calendário' - }, - list: { - display: 'Aparência', - sortAndGroup: 'Classificação e agrupamento', - groupHeaders: 'Cabeçalhos de grupo', - manualSort: 'Classificação manual', - pinnedNotes: 'Notas fixadas', - drawingPreviews: 'Pré-visualizações de desenhos' - }, - notes: { - frontmatter: 'Campos de frontmatter', - tasks: 'Tarefas', - icon: 'Ícone', - title: 'Título', - previewText: 'Texto de pré-visualização', - featureImage: 'Imagem de destaque', - tags: 'Tags', - properties: 'Propriedades', - date: 'Data', - parentFolder: 'Pasta superior', - wordCount: 'Contagem de palavras e caracteres' + label: 'Avançado', + description: 'Diagnóstico, limpeza de metadados, importação/exportação e redefinição.', + groups: { + maintenance: 'Manutenção', + resetSettings: 'Redefinir configurações' + } } }, syncMode: { notSynced: '(não sincronizado)', - switchToSynced: 'Ativar sincronização', - switchToLocal: 'Desativar sincronização' + enableSync: 'Ativar sincronização', + disableSync: 'Desativar sincronização' }, items: { listPaneTitle: { @@ -1115,11 +1160,11 @@ export const STRINGS_PT_BR = { desc: 'Escolha onde o título do painel de lista é mostrado.', options: { header: 'Mostrar no cabeçalho', - list: 'Mostrar no painel de lista', + listPane: 'Mostrar no painel de lista', hidden: 'Não mostrar' } }, - sortNotesBy: { + defaultSortOrder: { name: 'Ordem de classificação padrão', desc: 'Escolha a ordem de classificação padrão para as notas. As propriedades de Propriedades de classificação aparecem como opções de classificação adicionais.', directions: { @@ -1127,18 +1172,18 @@ export const STRINGS_PT_BR = { desc: 'Descendente' }, dateDirections: { - desc: 'Mais recente no topo', - asc: 'Mais antiga no topo' + newestOnTop: 'Mais recente no topo', + oldestOnTop: 'Mais antiga no topo' }, textDirections: { - asc: 'A no topo', - desc: 'Z no topo' + aOnTop: 'A no topo', + zOnTop: 'Z no topo' }, fields: { - modified: 'Data de edição', - created: 'Data de criação', + dateEdited: 'Data de edição', + dateCreated: 'Data de criação', title: 'Título', - filename: 'Nome do arquivo', + fileName: 'Nome do arquivo', property: 'Propriedade' } }, @@ -1151,7 +1196,7 @@ export const STRINGS_PT_BR = { follow: 'Seguir a classificação' } }, - propertySortKey: { + sortingProperties: { name: 'Propriedades de classificação', desc: 'Propriedades do frontmatter separadas por vírgulas. Cada propriedade aparece como opção de classificação na configuração Ordem de classificação padrão e no menu de ordenação no painel de lista. Essas propriedades não são alteradas.', placeholder: 'published, author', @@ -1161,14 +1206,14 @@ export const STRINGS_PT_BR = { both: 'A ordem de classificação padrão e o agrupamento padrão foram redefinidos porque suas propriedades não estão mais disponíveis.' } }, - propertySortSecondary: { + propertySecondarySort: { name: 'Ordenação secundária', desc: 'Usada com a ordenação por propriedade quando as notas têm o mesmo valor de propriedade ou não têm valor.', options: { title: 'Título', - filename: 'Nome do arquivo', - created: 'Data de criação', - modified: 'Data de edição' + fileName: 'Nome do arquivo', + dateCreated: 'Data de criação', + dateEdited: 'Data de edição' } }, propertySortInstructions: { @@ -1181,16 +1226,16 @@ export const STRINGS_PT_BR = { '**Visualizações de tag e propriedade:** Quando o agrupamento **Pasta** é selecionado, cabeçalhos de data são exibidos em vez disso.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'Propriedades de agrupamento', desc: 'Propriedades do frontmatter separadas por vírgulas. Cada propriedade aparece como opção de agrupamento na configuração Agrupamento padrão e no menu de ordenação no painel de lista. Essas propriedades não são alteradas.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'Propriedade da classificação manual', desc: 'Propriedade frontmatter usada para armazenar valores numéricos de índice para a classificação manual.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'Propriedade do cabeçalho de grupo', desc: 'Propriedade frontmatter usada para armazenar cabeçalhos personalizados de grupo.' }, @@ -1207,7 +1252,7 @@ export const STRINGS_PT_BR = { options: { top: 'Topo', bottom: 'Final', - 'below-selected-note': 'Abaixo da nota selecionada', + belowSelectedNote: 'Abaixo da nota selecionada', unsorted: 'Não classificadas' } }, @@ -1223,7 +1268,7 @@ export const STRINGS_PT_BR = { 'No painel de lista, selecione uma nota ou várias com seleção múltipla e pressione **Cmd/Ctrl + Arrow Up/Down** para mover a seleção para cima ou para baixo.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'Rolar para o arquivo selecionado em mudanças da lista', desc: 'Rolar para o arquivo selecionado ao fixar notas, mostrar notas descendentes, mudar aparência de pastas ou executar operações de arquivo.' }, @@ -1231,15 +1276,15 @@ export const STRINGS_PT_BR = { name: 'Mostrar notas de subpastas / descendentes', desc: 'Incluir notas de subpastas aninhadas e descendentes de tags e propriedades ao visualizar uma pasta, tag ou propriedade.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'Fixar notas apenas na sua pasta', desc: 'Notas fixadas aparecem fixadas apenas na sua própria pasta. Útil para notas de pasta ou se você tem muitas notas fixadas. Não afeta as visualizações de tags ou propriedades.' }, - separateNoteCounts: { + separateFileCounts: { name: 'Mostrar contagens de arquivos atuais e descendentes separadamente', desc: 'Exibir contagens de arquivos no formato "atual ▾ descendentes" para pastas, tags e propriedades.' }, - groupNotes: { + defaultGrouping: { name: 'Agrupamento padrão', desc: 'Os **cabeçalhos** anotam a lista ordenada sem alterar sua ordem: Personalizado mostra cabeçalhos definidos no frontmatter e Data insere cabeçalhos de data. Os **grupos** reordenam a lista: grupos de pastas e propriedades são ordenados por conta própria e as notas dentro de cada grupo seguem a ordem de classificação.', families: { @@ -1252,7 +1297,7 @@ export const STRINGS_PT_BR = { folder: 'Pasta' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'Sempre mostrar todas as etiquetas e propriedades', desc: 'Quando desativado, as etiquetas que correspondem à seleção de navegação atual ficam ocultas (por exemplo, a etiqueta "receitas" fica oculta ao navegar na etiqueta "receitas"). Ative para manter todas as etiquetas visíveis.' }, @@ -1260,7 +1305,7 @@ export const STRINGS_PT_BR = { name: 'Cabeçalhos de grupo fixos', desc: 'Mantém o cabeçalho atual de data, pasta, propriedade ou seção fixada visível ao rolar.' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'Mostrar caminhos das subpastas', desc: 'Ao agrupar por pasta no painel de lista, exibir caminhos das subpastas em vez de apenas nomes de pastas.' }, @@ -1288,9 +1333,9 @@ export const STRINGS_PT_BR = { name: 'Ícone de tarefas inacabadas', desc: 'Substituir o ícone do arquivo quando uma nota possui tarefas inacabadas.', options: { - none: 'Desativado', + disabled: 'Desativado', compact: 'Modo compacto', - all: 'Padrão e compacto' + standardAndCompact: 'Padrão e compacto' } }, useFolderIcon: { @@ -1313,7 +1358,7 @@ export const STRINGS_PT_BR = { name: 'Progresso das tarefas: ocultar quando concluídas', desc: 'Ocultar o progresso das tarefas quando todas as tarefas de uma nota estiverem concluídas.' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'Fundo de tarefas inacabadas', desc: 'Aplicar uma cor de fundo quando uma nota possui tarefas inacabadas.' }, @@ -1321,7 +1366,7 @@ export const STRINGS_PT_BR = { name: 'Cor de fundo de tarefas inacabadas', desc: 'Definir a cor de fundo usada quando uma nota possui tarefas inacabadas.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'Ícones por nome de arquivo', desc: 'Atribuir ícones a arquivos com base no texto em seus nomes.' }, @@ -1331,7 +1376,7 @@ export const STRINGS_PT_BR = { placeholder: '# texto=ícone\nreunião=ph-calendar\nfatura=ph-receipt', editTooltip: 'Editar mapeamentos' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'Ícones por tipo de arquivo', desc: 'Atribuir ícones a arquivos com base em sua extensão.' }, @@ -1339,7 +1384,7 @@ export const STRINGS_PT_BR = { name: 'Predefinição de ícones de arquivo', desc: 'Escolha os ícones integrados ou uma predefinição de pacote de ícones. Regras de extensão personalizadas substituem esta predefinição.', options: { - none: 'Ícones integrados' + builtIn: 'Ícones integrados' }, notInstalledWarning: 'Este pacote de ícones não está instalado. Em vez disso, os ícones integrados são exibidos.' }, @@ -1362,11 +1407,11 @@ export const STRINGS_PT_BR = { name: 'Mostrar pasta pai', desc: 'Exibir o nome da pasta pai para notas em subpastas, tags ou propriedades.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'Mostrar caminho da pasta', desc: 'Exibir o caminho relativo à pasta selecionada em vez de apenas o nome da pasta. Tags e propriedades mostram o caminho completo.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'Clique na pasta pai abre pasta', desc: 'Clicar no rótulo da pasta pai abre a pasta no painel de lista.' }, @@ -1394,7 +1439,7 @@ export const STRINGS_PT_BR = { vertical: 'Divisão vertical' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'Quando a barra lateral está estreita demais', desc: 'Escolha o que acontece quando o painel de navegação e o painel de lista não cabem lado a lado.', options: { @@ -1403,7 +1448,7 @@ export const STRINGS_PT_BR = { vertical: 'Mudar para divisão vertical' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'Limite de barra lateral estreita', desc: 'Escolha como o limite de largura da barra lateral é calculado.', options: { @@ -1411,41 +1456,41 @@ export const STRINGS_PT_BR = { customWidth: 'Largura personalizada' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'Largura do limite de barra lateral estreita', desc: 'Mudar quando a barra lateral estiver mais estreita que esta largura.', resetTooltip: 'Redefinir para a largura padrão' }, - appearanceBackground: { + paneBackgroundColor: { name: 'Cor de fundo', desc: 'Escolha cores de fundo para painéis de navegação e lista.', options: { separate: 'Fundos separados', - primary: 'Usar fundo da lista', - secondary: 'Usar fundo da navegação' + listBackground: 'Usar fundo da lista', + navigationBackground: 'Usar fundo da navegação' } }, - appearanceScale: { + zoomLevel: { name: 'Nível de zoom', desc: 'Controla o nível de zoom geral do Notebook Navigator (porcentagem).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'Usar barras de ferramentas flutuantes no iOS', desc: 'Aplica-se apenas ao iOS.' }, - startView: { + defaultStartupView: { name: 'Visualização inicial padrão', desc: 'Escolha qual painel fica ativo ao abrir o Notebook Navigator. O layout de painel único mostra este painel primeiro; o layout de painel duplo dá a ele o foco do teclado.', options: { navigation: 'Painel de navegação', - files: 'Painel de lista' + listPane: 'Painel de lista' } }, toolbarButtons: { name: 'Botões da barra de ferramentas', desc: 'Escolha quais botões aparecem na barra de ferramentas. Botões ocultos permanecem acessíveis via comandos e menus.' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'Abrir novas notas em nova aba', desc: 'Quando ativado, o comando Criar nova nota abre as notas em uma nova aba. Quando desativado, as notas substituem a aba atual.' }, @@ -1465,20 +1510,20 @@ export const STRINGS_PT_BR = { name: 'Revelação automática: Ignorar eventos de outras janelas', desc: 'Não alterar a nota ativa ao trabalhar com notas em uma janela diferente.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'Animação de painel único', desc: 'Duração da transição ao alternar entre painéis no modo de painel único (milissegundos).', resetTooltip: 'Restaurar padrão' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'Selecionar automaticamente a primeira nota', desc: 'Abrir automaticamente a primeira nota ao alternar pastas, tags ou propriedades.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'Desativar rolagem automática para atalhos', desc: 'Não rolar o painel de navegação ao clicar em itens nos atalhos.' }, - autoExpandNavItems: { + expandOnSelection: { name: 'Expandir ao selecionar', desc: 'Expandir pastas e tags ao selecionar. No modo de painel único, a primeira seleção expande, a segunda mostra arquivos.' }, @@ -1516,16 +1561,16 @@ export const STRINGS_PT_BR = { name: 'Distintivo de atalho', desc: "O que exibir ao lado dos atalhos. Use os comandos 'Abrir atalho 1-9' para abrir atalhos diretamente.", options: { - index: 'Posição (1-9)', + position: 'Posição (1-9)', count: 'Contagem de itens', none: 'Nenhum' } }, - showRecentNotes: { + showRecentFiles: { name: 'Mostrar arquivos recentes', desc: 'Exibir a seção de arquivos recentes no painel de navegação.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'Ocultar tipos de arquivos dos arquivos recentes', desc: 'Escolher os tipos de arquivos a ocultar na seção de arquivos recentes.', options: { @@ -1533,15 +1578,15 @@ export const STRINGS_PT_BR = { folderNotes: 'Notas de pasta' } }, - recentNotesCount: { + recentFilesCount: { name: 'Contagem de arquivos recentes', desc: 'Número de arquivos recentes a exibir.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'Fixar arquivos recentes com atalhos', desc: 'Incluir arquivos recentes quando os atalhos estiverem fixados.' }, - calendarEnabled: { + enableCalendar: { name: 'Ativar calendário', desc: 'Ativar funcionalidades de calendário do Notebook Navigator.' }, @@ -1553,12 +1598,12 @@ export const STRINGS_PT_BR = { rightSidebar: 'Barra lateral direita' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'Posicionamento em painel único', desc: 'Onde o calendário é exibido no modo de painel único.', options: { navigationPane: 'Painel de navegação', - below: 'Abaixo dos painéis' + belowPanes: 'Abaixo dos painéis' } }, calendarLocale: { @@ -1580,7 +1625,7 @@ export const STRINGS_PT_BR = { thuFri: 'Quinta-feira e sexta-feira' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'Formato do nome do mês', desc: 'Nome do mês completo (janeiro) ou abreviado (jan).', options: { @@ -1592,7 +1637,7 @@ export const STRINGS_PT_BR = { name: 'Mostrar botões de informação', desc: 'Exibir botões de informação na barra de pesquisa e no cabeçalho do calendário.' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'Semanas a exibir na barra lateral esquerda', desc: 'O calendário na barra lateral direita sempre exibe o mês completo.', options: { @@ -1637,7 +1682,7 @@ export const STRINGS_PT_BR = { name: 'Mostrar itens ocultos', desc: 'Quando ativado, o calendário sempre mostra todas as notas do calendário, incluindo notas ocultas pelos filtros do perfil do cofre.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'Fonte de notas diárias', desc: 'Fonte para notas do calendário.', options: { @@ -1657,34 +1702,38 @@ export const STRINGS_PT_BR = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'Pasta raiz', desc: 'Pasta base para notas periódicas. Padrões de data podem incluir subpastas. Muda com o perfil do cofre selecionado.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'Localização da pasta de modelos', desc: 'O seletor de arquivos de modelo mostra notas desta pasta.', placeholder: 'Templates', usage: 'Usada por notas de calendário e notas de pasta. Configure os modelos em Calendário > Integração do calendário e Pastas e notas de pasta > Arquivos de notas de pasta.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'Notas diárias', desc: 'Formatar caminho usando formato de data Moment. Coloque nomes de subpastas entre colchetes, ex. [Work]/YYYY. Clique no ícone de modelo para definir um modelo. Definir localização da pasta de modelos em Operações de arquivo > Modelos.', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'O padrão deve ser formatado e analisado novamente como uma data completa (ano, mês, dia).' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'Formatar caminho usando ', momentLinkText: 'formato de data Moment', momentDescSuffix: '. Coloque nomes de subpastas entre colchetes, ex. [Work]/YYYY. Clique no ícone de modelo para definir um modelo. Definir localização da pasta de modelos em Operações de arquivo > Modelos.', - templaterSupportInstalled: '✅ O plugin Templater está instalado com suporte completo a modelos.', - templaterSupportMissing: '⚠️ Instale o plugin Templater para suporte a modelos.', templateTokenNoticeLabel: 'Importante!', templateTokenNotice: 'O suporte a modelos requer o plugin Templater. Formatos integrados como {{date}} e {{title}} só funcionam quando {source} está definido como {option}.', - placeholder: 'YYYY/YYYYMMDD', - example: 'Sintaxe atual: {path}', - parsingError: 'O padrão deve ser formatado e analisado novamente como uma data completa (ano, mês, dia).' + example: 'Sintaxe atual: {path}' + }, + templaterSupport: { + installed: '✅ O plugin Templater está instalado com suporte completo a modelos.', + missing: '⚠️ Instale o plugin Templater para suporte a modelos.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'Notas semanais', parsingError: 'O padrão deve ser formatado e analisado novamente como uma semana completa (ano da semana, número da semana).', @@ -1693,19 +1742,19 @@ export const STRINGS_PT_BR = { mixedWeekTokensWarning: 'Este padrão mistura tokens de semana baseados na segunda-feira ("W" ou "G") com tokens de semana baseados no idioma ("w" ou "g"). Use um conjunto de forma consistente: "GGGG" com "WW" para semanas baseadas na segunda-feira, ou "gggg" com "ww" se as notas semanais devem seguir o idioma selecionado.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'Notas mensais', parsingError: 'O padrão deve ser formatado e analisado novamente como um mês completo (ano, mês).' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'Notas trimestrais', parsingError: 'O padrão deve ser formatado e analisado novamente como um trimestre completo (ano, trimestre).' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'Notas anuais', parsingError: 'O padrão deve ser formatado e analisado novamente como um ano completo (ano).' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'Arquivo de modelo: {name}' }, showTooltips: { @@ -1726,7 +1775,7 @@ export const STRINGS_PT_BR = { buttonText: 'Redefinir separador', notice: 'Posição do separador redefinida. Reinicie o Obsidian ou reabra o Notebook Navigator para aplicar.' }, - settingsTransfer: { + importAndExportSettings: { name: 'Importar e exportar configurações', desc: 'Exportar ou importar configurações do Notebook Navigator como JSON. A importação substitui todas as configurações.', importButtonText: 'Importar', @@ -1785,15 +1834,15 @@ export const STRINGS_PT_BR = { name: 'Pressionar Enter para abrir arquivos', desc: 'Abrir arquivos apenas ao pressionar Enter durante a navegação por teclado na lista. No macOS, isso impede que Enter renomeie arquivos.' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'Escolha se Shift+Enter abre ou renomeia o arquivo selecionado.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'Escolha se Cmd+Enter abre ou renomeia o arquivo selecionado.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'Escolha se Ctrl+Enter abre ou renomeia o arquivo selecionado.' }, @@ -1801,12 +1850,12 @@ export const STRINGS_PT_BR = { name: 'Botões voltar/avançar do mouse', desc: 'Ação dos botões voltar e avançar do mouse no desktop.', options: { - none: 'Usar padrão do sistema', + systemDefault: 'Usar padrão do sistema', singlePaneSwitch: 'Alternar painéis (painel único)', history: 'Navegar no histórico' } }, - fileVisibility: { + showFileTypes: { name: 'Mostrar tipos de arquivo (perfil do cofre)', desc: 'Filtrar quais tipos de arquivo são mostrados no navegador. Tipos de arquivo não suportados pelo Obsidian podem abrir em aplicativos externos.', options: { @@ -1838,12 +1887,12 @@ export const STRINGS_PT_BR = { desc: 'Cria a nota periódica ao iniciar ou via comando se não existir.' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'Ocultar notas com regras de propriedade (perfil do cofre)', desc: 'Lista separada por vírgulas de regras de frontmatter. Use entradas `key` ou `key=value` (por exemplo, status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'Ocultar arquivos (perfil do cofre)', desc: 'Lista separada por vírgulas de padrões de nomes de arquivos para ocultar. Suporta curingas * e caminhos / (por exemplo, temp-*, *.png, /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1870,7 +1919,7 @@ export const STRINGS_PT_BR = { duplicateName: 'Nome do perfil já existe' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'Posição do título do cofre', desc: 'Escolha onde o título do cofre é mostrado.', options: { @@ -1878,7 +1927,7 @@ export const STRINGS_PT_BR = { navigation: 'Mostrar no painel de navegação' } }, - excludedFolders: { + hideFolders: { name: 'Ocultar pastas (perfil do cofre)', desc: 'Lista separada por vírgulas de pastas a ocultar. Padrões de nome: assets* (pastas que começam com assets), *_temp (terminam com _temp). Padrões de caminho: /arquivo (apenas arquivo raiz), /res* (pastas raiz que começam com res), /*/temp (pastas temp um nível abaixo), /projetos/* (todas as pastas dentro de projetos).', placeholder: 'modelos, assets*, /arquivo, /res*' @@ -1892,7 +1941,7 @@ export const STRINGS_PT_BR = { name: 'Mostrar data', desc: 'Exibir a data abaixo dos nomes das notas.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'Ao ordenar por nome', desc: 'Data a mostrar quando as notas são ordenadas alfabeticamente.', options: { @@ -1904,7 +1953,7 @@ export const STRINGS_PT_BR = { name: 'Mostrar tags de arquivo', desc: 'Exibir tags clicáveis em itens de arquivo.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'Mostrar caminhos completos de tags', desc: "Exibir caminhos completos da hierarquia de tags. Ativado: 'ai/openai', 'trabalho/projetos/2024'. Desativado: 'openai', '2024'." }, @@ -1912,7 +1961,7 @@ export const STRINGS_PT_BR = { name: 'Colorir tags de arquivo', desc: 'Aplicar cores de tag aos emblemas de tag em itens de arquivo.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'Mostrar tags coloridas primeiro', desc: 'Ordena as tags coloridas antes das outras tags nos itens de arquivo.' }, @@ -1928,7 +1977,7 @@ export const STRINGS_PT_BR = { name: 'Colorir propriedades de arquivo', desc: 'Aplicar cores de propriedade aos emblemas de propriedade nos itens de arquivo.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'Mostrar propriedades coloridas primeiro', desc: 'Ordenar propriedades coloridas antes de outras propriedades nos itens de arquivo.' }, @@ -1936,7 +1985,7 @@ export const STRINGS_PT_BR = { name: 'Mostrar propriedades no modo compacto', desc: 'Exibir propriedades quando o modo compacto está ativo.' }, - textCountDisplay: { + textCountType: { name: 'Tipo de contagem', desc: 'Escolha quais contagens de texto aparecem nos itens de arquivo.', options: { @@ -1966,11 +2015,11 @@ export const STRINGS_PT_BR = { name: 'Propriedade alvo', desc: 'Chave da propriedade frontmatter que contém a contagem de palavras alvo. Deixe em branco para ocultar alvos.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'Mostrar porcentagem da meta', desc: 'Mostrar apenas a porcentagem de progresso quando houver uma contagem de palavras alvo disponível.' }, - propertyFields: { + propertyKeys: { name: 'Chaves de propriedades (perfil do cofre)', desc: 'Chaves de propriedades de metadados, com visibilidade por chave para navegação e lista de arquivos.', addButtonTooltip: 'Configurar chaves de propriedade', @@ -1982,11 +2031,11 @@ export const STRINGS_PT_BR = { name: 'Mostrar propriedades em linhas separadas', desc: 'Mostrar cada propriedade na sua própria linha.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'Vincular etiquetas de propriedade a notas', desc: 'Clique em uma etiqueta de propriedade para abrir a nota vinculada.' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: 'Vincular etiquetas de propriedade a URLs', desc: 'Clique em uma etiqueta de propriedade para abrir a URL vinculada.' }, @@ -2006,7 +2055,7 @@ export const STRINGS_PT_BR = { helpTooltip: 'Formato usando Moment', momentLinkText: 'formato Moment' }, - showFilePreview: { + showNotePreview: { name: 'Mostrar visualização de nota', desc: 'Exibir texto de visualização abaixo dos nomes das notas.' }, @@ -2035,7 +2084,7 @@ export const STRINGS_PT_BR = { desc: 'Lista separada por vírgulas de propriedades do frontmatter para verificar texto de visualização. A primeira propriedade com texto será usada.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'Recorrer ao conteúdo da nota', desc: 'Mostrar o conteúdo da nota como visualização quando nenhuma das propriedades especificadas contém texto.' }, @@ -2050,7 +2099,7 @@ export const STRINGS_PT_BR = { '5': '5 linhas' } }, - fileNameRows: { + titleRows: { name: 'Linhas de título', desc: 'Número de linhas a exibir para títulos de notas.', options: { @@ -2081,22 +2130,22 @@ export const STRINGS_PT_BR = { desc: 'Lista separada por vírgulas de propriedades do frontmatter. Notas contendo qualquer uma dessas propriedades não armazenam imagens de destaque.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'Tamanho de exibição da imagem de destaque', desc: 'Tamanho máximo de renderização para imagens de destaque em listas de notas.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'Tamanho em pixels da imagem de destaque', desc: 'Resolução usada ao gerar miniaturas armazenadas de imagens de destaque. Aumente esse valor se as visualizações maiores ficarem borradas.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2104,7 +2153,7 @@ export const STRINGS_PT_BR = { name: 'Baixar imagens externas', desc: 'Baixar imagens remotas e miniaturas do YouTube para imagens de destaque.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'Ocultar imagens de pré-visualização exportadas', desc: 'Oculta arquivos PNG de pré-visualização de desenhos exportados. Ative "Mostrar itens ocultos" para exibi-los.' }, @@ -2137,11 +2186,11 @@ export const STRINGS_PT_BR = { alphaDesc: 'Z a A' } }, - showNoteCount: { + showFileCount: { name: 'Mostrar contagem de arquivos', desc: 'Exibir contagens de arquivos ao lado de pastas, tags e propriedades.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'Mostrar ícones para atalhos e itens recentes', desc: 'Exibir ícones ao lado dos itens nas seções Atalhos e Recentes.' }, @@ -2150,7 +2199,7 @@ export const STRINGS_PT_BR = { desc: 'Editar ícones da barra de ferramentas, pastas, tags, propriedades, itens fixados, pesquisa e ordenação.', buttonText: 'Editar ícones' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'Aplicar cor apenas aos ícones', desc: 'Quando ativado, cores personalizadas são aplicadas apenas aos ícones. Quando desativado, as cores são aplicadas aos ícones e aos rótulos de texto.' }, @@ -2158,9 +2207,9 @@ export const STRINGS_PT_BR = { name: 'Modo de cores arco-íris (perfil do cofre)', desc: 'Aplicar cores arco-íris no painel de navegação.', options: { - none: 'Desativado', - foreground: 'Cor do texto', - background: 'Cor de fundo' + off: 'Desativado', + textColor: 'Cor do texto', + backgroundColor: 'Cor de fundo' } }, navRainbowFirstColor: { @@ -2183,7 +2232,7 @@ export const STRINGS_PT_BR = { name: 'Aplicar aos atalhos', desc: 'Aplicar cores arco-íris aos atalhos.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'Aplicar aos itens recentes', desc: 'Aplicar cores arco-íris aos itens recentes.' }, @@ -2217,7 +2266,7 @@ export const STRINGS_PT_BR = { name: 'Aplicar às propriedades', desc: 'Aplicar cores arco-íris às propriedades.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'Brilho consistente entre matizes', // (English: Consistent brightness across hues) desc: 'Interpola o brilho entre as cores inicial e final durante as transições de matiz.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2235,7 +2284,7 @@ export const STRINGS_PT_BR = { all: 'Todos os níveis' } }, - collapseBehavior: { + collapseItems: { name: 'Recolher itens', desc: 'Escolha o que o botão expandir/recolher tudo afeta.', options: { @@ -2245,7 +2294,7 @@ export const STRINGS_PT_BR = { propertiesOnly: 'Apenas propriedades' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'Manter item selecionado expandido', desc: 'Ao recolher, manter o item selecionado e seus pais expandidos.' }, @@ -2253,7 +2302,7 @@ export const STRINGS_PT_BR = { name: 'Ignorar raiz do cofre ao recolher', desc: 'Ao recolher todos os itens, deixe a pasta raiz do cofre no estado atual.' }, - navIndent: { + treeIndentation: { name: 'Indentação da árvore', desc: 'Ajustar a largura da indentação para pastas, tags e propriedades aninhadas (pixels).' }, @@ -2279,7 +2328,7 @@ export const STRINGS_PT_BR = { line: 'Linha' } }, - navRootSpacing: { + rootItemSpacing: { name: 'Espaçamento de item raiz', desc: 'Espaçamento entre pastas, tags e propriedades de nível raiz (pixels).' }, @@ -2306,15 +2355,15 @@ export const STRINGS_PT_BR = { highToLow: 'alta para baixa' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'Mostrar pasta de tags', desc: 'Exibir "Tags" como uma pasta recolhível.' }, - showUntagged: { + showUntaggedNotes: { name: 'Mostrar notas sem tags', desc: 'Exibir item "Sem tags" para notas sem tags.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'Filtrar tags por seleção', desc: 'Mostrar apenas tags que aparecem em notas na pasta ou propriedade selecionada.' }, @@ -2348,20 +2397,20 @@ export const STRINGS_PT_BR = { highToLow: 'alto a baixo' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'Mostrar pasta de propriedades', desc: 'Exibir "Propriedades" como uma pasta recolhível.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'Filtrar propriedades por seleção', desc: 'Mostrar apenas propriedades que aparecem em notas na pasta ou tag selecionada.' }, - hiddenTags: { + hideTags: { name: 'Ocultar tags (perfil do cofre)', desc: 'Lista de padrões de tags separados por vírgulas. Padrões de nome: tag* (começa com), *tag (termina com). Padrões de caminho: arquivo (tag e descendentes), arquivo/* (apenas descendentes), projetos/*/rascunhos (curinga intermediário).', placeholder: 'arquivo*, *rascunho, projetos/*/antigo' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'Ocultar notas com tags (perfil do cofre)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2394,7 +2443,7 @@ export const STRINGS_PT_BR = { desc: 'Arquivo de modelo usado ao criar notas de pasta. Os modelos Markdown podem usar o Templater. Os modelos Canvas e Base são copiados como conteúdo do arquivo. Definir localização da pasta de modelos em Operações de arquivo > Modelos.', formatWarning: 'O formato do modelo deve corresponder ao tipo de nota de pasta selecionado: .md, .canvas ou .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'Nomes de pastas abrem notas de pasta', desc: 'Clicar no nome de uma pasta abre a nota de pasta correspondente. Quando desativado, as notas de pasta fornecem apenas metadados da pasta, como nome, ícone e cor.' }, @@ -2415,7 +2464,7 @@ export const STRINGS_PT_BR = { rightSidebar: 'Barra lateral direita' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'Barra lateral direita: Mostrar nota de pasta mais próxima', desc: 'Quando uma pasta é selecionada, a barra lateral direita mostra automaticamente a nota de pasta ancestral mais próxima.' }, @@ -2458,7 +2507,7 @@ export const STRINGS_PT_BR = { indexingTitle: 'Indexando o cofre...', progress: 'Atualizando o cache do Notebook Navigator.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'Baixar', downloadingLabel: 'Baixando...', removeButton: 'Remover', @@ -2470,7 +2519,7 @@ export const STRINGS_PT_BR = { infoNote: 'Pacotes de ícones baixados sincronizam o estado de instalação entre dispositivos. Os pacotes de ícones permanecem no banco de dados local em cada dispositivo; a sincronização apenas rastreia se devem ser baixados ou removidos. Pacotes de ícones são baixados do repositório Notebook Navigator (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'Usar metadados do frontmatter', desc: 'Usar frontmatter para nome da nota, timestamps, ícones e cores' }, @@ -2489,7 +2538,7 @@ export const STRINGS_PT_BR = { desc: 'Campo do frontmatter para cores de fundo. Deixe em branco para usar cores de fundo armazenadas nas configurações.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'Migrar ícones e cores das configurações', desc: 'Armazenado nas configurações: {icons} ícones, {colors} cores.', button: 'Migrar', @@ -2499,7 +2548,7 @@ export const STRINGS_PT_BR = { noticeFailures: 'Entradas com falha: {failures}.', noticeError: 'Falha na migração. Verifique o console para detalhes.' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'Campos de nome', desc: 'Lista de campos frontmatter separados por vírgula. O primeiro valor não vazio é usado. Usa o nome do arquivo como alternativa.', placeholder: 'title, name' @@ -2514,7 +2563,7 @@ export const STRINGS_PT_BR = { desc: 'Nome do campo do frontmatter para o timestamp de modificação. Deixe em branco para usar apenas a data do sistema de arquivos.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'Formato de timestamp', desc: 'Formato usado para analisar timestamps no frontmatter. Deixe em branco para usar parsing ISO 8601.', helpTooltip: 'Formato usando Moment', @@ -2527,12 +2576,12 @@ export const STRINGS_PT_BR = { buttonText: '❤️ Patrocinar', coffeeButton: '☕️ Me pague um café' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'Verificar nova versão ao iniciar', desc: 'Verifica novas versões do plugin na inicialização e mostra uma notificação quando uma atualização está disponível. As verificações ocorrem no máximo uma vez por dia.', status: 'Nova versão disponível: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'Registro de depuração na inicialização', desc: 'Grava diagnósticos de inicialização em um arquivo Markdown com carimbo de data/hora na raiz do cofre e para depois que a inicialização se estabiliza. O arquivo pode ser sincronizado e pode incluir caminhos de arquivos.' }, diff --git a/src/i18n/locales/ru.ts b/src/i18n/locales/ru.ts index 0b59eccd2..169ea6184 100644 --- a/src/i18n/locales/ru.ts +++ b/src/i18n/locales/ru.ts @@ -74,6 +74,9 @@ export const STRINGS_RU = { shortcutsHeader: 'Ярлыки', // Header label for shortcuts section in navigation pane (English: Shortcuts) recentFilesHeader: 'Недавние файлы', // Header label for recent files section in navigation pane (English: Recent files) properties: 'Свойства', + folders: 'Папки', + tags: 'Теги', + calendar: 'Календарь', reorderRootFoldersTitle: 'Изменить порядок навигации', reorderRootFoldersHint: 'Используйте стрелки или перетаскивание', vaultRootLabel: 'Хранилище', @@ -1008,101 +1011,142 @@ export const STRINGS_RU = { exportSuccess: 'Отчёт о неудачных метаданных экспортирован в: {filename}', exportFailed: 'Не удалось экспортировать отчёт о метаданных' }, - sections: { - general: 'Общие', - vaultFilters: 'Фильтры отображения', - appearanceBehavior: 'Внешний вид и поведение', - navigationPane: 'Панель навигации', - calendar: 'Календарь', - fileOperations: 'Операции с файлами', - icons: 'Наборы иконок', - folders: 'Папки', - folderNotes: 'Заметки папок', - folderNoteFiles: 'Файлы заметок папок', - foldersAndFolderNotes: 'Папки и заметки папок', - tagsAndProperties: 'Теги и свойства', - tags: 'Теги', - listPane: 'Панель списка', - notes: 'Отображение файлов', - shortcutsAndRecentFiles: 'Ярлыки и недавние файлы', - advanced: 'Расширенные' + index: { + label: 'Общие', + description: 'Заметки о выпуске, поддержка, профиль хранилища, типы файлов и ключи свойств.', + groups: { + vaultSetup: 'Настройка хранилища' + } }, pageGroups: { configuration: 'Конфигурация', - navigationAndContent: 'Панель навигации', - notesAndLists: 'Панель списка', + navigationPane: 'Панель навигации', + listPane: 'Панель списка', calendarAndTools: 'Календарь и инструменты' }, - pageDescriptions: { - general: 'Заметки о выпуске, поддержка, профиль хранилища, типы файлов и ключи свойств.', - vaultFilters: 'Скрытые папки, теги, файлы, теги файлов и правила свойств.', - appearanceBehavior: 'Поведение, навигация с клавиатуры, кнопки мыши, внешний вид и форматирование.', - navigationPane: 'Компоновка, внешний вид, количество файлов, поведение сворачивания и цвета радуги.', - shortcuts: 'Видимость ярлыков, значки, недавние файлы и закреплённые элементы.', - calendar: 'Отображение календаря, заметки дат, шаблоны, локаль и размещение боковой панели.', - fileOperations: 'Шаблоны, подтверждения удаления, вложения и поведение при конфликтах перемещения файлов.', - foldersAndFolderNotes: 'Отображение папок, заметки папок, шаблоны заметок папок и поведение заметок папок.', - tagsProperties: 'Разделы тегов и свойств, иконки, сортировка, область действия и наследование.', - listPane: 'Сортировка, группировка, режимы списка, закреплённые заметки и предпросмотр рисунков.', - frontmatter: 'Поля frontmatter для отображаемых имён, временных меток, иконок и цветов.', - notes: 'Заголовки, текст превью, изображения записей, теги, свойства, даты, количество слов и количество символов.', - iconPacks: 'Иконки интерфейса, иконки файлов и управление наборами иконок.', - advanced: 'Диагностика, очистка метаданных, импорт/экспорт и сброс.' - }, - groups: { - general: { - vaultConfiguration: 'Настройка хранилища', - templates: 'Шаблоны', - behavior: 'Поведение', - startup: 'Запуск', - keyboardNavigation: 'Навигация с клавиатуры', - mouseButtons: 'Кнопки мыши', - view: 'Внешний вид', - icons: 'Иконки', - desktopAppearance: 'Внешний вид на компьютере', - mobileAppearance: 'Мобильный вид', - formatting: 'Форматирование' + pages: { + displayFilters: { + label: 'Фильтры отображения', + description: 'Скрытые папки, теги, файлы, теги файлов и правила свойств.' + }, + appearanceAndBehavior: { + label: 'Внешний вид и поведение', + description: 'Поведение, навигация с клавиатуры, кнопки мыши, внешний вид и форматирование.', + groups: { + startup: 'Запуск', + keyboardNavigation: 'Навигация с клавиатуры', + mouseButtons: 'Кнопки мыши', + desktopAppearance: 'Внешний вид на компьютере', + mobileAppearance: 'Мобильный вид', + appearance: 'Внешний вид', + icons: 'Иконки', + formatting: 'Форматирование' + } + }, + navigationPane: { + label: 'Панель навигации', + description: 'Компоновка, внешний вид, количество файлов, поведение сворачивания и цвета радуги.', + groups: { + appearance: 'Внешний вид', + banner: 'Баннер', + collapseItems: 'Сворачивание элементов', + dragAndDrop: 'Перетаскивание', + fileCounts: 'Количество файлов', + rainbowColors: 'Цвета радуги' + } + }, + shortcutsAndRecentFiles: { + label: 'Ярлыки и недавние файлы', + description: 'Видимость ярлыков, значки, недавние файлы и закреплённые элементы.', + groups: { + shortcuts: 'Ярлыки', + recentFiles: 'Недавние файлы' + } + }, + foldersAndFolderNotes: { + label: 'Папки и заметки папок', + description: 'Отображение папок, заметки папок, шаблоны заметок папок и поведение заметок папок.', + groups: { + folders: 'Папки', + folderNotes: 'Заметки папок', + folderNoteFiles: 'Файлы заметок папок' + } + }, + tagsAndProperties: { + label: 'Теги и свойства', + description: 'Разделы тегов и свойств, иконки, сортировка, область действия и наследование.', + groups: { + tags: 'Теги', + properties: 'Свойства' + } + }, + listPane: { + label: 'Панель списка', + description: 'Сортировка, группировка, режимы списка, закреплённые заметки и предпросмотр рисунков.', + groups: { + appearance: 'Внешний вид', + sortAndGroup: 'Сортировка и группировка', + groupHeaders: 'Заголовки групп', + manualSort: 'Ручная сортировка', + pinnedNotes: 'Закреплённые заметки', + behavior: 'Поведение', + drawingPreviews: 'Предпросмотр рисунков' + } + }, + fileOperations: { + label: 'Операции с файлами', + description: 'Шаблоны, подтверждения удаления, вложения и поведение при конфликтах перемещения файлов.', + groups: { + templates: 'Шаблоны' + } + }, + frontmatterFields: { + label: 'Поля frontmatter', + description: 'Поля frontmatter для отображаемых имён, временных меток, иконок и цветов.' + }, + fileDisplay: { + label: 'Отображение файлов', + description: 'Заголовки, текст превью, изображения записей, теги, свойства, даты, количество слов и количество символов.', + groups: { + icon: 'Иконка', + title: 'Заголовок', + previewText: 'Текст превью', + featureImage: 'Изображение записи', + tags: 'Теги', + properties: 'Свойства', + tasks: 'Задачи', + date: 'Дата', + parentFolder: 'Родительская папка', + wordAndCharacterCount: 'Количество слов и символов' + } + }, + calendar: { + label: 'Календарь', + description: 'Отображение календаря, заметки дат, шаблоны, локаль и размещение боковой панели.', + groups: { + appearance: 'Внешний вид', + leftSidebar: 'Левая боковая панель', + calendarIntegration: 'Интеграция с календарём', + rightSidebar: 'Правая боковая панель' + } + }, + iconPacks: { + label: 'Наборы иконок', + description: 'Иконки интерфейса, иконки файлов и управление наборами иконок.' }, advanced: { - maintenance: 'Обслуживание', - resetSettings: 'Сброс настроек' - }, - navigation: { - appearance: 'Внешний вид', - banner: 'Баннер', - collapseItems: 'Сворачивание элементов', - dragAndDrop: 'Перетаскивание', - noteCounts: 'Количество файлов', - rainbowColors: 'Цвета радуги', - leftSidebar: 'Левая боковая панель', - calendarIntegration: 'Интеграция с календарём' - }, - list: { - display: 'Внешний вид', - sortAndGroup: 'Сортировка и группировка', - groupHeaders: 'Заголовки групп', - manualSort: 'Ручная сортировка', - pinnedNotes: 'Закреплённые заметки', - drawingPreviews: 'Предпросмотр рисунков' - }, - notes: { - frontmatter: 'Поля frontmatter', - tasks: 'Задачи', - icon: 'Иконка', - title: 'Заголовок', - previewText: 'Текст превью', - featureImage: 'Изображение записи', - tags: 'Теги', - properties: 'Свойства', - date: 'Дата', - parentFolder: 'Родительская папка', - wordCount: 'Количество слов и символов' + label: 'Расширенные', + description: 'Диагностика, очистка метаданных, импорт/экспорт и сброс.', + groups: { + maintenance: 'Обслуживание', + resetSettings: 'Сброс настроек' + } } }, syncMode: { notSynced: '(не синхронизировано)', - switchToSynced: 'Включить синхронизацию', - switchToLocal: 'Отключить синхронизацию' + enableSync: 'Включить синхронизацию', + disableSync: 'Отключить синхронизацию' }, items: { listPaneTitle: { @@ -1110,11 +1154,11 @@ export const STRINGS_RU = { desc: 'Выберите, где отображается заголовок панели списка.', options: { header: 'Показывать в заголовке', - list: 'Показывать в панели списка', + listPane: 'Показывать в панели списка', hidden: 'Не показывать' } }, - sortNotesBy: { + defaultSortOrder: { name: 'Сортировка по умолчанию', desc: 'Выберите порядок сортировки заметок по умолчанию. Свойства из «Свойства сортировки» отображаются как дополнительные варианты сортировки.', directions: { @@ -1122,18 +1166,18 @@ export const STRINGS_RU = { desc: 'По убыванию' }, dateDirections: { - desc: 'Новые сверху', - asc: 'Старые сверху' + newestOnTop: 'Новые сверху', + oldestOnTop: 'Старые сверху' }, textDirections: { - asc: 'А сверху', - desc: 'Я сверху' + aOnTop: 'А сверху', + zOnTop: 'Я сверху' }, fields: { - modified: 'Дата изменения', - created: 'Дата создания', + dateEdited: 'Дата изменения', + dateCreated: 'Дата создания', title: 'Название', - filename: 'Имя файла', + fileName: 'Имя файла', property: 'Свойство' } }, @@ -1146,7 +1190,7 @@ export const STRINGS_RU = { follow: 'Следовать сортировке' } }, - propertySortKey: { + sortingProperties: { name: 'Свойства сортировки', desc: 'Свойства frontmatter, разделённые запятыми. Каждое свойство отображается как вариант сортировки в настройке «Порядок сортировки по умолчанию» и в меню сортировки на панели списка. Эти свойства не изменяются.', placeholder: 'published, author', @@ -1156,14 +1200,14 @@ export const STRINGS_RU = { both: 'Порядок сортировки и группировка по умолчанию сброшены, потому что их свойства больше недоступны.' } }, - propertySortSecondary: { + propertySecondarySort: { name: 'Вторичная сортировка', desc: 'Используется при сортировке по свойству, когда у заметок одинаковое значение свойства или значение отсутствует.', options: { title: 'Заголовок', - filename: 'Имя файла', - created: 'Дата создания', - modified: 'Дата редактирования' + fileName: 'Имя файла', + dateCreated: 'Дата создания', + dateEdited: 'Дата редактирования' } }, propertySortInstructions: { @@ -1176,16 +1220,16 @@ export const STRINGS_RU = { '**Представления тегов и свойств:** Если выбрана группировка **Папка**, вместо неё отображаются заголовки дат.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'Свойства группировки', desc: 'Свойства frontmatter, разделённые запятыми. Каждое свойство отображается как вариант группировки в настройке «Группировка по умолчанию» и в меню сортировки на панели списка. Эти свойства не изменяются.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'Свойство ручной сортировки', desc: 'Свойство frontmatter, используемое для хранения числовых значений индекса для ручной сортировки.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'Свойство заголовка группы', desc: 'Свойство frontmatter, используемое для хранения произвольных заголовков групп.' }, @@ -1202,7 +1246,7 @@ export const STRINGS_RU = { options: { top: 'Сверху', bottom: 'Снизу', - 'below-selected-note': 'Под выбранной заметкой', + belowSelectedNote: 'Под выбранной заметкой', unsorted: 'Без сортировки' } }, @@ -1218,7 +1262,7 @@ export const STRINGS_RU = { 'В панели списка выберите одну заметку или несколько, затем нажмите **Cmd/Ctrl + Arrow Up/Down**, чтобы переместить выделение вверх или вниз.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'Прокрутка к выбранному файлу при изменениях списка', desc: 'Прокручивать к выбранному файлу при закреплении заметок, показе потомков, изменении внешнего вида папки или выполнении файловых операций.' }, @@ -1226,15 +1270,15 @@ export const STRINGS_RU = { name: 'Показывать заметки из подпапок / потомков', desc: 'Включать заметки из вложенных подпапок и потомков тегов и свойств при просмотре папки, тега или свойства.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'Закреплять заметки только в их папке', desc: 'Закреплённые заметки отображаются закреплёнными только в своей собственной папке. Полезно для заметок-папок или если у вас много закреплённых заметок. Не влияет на представления тегов или свойств.' }, - separateNoteCounts: { + separateFileCounts: { name: 'Показывать количество текущих файлов и файлов потомков отдельно', desc: 'Отображать количество файлов в формате "текущие ▾ потомки" для папок, тегов и свойств.' }, - groupNotes: { + defaultGrouping: { name: 'Группировка по умолчанию', desc: '**Заголовки** помечают отсортированный список, не меняя его порядок: «Произвольная» отображает заголовки, заданные в frontmatter, а «По дате» вставляет заголовки дат. **Группы** переупорядочивают список: группы папок и свойств упорядочиваются отдельно, а заметки внутри каждой группы следуют порядку сортировки.', families: { @@ -1247,7 +1291,7 @@ export const STRINGS_RU = { folder: 'По папке' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'Всегда показывать все метки тегов и свойств', desc: 'При отключении метки, совпадающие с текущим выбором навигации, скрываются (например, метка тега «рецепты» скрывается при просмотре тега «рецепты»). Включите, чтобы все метки оставались видимыми.' }, @@ -1255,7 +1299,7 @@ export const STRINGS_RU = { name: 'Закреплённые заголовки групп', desc: 'Сохранять видимым заголовок текущей даты, папки, свойства или раздела закреплённых при прокрутке.' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'Показывать пути подпапок', desc: 'При группировке по папке в панели списка показывать пути подпапок вместо только названий папок.' }, @@ -1283,9 +1327,9 @@ export const STRINGS_RU = { name: 'Значок незавершённых задач', desc: 'Заменять значок файла, когда заметка содержит незавершённые задачи.', options: { - none: 'Отключено', + disabled: 'Отключено', compact: 'Компактный режим', - all: 'Стандартный и компактный' + standardAndCompact: 'Стандартный и компактный' } }, useFolderIcon: { @@ -1308,7 +1352,7 @@ export const STRINGS_RU = { name: 'Ход выполнения задач: скрывать после завершения', desc: 'Скрывать прогресс задач, когда все задачи в заметке завершены.' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'Фон незавершённых задач', desc: 'Применять цвет фона, когда заметка содержит незавершённые задачи.' }, @@ -1316,7 +1360,7 @@ export const STRINGS_RU = { name: 'Цвет фона незавершённых задач', desc: 'Задать цвет фона, используемый когда заметка содержит незавершённые задачи.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'Иконки по имени файла', desc: 'Назначить иконки файлам на основе текста в их именах.' }, @@ -1326,7 +1370,7 @@ export const STRINGS_RU = { placeholder: '# текст=иконка\nвстреча=ph-calendar\nсчёт=ph-receipt', editTooltip: 'Редактировать сопоставления' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'Иконки по типу файла', desc: 'Назначить иконки файлам на основе их расширения.' }, @@ -1334,7 +1378,7 @@ export const STRINGS_RU = { name: 'Предустановка иконок файлов', desc: 'Выберите встроенные иконки или предустановку пакета иконок. Пользовательские правила расширений переопределяют эту предустановку.', options: { - none: 'Встроенные иконки' + builtIn: 'Встроенные иконки' }, notInstalledWarning: 'Этот пакет иконок не установлен. Вместо него отображаются встроенные иконки.' }, @@ -1357,11 +1401,11 @@ export const STRINGS_RU = { name: 'Показывать родительскую папку', desc: 'Отображать название родительской папки для заметок в подпапках, тегах или свойствах.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'Показывать путь к папке', desc: 'Отображать путь относительно выбранной папки, а не только название папки. В тегах и свойствах отображается полный путь.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'Клик по родительской папке открывает папку', desc: 'Клик по метке родительской папки открывает папку в панели списка.' }, @@ -1389,7 +1433,7 @@ export const STRINGS_RU = { vertical: 'Вертикальное разделение' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'Когда боковая панель слишком узкая', desc: 'Выберите, что происходит, когда панель навигации и панель списка не помещаются рядом.', options: { @@ -1398,7 +1442,7 @@ export const STRINGS_RU = { vertical: 'Переключиться на вертикальное разделение' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'Порог узкой боковой панели', desc: 'Выберите, как рассчитывается порог ширины боковой панели.', options: { @@ -1406,41 +1450,41 @@ export const STRINGS_RU = { customWidth: 'Пользовательская ширина' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'Ширина порога узкой боковой панели', desc: 'Переключаться, когда боковая панель уже этой ширины.', resetTooltip: 'Сбросить до ширины по умолчанию' }, - appearanceBackground: { + paneBackgroundColor: { name: 'Цвет фона', desc: 'Выберите цвета фона для панелей навигации и списка.', options: { separate: 'Раздельные фоны', - primary: 'Использовать фон списка', - secondary: 'Использовать фон навигации' + listBackground: 'Использовать фон списка', + navigationBackground: 'Использовать фон навигации' } }, - appearanceScale: { + zoomLevel: { name: 'Уровень масштабирования', desc: 'Управляет общим масштабом Notebook Navigator (в процентах).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'Использовать плавающие панели инструментов на iOS', desc: 'Применяется только на iOS.' }, - startView: { + defaultStartupView: { name: 'Начальный вид по умолчанию', desc: 'Выберите, какая панель активна при открытии Notebook Navigator. В однопанельном режиме эта панель показывается первой; в двухпанельном режиме она получает фокус клавиатуры.', options: { navigation: 'Панель навигации', - files: 'Панель списка' + listPane: 'Панель списка' } }, toolbarButtons: { name: 'Кнопки панели инструментов', desc: 'Выберите, какие кнопки отображаются на панели инструментов. Скрытые кнопки остаются доступными через команды и меню.' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'Открывать новые заметки в новой вкладке', desc: 'Если включено, команда «Создать новую заметку» открывает заметки в новой вкладке. Если выключено, заметки заменяют текущую вкладку.' }, @@ -1460,20 +1504,20 @@ export const STRINGS_RU = { name: 'Автопоказ: Игнорировать события из других окон', desc: 'Не менять активную заметку при работе с заметками в другом окне.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'Анимация одиночной панели', desc: 'Длительность перехода при переключении панелей в режиме одиночной панели (миллисекунды).', resetTooltip: 'Сбросить по умолчанию' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'Автовыбор первой заметки', desc: 'Автоматически открывать первую заметку при смене папок, тегов или свойств.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'Отключить автопрокрутку для ярлыков', desc: 'Не прокручивать панель навигации при клике по элементам в ярлыках.' }, - autoExpandNavItems: { + expandOnSelection: { name: 'Разворачивать при выборе', desc: 'Разворачивать папки и теги при выборе. В однопанельном режиме первый выбор разворачивает, второй показывает файлы.' }, @@ -1511,16 +1555,16 @@ export const STRINGS_RU = { name: 'Значок ярлыка', desc: "Что отображать рядом с ярлыками. Используйте команды 'Открыть ярлык 1-9' для прямого открытия ярлыков.", options: { - index: 'Позиция (1-9)', + position: 'Позиция (1-9)', count: 'Количество элементов', none: 'Нет' } }, - showRecentNotes: { + showRecentFiles: { name: 'Показывать недавние файлы', desc: 'Отображать раздел недавних файлов в панели навигации.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'Скрыть типы файлов из недавних файлов', desc: 'Выберите типы файлов для скрытия в разделе недавних файлов.', options: { @@ -1528,15 +1572,15 @@ export const STRINGS_RU = { folderNotes: 'Заметки папок' } }, - recentNotesCount: { + recentFilesCount: { name: 'Количество недавних файлов', desc: 'Количество отображаемых недавних файлов.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'Закрепить недавние файлы вместе с ярлыками', desc: 'Включать недавние файлы при закреплении ярлыков.' }, - calendarEnabled: { + enableCalendar: { name: 'Включить календарь', desc: 'Включить функции календаря в Notebook Navigator.' }, @@ -1548,12 +1592,12 @@ export const STRINGS_RU = { rightSidebar: 'Правая боковая панель' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'Расположение в режиме одной панели', desc: 'Где отображается календарь в режиме одной панели.', options: { navigationPane: 'Панель навигации', - below: 'Под панелями' + belowPanes: 'Под панелями' } }, calendarLocale: { @@ -1575,7 +1619,7 @@ export const STRINGS_RU = { thuFri: 'Четверг и пятница' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'Формат названия месяца', desc: 'Полное (январь) или сокращённое (янв.) название месяца.', options: { @@ -1587,7 +1631,7 @@ export const STRINGS_RU = { name: 'Показать кнопки информации', desc: 'Отображать кнопки информации в строке поиска и заголовке календаря.' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'Недель для отображения на левой боковой панели', desc: 'Календарь на правой боковой панели всегда отображает полный месяц.', options: { @@ -1632,7 +1676,7 @@ export const STRINGS_RU = { name: 'Показать скрытые элементы', desc: 'При включении календарь всегда показывает все заметки календаря, включая заметки, скрытые фильтрами профиля хранилища.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'Источник ежедневных заметок', desc: 'Источник для заметок календаря.', options: { @@ -1652,34 +1696,38 @@ export const STRINGS_RU = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'Корневая папка', desc: 'Базовая папка для периодических заметок. Шаблоны дат могут включать подпапки. Изменяется с выбранным профилем хранилища.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'Расположение папки шаблонов', desc: 'Выбор файла шаблона показывает заметки из этой папки.', placeholder: 'Templates', usage: 'Используется заметками календаря и заметками папок. Настройте шаблоны в Календарь > Интеграция с календарём и Папки и заметки папок > Файлы заметок папок.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'Ежедневные заметки', desc: 'Формат пути с использованием формата даты Moment. Заключайте названия подпапок в скобки, напр. [Work]/YYYY. Нажмите на значок шаблона, чтобы задать шаблон. Укажите расположение папки шаблонов в Операции с файлами > Шаблоны.', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'Шаблон должен форматироваться и разбираться обратно как полная дата (год, месяц, день).' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'Формат пути с использованием ', momentLinkText: 'формата даты Moment', momentDescSuffix: '. Заключайте названия подпапок в скобки, напр. [Work]/YYYY. Нажмите на значок шаблона, чтобы задать шаблон. Укажите расположение папки шаблонов в Операции с файлами > Шаблоны.', - templaterSupportInstalled: '✅ Плагин Templater установлен с полной поддержкой шаблонов.', - templaterSupportMissing: '⚠️ Установите плагин Templater для поддержки шаблонов.', templateTokenNoticeLabel: 'Важно!', templateTokenNotice: 'Поддержка шаблонов требует плагина Templater. Встроенные форматы, такие как {{date}} и {{title}}, работают только когда для параметра {source} выбрано значение {option}.', - placeholder: 'YYYY/YYYYMMDD', - example: 'Текущий синтаксис: {path}', - parsingError: 'Шаблон должен форматироваться и разбираться обратно как полная дата (год, месяц, день).' + example: 'Текущий синтаксис: {path}' + }, + templaterSupport: { + installed: '✅ Плагин Templater установлен с полной поддержкой шаблонов.', + missing: '⚠️ Установите плагин Templater для поддержки шаблонов.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'Еженедельные заметки', parsingError: 'Шаблон должен форматироваться и разбираться обратно как полная неделя (год недели, номер недели).', weekPathMismatchWarning: @@ -1687,19 +1735,19 @@ export const STRINGS_RU = { mixedWeekTokensWarning: 'Этот шаблон смешивает токены недели, начинающейся с понедельника ("W" или "G"), с токенами недели на основе локали ("w" или "g"). Используйте один набор последовательно: "GGGG" с "WW" для недель, начинающихся с понедельника, или "gggg" с "ww", если еженедельные заметки должны соответствовать выбранной локали.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'Ежемесячные заметки', parsingError: 'Шаблон должен форматироваться и разбираться обратно как полный месяц (год, месяц).' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'Квартальные заметки', parsingError: 'Шаблон должен форматироваться и разбираться обратно как полный квартал (год, квартал).' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'Годовые заметки', parsingError: 'Шаблон должен форматироваться и разбираться обратно как полный год (год).' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'Файл шаблона: {name}' }, showTooltips: { @@ -1720,7 +1768,7 @@ export const STRINGS_RU = { buttonText: 'Сбросить разделитель', notice: 'Положение разделителя сброшено. Перезапустите Obsidian или переоткройте Notebook Navigator для применения.' }, - settingsTransfer: { + importAndExportSettings: { name: 'Импорт и экспорт настроек', desc: 'Экспорт или импорт настроек Notebook Navigator в формате JSON. Импорт заменяет все настройки.', importButtonText: 'Импорт', @@ -1778,15 +1826,15 @@ export const STRINGS_RU = { name: 'Нажать Enter для открытия файлов', desc: 'Открывать файлы только при нажатии Enter во время навигации по списку с клавиатуры. В macOS это не позволяет Enter переименовывать файлы.' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'Выберите, будет ли Shift+Enter открывать или переименовывать выбранный файл.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'Выберите, будет ли Cmd+Enter открывать или переименовывать выбранный файл.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'Выберите, будет ли Ctrl+Enter открывать или переименовывать выбранный файл.' }, @@ -1794,12 +1842,12 @@ export const STRINGS_RU = { name: 'Кнопки «Назад»/«Вперёд» мыши', desc: 'Действие кнопок «Назад» и «Вперёд» мыши на десктопе.', options: { - none: 'Использовать системное значение', + systemDefault: 'Использовать системное значение', singlePaneSwitch: 'Переключение панелей (одна панель)', history: 'Навигация по истории' } }, - fileVisibility: { + showFileTypes: { name: 'Показывать типы файлов (профиль хранилища)', desc: 'Фильтруйте, какие типы файлов отображаются в навигаторе. Типы файлов, не поддерживаемые Obsidian, могут открываться во внешних приложениях.', options: { @@ -1831,12 +1879,12 @@ export const STRINGS_RU = { desc: 'Создаёт периодическую заметку при запуске или по команде, если её не существует.' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'Скрыть заметки по правилам свойств (профиль хранилища)', desc: 'Список правил frontmatter через запятую. Используйте записи `key` или `key=value` (например, status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'Скрыть файлы (профиль хранилища)', desc: 'Список шаблонов имён файлов через запятую для скрытия. Поддерживает подстановочные знаки * и пути / (например, temp-*, *.png, /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1863,7 +1911,7 @@ export const STRINGS_RU = { duplicateName: 'Профиль с таким названием уже существует' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'Расположение названия хранилища', desc: 'Выберите, где отображается название хранилища.', options: { @@ -1871,7 +1919,7 @@ export const STRINGS_RU = { navigation: 'Показать в панели навигации' } }, - excludedFolders: { + hideFolders: { name: 'Скрыть папки (профиль хранилища)', desc: 'Список папок через запятую для скрытия. Шаблоны имён: assets* (папки, начинающиеся с assets), *_temp (заканчивающиеся на _temp). Шаблоны путей: /archive (только корневой archive), /res* (корневые папки, начинающиеся с res), /*/temp (папки temp на один уровень вглубь), /projects/* (все папки внутри projects).', placeholder: 'templates, assets*, /archive, /res*' @@ -1885,7 +1933,7 @@ export const STRINGS_RU = { name: 'Показывать дату', desc: 'Отображать дату под названиями заметок.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'При сортировке по имени', desc: 'Какую дату показывать при алфавитной сортировке заметок.', options: { @@ -1897,7 +1945,7 @@ export const STRINGS_RU = { name: 'Показывать теги файлов', desc: 'Отображать кликабельные теги в элементах файлов.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'Показывать полные пути тегов', desc: "Отображать полные пути иерархии тегов. При включении: 'ai/openai', 'work/projects/2024'. При отключении: 'openai', '2024'." }, @@ -1905,7 +1953,7 @@ export const STRINGS_RU = { name: 'Цветные теги файлов', desc: 'Применять цвета тегов к значкам тегов на элементах файлов.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'Показывать цветные теги первыми', desc: 'Сортировать цветные теги перед другими тегами на элементах файлов.' }, @@ -1921,7 +1969,7 @@ export const STRINGS_RU = { name: 'Окрашивать свойства файлов', desc: 'Применять цвета свойств к значкам свойств на элементах файлов.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'Показывать цветные свойства первыми', desc: 'Сортировать цветные свойства перед другими свойствами на элементах файлов.' }, @@ -1929,7 +1977,7 @@ export const STRINGS_RU = { name: 'Показывать свойства в компактном режиме', desc: 'Отображать свойства при активном компактном режиме.' }, - textCountDisplay: { + textCountType: { name: 'Тип счётчика', desc: 'Выберите, какие счётчики текста отображаются в элементах файлов.', options: { @@ -1959,11 +2007,11 @@ export const STRINGS_RU = { name: 'Целевое свойство', desc: 'Ключ свойства frontmatter с целевым количеством слов. Оставьте пустым, чтобы скрыть цели.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'Показывать процент цели', desc: 'Показывать только процент выполнения, когда доступно целевое количество слов.' }, - propertyFields: { + propertyKeys: { name: 'Ключи свойств (профиль хранилища)', desc: 'Ключи свойств метаданных с настройкой видимости для каждого ключа в навигации и списке файлов.', addButtonTooltip: 'Настроить ключи свойств', @@ -1975,11 +2023,11 @@ export const STRINGS_RU = { name: 'Показывать свойства в отдельных строках', desc: 'Показывать каждое свойство в собственной строке.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'Связать метки свойств с заметками', desc: 'Нажмите на метку свойства, чтобы открыть связанную заметку.' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: 'Связать метки свойств с URL-адресами', desc: 'Нажмите на метку свойства, чтобы открыть связанный URL-адрес.' }, @@ -1999,7 +2047,7 @@ export const STRINGS_RU = { helpTooltip: 'Формат Moment', momentLinkText: 'формат Moment' }, - showFilePreview: { + showNotePreview: { name: 'Показывать превью заметки', desc: 'Отображать текст превью под названиями заметок.' }, @@ -2028,7 +2076,7 @@ export const STRINGS_RU = { desc: 'Список свойств frontmatter через запятую для проверки текста превью. Используется первое свойство с текстом.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'Использовать содержимое заметки', desc: 'Показывать содержимое заметки как превью, когда ни одно из указанных свойств не содержит текста.' }, @@ -2043,7 +2091,7 @@ export const STRINGS_RU = { '5': '5 строк' } }, - fileNameRows: { + titleRows: { name: 'Строки заголовка', desc: 'Количество строк для отображения названий заметок.', options: { @@ -2074,22 +2122,22 @@ export const STRINGS_RU = { desc: 'Список свойств frontmatter через запятую. Заметки, содержащие любое из этих свойств, не сохраняют главные изображения.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'Размер отображения изображения-обложки', desc: 'Максимальный размер отображения изображений-обложек в списках заметок.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'Пиксельный размер изображения-обложки', desc: 'Разрешение, используемое при создании сохранённых миниатюр изображений-обложек. Увеличьте это значение, если крупные превью выглядят размытыми.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2097,7 +2145,7 @@ export const STRINGS_RU = { name: 'Загружать внешние изображения', desc: 'Загружать удалённые изображения и миниатюры YouTube для обложек.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'Скрыть экспортированные изображения предпросмотра', desc: 'Скрывает экспортированные PNG-файлы предпросмотра рисунков. Включите «Показать скрытые элементы», чтобы отобразить их.' }, @@ -2130,11 +2178,11 @@ export const STRINGS_RU = { alphaDesc: 'От Я до А' } }, - showNoteCount: { + showFileCount: { name: 'Показывать количество файлов', desc: 'Отображать количество файлов рядом с папками, тегами и свойствами.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'Показывать иконки для ярлыков и недавних', desc: 'Отображать иконки рядом с элементами в разделах Ярлыки и Недавние.' }, @@ -2143,7 +2191,7 @@ export const STRINGS_RU = { desc: 'Редактировать иконки панели инструментов, папок, тегов, свойств, закреплённых, поиска и сортировки.', buttonText: 'Редактировать иконки' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'Применять цвет только к иконкам', desc: 'При включении пользовательские цвета применяются только к иконкам. При отключении цвета применяются и к иконкам, и к текстовым меткам.' }, @@ -2151,9 +2199,9 @@ export const STRINGS_RU = { name: 'Режим цветов радуги (профиль хранилища)', desc: 'Применить цвета радуги в панели навигации.', options: { - none: 'Выкл.', - foreground: 'Цвет текста', - background: 'Цвет фона' + off: 'Выкл.', + textColor: 'Цвет текста', + backgroundColor: 'Цвет фона' } }, navRainbowFirstColor: { @@ -2176,7 +2224,7 @@ export const STRINGS_RU = { name: 'Применить к ярлыкам', desc: 'Применить цвета радуги к ярлыкам.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'Применить к недавним элементам', desc: 'Применить цвета радуги к недавним элементам.' }, @@ -2210,7 +2258,7 @@ export const STRINGS_RU = { name: 'Применить к свойствам', desc: 'Применить цвета радуги к свойствам.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'Равномерная яркость между оттенками', // (English: Consistent brightness across hues) desc: 'Интерполирует яркость между начальным и конечным цветами при переходах оттенков.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2228,7 +2276,7 @@ export const STRINGS_RU = { all: 'Каждый уровень' } }, - collapseBehavior: { + collapseItems: { name: 'Сворачивание элементов', desc: 'Выберите, на что влияет кнопка развернуть/свернуть всё.', options: { @@ -2238,7 +2286,7 @@ export const STRINGS_RU = { propertiesOnly: 'Только свойства' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'Сохранять выбранный элемент развёрнутым', desc: 'При сворачивании сохранять выбранный элемент и его родителей развёрнутыми.' }, @@ -2246,7 +2294,7 @@ export const STRINGS_RU = { name: 'Пропускать корень хранилища при сворачивании', desc: 'При сворачивании всех элементов оставлять корневую папку хранилища в текущем состоянии.' }, - navIndent: { + treeIndentation: { name: 'Отступ дерева', desc: 'Настройте ширину отступа для вложенных папок, тегов и свойств (в пикселях).' }, @@ -2272,7 +2320,7 @@ export const STRINGS_RU = { line: 'Линия' } }, - navRootSpacing: { + rootItemSpacing: { name: 'Отступ корневых элементов', desc: 'Отступ между корневыми папками, тегами и свойствами (в пикселях).' }, @@ -2299,15 +2347,15 @@ export const STRINGS_RU = { highToLow: 'от высокой к низкой' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'Показывать папку тегов', desc: 'Отображать "Теги" как сворачиваемую папку.' }, - showUntagged: { + showUntaggedNotes: { name: 'Показывать заметки без тегов', desc: 'Отображать элемент "Без тегов" для заметок без тегов.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'Фильтровать теги по выбору', desc: 'Показывать только теги, встречающиеся в заметках в выбранной папке или свойстве.' }, @@ -2341,20 +2389,20 @@ export const STRINGS_RU = { highToLow: 'по убыванию' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'Показать папку свойств', desc: 'Отображать «Свойства» как сворачиваемую папку.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'Фильтровать свойства по выбору', desc: 'Показывать только свойства, встречающиеся в заметках в выбранной папке или теге.' }, - hiddenTags: { + hideTags: { name: 'Скрыть теги (профиль хранилища)', desc: 'Список шаблонов тегов через запятую. Шаблоны имён: тег* (начинается с), *тег (заканчивается на). Шаблоны путей: архив (тег и потомки), архив/* (только потомки), проекты/*/черновики (подстановочный знак в середине).', placeholder: 'архив*, *черновик, проекты/*/старые' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'Скрыть заметки с тегами (профиль хранилища)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2387,7 +2435,7 @@ export const STRINGS_RU = { desc: 'Файл шаблона, используемый при создании заметок папок. Шаблоны Markdown могут использовать Templater. Шаблоны Canvas и Base копируются как содержимое файла. Укажите расположение папки шаблонов в Операции с файлами > Шаблоны.', formatWarning: 'Формат шаблона должен соответствовать выбранному типу заметки папки: .md, .canvas или .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'Названия папок открывают заметки папок', desc: 'Нажатие на название папки открывает её заметку папки. Если выключено, заметки папок предоставляют только метаданные папки, такие как название, значок и цвет.' }, @@ -2408,7 +2456,7 @@ export const STRINGS_RU = { rightSidebar: 'Правая боковая панель' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'Правая боковая панель: показывать ближайшую заметку папки', desc: 'Когда выбрана папка, правая боковая панель автоматически показывает ближайшую родительскую заметку папки.' }, @@ -2451,7 +2499,7 @@ export const STRINGS_RU = { indexingTitle: 'Индексирование хранилища...', progress: 'Обновление кэша Notebook Navigator.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'Скачать', downloadingLabel: 'Загрузка...', removeButton: 'Удалить', @@ -2463,7 +2511,7 @@ export const STRINGS_RU = { infoNote: 'Загруженные наборы иконок синхронизируют состояние установки между устройствами. Наборы иконок остаются в локальной базе данных на каждом устройстве; синхронизация отслеживает только необходимость загрузки или удаления. Наборы иконок загружаются из репозитория Notebook Navigator (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'Использовать метаданные frontmatter', desc: 'Использовать frontmatter для названия заметки, временных меток, иконок и цветов' }, @@ -2482,7 +2530,7 @@ export const STRINGS_RU = { desc: 'Поле frontmatter для цветов фона. Оставьте пустым для использования цветов фона из настроек.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'Миграция иконок и цветов из настроек', desc: 'Сохранено в настройках: {icons} иконок, {colors} цветов.', button: 'Мигрировать', @@ -2492,7 +2540,7 @@ export const STRINGS_RU = { noticeFailures: 'Неудачные записи: {failures}.', noticeError: 'Миграция не удалась. Проверьте консоль для деталей.' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'Поля названия', desc: 'Список полей frontmatter через запятую. Используется первое непустое значение. Возвращается к имени файла.', placeholder: 'title, name' @@ -2507,7 +2555,7 @@ export const STRINGS_RU = { desc: 'Имя поля frontmatter для временной метки изменения. Оставьте пустым для использования только даты файловой системы.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'Формат временной метки', desc: 'Формат для разбора временных меток во frontmatter. Оставьте пустым для использования парсинга ISO 8601.', helpTooltip: 'Формат Moment', @@ -2520,12 +2568,12 @@ export const STRINGS_RU = { buttonText: '❤️ Спонсор', coffeeButton: '☕️ Купить кофе' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'Проверять новую версию при запуске', desc: 'Проверяет наличие новых релизов плагина при запуске и показывает уведомление, когда доступно обновление. Проверки происходят не чаще одного раза в день.', status: 'Доступна новая версия: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'Журнал отладки запуска', desc: 'Записывает диагностику запуска в Markdown-файл с временной меткой в корне хранилища, затем останавливается после стабилизации запуска. Файл может синхронизироваться и содержать пути к файлам.' }, diff --git a/src/i18n/locales/th.ts b/src/i18n/locales/th.ts index 9c6e90d81..0f24c6dba 100644 --- a/src/i18n/locales/th.ts +++ b/src/i18n/locales/th.ts @@ -74,6 +74,9 @@ export const STRINGS_TH = { shortcutsHeader: 'ทางลัด', recentFilesHeader: 'ไฟล์ล่าสุด', // Header label for recent files section in navigation pane (English: Recent files) properties: 'คุณสมบัติ', + folders: 'โฟลเดอร์', + tags: 'แท็ก', + calendar: 'ปฏิทิน', reorderRootFoldersTitle: 'จัดเรียงการนำทางใหม่', reorderRootFoldersHint: 'ใช้ลูกศรหรือลากเพื่อจัดเรียงใหม่', vaultRootLabel: 'ห้องนิรภัย', @@ -1004,101 +1007,142 @@ export const STRINGS_TH = { exportSuccess: 'ส่งออกรายงานเมตาดาต้าที่ล้มเหลวไปยัง: {filename}', exportFailed: 'ส่งออกรายงานเมตาดาต้าล้มเหลว' }, - sections: { - general: 'ทั่วไป', - vaultFilters: 'ตัวกรองการแสดงผล', - appearanceBehavior: 'ลักษณะและพฤติกรรม', - navigationPane: 'แผงนำทาง', - calendar: 'ปฏิทิน', - fileOperations: 'การดำเนินการกับไฟล์', - icons: 'ชุดไอคอน', - folders: 'โฟลเดอร์', - folderNotes: 'โน้ตโฟลเดอร์', - folderNoteFiles: 'ไฟล์โน้ตโฟลเดอร์', - foldersAndFolderNotes: 'โฟลเดอร์และโน้ตโฟลเดอร์', - tagsAndProperties: 'แท็กและคุณสมบัติ', - tags: 'แท็ก', - listPane: 'แผงรายการ', - notes: 'การแสดงไฟล์', - shortcutsAndRecentFiles: 'ทางลัดและไฟล์ล่าสุด', - advanced: 'ขั้นสูง' + index: { + label: 'ทั่วไป', + description: 'บันทึกการเผยแพร่ การสนับสนุน โปรไฟล์ห้องนิรภัย ประเภทไฟล์ และคีย์คุณสมบัติ', + groups: { + vaultSetup: 'การตั้งค่าห้องนิรภัย' + } }, pageGroups: { configuration: 'การกำหนดค่า', - navigationAndContent: 'แผงนำทาง', - notesAndLists: 'แผงรายการ', + navigationPane: 'แผงนำทาง', + listPane: 'แผงรายการ', calendarAndTools: 'ปฏิทินและเครื่องมือ' }, - pageDescriptions: { - general: 'บันทึกการเผยแพร่ การสนับสนุน โปรไฟล์ห้องนิรภัย ประเภทไฟล์ และคีย์คุณสมบัติ', - vaultFilters: 'โฟลเดอร์ที่ซ่อน แท็ก ไฟล์ แท็กไฟล์ และกฎคุณสมบัติ', - appearanceBehavior: 'พฤติกรรม การนำทางด้วยแป้นพิมพ์ ปุ่มเมาส์ ลักษณะ และการจัดรูปแบบ', - navigationPane: 'เค้าโครง ลักษณะ จำนวนไฟล์ พฤติกรรมการยุบ และสีรุ้ง', - shortcuts: 'การมองเห็นทางลัด เครื่องหมาย ไฟล์ล่าสุด และรายการที่ปักหมุด', - calendar: 'การแสดงปฏิทิน โน้ตวันที่ เทมเพลต โลแคล และตำแหน่งแถบด้านข้าง', - fileOperations: 'เทมเพลต การยืนยันการลบ ไฟล์แนบ และพฤติกรรมความขัดแย้งเมื่อย้ายไฟล์', - foldersAndFolderNotes: 'การแสดงโฟลเดอร์ โน้ตโฟลเดอร์ เทมเพลตโน้ตโฟลเดอร์ และพฤติกรรมโน้ตโฟลเดอร์', - tagsProperties: 'ส่วนแท็กและคุณสมบัติ ไอคอน การจัดเรียง ขอบเขต และการสืบทอด', - listPane: 'การจัดเรียง การจัดกลุ่ม โหมดรายการ โน้ตที่ปักหมุด และตัวอย่างภาพวาด', - frontmatter: 'ฟิลด์ frontmatter สำหรับชื่อที่แสดง การประทับเวลา ไอคอน และสี', - notes: 'ชื่อเรื่อง ข้อความตัวอย่าง รูปภาพเด่น แท็ก คุณสมบัติ วันที่ จำนวนคำ และจำนวนอักขระ', - iconPacks: 'ไอคอนอินเทอร์เฟซ ไอคอนไฟล์ และการจัดการชุดไอคอน', - advanced: 'การวินิจฉัย การล้างข้อมูลเมตา การนำเข้า/ส่งออก และการรีเซ็ต' - }, - groups: { - general: { - vaultConfiguration: 'การตั้งค่าห้องนิรภัย', - templates: 'เทมเพลต', - behavior: 'พฤติกรรม', - startup: 'การเริ่มต้น', - keyboardNavigation: 'การนำทางด้วยแป้นพิมพ์', - mouseButtons: 'ปุ่มเมาส์', - view: 'ลักษณะ', - icons: 'ไอคอน', - desktopAppearance: 'ลักษณะเดสก์ท็อป', - mobileAppearance: 'รูปลักษณ์บนมือถือ', - formatting: 'การจัดรูปแบบ' + pages: { + displayFilters: { + label: 'ตัวกรองการแสดงผล', + description: 'โฟลเดอร์ที่ซ่อน แท็ก ไฟล์ แท็กไฟล์ และกฎคุณสมบัติ' + }, + appearanceAndBehavior: { + label: 'ลักษณะและพฤติกรรม', + description: 'พฤติกรรม การนำทางด้วยแป้นพิมพ์ ปุ่มเมาส์ ลักษณะ และการจัดรูปแบบ', + groups: { + startup: 'การเริ่มต้น', + keyboardNavigation: 'การนำทางด้วยแป้นพิมพ์', + mouseButtons: 'ปุ่มเมาส์', + desktopAppearance: 'ลักษณะเดสก์ท็อป', + mobileAppearance: 'รูปลักษณ์บนมือถือ', + appearance: 'ลักษณะ', + icons: 'ไอคอน', + formatting: 'การจัดรูปแบบ' + } + }, + navigationPane: { + label: 'แผงนำทาง', + description: 'เค้าโครง ลักษณะ จำนวนไฟล์ พฤติกรรมการยุบ และสีรุ้ง', + groups: { + appearance: 'ลักษณะ', + banner: 'แบนเนอร์', + collapseItems: 'ยุบรายการ', + dragAndDrop: 'ลากและวาง', + fileCounts: 'จำนวนไฟล์', + rainbowColors: 'สีรุ้ง' + } + }, + shortcutsAndRecentFiles: { + label: 'ทางลัดและไฟล์ล่าสุด', + description: 'การมองเห็นทางลัด เครื่องหมาย ไฟล์ล่าสุด และรายการที่ปักหมุด', + groups: { + shortcuts: 'ทางลัด', + recentFiles: 'ไฟล์ล่าสุด' + } + }, + foldersAndFolderNotes: { + label: 'โฟลเดอร์และโน้ตโฟลเดอร์', + description: 'การแสดงโฟลเดอร์ โน้ตโฟลเดอร์ เทมเพลตโน้ตโฟลเดอร์ และพฤติกรรมโน้ตโฟลเดอร์', + groups: { + folders: 'โฟลเดอร์', + folderNotes: 'โน้ตโฟลเดอร์', + folderNoteFiles: 'ไฟล์โน้ตโฟลเดอร์' + } + }, + tagsAndProperties: { + label: 'แท็กและคุณสมบัติ', + description: 'ส่วนแท็กและคุณสมบัติ ไอคอน การจัดเรียง ขอบเขต และการสืบทอด', + groups: { + tags: 'แท็ก', + properties: 'คุณสมบัติ' + } + }, + listPane: { + label: 'แผงรายการ', + description: 'การจัดเรียง การจัดกลุ่ม โหมดรายการ โน้ตที่ปักหมุด และตัวอย่างภาพวาด', + groups: { + appearance: 'ลักษณะ', + sortAndGroup: 'เรียงลำดับและจัดกลุ่ม', + groupHeaders: 'ส่วนหัวกลุ่ม', + manualSort: 'การจัดเรียงด้วยตนเอง', + pinnedNotes: 'โน้ตที่ปักหมุด', + behavior: 'พฤติกรรม', + drawingPreviews: 'ตัวอย่างภาพวาด' + } + }, + fileOperations: { + label: 'การดำเนินการกับไฟล์', + description: 'เทมเพลต การยืนยันการลบ ไฟล์แนบ และพฤติกรรมความขัดแย้งเมื่อย้ายไฟล์', + groups: { + templates: 'เทมเพลต' + } + }, + frontmatterFields: { + label: 'ฟิลด์ Frontmatter', + description: 'ฟิลด์ frontmatter สำหรับชื่อที่แสดง การประทับเวลา ไอคอน และสี' + }, + fileDisplay: { + label: 'การแสดงไฟล์', + description: 'ชื่อเรื่อง ข้อความตัวอย่าง รูปภาพเด่น แท็ก คุณสมบัติ วันที่ จำนวนคำ และจำนวนอักขระ', + groups: { + icon: 'ไอคอน', + title: 'ชื่อเรื่อง', + previewText: 'ข้อความตัวอย่าง', + featureImage: 'รูปภาพเด่น', + tags: 'แท็ก', + properties: 'คุณสมบัติ', + tasks: 'งาน', + date: 'วันที่', + parentFolder: 'โฟลเดอร์หลัก', + wordAndCharacterCount: 'จำนวนคำและอักขระ' + } + }, + calendar: { + label: 'ปฏิทิน', + description: 'การแสดงปฏิทิน โน้ตวันที่ เทมเพลต โลแคล และตำแหน่งแถบด้านข้าง', + groups: { + appearance: 'ลักษณะ', + leftSidebar: 'แถบด้านซ้าย', + calendarIntegration: 'การรวมปฏิทิน', + rightSidebar: 'แถบด้านขวา' + } + }, + iconPacks: { + label: 'ชุดไอคอน', + description: 'ไอคอนอินเทอร์เฟซ ไอคอนไฟล์ และการจัดการชุดไอคอน' }, advanced: { - maintenance: 'การบำรุงรักษา', - resetSettings: 'รีเซ็ตการตั้งค่า' - }, - navigation: { - appearance: 'ลักษณะ', - banner: 'แบนเนอร์', - collapseItems: 'ยุบรายการ', - dragAndDrop: 'ลากและวาง', - noteCounts: 'จำนวนไฟล์', - rainbowColors: 'สีรุ้ง', - leftSidebar: 'แถบด้านซ้าย', - calendarIntegration: 'การรวมปฏิทิน' - }, - list: { - display: 'ลักษณะ', - sortAndGroup: 'เรียงลำดับและจัดกลุ่ม', - groupHeaders: 'ส่วนหัวกลุ่ม', - manualSort: 'การจัดเรียงด้วยตนเอง', - pinnedNotes: 'โน้ตที่ปักหมุด', - drawingPreviews: 'ตัวอย่างภาพวาด' - }, - notes: { - frontmatter: 'ฟิลด์ Frontmatter', - tasks: 'งาน', - icon: 'ไอคอน', - title: 'ชื่อเรื่อง', - previewText: 'ข้อความตัวอย่าง', - featureImage: 'รูปภาพเด่น', - tags: 'แท็ก', - properties: 'คุณสมบัติ', - date: 'วันที่', - parentFolder: 'โฟลเดอร์หลัก', - wordCount: 'จำนวนคำและอักขระ' + label: 'ขั้นสูง', + description: 'การวินิจฉัย การล้างข้อมูลเมตา การนำเข้า/ส่งออก และการรีเซ็ต', + groups: { + maintenance: 'การบำรุงรักษา', + resetSettings: 'รีเซ็ตการตั้งค่า' + } } }, syncMode: { notSynced: '(ไม่ซิงค์)', - switchToSynced: 'เปิดใช้งานการซิงค์', - switchToLocal: 'ปิดใช้งานการซิงค์' + enableSync: 'เปิดใช้งานการซิงค์', + disableSync: 'ปิดใช้งานการซิงค์' }, items: { listPaneTitle: { @@ -1106,11 +1150,11 @@ export const STRINGS_TH = { desc: 'เลือกตำแหน่งที่จะแสดงชื่อแผงรายการ', options: { header: 'แสดงในส่วนหัว', - list: 'แสดงในแผงรายการ', + listPane: 'แสดงในแผงรายการ', hidden: 'ไม่แสดง' } }, - sortNotesBy: { + defaultSortOrder: { name: 'ลำดับการเรียงเริ่มต้น', desc: 'เลือกลำดับการเรียงเริ่มต้นสำหรับโน้ต คุณสมบัติจาก “คุณสมบัติสำหรับเรียงลำดับ” จะปรากฏเป็นตัวเลือกการเรียงเพิ่มเติม', directions: { @@ -1118,18 +1162,18 @@ export const STRINGS_TH = { desc: 'จากมากไปน้อย' }, dateDirections: { - desc: 'ใหม่สุดบน', - asc: 'เก่าสุดบน' + newestOnTop: 'ใหม่สุดบน', + oldestOnTop: 'เก่าสุดบน' }, textDirections: { - asc: 'A บน', - desc: 'Z บน' + aOnTop: 'A บน', + zOnTop: 'Z บน' }, fields: { - modified: 'วันที่แก้ไข', - created: 'วันที่สร้าง', + dateEdited: 'วันที่แก้ไข', + dateCreated: 'วันที่สร้าง', title: 'ชื่อเรื่อง', - filename: 'ชื่อไฟล์', + fileName: 'ชื่อไฟล์', property: 'คุณสมบัติ' } }, @@ -1142,7 +1186,7 @@ export const STRINGS_TH = { follow: 'ตามลำดับการเรียง' } }, - propertySortKey: { + sortingProperties: { name: 'คุณสมบัติสำหรับเรียงลำดับ', desc: 'คุณสมบัติ frontmatter คั่นด้วยจุลภาค แต่ละคุณสมบัติจะปรากฏเป็นตัวเลือกการเรียงในการตั้งค่าลำดับการเรียงเริ่มต้นและในเมนูจัดเรียงของแผงรายการ คุณสมบัติเหล่านี้จะไม่ถูกเปลี่ยนแปลง', placeholder: 'published, author', @@ -1152,14 +1196,14 @@ export const STRINGS_TH = { both: 'ลำดับการเรียงเริ่มต้นและการจัดกลุ่มเริ่มต้นถูกรีเซ็ตเพราะคุณสมบัติของพวกมันไม่พร้อมใช้งานแล้ว' } }, - propertySortSecondary: { + propertySecondarySort: { name: 'การเรียงลำดับรอง', desc: 'ใช้กับการเรียงตามคุณสมบัติ เมื่อโน้ตมีค่าคุณสมบัติเดียวกันหรือไม่มีค่าคุณสมบัติ', options: { title: 'ชื่อเรื่อง', - filename: 'ชื่อไฟล์', - created: 'วันที่สร้าง', - modified: 'วันที่แก้ไข' + fileName: 'ชื่อไฟล์', + dateCreated: 'วันที่สร้าง', + dateEdited: 'วันที่แก้ไข' } }, propertySortInstructions: { @@ -1172,16 +1216,16 @@ export const STRINGS_TH = { '**มุมมองแท็กและคุณสมบัติ:** เมื่อเลือกการจัดกลุ่ม **โฟลเดอร์** ระบบจะแสดงส่วนหัววันที่แทน' ] }, - propertyGroupKey: { + groupingProperties: { name: 'คุณสมบัติสำหรับจัดกลุ่ม', desc: 'คุณสมบัติ frontmatter คั่นด้วยจุลภาค แต่ละคุณสมบัติจะปรากฏเป็นตัวเลือกการจัดกลุ่มในการตั้งค่าการจัดกลุ่มเริ่มต้นและในเมนูจัดเรียงของแผงรายการ คุณสมบัติเหล่านี้จะไม่ถูกเปลี่ยนแปลง', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'คุณสมบัติสำหรับการจัดเรียงด้วยตนเอง', desc: 'คุณสมบัติ frontmatter ที่ใช้เก็บค่าดัชนีตัวเลขสำหรับการจัดเรียงด้วยตนเอง' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'คุณสมบัติส่วนหัวกลุ่ม', desc: 'คุณสมบัติ frontmatter ที่ใช้เก็บส่วนหัวกลุ่มกำหนดเอง' }, @@ -1198,7 +1242,7 @@ export const STRINGS_TH = { options: { top: 'ด้านบน', bottom: 'ด้านล่าง', - 'below-selected-note': 'ใต้โน้ตที่เลือก', + belowSelectedNote: 'ใต้โน้ตที่เลือก', unsorted: 'ยังไม่จัดเรียง' } }, @@ -1214,7 +1258,7 @@ export const STRINGS_TH = { 'ในแผงรายการ เลือกโน้ตหนึ่งโน้ตหรือเลือกหลายโน้ต จากนั้นกด **Cmd/Ctrl + Arrow Up/Down** เพื่อเลื่อนการเลือกขึ้นหรือลง' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'เลื่อนไปยังไฟล์ที่เลือกเมื่อรายการเปลี่ยนแปลง', desc: 'เลื่อนไปยังไฟล์ที่เลือกเมื่อปักหมุดโน้ต แสดงโน้ตลูกหลาน เปลี่ยนลักษณะโฟลเดอร์ หรือเรียกใช้การดำเนินการไฟล์' }, @@ -1222,15 +1266,15 @@ export const STRINGS_TH = { name: 'แสดงโน้ตจากโฟลเดอร์ย่อย / ลูกหลาน', desc: 'รวมโน้ตจากโฟลเดอร์ย่อยที่ซ้อนกันและลูกหลานแท็กและคุณสมบัติเมื่อดูโฟลเดอร์ แท็ก หรือคุณสมบัติ' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'ปักหมุดโน้ตเฉพาะในโฟลเดอร์ของมัน', desc: 'โน้ตที่ปักหมุดจะแสดงว่าปักหมุดเฉพาะในโฟลเดอร์ของตัวเองเท่านั้น มีประโยชน์สำหรับโน้ตโฟลเดอร์หรือหากคุณมีโน้ตที่ปักหมุดจำนวนมาก ไม่มีผลต่อมุมมองแท็กหรือคุณสมบัติ' }, - separateNoteCounts: { + separateFileCounts: { name: 'แสดงจำนวนไฟล์ปัจจุบันและลูกหลานแยกกัน', desc: 'แสดงจำนวนไฟล์เป็นรูปแบบ "ปัจจุบัน ▾ ลูกหลาน" สำหรับโฟลเดอร์ แท็ก และคุณสมบัติ' }, - groupNotes: { + defaultGrouping: { name: 'การจัดกลุ่มเริ่มต้น', desc: '**ส่วนหัว**ใส่หัวข้อให้รายการที่เรียงแล้วโดยไม่เปลี่ยนลำดับ: กำหนดเองแสดงส่วนหัวที่กำหนดไว้ใน frontmatter และวันที่แทรกส่วนหัววันที่ **กลุ่ม**จะจัดเรียงรายการใหม่: กลุ่มโฟลเดอร์และคุณสมบัติเรียงลำดับของตัวเอง และโน้ตในแต่ละกลุ่มเรียงตามลำดับการเรียง', families: { @@ -1243,7 +1287,7 @@ export const STRINGS_TH = { folder: 'โฟลเดอร์' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'แสดงป้ายแท็กและคุณสมบัติทั้งหมดเสมอ', desc: 'เมื่อปิดใช้งาน ป้ายที่ตรงกับการเลือกการนำทางปัจจุบันจะถูกซ่อน (เช่น ป้ายแท็ก "สูตรอาหาร" จะถูกซ่อนเมื่อเรียกดูแท็ก "สูตรอาหาร") เปิดใช้งานเพื่อให้ป้ายทั้งหมดแสดงอยู่เสมอ' }, @@ -1251,7 +1295,7 @@ export const STRINGS_TH = { name: 'ส่วนหัวกลุ่มแบบติดด้านบน', desc: 'แสดงส่วนหัวของวันที่ โฟลเดอร์ คุณสมบัติ หรือส่วนที่ปักหมุดในปัจจุบันให้เห็นอยู่เสมอขณะเลื่อน' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'แสดงเส้นทางโฟลเดอร์ย่อย', desc: 'เมื่อจัดกลุ่มตามโฟลเดอร์ในแผงรายการ ให้แสดงเส้นทางโฟลเดอร์ย่อยแทนการแสดงเฉพาะชื่อโฟลเดอร์' }, @@ -1279,9 +1323,9 @@ export const STRINGS_TH = { name: 'ไอคอนงานที่ยังไม่เสร็จ', desc: 'แทนที่ไอคอนไฟล์เมื่อโน้ตมีงานที่ยังไม่เสร็จ', options: { - none: 'ปิดใช้งาน', + disabled: 'ปิดใช้งาน', compact: 'โหมดกะทัดรัด', - all: 'มาตรฐานและกะทัดรัด' + standardAndCompact: 'มาตรฐานและกะทัดรัด' } }, useFolderIcon: { @@ -1304,7 +1348,7 @@ export const STRINGS_TH = { name: 'ความคืบหน้าของงาน: ซ่อนเมื่อเสร็จทั้งหมด', desc: 'ซ่อนความคืบหน้าของงานเมื่องานทั้งหมดในโน้ตเสร็จแล้ว' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'พื้นหลังงานที่ยังไม่เสร็จ', desc: 'ใช้สีพื้นหลังเมื่อโน้ตมีงานที่ยังไม่เสร็จ' }, @@ -1312,7 +1356,7 @@ export const STRINGS_TH = { name: 'สีพื้นหลังงานที่ยังไม่เสร็จ', desc: 'ตั้งค่าสีพื้นหลังที่ใช้เมื่อโน้ตมีงานที่ยังไม่เสร็จ' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'ไอคอนตามชื่อไฟล์', desc: 'กำหนดไอคอนให้ไฟล์ตามข้อความในชื่อ' }, @@ -1322,7 +1366,7 @@ export const STRINGS_TH = { placeholder: '# ข้อความ=ไอคอน\nประชุม=ph-calendar\nใบแจ้งหนี้=ph-receipt', editTooltip: 'แก้ไขการแมป' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'ไอคอนตามประเภทไฟล์', desc: 'กำหนดไอคอนให้ไฟล์ตามนามสกุล' }, @@ -1330,7 +1374,7 @@ export const STRINGS_TH = { name: 'ค่าที่ตั้งไว้ล่วงหน้าสำหรับไอคอนไฟล์', desc: 'เลือกไอคอนในตัวหรือค่าที่ตั้งไว้ล่วงหน้าของชุดไอคอน กฎนามสกุลแบบกำหนดเองจะเขียนทับค่านี้', options: { - none: 'ไอคอนในตัว' + builtIn: 'ไอคอนในตัว' }, notInstalledWarning: 'ยังไม่ได้ติดตั้งชุดไอคอนนี้ จะแสดงไอคอนในตัวแทน' }, @@ -1353,11 +1397,11 @@ export const STRINGS_TH = { name: 'แสดงโฟลเดอร์หลัก', desc: 'แสดงชื่อโฟลเดอร์หลักสำหรับโน้ตในโฟลเดอร์ย่อย แท็ก หรือคุณสมบัติ' }, - showParentFolderFullPath: { + showFolderPath: { name: 'แสดงเส้นทางโฟลเดอร์', desc: 'แสดงเส้นทางที่สัมพันธ์กับโฟลเดอร์ที่เลือกแทนการแสดงเฉพาะชื่อโฟลเดอร์ แท็กและคุณสมบัติจะแสดงเส้นทางแบบเต็ม' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'คลิกโฟลเดอร์หลักเพื่อเปิดโฟลเดอร์', desc: 'การคลิกป้ายโฟลเดอร์หลักจะเปิดโฟลเดอร์ในแผงรายการ' }, @@ -1385,7 +1429,7 @@ export const STRINGS_TH = { vertical: 'แบ่งแนวตั้ง' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'เมื่อแถบด้านข้างแคบเกินไป', desc: 'เลือกสิ่งที่จะเกิดขึ้นเมื่อแผงนำทางและแผงรายการไม่พอดีแบบวางเคียงกัน', options: { @@ -1394,7 +1438,7 @@ export const STRINGS_TH = { vertical: 'สลับเป็นการแบ่งแนวตั้ง' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'เกณฑ์แถบด้านข้างแคบ', desc: 'เลือกวิธีคำนวณเกณฑ์ความกว้างของแถบด้านข้าง', options: { @@ -1402,41 +1446,41 @@ export const STRINGS_TH = { customWidth: 'ความกว้างกำหนดเอง' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'ความกว้างเกณฑ์แถบด้านข้างแคบ', desc: 'สลับเมื่อแถบด้านข้างแคบกว่าความกว้างนี้', resetTooltip: 'รีเซ็ตเป็นความกว้างเริ่มต้น' }, - appearanceBackground: { + paneBackgroundColor: { name: 'สีพื้นหลัง', desc: 'เลือกสีพื้นหลังสำหรับแผงนำทางและรายการ', options: { separate: 'พื้นหลังแยก', - primary: 'ใช้พื้นหลังรายการ', - secondary: 'ใช้พื้นหลังนำทาง' + listBackground: 'ใช้พื้นหลังรายการ', + navigationBackground: 'ใช้พื้นหลังนำทาง' } }, - appearanceScale: { + zoomLevel: { name: 'ระดับการซูม', desc: 'ควบคุมระดับการซูมโดยรวมของ Notebook Navigator (เปอร์เซ็นต์)' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'ใช้แถบเครื่องมือลอยบน iOS', desc: 'ใช้ได้เฉพาะบน iOS' }, - startView: { + defaultStartupView: { name: 'มุมมองเริ่มต้นเมื่อเริ่มงาน', desc: 'เลือกแผงที่ใช้งานเมื่อเปิด Notebook Navigator เลย์เอาต์แผงเดียวจะแสดงแผงนี้ก่อน ส่วนเลย์เอาต์สองแผงจะให้โฟกัสแป้นพิมพ์กับแผงนี้', options: { navigation: 'แผงนำทาง', - files: 'แผงรายการ' + listPane: 'แผงรายการ' } }, toolbarButtons: { name: 'ปุ่มแถบเครื่องมือ', desc: 'เลือกปุ่มที่จะปรากฏในแถบเครื่องมือ ปุ่มที่ซ่อนยังคงเข้าถึงได้ผ่านคำสั่งและเมนู' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'เปิดโน้ตใหม่ในแท็บใหม่', desc: 'เมื่อเปิดใช้งาน คำสั่งสร้างโน้ตใหม่จะเปิดโน้ตในแท็บใหม่ เมื่อปิดใช้งาน โน้ตจะแทนที่แท็บปัจจุบัน' }, @@ -1456,20 +1500,20 @@ export const STRINGS_TH = { name: 'เปิดเผยอัตโนมัติ: ละเว้นเหตุการณ์จากหน้าต่างอื่น', desc: 'อย่าเปลี่ยนโน้ตที่ใช้งานเมื่อทำงานกับโน้ตในหน้าต่างอื่น' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'แอนิเมชันหน้าต่างเดี่ยว', desc: 'ระยะเวลาการเปลี่ยนหน้าต่างในโหมดหน้าต่างเดี่ยว (มิลลิวินาที)', resetTooltip: 'รีเซ็ตเป็นค่าเริ่มต้น' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'เลือกโน้ตแรกอัตโนมัติ', desc: 'เปิดโน้ตแรกอัตโนมัติเมื่อสลับโฟลเดอร์ แท็ก หรือคุณสมบัติ' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'ปิดการเลื่อนอัตโนมัติสำหรับทางลัด', desc: 'อย่าเลื่อนแผงนำทางเมื่อคลิกรายการในทางลัด' }, - autoExpandNavItems: { + expandOnSelection: { name: 'ขยายเมื่อเลือก', desc: 'ขยายโฟลเดอร์และแท็กเมื่อเลือก ในโหมดแผงเดียว การเลือกครั้งแรกจะขยาย การเลือกครั้งที่สองจะแสดงไฟล์' }, @@ -1507,16 +1551,16 @@ export const STRINGS_TH = { name: 'ป้ายทางลัด', desc: "สิ่งที่จะแสดงถัดจากทางลัด ใช้คำสั่ง 'เปิดทางลัด 1-9' เพื่อเปิดทางลัดโดยตรง", options: { - index: 'ตำแหน่ง (1-9)', + position: 'ตำแหน่ง (1-9)', count: 'จำนวนรายการ', none: 'ไม่มี' } }, - showRecentNotes: { + showRecentFiles: { name: 'แสดงไฟล์ล่าสุด', desc: 'แสดงส่วนไฟล์ล่าสุดในแผงนำทาง' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'ซ่อนประเภทไฟล์จากไฟล์ล่าสุด', desc: 'เลือกประเภทไฟล์ที่ต้องการซ่อนในส่วนไฟล์ล่าสุด', options: { @@ -1524,15 +1568,15 @@ export const STRINGS_TH = { folderNotes: 'โน้ตโฟลเดอร์' } }, - recentNotesCount: { + recentFilesCount: { name: 'จำนวนไฟล์ล่าสุด', desc: 'จำนวนไฟล์ล่าสุดที่จะแสดง' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'ปักหมุดไฟล์ล่าสุดพร้อมทางลัด', desc: 'รวมไฟล์ล่าสุดเมื่อปักหมุดทางลัด' }, - calendarEnabled: { + enableCalendar: { name: 'เปิดใช้งานปฏิทิน', desc: 'เปิดใช้งานฟีเจอร์ปฏิทินของ Notebook Navigator' }, @@ -1544,12 +1588,12 @@ export const STRINGS_TH = { rightSidebar: 'แถบด้านขวา' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'ตำแหน่งแผงเดี่ยว', desc: 'ตำแหน่งที่แสดงปฏิทินในโหมดแผงเดี่ยว', options: { navigationPane: 'แผงนำทาง', - below: 'ใต้แผง' + belowPanes: 'ใต้แผง' } }, calendarLocale: { @@ -1571,7 +1615,7 @@ export const STRINGS_TH = { thuFri: 'วันพฤหัสบดีและวันศุกร์' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'รูปแบบชื่อเดือน', desc: 'ชื่อเดือนแบบเต็ม (มกราคม) หรือแบบย่อ (ม.ค.)', options: { @@ -1583,7 +1627,7 @@ export const STRINGS_TH = { name: 'แสดงปุ่มข้อมูล', desc: 'แสดงปุ่มข้อมูลในแถบค้นหาและส่วนหัวปฏิทิน' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'สัปดาห์ที่แสดงในแถบด้านซ้าย', desc: 'ปฏิทินในแถบด้านขวาจะแสดงเต็มเดือนเสมอ', options: { @@ -1628,7 +1672,7 @@ export const STRINGS_TH = { name: 'แสดงรายการที่ซ่อน', desc: 'เมื่อเปิดใช้งาน ปฏิทินจะแสดงโน้ตปฏิทินทั้งหมดเสมอ รวมถึงโน้ตที่ถูกซ่อนโดยตัวกรองของโปรไฟล์คลัง' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'แหล่งที่มาบันทึกรายวัน', desc: 'แหล่งที่มาสำหรับบันทึกปฏิทิน', options: { @@ -1648,34 +1692,38 @@ export const STRINGS_TH = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'โฟลเดอร์หลัก', desc: 'โฟลเดอร์ฐานสำหรับบันทึกตามรอบ รูปแบบวันที่สามารถรวมโฟลเดอร์ย่อยได้ เปลี่ยนแปลงตามโปรไฟล์ห้องนิรภัยที่เลือก', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'ตำแหน่งโฟลเดอร์เทมเพลต', desc: 'ตัวเลือกไฟล์เทมเพลตแสดงโน้ตจากโฟลเดอร์นี้', placeholder: 'Templates', usage: 'ใช้โดยโน้ตปฏิทินและโน้ตโฟลเดอร์ กำหนดค่าเทมเพลตใน ปฏิทิน > การรวมปฏิทิน และ โฟลเดอร์และโน้ตโฟลเดอร์ > ไฟล์โน้ตโฟลเดอร์' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'โน้ตรายวัน', desc: 'กำหนดเส้นทางโดยใช้รูปแบบวันที่ Moment ใส่ชื่อโฟลเดอร์ย่อยในวงเล็บเหลี่ยม เช่น [Work]/YYYY คลิกไอคอนเทมเพลตเพื่อตั้งค่าเทมเพลต ตั้งค่าตำแหน่งโฟลเดอร์เทมเพลตในการดำเนินการกับไฟล์ > เทมเพลต', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'แพทเทิร์นต้องสามารถฟอร์แมตและพาร์สกลับเป็นวันที่แบบเต็ม (ปี เดือน วัน) ได้' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'กำหนดเส้นทางโดยใช้ ', momentLinkText: 'รูปแบบวันที่ Moment', momentDescSuffix: ' ใส่ชื่อโฟลเดอร์ย่อยในวงเล็บเหลี่ยม เช่น [Work]/YYYY คลิกไอคอนเทมเพลตเพื่อตั้งค่าเทมเพลต ตั้งค่าตำแหน่งโฟลเดอร์เทมเพลตในการดำเนินการกับไฟล์ > เทมเพลต', - templaterSupportInstalled: '✅ ติดตั้งปลั๊กอิน Templater พร้อมการรองรับเทมเพลตเต็มรูปแบบแล้ว', - templaterSupportMissing: '⚠️ ติดตั้งปลั๊กอิน Templater เพื่อใช้การรองรับเทมเพลต', templateTokenNoticeLabel: 'สำคัญ!', templateTokenNotice: 'การรองรับเทมเพลตต้องใช้ปลั๊กอิน Templater รูปแบบในตัว เช่น {{date}} และ {{title}} ใช้ได้เฉพาะเมื่อตั้ง {source} เป็น {option}', - placeholder: 'YYYY/YYYYMMDD', - example: 'รูปแบบปัจจุบัน: {path}', - parsingError: 'แพทเทิร์นต้องสามารถฟอร์แมตและพาร์สกลับเป็นวันที่แบบเต็ม (ปี เดือน วัน) ได้' + example: 'รูปแบบปัจจุบัน: {path}' + }, + templaterSupport: { + installed: '✅ ติดตั้งปลั๊กอิน Templater พร้อมการรองรับเทมเพลตเต็มรูปแบบแล้ว', + missing: '⚠️ ติดตั้งปลั๊กอิน Templater เพื่อใช้การรองรับเทมเพลต' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'โน้ตรายสัปดาห์', parsingError: 'แพทเทิร์นต้องสามารถฟอร์แมตและพาร์สกลับเป็นสัปดาห์แบบเต็ม (ปีของสัปดาห์ หมายเลขสัปดาห์) ได้', weekPathMismatchWarning: @@ -1683,19 +1731,19 @@ export const STRINGS_TH = { mixedWeekTokensWarning: 'แพทเทิร์นนี้ผสมโทเค็นสัปดาห์ที่เริ่มจากวันจันทร์ ("W" หรือ "G") กับโทเค็นสัปดาห์ที่อิงตามภาษา ("w" หรือ "g") ใช้ชุดเดียวอย่างสม่ำเสมอ: "GGGG" กับ "WW" สำหรับสัปดาห์ที่เริ่มจากวันจันทร์ หรือ "gggg" กับ "ww" หากโน้ตรายสัปดาห์ควรเป็นไปตามภาษาที่เลือก' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'โน้ตรายเดือน', parsingError: 'แพทเทิร์นต้องสามารถฟอร์แมตและพาร์สกลับเป็นเดือนแบบเต็ม (ปี เดือน) ได้' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'โน้ตรายไตรมาส', parsingError: 'แพทเทิร์นต้องสามารถฟอร์แมตและพาร์สกลับเป็นไตรมาสแบบเต็ม (ปี ไตรมาส) ได้' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'โน้ตรายปี', parsingError: 'แพทเทิร์นต้องสามารถฟอร์แมตและพาร์สกลับเป็นปีแบบเต็ม (ปี) ได้' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'ไฟล์เทมเพลต: {name}' }, showTooltips: { @@ -1716,7 +1764,7 @@ export const STRINGS_TH = { buttonText: 'รีเซ็ตตัวคั่น', notice: 'รีเซ็ตตำแหน่งตัวคั่นแล้ว รีสตาร์ท Obsidian หรือเปิด Notebook Navigator ใหม่เพื่อใช้งาน' }, - settingsTransfer: { + importAndExportSettings: { name: 'นำเข้าและส่งออกการตั้งค่า', desc: 'ส่งออกหรือนำเข้าการตั้งค่า Notebook Navigator เป็น JSON การนำเข้าจะแทนที่การตั้งค่าทั้งหมด', importButtonText: 'นำเข้า', @@ -1774,15 +1822,15 @@ export const STRINGS_TH = { name: 'กด Enter เพื่อเปิดไฟล์', desc: 'เปิดไฟล์เฉพาะเมื่อกด Enter ระหว่างการนำทางด้วยแป้นพิมพ์ในรายการ บน macOS การตั้งค่านี้จะป้องกันไม่ให้ Enter เปลี่ยนชื่อไฟล์' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'เลือกว่าจะให้ Shift+Enter เปิดหรือเปลี่ยนชื่อไฟล์ที่เลือก' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'เลือกว่าจะให้ Cmd+Enter เปิดหรือเปลี่ยนชื่อไฟล์ที่เลือก' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'เลือกว่าจะให้ Ctrl+Enter เปิดหรือเปลี่ยนชื่อไฟล์ที่เลือก' }, @@ -1790,12 +1838,12 @@ export const STRINGS_TH = { name: 'ปุ่มย้อนกลับ/ไปข้างหน้าของเมาส์', desc: 'การทำงานของปุ่มย้อนกลับและไปข้างหน้าของเมาส์บนเดสก์ท็อป', options: { - none: 'ใช้ค่าเริ่มต้นของระบบ', + systemDefault: 'ใช้ค่าเริ่มต้นของระบบ', singlePaneSwitch: 'สลับแผง (แผงเดียว)', history: 'นำทางประวัติ' } }, - fileVisibility: { + showFileTypes: { name: 'แสดงประเภทไฟล์ (โปรไฟล์ห้องนิรภัย)', desc: 'กรองประเภทไฟล์ที่จะแสดงใน navigator ประเภทไฟล์ที่ Obsidian ไม่รองรับอาจเปิดในแอปภายนอก', options: { @@ -1827,12 +1875,12 @@ export const STRINGS_TH = { desc: 'สร้างบันทึกเป็นระยะเมื่อเริ่มต้นหรือเมื่อใช้คำสั่ง หากยังไม่มี' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'ซ่อนโน้ตตามกฎคุณสมบัติ (โปรไฟล์ห้องนิรภัย)', desc: 'รายการกฎ frontmatter คั่นด้วยเครื่องหมายจุลภาค ใช้รูปแบบ `key` หรือ `key=value` (เช่น status=done, published=true, archived)', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'ซ่อนไฟล์ (โปรไฟล์ห้องนิรภัย)', desc: 'รายการรูปแบบชื่อไฟล์คั่นด้วยเครื่องหมายจุลภาคที่จะซ่อน รองรับอักขระไวลด์การ์ด * และเส้นทาง / (เช่น temp-*, *.png, /assets/*)', placeholder: 'temp-*, *.png, /assets/*' @@ -1858,7 +1906,7 @@ export const STRINGS_TH = { duplicateName: 'ชื่อโปรไฟล์มีอยู่แล้ว' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'ตำแหน่งชื่อห้องนิรภัย', desc: 'เลือกตำแหน่งที่จะแสดงชื่อห้องนิรภัย', options: { @@ -1866,7 +1914,7 @@ export const STRINGS_TH = { navigation: 'แสดงในแผงนำทาง' } }, - excludedFolders: { + hideFolders: { name: 'ซ่อนโฟลเดอร์ (โปรไฟล์ห้องนิรภัย)', desc: 'รายการโฟลเดอร์คั่นด้วยเครื่องหมายจุลภาคที่จะซ่อน รูปแบบชื่อ: assets* (โฟลเดอร์ที่เริ่มด้วย assets), *_temp (ลงท้ายด้วย _temp) รูปแบบเส้นทาง: /archive (archive หลักเท่านั้น), /res* (โฟลเดอร์หลักที่เริ่มด้วย res), /*/temp (โฟลเดอร์ temp ลึกหนึ่งระดับ), /projects/* (โฟลเดอร์ทั้งหมดใน projects)', placeholder: 'templates, assets*, /archive, /res*' @@ -1880,7 +1928,7 @@ export const STRINGS_TH = { name: 'แสดงวันที่', desc: 'แสดงวันที่ใต้ชื่อโน้ต' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'เมื่อเรียงตามชื่อ', desc: 'วันที่ที่จะแสดงเมื่อโน้ตเรียงตามตัวอักษร', options: { @@ -1892,7 +1940,7 @@ export const STRINGS_TH = { name: 'แสดงแท็กไฟล์', desc: 'แสดงแท็กที่คลิกได้ในรายการไฟล์' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'แสดงเส้นทางแท็กเต็ม', desc: "แสดงเส้นทางลำดับชั้นแท็กเต็ม เมื่อเปิด: 'ai/openai', 'work/projects/2024' เมื่อปิด: 'openai', '2024'" }, @@ -1900,7 +1948,7 @@ export const STRINGS_TH = { name: 'ลงสีแท็กไฟล์', desc: 'ใช้สีแท็กกับป้ายแท็กบนรายการไฟล์' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'แสดงแท็กที่มีสีก่อน', desc: 'เรียงแท็กที่มีสีก่อนแท็กอื่นบนรายการไฟล์' }, @@ -1916,7 +1964,7 @@ export const STRINGS_TH = { name: 'ระบายสีคุณสมบัติไฟล์', desc: 'ใช้สีคุณสมบัติกับป้ายคุณสมบัติบนรายการไฟล์' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'แสดงคุณสมบัติที่มีสีก่อน', desc: 'เรียงคุณสมบัติที่มีสีก่อนคุณสมบัติอื่นบนรายการไฟล์' }, @@ -1924,7 +1972,7 @@ export const STRINGS_TH = { name: 'แสดงคุณสมบัติในโหมดกะทัดรัด', desc: 'แสดงคุณสมบัติเมื่อโหมดกะทัดรัดเปิดใช้งาน' }, - textCountDisplay: { + textCountType: { name: 'ประเภทการนับ', desc: 'เลือกจำนวนของข้อความที่จะแสดงในรายการไฟล์', options: { @@ -1954,11 +2002,11 @@ export const STRINGS_TH = { name: 'คุณสมบัติเป้าหมาย', desc: 'คีย์คุณสมบัติ frontmatter ที่มีจำนวนคำเป้าหมาย เว้นว่างไว้เพื่อซ่อนเป้าหมาย' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'แสดงเปอร์เซ็นต์เป้าหมาย', desc: 'แสดงเฉพาะเปอร์เซ็นต์ความคืบหน้าเมื่อมีจำนวนคำเป้าหมาย' }, - propertyFields: { + propertyKeys: { name: 'คีย์คุณสมบัติ (โปรไฟล์ห้องนิรภัย)', desc: 'คีย์คุณสมบัติ frontmatter พร้อมการตั้งค่าการแสดงผลแต่ละคีย์สำหรับการนำทางและรายการไฟล์', addButtonTooltip: 'กำหนดค่าคีย์คุณสมบัติ', @@ -1970,11 +2018,11 @@ export const STRINGS_TH = { name: 'แสดงคุณสมบัติแยกเป็นบรรทัด', desc: 'แสดงแต่ละคุณสมบัติในบรรทัดของตัวเอง' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'เชื่อมโยงป้ายคุณสมบัติไปยังบันทึก', desc: 'คลิกป้ายคุณสมบัติเพื่อเปิดบันทึกที่เชื่อมโยง' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: 'เชื่อมโยงป้ายคุณสมบัติไปยัง URL', desc: 'คลิกป้ายคุณสมบัติเพื่อเปิด URL ที่เชื่อมโยง' }, @@ -1994,7 +2042,7 @@ export const STRINGS_TH = { helpTooltip: 'รูปแบบโดยใช้ Moment', momentLinkText: 'รูปแบบ Moment' }, - showFilePreview: { + showNotePreview: { name: 'แสดงตัวอย่างโน้ต', desc: 'แสดงข้อความตัวอย่างใต้ชื่อโน้ต' }, @@ -2023,7 +2071,7 @@ export const STRINGS_TH = { desc: 'รายการคุณสมบัติ frontmatter คั่นด้วยเครื่องหมายจุลภาคเพื่อตรวจสอบข้อความตัวอย่าง คุณสมบัติแรกที่มีข้อความจะถูกใช้', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'ใช้เนื้อหาโน้ตแทน', desc: 'แสดงเนื้อหาโน้ตเป็นตัวอย่างเมื่อไม่มีคุณสมบัติที่ระบุมีข้อความ' }, @@ -2038,7 +2086,7 @@ export const STRINGS_TH = { '5': '5 แถว' } }, - fileNameRows: { + titleRows: { name: 'แถวชื่อเรื่อง', desc: 'จำนวนแถวที่จะแสดงสำหรับชื่อโน้ต', options: { @@ -2069,22 +2117,22 @@ export const STRINGS_TH = { desc: 'รายการคุณสมบัติ frontmatter คั่นด้วยเครื่องหมายจุลภาค โน้ตที่มีคุณสมบัติใดๆ เหล่านี้จะไม่เก็บภาพเด่น', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'ขนาดการแสดงภาพเด่น', desc: 'ขนาดสูงสุดในการแสดงผลภาพเด่นในรายการโน้ต', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'ขนาดพิกเซลของภาพเด่น', desc: 'ความละเอียดที่ใช้ในการสร้างภาพขนาดย่อที่จัดเก็บของภาพเด่น เพิ่มค่านี้หากภาพตัวอย่างขนาดใหญ่ดูเบลอ', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2092,7 +2140,7 @@ export const STRINGS_TH = { name: 'ดาวน์โหลดรูปภาพภายนอก', desc: 'ดาวน์โหลดรูปภาพระยะไกลและภาพขนาดย่อ YouTube สำหรับรูปภาพเด่น' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'ซ่อนรูปภาพตัวอย่างที่ส่งออก', desc: 'ซ่อนไฟล์ PNG ตัวอย่างภาพวาดที่ส่งออก เปิด "แสดงรายการที่ซ่อน" เพื่อแสดงไฟล์เหล่านั้น' }, @@ -2125,11 +2173,11 @@ export const STRINGS_TH = { alphaDesc: 'ฮ ถึง ก' } }, - showNoteCount: { + showFileCount: { name: 'แสดงจำนวนไฟล์', desc: 'แสดงจำนวนไฟล์ข้างโฟลเดอร์ แท็ก และคุณสมบัติ' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'แสดงไอคอนสำหรับทางลัดและรายการล่าสุด', desc: 'แสดงไอคอนข้างรายการในส่วนทางลัดและล่าสุด' }, @@ -2138,7 +2186,7 @@ export const STRINGS_TH = { desc: 'แก้ไขไอคอนแถบเครื่องมือ โฟลเดอร์ แท็ก คุณสมบัติ ปักหมุด ค้นหา และเรียงลำดับ', buttonText: 'แก้ไขไอคอน' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'ใช้สีกับไอคอนเท่านั้น', desc: 'เมื่อเปิดใช้งาน สีกำหนดเองจะใช้กับไอคอนเท่านั้น เมื่อปิดใช้งาน สีจะใช้กับทั้งไอคอนและป้ายข้อความ' }, @@ -2146,9 +2194,9 @@ export const STRINGS_TH = { name: 'โหมดสีรุ้ง (โปรไฟล์ห้องนิรภัย)', desc: 'ใช้สีรุ้งในแผงนำทาง', options: { - none: 'ปิด', - foreground: 'สีข้อความ', - background: 'สีพื้นหลัง' + off: 'ปิด', + textColor: 'สีข้อความ', + backgroundColor: 'สีพื้นหลัง' } }, navRainbowFirstColor: { @@ -2171,7 +2219,7 @@ export const STRINGS_TH = { name: 'ใช้กับทางลัด', desc: 'ใช้สีรุ้งกับทางลัด' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'ใช้กับรายการล่าสุด', desc: 'ใช้สีรุ้งกับรายการล่าสุด' }, @@ -2205,7 +2253,7 @@ export const STRINGS_TH = { name: 'ใช้กับคุณสมบัติ', desc: 'ใช้สีรุ้งกับคุณสมบัติ' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'ความสว่างสม่ำเสมอข้ามเฉดสี', // (English: Consistent brightness across hues) desc: 'ประมาณค่าความสว่างระหว่างสีเริ่มต้นและสีสุดท้ายระหว่างการเปลี่ยนเฉดสี' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2223,7 +2271,7 @@ export const STRINGS_TH = { all: 'ทุกระดับ' } }, - collapseBehavior: { + collapseItems: { name: 'ยุบรายการ', desc: 'เลือกว่าปุ่มขยาย/ยุบทั้งหมดจะมีผลกับอะไร', options: { @@ -2233,7 +2281,7 @@ export const STRINGS_TH = { propertiesOnly: 'คุณสมบัติเท่านั้น' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'เก็บรายการที่เลือกไว้ขยาย', desc: 'เมื่อยุบ เก็บรายการที่เลือกและหลักไว้ขยาย' }, @@ -2241,7 +2289,7 @@ export const STRINGS_TH = { name: 'ข้ามรูทห้องนิรภัยเมื่อยุบ', desc: 'เมื่อยุบรายการทั้งหมด ให้คงโฟลเดอร์รูทของห้องนิรภัยไว้ในสถานะปัจจุบัน' }, - navIndent: { + treeIndentation: { name: 'การเยื้องต้นไม้', desc: 'ปรับความกว้างการเยื้องสำหรับโฟลเดอร์ แท็ก และคุณสมบัติที่ซ้อนกัน (พิกเซล)' }, @@ -2267,7 +2315,7 @@ export const STRINGS_TH = { line: 'เส้น' } }, - navRootSpacing: { + rootItemSpacing: { name: 'ระยะห่างรายการหลัก', desc: 'ระยะห่างระหว่างโฟลเดอร์ แท็ก และคุณสมบัติระดับหลัก (พิกเซล)' }, @@ -2294,15 +2342,15 @@ export const STRINGS_TH = { highToLow: 'สูงไปต่ำ' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'แสดงโฟลเดอร์แท็ก', desc: 'แสดง "แท็ก" เป็นโฟลเดอร์ที่ยุบได้' }, - showUntagged: { + showUntaggedNotes: { name: 'แสดงโน้ตที่ไม่มีแท็ก', desc: 'แสดงรายการ "ไม่มีแท็ก" สำหรับโน้ตที่ไม่มีแท็ก' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'กรองแท็กตามการเลือก', desc: 'แสดงเฉพาะแท็กที่ปรากฏในโน้ตภายในโฟลเดอร์หรือคุณสมบัติที่เลือก' }, @@ -2336,20 +2384,20 @@ export const STRINGS_TH = { highToLow: 'สูงไปต่ำ' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'แสดงโฟลเดอร์คุณสมบัติ', desc: 'แสดง "คุณสมบัติ" เป็นโฟลเดอร์ที่พับได้' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'กรองคุณสมบัติตามการเลือก', desc: 'แสดงเฉพาะคุณสมบัติที่ปรากฏในโน้ตภายในโฟลเดอร์หรือแท็กที่เลือก' }, - hiddenTags: { + hideTags: { name: 'ซ่อนแท็ก (โปรไฟล์ห้องนิรภัย)', desc: 'รายการรูปแบบแท็กคั่นด้วยเครื่องหมายจุลภาค รูปแบบชื่อ: tag* (ขึ้นต้นด้วย), *tag (ลงท้ายด้วย) รูปแบบเส้นทาง: archive (แท็กและลูกหลาน), archive/* (ลูกหลานเท่านั้น), projects/*/drafts (wildcard ตรงกลาง)', placeholder: 'archive*, *draft, projects/*/old' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'ซ่อนโน้ตที่มีแท็ก (โปรไฟล์ห้องนิรภัย)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2382,7 +2430,7 @@ export const STRINGS_TH = { desc: 'ไฟล์เทมเพลตที่ใช้เมื่อสร้างโน้ตโฟลเดอร์ เทมเพลต Markdown สามารถใช้ Templater ได้ เทมเพลต Canvas และ Base จะถูกคัดลอกเป็นเนื้อหาไฟล์ ตั้งค่าตำแหน่งโฟลเดอร์เทมเพลตในการดำเนินการกับไฟล์ > เทมเพลต', formatWarning: 'รูปแบบเทมเพลตต้องตรงกับประเภทโน้ตโฟลเดอร์ที่เลือก: .md, .canvas หรือ .base' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'ชื่อโฟลเดอร์เปิดโน้ตโฟลเดอร์', desc: 'การคลิกชื่อโฟลเดอร์จะเปิดโน้ตโฟลเดอร์ของโฟลเดอร์นั้น เมื่อปิด โน้ตโฟลเดอร์จะให้เฉพาะข้อมูลเมตาของโฟลเดอร์ เช่น ชื่อ ไอคอน และสี' }, @@ -2403,7 +2451,7 @@ export const STRINGS_TH = { rightSidebar: 'แถบด้านขวา' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'แถบด้านขวา: แสดงโน้ตโฟลเดอร์ที่ใกล้ที่สุด', desc: 'เมื่อเลือกโฟลเดอร์ แถบด้านขวาจะแสดงโน้ตโฟลเดอร์บรรพบุรุษที่ใกล้ที่สุดโดยอัตโนมัติ' }, @@ -2446,7 +2494,7 @@ export const STRINGS_TH = { indexingTitle: 'กำลังสร้างดัชนีห้องนิรภัย...', progress: 'Notebook Navigator กำลังอัปเดตแคช.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'ดาวน์โหลด', downloadingLabel: 'กำลังดาวน์โหลด...', removeButton: 'นำออก', @@ -2458,7 +2506,7 @@ export const STRINGS_TH = { infoNote: 'ชุดไอคอนที่ดาวน์โหลดจะซิงค์สถานะการติดตั้งระหว่างอุปกรณ์ ชุดไอคอนอยู่ในฐานข้อมูลท้องถิ่นของแต่ละอุปกรณ์; การซิงค์ติดตามเฉพาะว่าจะดาวน์โหลดหรือนำออก ชุดไอคอนดาวน์โหลดจากที่เก็บ Notebook Navigator (https://github.com/johansan/notebook-navigator/tree/main/icon-assets)' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'ใช้เมตาดาต้า frontmatter', desc: 'ใช้ frontmatter สำหรับชื่อโน้ต timestamps ไอคอน และสี' }, @@ -2477,7 +2525,7 @@ export const STRINGS_TH = { desc: 'ฟิลด์ frontmatter สำหรับสีพื้นหลัง เว้นว่างเพื่อใช้สีพื้นหลังที่เก็บในการตั้งค่า', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'ย้ายไอคอนและสีจากการตั้งค่า', desc: 'เก็บในการตั้งค่า: {icons} ไอคอน, {colors} สี', button: 'ย้าย', @@ -2487,7 +2535,7 @@ export const STRINGS_TH = { noticeFailures: 'รายการล้มเหลว: {failures}', noticeError: 'ย้ายล้มเหลว ตรวจสอบคอนโซลสำหรับรายละเอียด' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'ฟิลด์ชื่อ (หลายรายการ)', desc: 'รายการฟิลด์ frontmatter คั่นด้วยเครื่องหมายจุลภาค ใช้ค่าแรกที่ไม่ว่าง กลับไปใช้ชื่อไฟล์', placeholder: 'title, name' @@ -2502,7 +2550,7 @@ export const STRINGS_TH = { desc: 'ชื่อฟิลด์ frontmatter สำหรับ timestamp แก้ไข เว้นว่างเพื่อใช้เฉพาะวันที่ระบบไฟล์', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'รูปแบบ timestamp', desc: 'รูปแบบที่ใช้แยกวิเคราะห์ timestamp ใน frontmatter เว้นว่างเพื่อใช้รูปแบบ ISO 8601', helpTooltip: 'รูปแบบโดยใช้ Moment', @@ -2515,12 +2563,12 @@ export const STRINGS_TH = { buttonText: '❤️ สปอนเซอร์', coffeeButton: '☕️ เลี้ยงกาแฟ' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'ตรวจสอบเวอร์ชันใหม่เมื่อเริ่ม', desc: 'ตรวจสอบรุ่นปลั๊กอินใหม่เมื่อเริ่มงานและแสดงการแจ้งเตือนเมื่อมีการอัปเดต การตรวจสอบจะเกิดขึ้นอย่างมากวันละครั้ง', status: 'มีเวอร์ชันใหม่: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'บันทึกดีบักตอนเริ่มต้น', desc: 'เขียนข้อมูลวินิจฉัยการเริ่มต้นลงในไฟล์ Markdown ที่มีเวลาประทับในรากของคลัง แล้วหยุดหลังจากการเริ่มต้นคงที่ ไฟล์อาจถูกซิงก์และอาจมีเส้นทางไฟล์' }, diff --git a/src/i18n/locales/tr.ts b/src/i18n/locales/tr.ts index 03a73f76f..fe4d2b9a7 100644 --- a/src/i18n/locales/tr.ts +++ b/src/i18n/locales/tr.ts @@ -74,6 +74,9 @@ export const STRINGS_TR = { shortcutsHeader: 'Kısayollar', // Header label for shortcuts section in navigation pane (English: Shortcuts) recentFilesHeader: 'Son dosyalar', // Header label for recent files section in navigation pane (English: Recent files) properties: 'Özellikler', + folders: 'Klasörler', + tags: 'Etiketler', + calendar: 'Takvim', reorderRootFoldersTitle: 'Gezinmeyi yeniden sırala', reorderRootFoldersHint: 'Yeniden sıralamak için okları veya sürüklemeyi kullanın', vaultRootLabel: 'Kasa', @@ -1009,101 +1012,143 @@ export const STRINGS_TR = { exportSuccess: 'Başarısız meta veri raporu dışa aktarıldı: {filename}', exportFailed: 'Meta veri raporu dışa aktarılamadı' }, - sections: { - general: 'Genel', - vaultFilters: 'Görüntüleme filtreleri', - appearanceBehavior: 'Görünüm ve davranış', - navigationPane: 'Gezinme paneli', - calendar: 'Takvim', - fileOperations: 'Dosya işlemleri', - icons: 'Simge paketleri', - folders: 'Klasörler', - folderNotes: 'Klasör notları', - folderNoteFiles: 'Klasör notu dosyaları', - foldersAndFolderNotes: 'Klasörler ve klasör notları', - tagsAndProperties: 'Etiketler ve özellikler', - tags: 'Etiketler', - listPane: 'Liste paneli', - notes: 'Dosya görünümü', - shortcutsAndRecentFiles: 'Kısayollar ve son dosyalar', - advanced: 'Gelişmiş' + index: { + label: 'Genel', + description: 'Sürüm notları, destek, kasa profili, dosya türleri ve özellik anahtarları.', + groups: { + vaultSetup: 'Kasa kurulumu' + } }, pageGroups: { configuration: 'Yapılandırma', - navigationAndContent: 'Gezinme paneli', - notesAndLists: 'Liste paneli', + navigationPane: 'Gezinme paneli', + listPane: 'Liste paneli', calendarAndTools: 'Takvim ve araçlar' }, - pageDescriptions: { - general: 'Sürüm notları, destek, kasa profili, dosya türleri ve özellik anahtarları.', - vaultFilters: 'Gizli klasörler, etiketler, dosyalar, dosya etiketleri ve özellik kuralları.', - appearanceBehavior: 'Davranış, klavye ile gezinme, fare düğmeleri, görünüm ve biçimlendirme.', - navigationPane: 'Yerleşim, görünüm, dosya sayıları, daraltma davranışı ve gökkuşağı renkleri.', - shortcuts: 'Kısayol görünürlüğü, rozetler, son dosyalar ve sabitlenmiş öğeler.', - calendar: 'Takvim görünümü, tarih notları, şablonlar, yerel ayar ve kenar çubuğu konumu.', - fileOperations: 'Şablonlar, silme onayları, ekler ve dosya taşıma çakışma davranışı.', - foldersAndFolderNotes: 'Klasör görünümü, klasör notları, klasör notu şablonları ve klasör notu davranışı.', - tagsProperties: 'Etiket ve özellik bölümleri, simgeler, sıralama, kapsam ve kalıtım.', - listPane: 'Sıralama, gruplama, liste modları, sabitlenmiş notlar ve çizim önizlemeleri.', - frontmatter: 'Görüntülenen adlar, zaman damgaları, simgeler ve renkler için frontmatter alanları.', - notes: 'Başlıklar, önizleme metni, öne çıkan görseller, etiketler, özellikler, tarihler, kelime sayıları ve karakter sayıları.', - iconPacks: 'Arayüz simgeleri, dosya simgeleri ve simge paketi yönetimi.', - advanced: 'Tanılama, meta veri temizliği, içe/dışa aktarma ve sıfırlama.' - }, - groups: { - general: { - vaultConfiguration: 'Kasa kurulumu', - templates: 'Şablonlar', - behavior: 'Davranış', - startup: 'Başlangıç', - keyboardNavigation: 'Klavye ile gezinme', - mouseButtons: 'Fare düğmeleri', - view: 'Görünüm', - icons: 'Simgeler', - desktopAppearance: 'Masaüstü görünümü', - mobileAppearance: 'Mobil görünüm', - formatting: 'Biçimlendirme' + pages: { + displayFilters: { + label: 'Görüntüleme filtreleri', + description: 'Gizli klasörler, etiketler, dosyalar, dosya etiketleri ve özellik kuralları.' + }, + appearanceAndBehavior: { + label: 'Görünüm ve davranış', + description: 'Davranış, klavye ile gezinme, fare düğmeleri, görünüm ve biçimlendirme.', + groups: { + startup: 'Başlangıç', + keyboardNavigation: 'Klavye ile gezinme', + mouseButtons: 'Fare düğmeleri', + desktopAppearance: 'Masaüstü görünümü', + mobileAppearance: 'Mobil görünüm', + appearance: 'Görünüm', + icons: 'Simgeler', + formatting: 'Biçimlendirme' + } + }, + navigationPane: { + label: 'Gezinme paneli', + description: 'Yerleşim, görünüm, dosya sayıları, daraltma davranışı ve gökkuşağı renkleri.', + groups: { + appearance: 'Görünüm', + banner: 'Afiş', + collapseItems: 'Öğeleri daralt', + dragAndDrop: 'Sürükle ve bırak', + fileCounts: 'Dosya sayıları', + rainbowColors: 'Gökkuşağı renkleri' + } + }, + shortcutsAndRecentFiles: { + label: 'Kısayollar ve son dosyalar', + description: 'Kısayol görünürlüğü, rozetler, son dosyalar ve sabitlenmiş öğeler.', + groups: { + shortcuts: 'Kısayollar', + recentFiles: 'Son dosyalar' + } + }, + foldersAndFolderNotes: { + label: 'Klasörler ve klasör notları', + description: 'Klasör görünümü, klasör notları, klasör notu şablonları ve klasör notu davranışı.', + groups: { + folders: 'Klasörler', + folderNotes: 'Klasör notları', + folderNoteFiles: 'Klasör notu dosyaları' + } + }, + tagsAndProperties: { + label: 'Etiketler ve özellikler', + description: 'Etiket ve özellik bölümleri, simgeler, sıralama, kapsam ve kalıtım.', + groups: { + tags: 'Etiketler', + properties: 'Özellikler' + } + }, + listPane: { + label: 'Liste paneli', + description: 'Sıralama, gruplama, liste modları, sabitlenmiş notlar ve çizim önizlemeleri.', + groups: { + appearance: 'Görünüm', + sortAndGroup: 'Sıralama ve gruplama', + groupHeaders: 'Grup başlıkları', + manualSort: 'Manuel sıralama', + pinnedNotes: 'Sabitlenmiş notlar', + behavior: 'Davranış', + drawingPreviews: 'Çizim önizlemeleri' + } + }, + fileOperations: { + label: 'Dosya işlemleri', + description: 'Şablonlar, silme onayları, ekler ve dosya taşıma çakışma davranışı.', + groups: { + templates: 'Şablonlar' + } + }, + frontmatterFields: { + label: 'Frontmatter alanları', + description: 'Görüntülenen adlar, zaman damgaları, simgeler ve renkler için frontmatter alanları.' + }, + fileDisplay: { + label: 'Dosya görünümü', + description: + 'Başlıklar, önizleme metni, öne çıkan görseller, etiketler, özellikler, tarihler, kelime sayıları ve karakter sayıları.', + groups: { + icon: 'Simge', + title: 'Başlık', + previewText: 'Önizleme metni', + featureImage: 'Öne çıkan görsel', + tags: 'Etiketler', + properties: 'Özellikler', + tasks: 'Görevler', + date: 'Tarih', + parentFolder: 'Üst klasör', + wordAndCharacterCount: 'Kelime ve karakter sayısı' + } + }, + calendar: { + label: 'Takvim', + description: 'Takvim görünümü, tarih notları, şablonlar, yerel ayar ve kenar çubuğu konumu.', + groups: { + appearance: 'Görünüm', + leftSidebar: 'Sol kenar çubuğu', + calendarIntegration: 'Takvim entegrasyonu', + rightSidebar: 'Sağ kenar çubuğu' + } + }, + iconPacks: { + label: 'Simge paketleri', + description: 'Arayüz simgeleri, dosya simgeleri ve simge paketi yönetimi.' }, advanced: { - maintenance: 'Bakım', - resetSettings: 'Ayarları sıfırla' - }, - navigation: { - appearance: 'Görünüm', - banner: 'Afiş', - collapseItems: 'Öğeleri daralt', - dragAndDrop: 'Sürükle ve bırak', - noteCounts: 'Dosya sayıları', - rainbowColors: 'Gökkuşağı renkleri', - leftSidebar: 'Sol kenar çubuğu', - calendarIntegration: 'Takvim entegrasyonu' - }, - list: { - display: 'Görünüm', - sortAndGroup: 'Sıralama ve gruplama', - groupHeaders: 'Grup başlıkları', - manualSort: 'Manuel sıralama', - pinnedNotes: 'Sabitlenmiş notlar', - drawingPreviews: 'Çizim önizlemeleri' - }, - notes: { - frontmatter: 'Frontmatter alanları', - tasks: 'Görevler', - icon: 'Simge', - title: 'Başlık', - previewText: 'Önizleme metni', - featureImage: 'Öne çıkan görsel', - tags: 'Etiketler', - properties: 'Özellikler', - date: 'Tarih', - parentFolder: 'Üst klasör', - wordCount: 'Kelime ve karakter sayısı' + label: 'Gelişmiş', + description: 'Tanılama, meta veri temizliği, içe/dışa aktarma ve sıfırlama.', + groups: { + maintenance: 'Bakım', + resetSettings: 'Ayarları sıfırla' + } } }, syncMode: { notSynced: '(senkronize edilmedi)', - switchToSynced: 'Senkronizasyonu etkinleştir', - switchToLocal: 'Senkronizasyonu devre dışı bırak' + enableSync: 'Senkronizasyonu etkinleştir', + disableSync: 'Senkronizasyonu devre dışı bırak' }, items: { listPaneTitle: { @@ -1111,11 +1156,11 @@ export const STRINGS_TR = { desc: 'Liste bölmesi başlığının nerede gösterileceğini seçin.', options: { header: 'Başlıkta göster', - list: 'Liste bölmesinde göster', + listPane: 'Liste bölmesinde göster', hidden: 'Gösterme' } }, - sortNotesBy: { + defaultSortOrder: { name: 'Varsayılan sıralama düzeni', desc: 'Notlar için varsayılan sıralama düzenini seçin. Sıralama özellikleri altındaki özellikler ek sıralama seçenekleri olarak görünür.', directions: { @@ -1123,18 +1168,18 @@ export const STRINGS_TR = { desc: 'Azalan' }, dateDirections: { - desc: 'En yeni üstte', - asc: 'En eski üstte' + newestOnTop: 'En yeni üstte', + oldestOnTop: 'En eski üstte' }, textDirections: { - asc: 'A üstte', - desc: 'Z üstte' + aOnTop: 'A üstte', + zOnTop: 'Z üstte' }, fields: { - modified: 'Düzenleme tarihi', - created: 'Oluşturma tarihi', + dateEdited: 'Düzenleme tarihi', + dateCreated: 'Oluşturma tarihi', title: 'Başlık', - filename: 'Dosya adı', + fileName: 'Dosya adı', property: 'Özellik' } }, @@ -1147,7 +1192,7 @@ export const STRINGS_TR = { follow: 'Sıralamayı izle' } }, - propertySortKey: { + sortingProperties: { name: 'Sıralama özellikleri', desc: 'Virgülle ayrılmış frontmatter özellikleri. Her özellik, Varsayılan sıralama düzeni ayarında ve liste bölmesindeki sıralama menüsünde bir sıralama seçeneği olarak görünür. Bu özellikler değiştirilmez.', placeholder: 'published, author', @@ -1157,14 +1202,14 @@ export const STRINGS_TR = { both: 'Özellikleri artık kullanılamadığı için varsayılan sıralama düzeni ve varsayılan gruplama sıfırlandı.' } }, - propertySortSecondary: { + propertySecondarySort: { name: 'İkincil sıralama', desc: 'Özellik sıralamasında notlar aynı özellik değerine sahip olduğunda veya özellik değeri olmadığında kullanılır.', options: { title: 'Başlık', - filename: 'Dosya adı', - created: 'Oluşturma tarihi', - modified: 'Düzenleme tarihi' + fileName: 'Dosya adı', + dateCreated: 'Oluşturma tarihi', + dateEdited: 'Düzenleme tarihi' } }, propertySortInstructions: { @@ -1177,16 +1222,16 @@ export const STRINGS_TR = { '**Etiket ve özellik görünümleri:** **Klasör** gruplaması seçildiğinde bunun yerine tarih başlıkları gösterilir.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'Gruplama özellikleri', desc: 'Virgülle ayrılmış frontmatter özellikleri. Her özellik, Varsayılan gruplama ayarında ve liste bölmesindeki sıralama menüsünde bir gruplama seçeneği olarak görünür. Bu özellikler değiştirilmez.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'Manuel sıralama özelliği', desc: 'Manuel sıralama için sayısal indeks değerlerini saklamak üzere kullanılan frontmatter özelliği.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'Grup başlığı özelliği', desc: 'Özel grup başlıklarını saklamak üzere kullanılan frontmatter özelliği.' }, @@ -1203,7 +1248,7 @@ export const STRINGS_TR = { options: { top: 'Üst', bottom: 'Alt', - 'below-selected-note': 'Seçili notun altında', + belowSelectedNote: 'Seçili notun altında', unsorted: 'Sıralanmamış' } }, @@ -1219,7 +1264,7 @@ export const STRINGS_TR = { 'Liste bölmesinde, bir notu seçin veya birden fazlasını çoklu seçin, ardından seçimi yukarı veya aşağı taşımak için **Cmd/Ctrl + Arrow Up/Down** tuşlarına basın.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'Liste değişikliklerinde seçili dosyaya kaydır', desc: 'Notları sabitleme, alt notları gösterme, klasör görünümünü değiştirme veya dosya işlemleri çalıştırma sırasında seçili dosyaya kaydır.' }, @@ -1227,15 +1272,15 @@ export const STRINGS_TR = { name: 'Alt klasörlerden / alt öğelerden notları göster', desc: 'Klasör, etiket veya özellik görüntülerken iç içe alt klasörlerden ve etiket ile özellik alt öğelerinden notları dahil et.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'Notları yalnızca kendi klasörlerinde sabitle', desc: 'Sabitlenen notlar yalnızca kendi klasörlerinde sabitlenmiş olarak görünür. Klasör notları veya çok sayıda sabitlenmiş notunuz varsa kullanışlıdır. Etiket veya özellik görünümlerini etkilemez.' }, - separateNoteCounts: { + separateFileCounts: { name: 'Mevcut ve alt dosya sayılarını ayrı göster', desc: 'Klasörler, etiketler ve özellikler için dosya sayılarını "mevcut ▾ alt öğeler" biçiminde göster.' }, - groupNotes: { + defaultGrouping: { name: 'Varsayılan gruplama', desc: "**Başlıklar**, sıralanmış listeyi sırasını değiştirmeden işaretler: Özel, frontmatter'da tanımlanan başlıkları gösterir; Tarih, tarih başlıkları ekler. **Gruplar** listeyi yeniden sıralar: klasör ve özellik grupları kendi başlarına sıralanır ve her gruptaki notlar sıralama düzenini izler.", families: { @@ -1248,7 +1293,7 @@ export const STRINGS_TR = { folder: 'Klasör' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'Tüm etiket ve özellik rozetlerini her zaman göster', desc: 'Devre dışı bırakıldığında, geçerli gezinme seçimiyle eşleşen rozetler gizlenir (ör. "tarifler" etiketine göz atarken "tarifler" etiketi rozeti gizlenir). Tüm rozetlerin görünür kalması için etkinleştirin.' }, @@ -1256,7 +1301,7 @@ export const STRINGS_TR = { name: 'Yapışkan grup başlıkları', desc: 'Geçerli tarih, klasör, özellik veya sabitlenmiş bölüm başlığını kaydırırken görünür tut.' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'Alt klasör yollarını göster', desc: 'Liste bölmesinde klasöre göre gruplarken, yalnızca klasör adları yerine alt klasör yollarını göster.' }, @@ -1284,9 +1329,9 @@ export const STRINGS_TR = { name: 'Tamamlanmamış görev simgesi', desc: 'Bir notta tamamlanmamış görevler olduğunda dosya simgesini değiştir.', options: { - none: 'Devre dışı', + disabled: 'Devre dışı', compact: 'Kompakt mod', - all: 'Standart ve kompakt' + standardAndCompact: 'Standart ve kompakt' } }, useFolderIcon: { @@ -1309,7 +1354,7 @@ export const STRINGS_TR = { name: 'Görev ilerlemesi: tamamlanınca gizle', desc: 'Bir nottaki tüm görevler tamamlandığında görev ilerlemesini gizler.' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'Tamamlanmamış görev arka planı', desc: 'Bir notta tamamlanmamış görevler olduğunda arka plan rengi uygular.' }, @@ -1317,7 +1362,7 @@ export const STRINGS_TR = { name: 'Tamamlanmamış görev arka plan rengi', desc: 'Bir notta tamamlanmamış görevler olduğunda kullanılacak arka plan rengini ayarlar.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'Dosya adına göre simgeler', desc: 'Dosyalara adlarındaki metne göre simge ata.' }, @@ -1327,7 +1372,7 @@ export const STRINGS_TR = { placeholder: '# metin=simge\ntoplantı=ph-calendar\nfatura=ph-receipt', editTooltip: 'Eşlemeleri düzenle' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'Dosya türüne göre simgeler', desc: 'Dosyalara uzantılarına göre simge ata.' }, @@ -1335,7 +1380,7 @@ export const STRINGS_TR = { name: 'Dosya simgesi ön ayarı', desc: 'Yerleşik simgeleri veya bir simge paketi ön ayarını seçin. Özel uzantı kuralları bu ön ayarı geçersiz kılar.', options: { - none: 'Yerleşik simgeler' + builtIn: 'Yerleşik simgeler' }, notInstalledWarning: 'Bu simge paketi yüklü değil. Bunun yerine yerleşik simgeler gösterilir.' }, @@ -1358,11 +1403,11 @@ export const STRINGS_TR = { name: 'Üst klasörü göster', desc: 'Alt klasörlerdeki, etiketlerdeki veya özelliklerdeki notlar için üst klasör adını görüntüle.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'Klasör yolunu göster', desc: 'Yalnızca klasör adı yerine seçili klasöre göre yolu görüntüle. Etiketler ve özellikler tam yolu gösterir.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'Üst klasöre tıklayarak klasörü aç', desc: 'Üst klasör etiketine tıklamak liste panelinde klasörü açar.' }, @@ -1390,7 +1435,7 @@ export const STRINGS_TR = { vertical: 'Dikey bölme' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'Kenar çubuğu çok dar olduğunda', desc: 'Gezinme bölmesi ve liste bölmesi yan yana sığmadığında ne olacağını seçin.', options: { @@ -1399,7 +1444,7 @@ export const STRINGS_TR = { vertical: 'Dikey bölmeye geç' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'Dar kenar çubuğu eşiği', desc: 'Kenar çubuğu genişlik eşiğinin nasıl hesaplanacağını seçin.', options: { @@ -1407,41 +1452,41 @@ export const STRINGS_TR = { customWidth: 'Özel genişlik' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'Dar kenar çubuğu eşik genişliği', desc: 'Kenar çubuğu bu genişlikten daha darsa geçiş yap.', resetTooltip: 'Varsayılan genişliğe sıfırla' }, - appearanceBackground: { + paneBackgroundColor: { name: 'Arka plan rengi', desc: 'Gezinme ve liste bölmeleri için arka plan renklerini seçin.', options: { separate: 'Ayrı arka planlar', - primary: 'Liste arka planını kullan', - secondary: 'Gezinme arka planını kullan' + listBackground: 'Liste arka planını kullan', + navigationBackground: 'Gezinme arka planını kullan' } }, - appearanceScale: { + zoomLevel: { name: 'Yakınlaştırma seviyesi', desc: "Notebook Navigator'ın genel yakınlaştırma seviyesini kontrol eder (yüzde)." }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: "iOS'ta kayan araç çubuklarını kullan", desc: 'Yalnızca iOS için geçerlidir.' }, - startView: { + defaultStartupView: { name: 'Varsayılan başlangıç görünümü', desc: 'Notebook Navigator açıldığında hangi bölmenin etkin olacağını seçin. Tek bölmeli düzen önce bu bölmeyi gösterir; çift bölmeli düzen klavye odağını bu bölmeye verir.', options: { navigation: 'Gezinme bölmesi', - files: 'Liste bölmesi' + listPane: 'Liste bölmesi' } }, toolbarButtons: { name: 'Araç çubuğu düğmeleri', desc: 'Araç çubuğunda hangi düğmelerin görüneceğini seçin. Gizli düğmelere komutlar ve menüler aracılığıyla erişilebilir.' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'Yeni notları yeni sekmede aç', desc: 'Etkinleştirildiğinde, Yeni not oluştur komutu notları yeni bir sekmede açar. Devre dışı bırakıldığında, notlar mevcut sekmenin yerini alır.' }, @@ -1461,20 +1506,20 @@ export const STRINGS_TR = { name: 'Otomatik gösterim: Diğer pencerelerden gelen olayları yoksay', desc: 'Başka bir pencerede notlarla çalışırken aktif notu değiştirme.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'Tek panel animasyonu', desc: 'Tek panel modunda paneller arasında geçiş süresi (milisaniye).', resetTooltip: 'Varsayılana sıfırla' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'İlk notu otomatik seç', desc: 'Klasör, etiket veya özellik değiştirirken ilk notu otomatik olarak aç.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'Kısayollar için otomatik kaydırmayı devre dışı bırak', desc: 'Kısayollardaki öğelere tıklarken gezinme bölmesini kaydırma.' }, - autoExpandNavItems: { + expandOnSelection: { name: 'Seçimde genişlet', desc: 'Seçildiğinde klasörleri ve etiketleri genişlet. Tek bölme modunda ilk seçim genişletir, ikinci seçim dosyaları gösterir.' }, @@ -1512,16 +1557,16 @@ export const STRINGS_TR = { name: 'Kısayol rozeti', desc: "Kısayolların yanında ne görüntüleneceği. Kısayolları doğrudan açmak için 'Kısayol 1-9 aç' komutlarını kullanın.", options: { - index: 'Konum (1-9)', + position: 'Konum (1-9)', count: 'Öğe sayısı', none: 'Yok' } }, - showRecentNotes: { + showRecentFiles: { name: 'Son dosyaları göster', desc: 'Gezinme bölmesinde son dosyalar bölümünü görüntüle.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'Son dosyalardan dosya türlerini gizle', desc: 'Son dosyalar bölümünde gizlenecek dosya türlerini seç.', options: { @@ -1529,15 +1574,15 @@ export const STRINGS_TR = { folderNotes: 'Klasör notları' } }, - recentNotesCount: { + recentFilesCount: { name: 'Son dosya sayısı', desc: 'Görüntülenecek son dosya sayısı.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'Son dosyaları kısayollarla birlikte sabitle', desc: 'Kısayollar sabitlendiğinde son dosyaları dahil et.' }, - calendarEnabled: { + enableCalendar: { name: 'Takvimi etkinleştir', desc: 'Notebook Navigator takvim özelliklerini etkinleştir.' }, @@ -1549,12 +1594,12 @@ export const STRINGS_TR = { rightSidebar: 'Sağ kenar çubuğu' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'Tek panel yerleşimi', desc: 'Takvimin tek panel modunda gösterildiği yer.', options: { navigationPane: 'Gezinme paneli', - below: 'Panellerin altında' + belowPanes: 'Panellerin altında' } }, calendarLocale: { @@ -1576,7 +1621,7 @@ export const STRINGS_TR = { thuFri: 'Perşembe ve cuma' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'Ay adı biçimi', desc: 'Uzun (Ocak) veya kısa (Oca) ay adı.', options: { @@ -1588,7 +1633,7 @@ export const STRINGS_TR = { name: 'Bilgi düğmelerini göster', desc: 'Arama çubuğunda ve takvim başlığında bilgi düğmelerini göster.' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'Sol kenar çubuğunda gösterilecek haftalar', desc: 'Sağ kenar çubuğundaki takvim her zaman tam ayı gösterir.', options: { @@ -1633,7 +1678,7 @@ export const STRINGS_TR = { name: 'Gizli öğeleri göster', desc: 'Etkinleştirildiğinde, takvim her zaman tüm takvim notlarını gösterir; kasa profili filtreleri tarafından gizlenen notlar da buna dahildir.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'Günlük not kaynağı', desc: 'Takvim notları için kaynak.', options: { @@ -1653,34 +1698,38 @@ export const STRINGS_TR = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'Kök klasör', desc: 'Periyodik notlar için temel klasör. Tarih desenleri alt klasörleri içerebilir. Seçili kasa profiliyle değişir.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'Şablon klasörü konumu', desc: 'Şablon dosya seçici bu klasördeki notları gösterir.', placeholder: 'Templates', usage: 'Takvim notları ve klasör notları tarafından kullanılır. Şablonları Takvim > Takvim entegrasyonu ve Klasörler ve klasör notları > Klasör notu dosyaları bölümünde yapılandırın.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'Günlük notlar', desc: 'Moment tarih biçimini kullanarak yolu biçimlendir. Alt klasör adlarını köşeli parantez içine alın, örn. [Work]/YYYY. Şablon ayarlamak için şablon simgesine tıklayın. Şablon klasörü konumunu Dosya işlemleri > Şablonlar bölümünden ayarlayın.', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'Desen, tam bir tarih (yıl, ay, gün) olarak biçimlendirilmeli ve tekrar ayrıştırılabilmelidir.' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: '', momentLinkText: 'Moment tarih biçimi', momentDescSuffix: ' kullanarak yolu biçimlendir. Alt klasör adlarını köşeli parantez içine alın, örn. [Work]/YYYY. Şablon ayarlamak için şablon simgesine tıklayın. Şablon klasörü konumunu Dosya işlemleri > Şablonlar bölümünden ayarlayın.', - templaterSupportInstalled: '✅ Templater eklentisi tam şablon desteğiyle yüklü.', - templaterSupportMissing: '⚠️ Şablon desteği için Templater eklentisini yükleyin.', templateTokenNoticeLabel: 'Önemli!', templateTokenNotice: 'Şablon desteği Templater eklentisini gerektirir. {{date}} ve {{title}} gibi yerleşik biçimler yalnızca {source} ayarı {option} olarak seçildiğinde kullanılabilir.', - placeholder: 'YYYY/YYYYMMDD', - example: 'Geçerli sözdizimi: {path}', - parsingError: 'Desen, tam bir tarih (yıl, ay, gün) olarak biçimlendirilmeli ve tekrar ayrıştırılabilmelidir.' + example: 'Geçerli sözdizimi: {path}' + }, + templaterSupport: { + installed: '✅ Templater eklentisi tam şablon desteğiyle yüklü.', + missing: '⚠️ Şablon desteği için Templater eklentisini yükleyin.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'Haftalık notlar', parsingError: 'Desen, tam bir hafta (hafta yılı, hafta numarası) olarak biçimlendirilmeli ve tekrar ayrıştırılabilmelidir.', weekPathMismatchWarning: @@ -1688,19 +1737,19 @@ export const STRINGS_TR = { mixedWeekTokensWarning: 'Bu desen Pazartesi tabanlı hafta belirteçleri ("W" veya "G") ile dil tabanlı hafta belirteçlerini ("w" veya "g") karıştırıyor. Tutarlı olarak tek bir set kullanın: Pazartesi tabanlı haftalar için "GGGG" ile "WW" veya haftalık notların seçilen dili izlemesi gerekiyorsa "gggg" ile "ww" kullanın.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'Aylık notlar', parsingError: 'Desen, tam bir ay (yıl, ay) olarak biçimlendirilmeli ve tekrar ayrıştırılabilmelidir.' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'Çeyreklik notlar', parsingError: 'Desen, tam bir çeyrek (yıl, çeyrek) olarak biçimlendirilmeli ve tekrar ayrıştırılabilmelidir.' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'Yıllık notlar', parsingError: 'Desen, tam bir yıl (yıl) olarak biçimlendirilmeli ve tekrar ayrıştırılabilmelidir.' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'Şablon dosyası: {name}' }, showTooltips: { @@ -1721,7 +1770,7 @@ export const STRINGS_TR = { buttonText: 'Ayırıcıyı sıfırla', notice: "Ayırıcı konumu sıfırlandı. Uygulamak için Obsidian'ı yeniden başlatın veya Notebook Navigator'ı yeniden açın." }, - settingsTransfer: { + importAndExportSettings: { name: 'Ayarları içe ve dışa aktar', desc: 'Notebook Navigator ayarlarını JSON olarak dışa veya içe aktar. İçe aktarma tüm ayarları değiştirir.', importButtonText: 'İçe aktar', @@ -1779,15 +1828,15 @@ export const STRINGS_TR = { name: "Dosyaları açmak için Enter'a basın", desc: "Dosyaları yalnızca listede klavye ile gezinirken Enter'a basarak açın. macOS'ta bu, Enter'ın dosyaları yeniden adlandırmasını engeller." }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'Shift+Enter ile seçili dosyanın açılmasını veya yeniden adlandırılmasını seçin.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'Cmd+Enter ile seçili dosyanın açılmasını veya yeniden adlandırılmasını seçin.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'Ctrl+Enter ile seçili dosyanın açılmasını veya yeniden adlandırılmasını seçin.' }, @@ -1795,12 +1844,12 @@ export const STRINGS_TR = { name: 'Fare geri/ileri düğmeleri', desc: 'Masaüstünde fare geri ve ileri düğmelerinin işlevi.', options: { - none: 'Sistem varsayılanını kullan', + systemDefault: 'Sistem varsayılanını kullan', singlePaneSwitch: 'Panel değiştir (tek panel)', history: 'Geçmişte gezin' } }, - fileVisibility: { + showFileTypes: { name: 'Dosya türlerini göster (kasa profili)', desc: 'Gezginde hangi dosya türlerinin gösterileceğini filtrele. Obsidian tarafından desteklenmeyen dosya türleri harici uygulamalarda açılabilir.', options: { @@ -1832,12 +1881,12 @@ export const STRINGS_TR = { desc: 'Başlangıçta veya komutla, periyodik not yoksa oluşturur.' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'Özellik kurallarıyla notları gizle (kasa profili)', desc: 'Virgülle ayrılmış frontmatter kuralları listesi. `key` veya `key=value` girdileri kullanın (örn. status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'Dosyaları gizle (kasa profili)', desc: 'Gizlenecek dosya adı kalıplarının virgülle ayrılmış listesi. * joker karakterlerini ve / yollarını destekler (örn. temp-*, *.png, /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1864,7 +1913,7 @@ export const STRINGS_TR = { duplicateName: 'Profil adı zaten var' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'Kasa başlığı konumu', desc: 'Kasa başlığının gösterileceği yeri seçin.', options: { @@ -1872,7 +1921,7 @@ export const STRINGS_TR = { navigation: 'Gezinme panelinde göster' } }, - excludedFolders: { + hideFolders: { name: 'Klasörleri gizle (kasa profili)', desc: 'Virgülle ayrılmış gizlenecek klasörler listesi. Ad desenleri: assets* (assets ile başlayan klasörler), *_temp (_temp ile biten). Yol desenleri: /archive (yalnızca kök arşiv), /res* (res ile başlayan kök klasörler), /*/temp (bir seviye derinlikte temp klasörleri), /projects/* (projects içindeki tüm klasörler).', placeholder: 'şablonlar, assets*, /arşiv, /res*' @@ -1886,7 +1935,7 @@ export const STRINGS_TR = { name: 'Tarihi göster', desc: 'Not adlarının altında tarihi görüntüle.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'Ada göre sıralarken', desc: 'Notlar alfabetik olarak sıralandığında gösterilecek tarih.', options: { @@ -1898,7 +1947,7 @@ export const STRINGS_TR = { name: 'Dosya etiketlerini göster', desc: 'Dosya öğelerinde tıklanabilir etiketleri görüntüle.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'Tam etiket yollarını göster', desc: "Tam etiket hiyerarşi yollarını görüntüle. Etkinken: 'ai/openai', 'iş/projeler/2024'. Devre dışıyken: 'openai', '2024'." }, @@ -1906,7 +1955,7 @@ export const STRINGS_TR = { name: 'Dosya etiketlerini renklendir', desc: 'Dosya öğelerindeki etiket rozetlerine etiket renklerini uygula.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'Renkli etiketleri önce göster', desc: 'Dosya öğelerinde renkli etiketleri diğer etiketlerden önce sırala.' }, @@ -1922,7 +1971,7 @@ export const STRINGS_TR = { name: 'Dosya özelliklerini renklendir', desc: 'Dosya öğelerindeki özellik rozetlerine özellik renklerini uygula.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'Renkli özellikleri önce göster', desc: 'Dosya öğelerinde renkli özellikleri diğer özelliklerden önce sırala.' }, @@ -1930,7 +1979,7 @@ export const STRINGS_TR = { name: 'Kompakt modda özellikleri göster', desc: 'Kompakt mod etkinken özellikleri görüntüle.' }, - textCountDisplay: { + textCountType: { name: 'Sayım türü', desc: 'Dosya öğelerinde hangi metin sayımlarının görüneceğini seçin.', options: { @@ -1960,11 +2009,11 @@ export const STRINGS_TR = { name: 'Hedef özelliği', desc: 'Hedef kelime sayısını içeren frontmatter özellik anahtarı. Hedefleri gizlemek için boş bırakın.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'Hedef yüzdesini göster', desc: 'Hedef kelime sayısı varsa yalnızca ilerleme yüzdesini göster.' }, - propertyFields: { + propertyKeys: { name: 'Özellik anahtarları (kasa profili)', desc: 'Gezinme ve dosya listesi için anahtar bazında görünürlük ayarlı ön bilgi özellik anahtarları.', addButtonTooltip: 'Özellik anahtarlarını yapılandır', @@ -1976,11 +2025,11 @@ export const STRINGS_TR = { name: 'Özellikleri ayrı satırlarda göster', desc: 'Her özelliği kendi satırında göster.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'Özellik etiketlerini notlara bağla', desc: 'Bağlantılı notu açmak için bir özellik etiketine tıklayın.' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: "Özellik etiketlerini URL'lere bağla", desc: "Bağlantılı URL'yi açmak için bir özellik etiketine tıklayın." }, @@ -2000,7 +2049,7 @@ export const STRINGS_TR = { helpTooltip: 'Moment formatı', momentLinkText: 'Moment formatı' }, - showFilePreview: { + showNotePreview: { name: 'Not önizlemesini göster', desc: 'Not adlarının altında önizleme metni görüntüle.' }, @@ -2029,7 +2078,7 @@ export const STRINGS_TR = { desc: 'Önizleme metni için kontrol edilecek virgülle ayrılmış frontmatter özellikleri listesi. Metni olan ilk özellik kullanılacak.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'Not içeriğine geri dön', desc: 'Belirtilen özelliklerin hiçbiri metin içermediğinde not içeriğini önizleme olarak göster.' }, @@ -2044,7 +2093,7 @@ export const STRINGS_TR = { '5': '5 satır' } }, - fileNameRows: { + titleRows: { name: 'Başlık satırları', desc: 'Not başlıkları için görüntülenecek satır sayısı.', options: { @@ -2075,22 +2124,22 @@ export const STRINGS_TR = { desc: 'Virgülle ayrılmış frontmatter özellikleri listesi. Bu özelliklerden herhangi birini içeren notlar öne çıkan görsel saklamaz.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'Öne çıkan görsel görüntüleme boyutu', desc: 'Not listelerinde öne çıkan görsellerin maksimum işleme boyutu.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'Öne çıkan görsel piksel boyutu', desc: 'Depolanan öne çıkan görsel küçük resimleri oluşturulurken kullanılan çözünürlük. Büyük önizlemeler bulanık görünüyorsa bu değeri artırın.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2098,7 +2147,7 @@ export const STRINGS_TR = { name: 'Harici görselleri indir', desc: 'Öne çıkan görseller için uzak görselleri ve YouTube küçük resimlerini indir.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'Dışa aktarılmış önizleme görsellerini gizle', desc: 'Dışa aktarılan çizim önizleme PNG dosyalarını gizler. Görüntülemek için "Gizli ögeleri göster" seçeneğini açın.' }, @@ -2131,11 +2180,11 @@ export const STRINGS_TR = { alphaDesc: "Z'den A'ya" } }, - showNoteCount: { + showFileCount: { name: 'Dosya sayısını göster', desc: 'Klasörler, etiketler ve özelliklerin yanında dosya sayısını görüntüle.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'Kısayollar ve son öğeler için simgeleri göster', desc: 'Kısayollar ve Son kullanılanlar bölümlerindeki öğelerin yanında simgeleri görüntüle.' }, @@ -2144,7 +2193,7 @@ export const STRINGS_TR = { desc: 'Araç çubuğu, klasör, etiket, özellik, sabitlenmiş, arama ve sıralama simgelerini düzenleyin.', buttonText: 'Simgeleri düzenle' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'Rengi yalnızca simgelere uygula', desc: 'Etkinleştirildiğinde, özel renkler yalnızca simgelere uygulanır. Devre dışı bırakıldığında, renkler hem simgelere hem de metin etiketlerine uygulanır.' }, @@ -2152,9 +2201,9 @@ export const STRINGS_TR = { name: 'Gökkuşağı renk modu (kasa profili)', desc: 'Gezinme panelinde gökkuşağı renkleri uygula.', options: { - none: 'Kapalı', - foreground: 'Metin rengi', - background: 'Arka plan rengi' + off: 'Kapalı', + textColor: 'Metin rengi', + backgroundColor: 'Arka plan rengi' } }, navRainbowFirstColor: { @@ -2177,7 +2226,7 @@ export const STRINGS_TR = { name: 'Kısayollara uygula', desc: 'Gökkuşağı renklerini kısayollara uygula.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'Son öğelere uygula', desc: 'Gökkuşağı renklerini son öğelere uygula.' }, @@ -2211,7 +2260,7 @@ export const STRINGS_TR = { name: 'Özelliklere uygula', desc: 'Gökkuşağı renklerini özelliklere uygula.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'Tonlar arasında tutarlı parlaklık', // (English: Consistent brightness across hues) desc: 'Ton geçişleri sırasında başlangıç ve bitiş renkleri arasındaki parlaklığı enterpolasyon yapar.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2229,7 +2278,7 @@ export const STRINGS_TR = { all: 'Her düzey' } }, - collapseBehavior: { + collapseItems: { name: 'Öğeleri daralt', desc: 'Tümünü genişlet/daralt düğmesinin neyi etkilediğini seçin.', options: { @@ -2239,7 +2288,7 @@ export const STRINGS_TR = { propertiesOnly: 'Yalnızca özellikler' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'Seçili öğeyi genişletilmiş tut', desc: 'Daraltırken seçili öğeyi ve üst öğelerini genişletilmiş tut.' }, @@ -2247,7 +2296,7 @@ export const STRINGS_TR = { name: 'Daraltırken kasa kökünü atla', desc: 'Tüm öğeleri daraltırken kasa kök klasörünü geçerli durumunda bırak.' }, - navIndent: { + treeIndentation: { name: 'Ağaç girintisi', desc: 'İç içe klasörler, etiketler ve özellikler için girinti genişliğini ayarlayın (piksel).' }, @@ -2273,7 +2322,7 @@ export const STRINGS_TR = { line: 'Çizgi' } }, - navRootSpacing: { + rootItemSpacing: { name: 'Kök öğe aralığı', desc: 'Kök seviyesi klasörler, etiketler ve özellikler arasındaki boşluk (piksel).' }, @@ -2300,15 +2349,15 @@ export const STRINGS_TR = { highToLow: 'yüksekten düşüğe' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'Etiketler klasörünü göster', desc: '"Etiketler"i daraltılabilir klasör olarak görüntüle.' }, - showUntagged: { + showUntaggedNotes: { name: 'Etiketsiz notları göster', desc: 'Etiketi olmayan notlar için "Etiketsiz" öğesini görüntüle.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'Etiketleri seçime göre filtrele', desc: 'Yalnızca seçili klasör veya özellikteki notlarda bulunan etiketleri göster.' }, @@ -2342,20 +2391,20 @@ export const STRINGS_TR = { highToLow: 'yüksekten düşüğe' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'Özellikler klasörünü göster', desc: '"Özellikler"i daraltılabilir klasör olarak görüntüle.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'Özellikleri seçime göre filtrele', desc: 'Yalnızca seçili klasör veya etiketteki notlarda bulunan özellikleri göster.' }, - hiddenTags: { + hideTags: { name: 'Etiketleri gizle (kasa profili)', desc: 'Virgülle ayrılmış etiket kalıpları listesi. Ad kalıpları: etiket* (ile başlayan), *etiket (ile biten). Yol kalıpları: arşiv (etiket ve alt öğeler), arşiv/* (yalnızca alt öğeler), projeler/*/taslaklar (ortada joker).', placeholder: 'arşiv*, *taslak, projeler/*/eski' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'Etiketli notları gizle (kasa profili)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2388,7 +2437,7 @@ export const STRINGS_TR = { desc: 'Klasör notları oluşturulurken kullanılan şablon dosyası. Markdown şablonları Templater kullanabilir. Canvas ve Base şablonları dosya içeriği olarak kopyalanır. Şablon klasörü konumunu Dosya işlemleri > Şablonlar bölümünden ayarlayın.', formatWarning: 'Şablon biçimi seçilen klasör notu türüyle eşleşmelidir: .md, .canvas veya .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'Klasör adları klasör notlarını açar', desc: 'Bir klasör adına tıklamak klasör notunu açar. Kapalı olduğunda, klasör notları yalnızca ad, simge ve renk gibi klasör meta verilerini sağlar.' }, @@ -2409,7 +2458,7 @@ export const STRINGS_TR = { rightSidebar: 'Sağ kenar çubuğu' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'Sağ kenar çubuğu: En yakın klasör notunu göster', desc: 'Bir klasör seçildiğinde, sağ kenar çubuğu en yakın üst klasör notunu otomatik olarak gösterir.' }, @@ -2452,7 +2501,7 @@ export const STRINGS_TR = { indexingTitle: 'Kasa dizinleniyor...', progress: 'Notebook Navigator önbelleği güncelleniyor.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'İndir', downloadingLabel: 'İndiriliyor...', removeButton: 'Kaldır', @@ -2464,7 +2513,7 @@ export const STRINGS_TR = { infoNote: 'İndirilen simge paketleri kurulum durumunu cihazlar arasında senkronize eder. Simge paketleri her cihazda yerel veritabanında kalır; senkronizasyon yalnızca indirme veya kaldırma durumunu izler. Simge paketleri Notebook Navigator deposundan indirilir (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'Frontmatter meta verilerini kullan', desc: 'Not adı, zaman damgaları, simgeler ve renkler için frontmatter kullan' }, @@ -2483,7 +2532,7 @@ export const STRINGS_TR = { desc: 'Arka plan renkleri için frontmatter alanı. Ayarlarda saklanan arka plan renklerini kullanmak için boş bırakın.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'Simgeleri ve renkleri ayarlardan taşı', desc: 'Ayarlarda saklanan: {icons} simge, {colors} renk.', button: 'Taşı', @@ -2493,7 +2542,7 @@ export const STRINGS_TR = { noticeFailures: 'Başarısız girişler: {failures}.', noticeError: 'Taşıma başarısız. Ayrıntılar için konsolu kontrol edin.' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'Ad alanları', desc: 'Virgülle ayrılmış frontmatter alanları listesi. İlk boş olmayan değer kullanılır. Dosya adına geri döner.', placeholder: 'title, name' @@ -2508,7 +2557,7 @@ export const STRINGS_TR = { desc: 'Değiştirme zaman damgası için frontmatter alan adı. Yalnızca dosya sistemi tarihini kullanmak için boş bırakın.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'Zaman damgası formatı', desc: "Frontmatter'daki zaman damgalarını ayrıştırmak için kullanılan format. ISO 8601 ayrıştırmasını kullanmak için boş bırakın.", helpTooltip: 'Moment formatı', @@ -2521,12 +2570,12 @@ export const STRINGS_TR = { buttonText: '❤️ Sponsor ol', coffeeButton: '☕️ Bana bir kahve ısmarla' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'Başlangıçta yeni sürüm kontrolü', desc: 'Başlangıçta yeni eklenti sürümlerini kontrol eder ve güncelleme mevcut olduğunda bildirim gösterir. Kontroller günde en fazla bir kez yapılır.', status: 'Yeni sürüm mevcut: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'Başlangıç hata ayıklama günlüğü', desc: 'Başlangıç tanılarını kasanın kökünde zaman damgalı bir Markdown dosyasına yazar ve başlangıç kararlı hale geldikten sonra durur. Dosya eşitlenebilir ve dosya yolları içerebilir.' }, diff --git a/src/i18n/locales/uk.ts b/src/i18n/locales/uk.ts index a7b81f088..c0251892b 100644 --- a/src/i18n/locales/uk.ts +++ b/src/i18n/locales/uk.ts @@ -75,6 +75,9 @@ export const STRINGS_UK = { shortcutsHeader: 'Ярлики', // Header label for shortcuts section in navigation pane (English: Shortcuts) recentFilesHeader: 'Останні файли', // Header label for recent files section in navigation pane (English: Recent files) properties: 'Властивості', + folders: 'Папки', + tags: 'Теги', + calendar: 'Календар', reorderRootFoldersTitle: 'Змінити порядок навігації', reorderRootFoldersHint: 'Використовуйте стрілки або перетягування', vaultRootLabel: 'Сховище', @@ -1008,101 +1011,143 @@ export const STRINGS_UK = { exportSuccess: 'Звіт про невдалі метадані експортовано до: {filename}', exportFailed: 'Не вдалося експортувати звіт метаданих' }, - sections: { - general: 'Загальне', - vaultFilters: 'Фільтри відображення', - appearanceBehavior: 'Вигляд і поведінка', - navigationPane: 'Панель навігації', - calendar: 'Календар', - fileOperations: 'Операції з файлами', - icons: 'Пакети іконок', - folders: 'Папки', - folderNotes: 'Нотатки папок', - folderNoteFiles: 'Файли нотаток папок', - foldersAndFolderNotes: 'Папки та нотатки папок', - tagsAndProperties: 'Теги та властивості', - tags: 'Теги', - listPane: 'Панель списку', - notes: 'Відображення файлів', - shortcutsAndRecentFiles: 'Ярлики та останні файли', - advanced: 'Розширені' + index: { + label: 'Загальне', + description: 'Примітки до випуску, підтримка, профіль сховища, типи файлів і ключі властивостей.', + groups: { + vaultSetup: 'Налаштування сховища' + } }, pageGroups: { configuration: 'Конфігурація', - navigationAndContent: 'Панель навігації', - notesAndLists: 'Панель списку', + navigationPane: 'Панель навігації', + listPane: 'Панель списку', calendarAndTools: 'Календар і інструменти' }, - pageDescriptions: { - general: 'Примітки до випуску, підтримка, профіль сховища, типи файлів і ключі властивостей.', - vaultFilters: 'Приховані папки, теги, файли, теги файлів і правила властивостей.', - appearanceBehavior: 'Поведінка, навігація з клавіатури, кнопки миші, вигляд і форматування.', - navigationPane: 'Розмітка, вигляд, кількість файлів, поведінка згортання та кольори веселки.', - shortcuts: 'Видимість ярликів, значки, останні файли та закріплені елементи.', - calendar: 'Відображення календаря, нотатки дат, шаблони, локаль і розташування бічної панелі.', - fileOperations: 'Шаблони, підтвердження видалення, вкладення та поведінка при конфлікті переміщення файлів.', - foldersAndFolderNotes: 'Відображення папок, нотатки папок, шаблони нотаток папок і поведінка нотаток папок.', - tagsProperties: 'Розділи тегів і властивостей, іконки, сортування, область дії та успадкування.', - listPane: 'Сортування, групування, режими списку, закріплені нотатки та перегляд малюнків.', - frontmatter: 'Поля frontmatter для відображуваних імен, часових позначок, іконок і кольорів.', - notes: 'Заголовки, текст попереднього перегляду, зображення записів, теги, властивості, дати, кількість слів і кількість символів.', - iconPacks: 'Іконки інтерфейсу, іконки файлів і керування пакетами іконок.', - advanced: 'Діагностика, очищення метаданих, імпорт/експорт і скидання.' - }, - groups: { - general: { - vaultConfiguration: 'Налаштування сховища', - templates: 'Шаблони', - behavior: 'Поведінка', - startup: 'Запуск', - keyboardNavigation: 'Навігація з клавіатури', - mouseButtons: 'Кнопки миші', - view: 'Вигляд', - icons: 'Іконки', - desktopAppearance: "Вигляд на комп'ютері", - mobileAppearance: 'Мобільний вигляд', - formatting: 'Форматування' + pages: { + displayFilters: { + label: 'Фільтри відображення', + description: 'Приховані папки, теги, файли, теги файлів і правила властивостей.' + }, + appearanceAndBehavior: { + label: 'Вигляд і поведінка', + description: 'Поведінка, навігація з клавіатури, кнопки миші, вигляд і форматування.', + groups: { + startup: 'Запуск', + keyboardNavigation: 'Навігація з клавіатури', + mouseButtons: 'Кнопки миші', + desktopAppearance: "Вигляд на комп'ютері", + mobileAppearance: 'Мобільний вигляд', + appearance: 'Вигляд', + icons: 'Іконки', + formatting: 'Форматування' + } + }, + navigationPane: { + label: 'Панель навігації', + description: 'Розмітка, вигляд, кількість файлів, поведінка згортання та кольори веселки.', + groups: { + appearance: 'Вигляд', + banner: 'Банер', + collapseItems: 'Згортати елементи', + dragAndDrop: 'Перетягування', + fileCounts: 'Кількість файлів', + rainbowColors: 'Кольори веселки' + } + }, + shortcutsAndRecentFiles: { + label: 'Ярлики та останні файли', + description: 'Видимість ярликів, значки, останні файли та закріплені елементи.', + groups: { + shortcuts: 'Ярлики', + recentFiles: 'Останні файли' + } + }, + foldersAndFolderNotes: { + label: 'Папки та нотатки папок', + description: 'Відображення папок, нотатки папок, шаблони нотаток папок і поведінка нотаток папок.', + groups: { + folders: 'Папки', + folderNotes: 'Нотатки папок', + folderNoteFiles: 'Файли нотаток папок' + } + }, + tagsAndProperties: { + label: 'Теги та властивості', + description: 'Розділи тегів і властивостей, іконки, сортування, область дії та успадкування.', + groups: { + tags: 'Теги', + properties: 'Властивості' + } + }, + listPane: { + label: 'Панель списку', + description: 'Сортування, групування, режими списку, закріплені нотатки та перегляд малюнків.', + groups: { + appearance: 'Вигляд', + sortAndGroup: 'Сортування та групування', + groupHeaders: 'Заголовки груп', + manualSort: 'Ручне сортування', + pinnedNotes: 'Закріплені нотатки', + behavior: 'Поведінка', + drawingPreviews: 'Перегляд малюнків' + } + }, + fileOperations: { + label: 'Операції з файлами', + description: 'Шаблони, підтвердження видалення, вкладення та поведінка при конфлікті переміщення файлів.', + groups: { + templates: 'Шаблони' + } + }, + frontmatterFields: { + label: 'Поля frontmatter', + description: 'Поля frontmatter для відображуваних імен, часових позначок, іконок і кольорів.' + }, + fileDisplay: { + label: 'Відображення файлів', + description: + 'Заголовки, текст попереднього перегляду, зображення записів, теги, властивості, дати, кількість слів і кількість символів.', + groups: { + icon: 'Іконка', + title: 'Заголовок', + previewText: 'Текст попереднього перегляду', + featureImage: 'Зображення запису', + tags: 'Теги', + properties: 'Властивості', + tasks: 'Завдання', + date: 'Дата', + parentFolder: 'Батьківська папка', + wordAndCharacterCount: 'Кількість слів і символів' + } + }, + calendar: { + label: 'Календар', + description: 'Відображення календаря, нотатки дат, шаблони, локаль і розташування бічної панелі.', + groups: { + appearance: 'Вигляд', + leftSidebar: 'Ліва бічна панель', + calendarIntegration: 'Інтеграція з календарем', + rightSidebar: 'Права бічна панель' + } + }, + iconPacks: { + label: 'Пакети іконок', + description: 'Іконки інтерфейсу, іконки файлів і керування пакетами іконок.' }, advanced: { - maintenance: 'Обслуговування', - resetSettings: 'Скидання налаштувань' - }, - navigation: { - appearance: 'Вигляд', - banner: 'Банер', - collapseItems: 'Згортати елементи', - dragAndDrop: 'Перетягування', - noteCounts: 'Кількість файлів', - rainbowColors: 'Кольори веселки', - leftSidebar: 'Ліва бічна панель', - calendarIntegration: 'Інтеграція з календарем' - }, - list: { - display: 'Вигляд', - sortAndGroup: 'Сортування та групування', - groupHeaders: 'Заголовки груп', - manualSort: 'Ручне сортування', - pinnedNotes: 'Закріплені нотатки', - drawingPreviews: 'Перегляд малюнків' - }, - notes: { - frontmatter: 'Поля frontmatter', - tasks: 'Завдання', - icon: 'Іконка', - title: 'Заголовок', - previewText: 'Текст попереднього перегляду', - featureImage: 'Зображення запису', - tags: 'Теги', - properties: 'Властивості', - date: 'Дата', - parentFolder: 'Батьківська папка', - wordCount: 'Кількість слів і символів' + label: 'Розширені', + description: 'Діагностика, очищення метаданих, імпорт/експорт і скидання.', + groups: { + maintenance: 'Обслуговування', + resetSettings: 'Скидання налаштувань' + } } }, syncMode: { notSynced: '(не синхронізовано)', - switchToSynced: 'Увімкнути синхронізацію', - switchToLocal: 'Вимкнути синхронізацію' + enableSync: 'Увімкнути синхронізацію', + disableSync: 'Вимкнути синхронізацію' }, items: { listPaneTitle: { @@ -1110,11 +1155,11 @@ export const STRINGS_UK = { desc: 'Виберіть, де показувати заголовок панелі списку.', options: { header: 'Показувати в заголовку', - list: 'Показувати в панелі списку', + listPane: 'Показувати в панелі списку', hidden: 'Не показувати' } }, - sortNotesBy: { + defaultSortOrder: { name: 'Порядок сортування за замовчуванням', desc: 'Виберіть порядок сортування нотаток за замовчуванням. Властивості з «Властивості сортування» відображаються як додаткові варіанти сортування.', directions: { @@ -1122,18 +1167,18 @@ export const STRINGS_UK = { desc: 'За спаданням' }, dateDirections: { - desc: 'Найновіші зверху', - asc: 'Найстаріші зверху' + newestOnTop: 'Найновіші зверху', + oldestOnTop: 'Найстаріші зверху' }, textDirections: { - asc: 'А зверху', - desc: 'Я зверху' + aOnTop: 'А зверху', + zOnTop: 'Я зверху' }, fields: { - modified: 'Дата редагування', - created: 'Дата створення', + dateEdited: 'Дата редагування', + dateCreated: 'Дата створення', title: 'Заголовок', - filename: "Ім'я файлу", + fileName: "Ім'я файлу", property: 'Властивість' } }, @@ -1146,7 +1191,7 @@ export const STRINGS_UK = { follow: 'Слідувати сортуванню' } }, - propertySortKey: { + sortingProperties: { name: 'Властивості сортування', desc: 'Властивості frontmatter, розділені комами. Кожна властивість відображається як варіант сортування в налаштуванні «Порядок сортування за замовчуванням» і в меню сортування на панелі списку. Ці властивості не змінюються.', placeholder: 'published, author', @@ -1156,14 +1201,14 @@ export const STRINGS_UK = { both: 'Порядок сортування та групування за замовчуванням скинуто, бо їхні властивості більше недоступні.' } }, - propertySortSecondary: { + propertySecondarySort: { name: 'Вторинне сортування', desc: 'Використовується при сортуванні за властивістю, коли нотатки мають однакове значення властивості або не мають значення.', options: { title: 'Заголовок', - filename: 'Назва файлу', - created: 'Дата створення', - modified: 'Дата редагування' + fileName: 'Назва файлу', + dateCreated: 'Дата створення', + dateEdited: 'Дата редагування' } }, propertySortInstructions: { @@ -1176,16 +1221,16 @@ export const STRINGS_UK = { '**Перегляди тегів і властивостей:** Якщо вибрано групування **Папка**, натомість відображаються заголовки дат.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'Властивості групування', desc: 'Властивості frontmatter, розділені комами. Кожна властивість відображається як варіант групування в налаштуванні «Групування за замовчуванням» і в меню сортування на панелі списку. Ці властивості не змінюються.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'Властивість ручного сортування', desc: 'Властивість frontmatter, що використовується для зберігання числових значень індексу для ручного сортування.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'Властивість заголовка групи', desc: 'Властивість frontmatter, що використовується для зберігання користувацьких заголовків груп.' }, @@ -1202,7 +1247,7 @@ export const STRINGS_UK = { options: { top: 'Зверху', bottom: 'Знизу', - 'below-selected-note': 'Під вибраною нотаткою', + belowSelectedNote: 'Під вибраною нотаткою', unsorted: 'Без сортування' } }, @@ -1218,7 +1263,7 @@ export const STRINGS_UK = { 'У панелі списку виберіть одну нотатку або кілька з мульти-вибором, потім натисніть **Cmd/Ctrl + Arrow Up/Down**, щоб перемістити вибране вгору або вниз.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'Прокручувати до вибраного файлу при змінах списку', desc: 'Прокручувати до вибраного файлу при закріпленні нотаток, показі нотаток нащадків, зміні вигляду папки або виконанні файлових операцій.' }, @@ -1226,15 +1271,15 @@ export const STRINGS_UK = { name: 'Показувати нотатки з підпапок / нащадків', desc: 'Включати нотатки з вкладених підпапок та нащадків тегів і властивостей при перегляді папки, тегу або властивості.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'Закріплювати нотатки лише в їхній папці', desc: 'Закріплені нотатки відображаються як закріплені лише у своїй власній папці. Корисно для нотаток-папок або якщо у вас багато закріплених нотаток. Не впливає на подання тегів або властивостей.' }, - separateNoteCounts: { + separateFileCounts: { name: 'Показувати поточні та нащадкові кількості файлів окремо', desc: 'Відображати кількість файлів у форматі "поточні ▾ нащадки" для папок, тегів і властивостей.' }, - groupNotes: { + defaultGrouping: { name: 'Групування за замовчуванням', desc: '**Заголовки** позначають відсортований список, не змінюючи його порядок: «Користувацьке» показує заголовки, визначені у frontmatter, а «Дата» вставляє заголовки дат. **Групи** переупорядковують список: групи папок і властивостей упорядковуються окремо, а нотатки в кожній групі відповідають порядку сортування.', families: { @@ -1247,7 +1292,7 @@ export const STRINGS_UK = { folder: 'Папка' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'Завжди показувати всі мітки тегів та властивостей', desc: 'Коли вимкнено, мітки, що відповідають поточному вибору навігації, приховуються (наприклад, мітка тегу «рецепти» приховується під час перегляду тегу «рецепти»). Увімкніть, щоб усі мітки залишалися видимими.' }, @@ -1255,7 +1300,7 @@ export const STRINGS_UK = { name: 'Закріплені заголовки груп', desc: 'Тримати заголовок поточної дати, теки, властивості або закріпленого розділу видимим під час прокручування.' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'Показувати шляхи підпапок', desc: 'Під час групування за папкою на панелі списку показувати шляхи підпапок замість лише назв папок.' }, @@ -1283,9 +1328,9 @@ export const STRINGS_UK = { name: 'Значок незавершених завдань', desc: 'Замінювати значок файлу, коли нотатка містить незавершені завдання.', options: { - none: 'Вимкнено', + disabled: 'Вимкнено', compact: 'Компактний режим', - all: 'Стандартний і компактний' + standardAndCompact: 'Стандартний і компактний' } }, useFolderIcon: { @@ -1308,7 +1353,7 @@ export const STRINGS_UK = { name: 'Перебіг виконання завдань: приховувати після завершення', desc: 'Приховувати прогрес завдань, коли всі завдання в нотатці завершені.' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'Фон незавершених завдань', desc: 'Застосовувати колір фону, коли нотатка містить незавершені завдання.' }, @@ -1316,7 +1361,7 @@ export const STRINGS_UK = { name: 'Колір фону незавершених завдань', desc: 'Встановити колір фону, що використовується коли нотатка містить незавершені завдання.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'Іконки за назвою файлу', desc: 'Призначити іконки файлам на основі тексту в їхніх назвах.' }, @@ -1326,7 +1371,7 @@ export const STRINGS_UK = { placeholder: '# текст=іконка\nзустріч=ph-calendar\nрахунок=ph-receipt', editTooltip: 'Редагувати зіставлення' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'Іконки за типом файлу', desc: 'Призначити іконки файлам на основі їхнього розширення.' }, @@ -1334,7 +1379,7 @@ export const STRINGS_UK = { name: 'Попередній набір іконок файлів', desc: 'Виберіть вбудовані іконки або попередній набір пакета іконок. Користувацькі правила розширень замінюють цей попередній набір.', options: { - none: 'Вбудовані іконки' + builtIn: 'Вбудовані іконки' }, notInstalledWarning: 'Цей пакет іконок не встановлено. Натомість відображаються вбудовані іконки.' }, @@ -1357,11 +1402,11 @@ export const STRINGS_UK = { name: 'Показувати батьківську папку', desc: 'Відображати назву батьківської папки для нотаток у підпапках, тегах або властивостях.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'Показувати шлях до папки', desc: 'Відображати шлях відносно вибраної папки, а не лише назву папки. Теги та властивості показують повний шлях.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'Натискання на батьківську папку відкриває папку', desc: 'Натискання на мітку батьківської папки відкриває папку в панелі списку.' }, @@ -1389,7 +1434,7 @@ export const STRINGS_UK = { vertical: 'Вертикальний поділ' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'Коли бічна панель занадто вузька', desc: 'Виберіть, що відбувається, коли панель навігації та панель списку не вміщуються поруч.', options: { @@ -1398,7 +1443,7 @@ export const STRINGS_UK = { vertical: 'Перемкнутися на вертикальний поділ' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'Поріг вузької бічної панелі', desc: 'Виберіть, як обчислюється поріг ширини бічної панелі.', options: { @@ -1406,41 +1451,41 @@ export const STRINGS_UK = { customWidth: 'Користувацька ширина' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'Ширина порога вузької бічної панелі', desc: 'Перемикатися, коли бічна панель вужча за цю ширину.', resetTooltip: 'Скинути до ширини за замовчуванням' }, - appearanceBackground: { + paneBackgroundColor: { name: 'Колір фону', desc: 'Виберіть кольори фону для панелей навігації та списку.', options: { separate: 'Окремі фони', - primary: 'Використовувати фон списку', - secondary: 'Використовувати фон навігації' + listBackground: 'Використовувати фон списку', + navigationBackground: 'Використовувати фон навігації' } }, - appearanceScale: { + zoomLevel: { name: 'Рівень масштабування', desc: 'Керує загальним рівнем масштабування Notebook Navigator (у відсотках).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'Використовувати плаваючі панелі інструментів на iOS', desc: 'Застосовується лише на iOS.' }, - startView: { + defaultStartupView: { name: 'Вигляд при запуску за замовчуванням', desc: 'Виберіть, яка панель активна при відкритті Notebook Navigator. В однопанельному режимі ця панель показується першою; у двопанельному режимі вона отримує фокус клавіатури.', options: { navigation: 'Панель навігації', - files: 'Панель списку' + listPane: 'Панель списку' } }, toolbarButtons: { name: 'Кнопки панелі інструментів', desc: "Виберіть, які кнопки з'являються на панелі інструментів. Приховані кнопки залишаються доступними через команди та меню." }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'Відкривати нові нотатки в новій вкладці', desc: 'Якщо увімкнено, команда «Створити нову нотатку» відкриває нотатки в новій вкладці. Якщо вимкнено, нотатки замінюють поточну вкладку.' }, @@ -1460,20 +1505,20 @@ export const STRINGS_UK = { name: 'Автопоказ: Ігнорувати події з інших вікон', desc: 'Не змінювати активну нотатку при роботі з нотатками в іншому вікні.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'Анімація однієї панелі', desc: 'Тривалість переходу при перемиканні панелей у режимі однієї панелі (мілісекунди).', resetTooltip: 'Скинути до стандартних' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'Автоматично вибирати першу нотатку', desc: 'Автоматично відкривати першу нотатку при перемиканні папок, тегів або властивостей.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'Вимкнути автопрокручування для ярликів', desc: 'Не прокручувати панель навігації при натисканні на елементи в ярликах.' }, - autoExpandNavItems: { + expandOnSelection: { name: 'Розгортати при виборі', desc: 'Розгортати папки та теги при виборі. У режимі однієї панелі перший вибір розгортає, другий показує файли.' }, @@ -1511,16 +1556,16 @@ export const STRINGS_UK = { name: 'Значок ярлика', desc: "Що відображати біля ярликів. Використовуйте команди 'Відкрити ярлик 1-9' для прямого відкриття ярликів.", options: { - index: 'Позиція (1-9)', + position: 'Позиція (1-9)', count: 'Кількість елементів', none: 'Немає' } }, - showRecentNotes: { + showRecentFiles: { name: 'Показувати останні файли', desc: 'Відображати розділ останніх файлів у панелі навігації.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'Приховати типи файлів з останніх файлів', desc: 'Оберіть типи файлів для приховування в розділі останніх файлів.', options: { @@ -1528,15 +1573,15 @@ export const STRINGS_UK = { folderNotes: 'Нотатки папок' } }, - recentNotesCount: { + recentFilesCount: { name: 'Кількість останніх файлів', desc: 'Кількість останніх файлів для відображення.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'Закріпити останні файли разом з ярликами', desc: 'Включати останні файли при закріпленні ярликів.' }, - calendarEnabled: { + enableCalendar: { name: 'Увімкнути календар', desc: 'Увімкнути функції календаря в Notebook Navigator.' }, @@ -1548,12 +1593,12 @@ export const STRINGS_UK = { rightSidebar: 'Права бічна панель' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'Розташування в режимі однієї панелі', desc: 'Де відображається календар у режимі однієї панелі.', options: { navigationPane: 'Панель навігації', - below: 'Під панелями' + belowPanes: 'Під панелями' } }, calendarLocale: { @@ -1575,7 +1620,7 @@ export const STRINGS_UK = { thuFri: "Четвер та п'ятниця" } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'Формат назви місяця', desc: 'Повна (січень) або скорочена (січ) назва місяця.', options: { @@ -1587,7 +1632,7 @@ export const STRINGS_UK = { name: 'Показати кнопки інформації', desc: 'Відображати кнопки інформації в рядку пошуку та заголовку календаря.' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'Тижнів для показу на лівій бічній панелі', desc: 'Календар на правій бічній панелі завжди відображає повний місяць.', options: { @@ -1632,7 +1677,7 @@ export const STRINGS_UK = { name: 'Показати приховані елементи', desc: 'При увімкненні календар завжди показує всі нотатки календаря, включно з нотатками, прихованими фільтрами профілю сховища.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'Джерело щоденних нотаток', desc: 'Джерело для нотаток календаря.', options: { @@ -1652,34 +1697,38 @@ export const STRINGS_UK = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'Коренева папка', desc: 'Базова папка для періодичних нотаток. Шаблони дат можуть включати підпапки. Змінюється з вибраним профілем сховища.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'Розташування папки шаблонів', desc: 'Вибір файлу шаблону показує нотатки з цієї папки.', placeholder: 'Templates', usage: 'Використовується нотатками календаря та нотатками папок. Налаштуйте шаблони в Календар > Інтеграція з календарем і Папки та нотатки папок > Файли нотаток папок.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'Щоденні нотатки', desc: 'Формат шляху з використанням формату дати Moment. Беріть назви підпапок у квадратні дужки, напр. [Work]/YYYY. Натисніть на іконку шаблону, щоб задати шаблон. Вкажіть розташування теки шаблонів у Операції з файлами > Шаблони.', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'Шаблон має форматуватися і знову розбиратися як повна дата (рік, місяць, день).' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'Формат шляху з використанням ', momentLinkText: 'формату дати Moment', momentDescSuffix: '. Беріть назви підпапок у квадратні дужки, напр. [Work]/YYYY. Натисніть на іконку шаблону, щоб задати шаблон. Вкажіть розташування теки шаблонів у Операції з файлами > Шаблони.', - templaterSupportInstalled: '✅ Плагін Templater встановлено з повною підтримкою шаблонів.', - templaterSupportMissing: '⚠️ Установіть плагін Templater для підтримки шаблонів.', templateTokenNoticeLabel: 'Важливо!', templateTokenNotice: 'Підтримка шаблонів потребує плагіна Templater. Вбудовані формати, такі як {{date}} і {{title}}, працюють лише коли для параметра {source} вибрано значення {option}.', - placeholder: 'YYYY/YYYYMMDD', - example: 'Поточний синтаксис: {path}', - parsingError: 'Шаблон має форматуватися і знову розбиратися як повна дата (рік, місяць, день).' + example: 'Поточний синтаксис: {path}' + }, + templaterSupport: { + installed: '✅ Плагін Templater встановлено з повною підтримкою шаблонів.', + missing: '⚠️ Установіть плагін Templater для підтримки шаблонів.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'Щотижневі нотатки', parsingError: 'Шаблон має форматуватися і знову розбиратися як повний тиждень (рік тижня, номер тижня).', weekPathMismatchWarning: @@ -1687,19 +1736,19 @@ export const STRINGS_UK = { mixedWeekTokensWarning: 'Цей шаблон змішує токени тижня, що починається з понеділка ("W" або "G"), з токенами тижня на основі мови ("w" або "g"). Використовуйте один набір послідовно: "GGGG" з "WW" для тижнів, що починаються з понеділка, або "gggg" з "ww", якщо щотижневі нотатки мають відповідати обраній мові.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'Щомісячні нотатки', parsingError: 'Шаблон має форматуватися і знову розбиратися як повний місяць (рік, місяць).' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'Квартальні нотатки', parsingError: 'Шаблон має форматуватися і знову розбиратися як повний квартал (рік, квартал).' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'Річні нотатки', parsingError: 'Шаблон має форматуватися і знову розбиратися як повний рік (рік).' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'Файл шаблону: {name}' }, showTooltips: { @@ -1720,7 +1769,7 @@ export const STRINGS_UK = { buttonText: 'Скинути роздільник', notice: 'Позицію роздільника скинуто. Перезапустіть Obsidian або відкрийте Notebook Navigator знову для застосування.' }, - settingsTransfer: { + importAndExportSettings: { name: 'Імпорт та експорт налаштувань', desc: 'Експорт або імпорт налаштувань Notebook Navigator у форматі JSON. Імпорт замінює всі налаштування.', importButtonText: 'Імпорт', @@ -1778,15 +1827,15 @@ export const STRINGS_UK = { name: 'Натисніть Enter для відкриття файлів', desc: 'Відкривати файли лише при натисканні Enter під час навігації клавіатурою у списку. У macOS це не дозволяє Enter перейменовувати файли.' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'Виберіть, чи Shift+Enter відкриває або перейменовує вибраний файл.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'Виберіть, чи Cmd+Enter відкриває або перейменовує вибраний файл.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'Виберіть, чи Ctrl+Enter відкриває або перейменовує вибраний файл.' }, @@ -1794,12 +1843,12 @@ export const STRINGS_UK = { name: 'Кнопки «Назад»/«Вперед» миші', desc: 'Дія кнопок «Назад» і «Вперед» миші на десктопі.', options: { - none: 'Використовувати системне значення', + systemDefault: 'Використовувати системне значення', singlePaneSwitch: 'Перемикання панелей (одна панель)', history: 'Навігація по історії' } }, - fileVisibility: { + showFileTypes: { name: 'Показувати типи файлів (профіль сховища)', desc: 'Фільтрувати, які типи файлів показуються в навігаторі. Типи файлів, не підтримувані Obsidian, можуть відкриватися в зовнішніх програмах.', options: { @@ -1831,12 +1880,12 @@ export const STRINGS_UK = { desc: 'Створює періодичну нотатку під час запуску або за командою, якщо її не існує.' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'Приховати нотатки за правилами властивостей (профіль сховища)', desc: 'Список правил frontmatter, розділених комами. Використовуйте записи `key` або `key=value` (наприклад, status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'Приховати файли (профіль сховища)', desc: 'Список шаблонів імен файлів через кому для приховування. Підтримує символи підстановки * та шляхи / (наприклад, temp-*, *.png, /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1863,7 +1912,7 @@ export const STRINGS_UK = { duplicateName: 'Назва профілю вже існує' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'Розташування назви сховища', desc: 'Виберіть, де відображається назва сховища.', options: { @@ -1871,7 +1920,7 @@ export const STRINGS_UK = { navigation: 'Показати на панелі навігації' } }, - excludedFolders: { + hideFolders: { name: 'Приховати папки (профіль сховища)', desc: 'Список папок для приховування, розділених комами. Шаблони назв: assets* (папки, що починаються з assets), *_temp (закінчуються на _temp). Шаблони шляхів: /archive (лише кореневий архів), /res* (кореневі папки, що починаються з res), /*/temp (папки temp на один рівень вглиб), /projects/* (всі папки всередині projects).', placeholder: 'шаблони, assets*, /архів, /res*' @@ -1885,7 +1934,7 @@ export const STRINGS_UK = { name: 'Показувати дату', desc: 'Відображати дату під назвами нотаток.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'При сортуванні за назвою', desc: 'Дата для показу при алфавітному сортуванні нотаток.', options: { @@ -1897,7 +1946,7 @@ export const STRINGS_UK = { name: 'Показувати теги файлів', desc: 'Відображати клікабельні теги в елементах файлів.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'Показувати повні шляхи тегів', desc: "Відображати повні шляхи ієрархії тегів. При увімкненні: 'ai/openai', 'робота/проекти/2024'. При вимкненні: 'openai', '2024'." }, @@ -1905,7 +1954,7 @@ export const STRINGS_UK = { name: 'Розфарбовувати теги файлів', desc: 'Застосовувати кольори тегів до значків тегів на елементах файлів.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'Показувати кольорові теги першими', desc: 'Сортувати кольорові теги перед іншими тегами на елементах файлів.' }, @@ -1921,7 +1970,7 @@ export const STRINGS_UK = { name: 'Забарвлювати властивості файлів', desc: 'Застосовувати кольори властивостей до значків властивостей на елементах файлів.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'Показувати кольорові властивості першими', desc: 'Сортувати кольорові властивості перед іншими властивостями на елементах файлів.' }, @@ -1929,7 +1978,7 @@ export const STRINGS_UK = { name: 'Показувати властивості в компактному режимі', desc: 'Відображати властивості при активному компактному режимі.' }, - textCountDisplay: { + textCountType: { name: 'Тип лічильника', desc: 'Виберіть, які лічильники тексту відображаються в елементах файлів.', options: { @@ -1959,11 +2008,11 @@ export const STRINGS_UK = { name: 'Цільова властивість', desc: 'Ключ властивості frontmatter із цільовою кількістю слів. Залиште порожнім, щоб приховати цілі.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'Показувати відсоток цілі', desc: 'Показувати лише відсоток прогресу, коли доступна цільова кількість слів.' }, - propertyFields: { + propertyKeys: { name: 'Ключі властивостей (профіль сховища)', desc: 'Ключі властивостей метаданих з налаштуванням видимості для кожного ключа в навігації та списку файлів.', addButtonTooltip: 'Налаштувати ключі властивостей', @@ -1975,11 +2024,11 @@ export const STRINGS_UK = { name: 'Показувати властивості в окремих рядках', desc: 'Показувати кожну властивість у власному рядку.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: "Пов'язати мітки властивостей із нотатками", desc: "Натисніть на мітку властивості, щоб відкрити пов'язану нотатку." }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: "Пов'язати мітки властивостей із URL-адресами", desc: "Натисніть на мітку властивості, щоб відкрити пов'язану URL-адресу." }, @@ -1999,7 +2048,7 @@ export const STRINGS_UK = { helpTooltip: 'Формат Moment', momentLinkText: 'формат Moment' }, - showFilePreview: { + showNotePreview: { name: 'Показувати попередній перегляд нотатки', desc: 'Відображати текст попереднього перегляду під назвами нотаток.' }, @@ -2028,7 +2077,7 @@ export const STRINGS_UK = { desc: 'Список властивостей frontmatter для перевірки на текст попереднього перегляду, розділених комами. Буде використано першу властивість з текстом.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'Повернутися до вмісту нотатки', desc: 'Показувати вміст нотатки як попередній перегляд, коли жодна із зазначених властивостей не містить тексту.' }, @@ -2043,7 +2092,7 @@ export const STRINGS_UK = { '5': '5 рядків' } }, - fileNameRows: { + titleRows: { name: 'Рядки заголовка', desc: 'Кількість рядків для відображення заголовків нотаток.', options: { @@ -2074,22 +2123,22 @@ export const STRINGS_UK = { desc: 'Список властивостей frontmatter, розділених комами. Нотатки, що містять будь-яку з цих властивостей, не зберігають головні зображення.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'Розмір відображення зображення-обкладинки', desc: 'Максимальний розмір відображення зображень-обкладинок у списках нотаток.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'Піксельний розмір зображення-обкладинки', desc: 'Роздільна здатність, що використовується при створенні збережених мініатюр зображень-обкладинок. Збільшіть це значення, якщо великі попередні перегляди виглядають розмитими.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2097,7 +2146,7 @@ export const STRINGS_UK = { name: 'Завантажувати зовнішні зображення', desc: 'Завантажувати віддалені зображення та мініатюри YouTube для обкладинок.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'Сховати експортовані зображення попереднього перегляду', desc: 'Приховує експортовані PNG-файли попереднього перегляду малюнків. Увімкніть «Показати приховані елементи», щоб відобразити їх.' }, @@ -2130,11 +2179,11 @@ export const STRINGS_UK = { alphaDesc: 'Від Я до А' } }, - showNoteCount: { + showFileCount: { name: 'Показувати кількість файлів', desc: 'Відображати кількість файлів поряд з папками, тегами та властивостями.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'Показувати іконки для ярликів та останніх елементів', desc: 'Відображати іконки поруч з елементами в розділах Ярлики та Останні.' }, @@ -2143,7 +2192,7 @@ export const STRINGS_UK = { desc: 'Редагувати іконки панелі інструментів, папок, тегів, властивостей, закріплених, пошуку та сортування.', buttonText: 'Редагувати іконки' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'Застосовувати колір лише до іконок', desc: 'При увімкненні користувацькі кольори застосовуються лише до іконок. При вимкненні кольори застосовуються як до іконок, так і до текстових міток.' }, @@ -2151,9 +2200,9 @@ export const STRINGS_UK = { name: 'Режим кольорів веселки (профіль сховища)', desc: 'Застосувати кольори веселки в панелі навігації.', options: { - none: 'Вимк.', - foreground: 'Колір тексту', - background: 'Колір фону' + off: 'Вимк.', + textColor: 'Колір тексту', + backgroundColor: 'Колір фону' } }, navRainbowFirstColor: { @@ -2176,7 +2225,7 @@ export const STRINGS_UK = { name: 'Застосувати до ярликів', desc: 'Застосувати кольори веселки до ярликів.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'Застосувати до нещодавніх елементів', desc: 'Застосувати кольори веселки до нещодавніх елементів.' }, @@ -2210,7 +2259,7 @@ export const STRINGS_UK = { name: 'Застосувати до властивостей', desc: 'Застосувати кольори веселки до властивостей.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'Рівномірна яскравість між відтінками', // (English: Consistent brightness across hues) desc: 'Інтерполює яскравість між початковим і кінцевим кольорами під час переходів відтінків.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2228,7 +2277,7 @@ export const STRINGS_UK = { all: 'Кожний рівень' } }, - collapseBehavior: { + collapseItems: { name: 'Згортати елементи', desc: 'Виберіть, на що впливає кнопка розгортання/згортання всього.', options: { @@ -2238,7 +2287,7 @@ export const STRINGS_UK = { propertiesOnly: 'Лише властивості' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'Тримати вибраний елемент розгорнутим', desc: 'При згортанні тримати вибраний елемент та його батьків розгорнутими.' }, @@ -2246,7 +2295,7 @@ export const STRINGS_UK = { name: 'Пропускати корінь сховища під час згортання', desc: 'Під час згортання всіх елементів залишати кореневу папку сховища в поточному стані.' }, - navIndent: { + treeIndentation: { name: 'Відступ дерева', desc: 'Налаштувати ширину відступу для вкладених папок, тегів і властивостей (у пікселях).' }, @@ -2272,7 +2321,7 @@ export const STRINGS_UK = { line: 'Лінія' } }, - navRootSpacing: { + rootItemSpacing: { name: 'Відступ кореневих елементів', desc: 'Відстань між папками, тегами та властивостями кореневого рівня (у пікселях).' }, @@ -2299,15 +2348,15 @@ export const STRINGS_UK = { highToLow: 'від високої до низької' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'Показувати папку тегів', desc: 'Відображати "Теги" як згортувану папку.' }, - showUntagged: { + showUntaggedNotes: { name: 'Показувати нотатки без тегів', desc: 'Відображати елемент "Без тегів" для нотаток без жодних тегів.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'Фільтрувати теги за вибором', desc: 'Показувати лише теги, що зустрічаються в нотатках у вибраній папці або властивості.' }, @@ -2341,20 +2390,20 @@ export const STRINGS_UK = { highToLow: 'за спаданням' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'Показати папку властивостей', desc: 'Відображати «Властивості» як згортувану папку.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'Фільтрувати властивості за вибором', desc: 'Показувати лише властивості, що зустрічаються в нотатках у вибраній папці або тезі.' }, - hiddenTags: { + hideTags: { name: 'Приховати теги (профіль сховища)', desc: 'Список шаблонів тегів, розділених комами. Шаблони назв: тег* (починається з), *тег (закінчується на). Шаблони шляхів: архів (тег і нащадки), архів/* (лише нащадки), проекти/*/чернетки (символ підстановки посередині).', placeholder: 'архів*, *чернетка, проекти/*/старі' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'Приховати нотатки з тегами (профіль сховища)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2387,7 +2436,7 @@ export const STRINGS_UK = { desc: 'Файл шаблону, який використовується під час створення нотаток тек. Шаблони Markdown можуть використовувати Templater. Шаблони Canvas і Base копіюються як вміст файлу. Вкажіть розташування теки шаблонів у Операції з файлами > Шаблони.', formatWarning: 'Формат шаблону має відповідати вибраному типу нотатки теки: .md, .canvas або .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'Назви папок відкривають нотатки папок', desc: 'Натискання назви папки відкриває її нотатку папки. Коли вимкнено, нотатки папок надають лише метадані папки, як-от назву, значок і колір.' }, @@ -2408,7 +2457,7 @@ export const STRINGS_UK = { rightSidebar: 'Права бічна панель' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'Права бічна панель: показувати найближчу нотатку папки', desc: 'Коли вибрано папку, права бічна панель автоматично показує найближчу батьківську нотатку папки.' }, @@ -2451,7 +2500,7 @@ export const STRINGS_UK = { indexingTitle: 'Індексація сховища...', progress: 'Оновлення кешу Notebook Navigator.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'Завантажити', downloadingLabel: 'Завантаження...', removeButton: 'Вилучити', @@ -2463,7 +2512,7 @@ export const STRINGS_UK = { infoNote: 'Завантажені пакети іконок синхронізують стан встановлення між пристроями. Пакети іконок залишаються в локальній базі даних на кожному пристрої; синхронізація лише відстежує, чи завантажувати або вилучати їх. Пакети іконок завантажуються з репозиторію Notebook Navigator (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'Використовувати метадані frontmatter', desc: 'Використовувати frontmatter для назви нотатки, часових міток, іконок та кольорів' }, @@ -2482,7 +2531,7 @@ export const STRINGS_UK = { desc: 'Поле frontmatter для кольорів фону. Залиште порожнім для використання кольорів фону, збережених у налаштуваннях.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'Перенести іконки та кольори з налаштувань', desc: 'Збережено в налаштуваннях: {icons} іконок, {colors} кольорів.', button: 'Перенести', @@ -2492,7 +2541,7 @@ export const STRINGS_UK = { noticeFailures: 'Невдалі записи: {failures}.', noticeError: 'Перенесення не вдалося. Перевірте консоль для деталей.' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'Поля назви', desc: 'Список полів frontmatter через кому. Використовується перше непорожнє значення. Повертається до назви файлу.', placeholder: 'title, name' @@ -2507,7 +2556,7 @@ export const STRINGS_UK = { desc: 'Назва поля frontmatter для часової мітки зміни. Залиште порожнім для використання лише дати файлової системи.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'Формат часової мітки', desc: 'Формат для розбору часових міток у frontmatter. Залиште порожнім для використання парсингу ISO 8601.', helpTooltip: 'Формат Moment', @@ -2520,12 +2569,12 @@ export const STRINGS_UK = { buttonText: '❤️ Спонсорувати', coffeeButton: '☕️ Купити мені каву' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'Перевіряти нову версію при запуску', desc: 'Перевіряє нові релізи плагіна при запуску та показує сповіщення, коли доступне оновлення. Перевірки відбуваються не частіше одного разу на день.', status: 'Доступна нова версія: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'Журнал налагодження запуску', desc: 'Записує діагностику запуску у Markdown-файл із часовою міткою в корені сховища, а потім зупиняється після стабілізації запуску. Файл може синхронізуватися та містити шляхи до файлів.' }, diff --git a/src/i18n/locales/vi.ts b/src/i18n/locales/vi.ts index ccb7bc738..8e48b162f 100644 --- a/src/i18n/locales/vi.ts +++ b/src/i18n/locales/vi.ts @@ -74,6 +74,9 @@ export const STRINGS_VI = { shortcutsHeader: 'Lối tắt', // Header label for shortcuts section in navigation pane (English: Shortcuts) recentFilesHeader: 'Tệp gần đây', // Header label for recent files section in navigation pane (English: Recent files) properties: 'Thuộc tính', + folders: 'Thư mục', + tags: 'Thẻ', + calendar: 'Lịch', reorderRootFoldersTitle: 'Sắp xếp lại điều hướng', reorderRootFoldersHint: 'Dùng mũi tên hoặc kéo để sắp xếp lại', vaultRootLabel: 'Vault', @@ -1012,101 +1015,142 @@ export const STRINGS_VI = { exportSuccess: 'Báo cáo metadata thất bại đã xuất đến: {filename}', exportFailed: 'Không thể xuất báo cáo metadata' }, - sections: { - general: 'Chung', - vaultFilters: 'Bộ lọc hiển thị', - appearanceBehavior: 'Giao diện và hành vi', - navigationPane: 'Bảng điều hướng', - calendar: 'Lịch', - fileOperations: 'Thao tác tệp', - icons: 'Gói biểu tượng', - folders: 'Thư mục', - folderNotes: 'Ghi chú thư mục', - folderNoteFiles: 'Tệp ghi chú thư mục', - foldersAndFolderNotes: 'Thư mục và ghi chú thư mục', - tagsAndProperties: 'Thẻ và thuộc tính', - tags: 'Thẻ', - listPane: 'Bảng danh sách', - notes: 'Hiển thị tệp', - shortcutsAndRecentFiles: 'Lối tắt và tệp gần đây', - advanced: 'Nâng cao' + index: { + label: 'Chung', + description: 'Ghi chú phát hành, hỗ trợ, hồ sơ vault, loại tệp và khóa thuộc tính.', + groups: { + vaultSetup: 'Thiết lập vault' + } }, pageGroups: { configuration: 'Cấu hình', - navigationAndContent: 'Bảng điều hướng', - notesAndLists: 'Bảng danh sách', + navigationPane: 'Bảng điều hướng', + listPane: 'Bảng danh sách', calendarAndTools: 'Lịch và công cụ' }, - pageDescriptions: { - general: 'Ghi chú phát hành, hỗ trợ, hồ sơ vault, loại tệp và khóa thuộc tính.', - vaultFilters: 'Thư mục, thẻ, tệp, thẻ tệp và quy tắc thuộc tính bị ẩn.', - appearanceBehavior: 'Hành vi, điều hướng bằng bàn phím, nút chuột, giao diện và định dạng.', - navigationPane: 'Bố cục, giao diện, số lượng tệp, hành vi thu gọn và màu cầu vồng.', - shortcuts: 'Khả năng hiển thị lối tắt, huy hiệu, tệp gần đây và mục đã ghim.', - calendar: 'Hiển thị lịch, ghi chú ngày, mẫu, ngôn ngữ và vị trí thanh bên.', - fileOperations: 'Mẫu, xác nhận xóa, tệp đính kèm và hành vi xung đột khi di chuyển tệp.', - foldersAndFolderNotes: 'Hiển thị thư mục, ghi chú thư mục, mẫu ghi chú thư mục và hành vi ghi chú thư mục.', - tagsProperties: 'Phần thẻ và thuộc tính, biểu tượng, sắp xếp, phạm vi và kế thừa.', - listPane: 'Sắp xếp, nhóm, chế độ danh sách, ghi chú đã ghim và xem trước bản vẽ.', - frontmatter: 'Trường frontmatter cho tên hiển thị, dấu thời gian, biểu tượng và màu sắc.', - notes: 'Tiêu đề, văn bản xem trước, hình ảnh nổi bật, thẻ, thuộc tính, ngày, số từ và số ký tự.', - iconPacks: 'Biểu tượng giao diện, biểu tượng tệp và quản lý gói biểu tượng.', - advanced: 'Chẩn đoán, dọn dẹp metadata, nhập/xuất và đặt lại.' - }, - groups: { - general: { - vaultConfiguration: 'Thiết lập vault', - templates: 'Mẫu', - behavior: 'Hành vi', - startup: 'Khởi động', - keyboardNavigation: 'Điều hướng bằng bàn phím', - mouseButtons: 'Nút chuột', - view: 'Giao diện', - icons: 'Biểu tượng', - desktopAppearance: 'Giao diện máy tính', - mobileAppearance: 'Giao diện di động', - formatting: 'Định dạng' + pages: { + displayFilters: { + label: 'Bộ lọc hiển thị', + description: 'Thư mục, thẻ, tệp, thẻ tệp và quy tắc thuộc tính bị ẩn.' + }, + appearanceAndBehavior: { + label: 'Giao diện và hành vi', + description: 'Hành vi, điều hướng bằng bàn phím, nút chuột, giao diện và định dạng.', + groups: { + startup: 'Khởi động', + keyboardNavigation: 'Điều hướng bằng bàn phím', + mouseButtons: 'Nút chuột', + desktopAppearance: 'Giao diện máy tính', + mobileAppearance: 'Giao diện di động', + appearance: 'Giao diện', + icons: 'Biểu tượng', + formatting: 'Định dạng' + } + }, + navigationPane: { + label: 'Bảng điều hướng', + description: 'Bố cục, giao diện, số lượng tệp, hành vi thu gọn và màu cầu vồng.', + groups: { + appearance: 'Giao diện', + banner: 'Banner', + collapseItems: 'Thu gọn mục', + dragAndDrop: 'Kéo và thả', + fileCounts: 'Số lượng tệp', + rainbowColors: 'Màu cầu vồng' + } + }, + shortcutsAndRecentFiles: { + label: 'Lối tắt và tệp gần đây', + description: 'Khả năng hiển thị lối tắt, huy hiệu, tệp gần đây và mục đã ghim.', + groups: { + shortcuts: 'Lối tắt', + recentFiles: 'Tệp gần đây' + } + }, + foldersAndFolderNotes: { + label: 'Thư mục và ghi chú thư mục', + description: 'Hiển thị thư mục, ghi chú thư mục, mẫu ghi chú thư mục và hành vi ghi chú thư mục.', + groups: { + folders: 'Thư mục', + folderNotes: 'Ghi chú thư mục', + folderNoteFiles: 'Tệp ghi chú thư mục' + } + }, + tagsAndProperties: { + label: 'Thẻ và thuộc tính', + description: 'Phần thẻ và thuộc tính, biểu tượng, sắp xếp, phạm vi và kế thừa.', + groups: { + tags: 'Thẻ', + properties: 'Thuộc tính' + } + }, + listPane: { + label: 'Bảng danh sách', + description: 'Sắp xếp, nhóm, chế độ danh sách, ghi chú đã ghim và xem trước bản vẽ.', + groups: { + appearance: 'Giao diện', + sortAndGroup: 'Sắp xếp và nhóm', + groupHeaders: 'Header nhóm', + manualSort: 'Sắp xếp thủ công', + pinnedNotes: 'Ghi chú đã ghim', + behavior: 'Hành vi', + drawingPreviews: 'Xem trước bản vẽ' + } + }, + fileOperations: { + label: 'Thao tác tệp', + description: 'Mẫu, xác nhận xóa, tệp đính kèm và hành vi xung đột khi di chuyển tệp.', + groups: { + templates: 'Mẫu' + } + }, + frontmatterFields: { + label: 'Trường frontmatter', + description: 'Trường frontmatter cho tên hiển thị, dấu thời gian, biểu tượng và màu sắc.' + }, + fileDisplay: { + label: 'Hiển thị tệp', + description: 'Tiêu đề, văn bản xem trước, hình ảnh nổi bật, thẻ, thuộc tính, ngày, số từ và số ký tự.', + groups: { + icon: 'Biểu tượng', + title: 'Tiêu đề', + previewText: 'Văn bản xem trước', + featureImage: 'Hình ảnh nổi bật', + tags: 'Thẻ', + properties: 'Thuộc tính', + tasks: 'Nhiệm vụ', + date: 'Ngày', + parentFolder: 'Thư mục cha', + wordAndCharacterCount: 'Số từ và ký tự' + } + }, + calendar: { + label: 'Lịch', + description: 'Hiển thị lịch, ghi chú ngày, mẫu, ngôn ngữ và vị trí thanh bên.', + groups: { + appearance: 'Giao diện', + leftSidebar: 'Thanh bên trái', + calendarIntegration: 'Tích hợp lịch', + rightSidebar: 'Thanh bên phải' + } + }, + iconPacks: { + label: 'Gói biểu tượng', + description: 'Biểu tượng giao diện, biểu tượng tệp và quản lý gói biểu tượng.' }, advanced: { - maintenance: 'Bảo trì', - resetSettings: 'Đặt lại cài đặt' - }, - navigation: { - appearance: 'Giao diện', - banner: 'Banner', - collapseItems: 'Thu gọn mục', - dragAndDrop: 'Kéo và thả', - noteCounts: 'Số lượng tệp', - rainbowColors: 'Màu cầu vồng', - leftSidebar: 'Thanh bên trái', - calendarIntegration: 'Tích hợp lịch' - }, - list: { - display: 'Giao diện', - sortAndGroup: 'Sắp xếp và nhóm', - groupHeaders: 'Header nhóm', - manualSort: 'Sắp xếp thủ công', - pinnedNotes: 'Ghi chú đã ghim', - drawingPreviews: 'Xem trước bản vẽ' - }, - notes: { - frontmatter: 'Trường frontmatter', - tasks: 'Nhiệm vụ', - icon: 'Biểu tượng', - title: 'Tiêu đề', - previewText: 'Văn bản xem trước', - featureImage: 'Hình ảnh nổi bật', - tags: 'Thẻ', - properties: 'Thuộc tính', - date: 'Ngày', - parentFolder: 'Thư mục cha', - wordCount: 'Số từ và ký tự' + label: 'Nâng cao', + description: 'Chẩn đoán, dọn dẹp metadata, nhập/xuất và đặt lại.', + groups: { + maintenance: 'Bảo trì', + resetSettings: 'Đặt lại cài đặt' + } } }, syncMode: { notSynced: '(chưa đồng bộ)', - switchToSynced: 'Bật đồng bộ', - switchToLocal: 'Tắt đồng bộ' + enableSync: 'Bật đồng bộ', + disableSync: 'Tắt đồng bộ' }, items: { listPaneTitle: { @@ -1114,11 +1158,11 @@ export const STRINGS_VI = { desc: 'Chọn nơi hiển thị tiêu đề ngăn danh sách.', options: { header: 'Hiện ở header', - list: 'Hiện ở ngăn danh sách', + listPane: 'Hiện ở ngăn danh sách', hidden: 'Không hiện' } }, - sortNotesBy: { + defaultSortOrder: { name: 'Thứ tự sắp xếp mặc định', desc: 'Chọn thứ tự sắp xếp mặc định cho ghi chú. Các thuộc tính từ Thuộc tính sắp xếp xuất hiện dưới dạng tùy chọn sắp xếp bổ sung.', directions: { @@ -1126,18 +1170,18 @@ export const STRINGS_VI = { desc: 'Giảm dần' }, dateDirections: { - desc: 'Mới nhất trên', - asc: 'Cũ nhất trên' + newestOnTop: 'Mới nhất trên', + oldestOnTop: 'Cũ nhất trên' }, textDirections: { - asc: 'A trên', - desc: 'Z trên' + aOnTop: 'A trên', + zOnTop: 'Z trên' }, fields: { - modified: 'Ngày sửa', - created: 'Ngày tạo', + dateEdited: 'Ngày sửa', + dateCreated: 'Ngày tạo', title: 'Tiêu đề', - filename: 'Tên tệp', + fileName: 'Tên tệp', property: 'Thuộc tính' } }, @@ -1150,7 +1194,7 @@ export const STRINGS_VI = { follow: 'Theo thứ tự sắp xếp' } }, - propertySortKey: { + sortingProperties: { name: 'Thuộc tính sắp xếp', desc: 'Các thuộc tính frontmatter phân tách bằng dấu phẩy. Mỗi thuộc tính xuất hiện làm tùy chọn sắp xếp trong cài đặt Thứ tự sắp xếp mặc định và trong menu sắp xếp ở ngăn danh sách. Các thuộc tính này không bị thay đổi.', placeholder: 'published, author', @@ -1160,14 +1204,14 @@ export const STRINGS_VI = { both: 'Thứ tự sắp xếp mặc định và nhóm mặc định đã được đặt lại vì thuộc tính của chúng không còn khả dụng.' } }, - propertySortSecondary: { + propertySecondarySort: { name: 'Sắp xếp phụ', desc: 'Dùng với sắp xếp theo thuộc tính khi các ghi chú có cùng giá trị thuộc tính hoặc không có giá trị thuộc tính.', options: { title: 'Tiêu đề', - filename: 'Tên tệp', - created: 'Ngày tạo', - modified: 'Ngày chỉnh sửa' + fileName: 'Tên tệp', + dateCreated: 'Ngày tạo', + dateEdited: 'Ngày chỉnh sửa' } }, propertySortInstructions: { @@ -1180,16 +1224,16 @@ export const STRINGS_VI = { '**Chế độ xem thẻ và thuộc tính:** Khi chọn nhóm theo **Thư mục**, tiêu đề ngày sẽ được hiển thị thay thế.' ] }, - propertyGroupKey: { + groupingProperties: { name: 'Thuộc tính nhóm', desc: 'Các thuộc tính frontmatter phân tách bằng dấu phẩy. Mỗi thuộc tính xuất hiện làm tùy chọn nhóm trong cài đặt Nhóm mặc định và trong menu sắp xếp ở ngăn danh sách. Các thuộc tính này không bị thay đổi.', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: 'Thuộc tính sắp xếp thủ công', desc: 'Thuộc tính frontmatter dùng để lưu giá trị chỉ số cho sắp xếp thủ công.' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: 'Thuộc tính header nhóm', desc: 'Thuộc tính frontmatter dùng để lưu header nhóm tùy chỉnh.' }, @@ -1206,7 +1250,7 @@ export const STRINGS_VI = { options: { top: 'Đầu', bottom: 'Cuối', - 'below-selected-note': 'Dưới ghi chú đã chọn', + belowSelectedNote: 'Dưới ghi chú đã chọn', unsorted: 'Chưa sắp xếp' } }, @@ -1222,7 +1266,7 @@ export const STRINGS_VI = { 'Trong ngăn danh sách, chọn một ghi chú hoặc chọn nhiều, sau đó nhấn **Cmd/Ctrl + Arrow Up/Down** để di chuyển lựa chọn lên hoặc xuống.' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: 'Cuộn đến tệp đã chọn khi danh sách thay đổi', desc: 'Cuộn đến tệp đã chọn khi ghim ghi chú, hiện ghi chú con, đổi giao diện thư mục hoặc thao tác tệp.' }, @@ -1230,15 +1274,15 @@ export const STRINGS_VI = { name: 'Hiện ghi chú từ thư mục con / phần tử con', desc: 'Bao gồm ghi chú từ thư mục con lồng nhau và phần tử con của thẻ và thuộc tính khi xem thư mục, thẻ hoặc thuộc tính.' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: 'Chỉ ghim ghi chú trong thư mục của nó', desc: 'Ghi chú đã ghim chỉ hiển thị là đã ghim trong thư mục riêng của nó. Hữu ích cho ghi chú thư mục hoặc nếu bạn có nhiều ghi chú đã ghim. Không ảnh hưởng đến chế độ xem thẻ hoặc thuộc tính.' }, - separateNoteCounts: { + separateFileCounts: { name: 'Hiện số lượng tệp hiện tại và con riêng biệt', desc: 'Hiển thị số lượng tệp theo định dạng "hiện tại ▾ con" cho thư mục, thẻ và thuộc tính.' }, - groupNotes: { + defaultGrouping: { name: 'Nhóm mặc định', desc: '**Tiêu đề** chú thích danh sách đã sắp xếp mà không thay đổi thứ tự: Tùy chỉnh hiển thị tiêu đề được định nghĩa trong frontmatter và Ngày chèn tiêu đề ngày. **Nhóm** sắp xếp lại danh sách: nhóm thư mục và thuộc tính được xếp thứ tự riêng, và ghi chú trong mỗi nhóm theo thứ tự sắp xếp.', families: { @@ -1251,7 +1295,7 @@ export const STRINGS_VI = { folder: 'Thư mục' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: 'Luôn hiển thị tất cả nhãn thẻ và thuộc tính', desc: 'Khi tắt, các nhãn khớp với lựa chọn điều hướng hiện tại sẽ bị ẩn (ví dụ: nhãn thẻ "công thức" bị ẩn khi duyệt thẻ "công thức"). Bật để giữ tất cả các nhãn luôn hiển thị.' }, @@ -1259,7 +1303,7 @@ export const STRINGS_VI = { name: 'Header nhóm cố định', desc: 'Giữ header phần ngày, thư mục, thuộc tính hoặc đã ghim hiện tại hiển thị khi cuộn.' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: 'Hiện đường dẫn thư mục con', desc: 'Khi nhóm theo thư mục trong ngăn danh sách, hiển thị đường dẫn thư mục con thay vì chỉ tên thư mục.' }, @@ -1287,9 +1331,9 @@ export const STRINGS_VI = { name: 'Biểu tượng nhiệm vụ chưa hoàn thành', desc: 'Thay thế biểu tượng tệp khi ghi chú có nhiệm vụ chưa hoàn thành.', options: { - none: 'Đã tắt', + disabled: 'Đã tắt', compact: 'Chế độ gọn', - all: 'Tiêu chuẩn và gọn' + standardAndCompact: 'Tiêu chuẩn và gọn' } }, useFolderIcon: { @@ -1312,7 +1356,7 @@ export const STRINGS_VI = { name: 'Tiến độ công việc: ẩn khi hoàn thành', desc: 'Ẩn tiến độ nhiệm vụ khi tất cả nhiệm vụ trong ghi chú đã hoàn thành.' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: 'Nền nhiệm vụ chưa hoàn thành', desc: 'Áp dụng màu nền khi ghi chú có nhiệm vụ chưa hoàn thành.' }, @@ -1320,7 +1364,7 @@ export const STRINGS_VI = { name: 'Màu nền nhiệm vụ chưa hoàn thành', desc: 'Đặt màu nền được sử dụng khi ghi chú có nhiệm vụ chưa hoàn thành.' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: 'Biểu tượng theo tên tệp', desc: 'Gán biểu tượng cho tệp dựa trên văn bản trong tên.' }, @@ -1330,7 +1374,7 @@ export const STRINGS_VI = { placeholder: '# văn bản=biểu tượng\nhọp=ph-calendar\nhóa đơn=ph-receipt', editTooltip: 'Chỉnh sửa ánh xạ' }, - showCategoryIcons: { + showFileTypeIcons: { name: 'Biểu tượng theo loại tệp', desc: 'Gán biểu tượng cho tệp dựa trên phần mở rộng.' }, @@ -1338,7 +1382,7 @@ export const STRINGS_VI = { name: 'Cài đặt sẵn biểu tượng tệp', desc: 'Chọn biểu tượng tích hợp hoặc cài đặt sẵn của gói biểu tượng. Quy tắc phần mở rộng tùy chỉnh ghi đè cài đặt sẵn này.', options: { - none: 'Biểu tượng tích hợp' + builtIn: 'Biểu tượng tích hợp' }, notInstalledWarning: 'Gói biểu tượng này chưa được cài đặt. Biểu tượng tích hợp sẽ được hiển thị thay thế.' }, @@ -1361,11 +1405,11 @@ export const STRINGS_VI = { name: 'Hiện thư mục cha', desc: 'Hiển thị tên thư mục cha cho ghi chú trong thư mục con, thẻ hoặc thuộc tính.' }, - showParentFolderFullPath: { + showFolderPath: { name: 'Hiện đường dẫn thư mục', desc: 'Hiển thị đường dẫn tương đối với thư mục đã chọn thay vì chỉ tên thư mục. Thẻ và thuộc tính hiển thị đường dẫn đầy đủ.' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: 'Nhấn thư mục cha để mở thư mục', desc: 'Nhấn nhãn thư mục cha sẽ mở thư mục trong bảng danh sách.' }, @@ -1393,7 +1437,7 @@ export const STRINGS_VI = { vertical: 'Chia dọc' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: 'Khi thanh bên quá hẹp', desc: 'Chọn điều xảy ra khi ngăn điều hướng và ngăn danh sách không vừa khi đặt cạnh nhau.', options: { @@ -1402,7 +1446,7 @@ export const STRINGS_VI = { vertical: 'Chuyển sang chia dọc' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: 'Ngưỡng thanh bên hẹp', desc: 'Chọn cách tính ngưỡng chiều rộng của thanh bên.', options: { @@ -1410,41 +1454,41 @@ export const STRINGS_VI = { customWidth: 'Chiều rộng tùy chỉnh' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: 'Chiều rộng ngưỡng thanh bên hẹp', desc: 'Chuyển khi thanh bên hẹp hơn chiều rộng này.', resetTooltip: 'Đặt lại về chiều rộng mặc định' }, - appearanceBackground: { + paneBackgroundColor: { name: 'Màu nền', desc: 'Chọn màu nền cho ngăn điều hướng và danh sách.', options: { separate: 'Nền riêng', - primary: 'Dùng nền danh sách', - secondary: 'Dùng nền điều hướng' + listBackground: 'Dùng nền danh sách', + navigationBackground: 'Dùng nền điều hướng' } }, - appearanceScale: { + zoomLevel: { name: 'Mức thu phóng', desc: 'Điều khiển mức thu phóng tổng thể của Notebook Navigator (phần trăm).' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: 'Sử dụng thanh công cụ nổi trên iOS', desc: 'Chỉ áp dụng trên iOS.' }, - startView: { + defaultStartupView: { name: 'Chế độ xem khởi động mặc định', desc: 'Chọn ngăn hoạt động khi mở Notebook Navigator. Bố cục một ngăn hiển thị ngăn này trước; bố cục hai ngăn chuyển tiêu điểm bàn phím vào ngăn này.', options: { navigation: 'Ngăn điều hướng', - files: 'Ngăn danh sách' + listPane: 'Ngăn danh sách' } }, toolbarButtons: { name: 'Nút thanh công cụ', desc: 'Chọn nút xuất hiện trên thanh công cụ. Nút ẩn vẫn truy cập được qua lệnh và menu.' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: 'Mở ghi chú mới trong tab mới', desc: 'Khi bật, lệnh Tạo ghi chú mới sẽ mở ghi chú trong tab mới. Khi tắt, ghi chú sẽ thay thế tab hiện tại.' }, @@ -1464,20 +1508,20 @@ export const STRINGS_VI = { name: 'Tự động hiển thị: Bỏ qua sự kiện từ cửa sổ khác', desc: 'Không đổi ghi chú đang hoạt động khi làm việc với ghi chú ở cửa sổ khác.' }, - paneTransitionDuration: { + singlePaneAnimation: { name: 'Hoạt ảnh ngăn đơn', desc: 'Thời lượng chuyển đổi khi chuyển giữa các ngăn trong chế độ ngăn đơn (mili giây).', resetTooltip: 'Đặt lại mặc định' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: 'Tự động chọn ghi chú đầu tiên', desc: 'Tự động mở ghi chú đầu tiên khi chuyển thư mục, thẻ hoặc thuộc tính.' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: 'Tắt tự động cuộn cho lối tắt', desc: 'Không cuộn ngăn điều hướng khi nhấn mục trong lối tắt.' }, - autoExpandNavItems: { + expandOnSelection: { name: 'Mở rộng khi chọn', desc: 'Mở rộng thư mục và thẻ khi chọn. Ở chế độ một ngăn, chọn lần đầu mở rộng, chọn lần hai hiện tệp.' }, @@ -1515,16 +1559,16 @@ export const STRINGS_VI = { name: 'Huy hiệu lối tắt', desc: "Nội dung hiển thị bên cạnh lối tắt. Sử dụng lệnh 'Mở lối tắt 1-9' để mở lối tắt trực tiếp.", options: { - index: 'Vị trí (1-9)', + position: 'Vị trí (1-9)', count: 'Số lượng mục', none: 'Không có' } }, - showRecentNotes: { + showRecentFiles: { name: 'Hiện tệp gần đây', desc: 'Hiển thị phần tệp gần đây trong ngăn điều hướng.' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: 'Ẩn loại tệp khỏi tệp gần đây', desc: 'Chọn loại tệp cần ẩn trong phần tệp gần đây.', options: { @@ -1532,15 +1576,15 @@ export const STRINGS_VI = { folderNotes: 'Ghi chú thư mục' } }, - recentNotesCount: { + recentFilesCount: { name: 'Số lượng tệp gần đây', desc: 'Số tệp gần đây để hiển thị.' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: 'Ghim tệp gần đây cùng lối tắt', desc: 'Bao gồm tệp gần đây khi lối tắt được ghim.' }, - calendarEnabled: { + enableCalendar: { name: 'Bật lịch', desc: 'Bật các tính năng lịch của Notebook Navigator.' }, @@ -1552,12 +1596,12 @@ export const STRINGS_VI = { rightSidebar: 'Thanh bên phải' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: 'Vị trí chế độ bảng đơn', desc: 'Nơi hiển thị lịch trong chế độ bảng đơn.', options: { navigationPane: 'Bảng điều hướng', - below: 'Bên dưới các bảng' + belowPanes: 'Bên dưới các bảng' } }, calendarLocale: { @@ -1579,7 +1623,7 @@ export const STRINGS_VI = { thuFri: 'Thứ năm và thứ sáu' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: 'Định dạng tên tháng', desc: 'Tên tháng đầy đủ (tháng 1) hoặc viết tắt (Thg 01).', options: { @@ -1591,7 +1635,7 @@ export const STRINGS_VI = { name: 'Hiển thị nút thông tin', desc: 'Hiển thị nút thông tin trên thanh tìm kiếm và tiêu đề lịch.' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: 'Số tuần hiển thị trong thanh bên trái', desc: 'Lịch trong thanh bên phải luôn hiển thị cả tháng.', options: { @@ -1636,7 +1680,7 @@ export const STRINGS_VI = { name: 'Hiện mục ẩn', desc: 'Khi bật, lịch luôn hiển thị tất cả ghi chú lịch, bao gồm cả ghi chú bị ẩn bởi bộ lọc của hồ sơ kho.' }, - calendarIntegrationMode: { + dailyNoteSource: { name: 'Nguồn ghi chú hàng ngày', desc: 'Nguồn cho ghi chú lịch.', options: { @@ -1656,34 +1700,38 @@ export const STRINGS_VI = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: 'Thư mục gốc', desc: 'Thư mục cơ sở cho ghi chú định kỳ. Mẫu ngày có thể bao gồm thư mục con. Thay đổi theo hồ sơ vault đã chọn.', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: 'Vị trí thư mục mẫu', desc: 'Trình chọn tệp mẫu hiển thị ghi chú từ thư mục này.', placeholder: 'Templates', usage: 'Được dùng bởi ghi chú lịch và ghi chú thư mục. Cấu hình mẫu trong Lịch > Tích hợp lịch và Thư mục và ghi chú thư mục > Tệp ghi chú thư mục.' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: 'Ghi chú hàng ngày', desc: 'Định dạng đường dẫn sử dụng định dạng ngày Moment. Đặt tên thư mục con trong dấu ngoặc vuông, vd: [Work]/YYYY. Nhấp vào biểu tượng mẫu để đặt mẫu. Đặt vị trí thư mục mẫu trong Thao tác tệp > Mẫu.', + placeholder: 'YYYY/YYYYMMDD', + parsingError: 'Mẫu phải có thể định dạng và phân tích lại thành một ngày đầy đủ (năm, tháng, ngày).' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: 'Định dạng đường dẫn sử dụng ', momentLinkText: 'định dạng ngày Moment', momentDescSuffix: '. Đặt tên thư mục con trong dấu ngoặc vuông, vd: [Work]/YYYY. Nhấp vào biểu tượng mẫu để đặt mẫu. Đặt vị trí thư mục mẫu trong Thao tác tệp > Mẫu.', - templaterSupportInstalled: '✅ Plugin Templater đã được cài đặt với hỗ trợ mẫu đầy đủ.', - templaterSupportMissing: '⚠️ Cài đặt plugin Templater để hỗ trợ mẫu.', templateTokenNoticeLabel: 'Quan trọng!', templateTokenNotice: 'Hỗ trợ mẫu yêu cầu plugin Templater. Các định dạng tích hợp như {{date}} và {{title}} chỉ dùng được khi {source} được đặt thành {option}.', - placeholder: 'YYYY/YYYYMMDD', - example: 'Cú pháp hiện tại: {path}', - parsingError: 'Mẫu phải có thể định dạng và phân tích lại thành một ngày đầy đủ (năm, tháng, ngày).' + example: 'Cú pháp hiện tại: {path}' + }, + templaterSupport: { + installed: '✅ Plugin Templater đã được cài đặt với hỗ trợ mẫu đầy đủ.', + missing: '⚠️ Cài đặt plugin Templater để hỗ trợ mẫu.' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: 'Ghi chú hàng tuần', parsingError: 'Mẫu phải có thể định dạng và phân tích lại thành một tuần đầy đủ (năm tuần, số tuần).', weekPathMismatchWarning: @@ -1691,19 +1739,19 @@ export const STRINGS_VI = { mixedWeekTokensWarning: 'Mẫu này trộn lẫn token tuần bắt đầu từ thứ Hai ("W" hoặc "G") với token tuần dựa trên ngôn ngữ ("w" hoặc "g"). Sử dụng một bộ một cách nhất quán: "GGGG" với "WW" cho tuần bắt đầu từ thứ Hai, hoặc "gggg" với "ww" nếu ghi chú hàng tuần cần tuân theo ngôn ngữ đã chọn.' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: 'Ghi chú hàng tháng', parsingError: 'Mẫu phải có thể định dạng và phân tích lại thành một tháng đầy đủ (năm, tháng).' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: 'Ghi chú hàng quý', parsingError: 'Mẫu phải có thể định dạng và phân tích lại thành một quý đầy đủ (năm, quý).' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: 'Ghi chú hàng năm', parsingError: 'Mẫu phải có thể định dạng và phân tích lại thành một năm đầy đủ (năm).' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: 'Tệp mẫu: {name}' }, showTooltips: { @@ -1724,7 +1772,7 @@ export const STRINGS_VI = { buttonText: 'Đặt lại thanh phân cách', notice: 'Đã đặt lại vị trí thanh phân cách. Khởi động lại Obsidian hoặc mở lại Notebook Navigator để áp dụng.' }, - settingsTransfer: { + importAndExportSettings: { name: 'Nhập và xuất cài đặt', desc: 'Xuất hoặc nhập cài đặt Notebook Navigator dưới dạng JSON. Việc nhập sẽ thay thế tất cả cài đặt.', importButtonText: 'Nhập', @@ -1782,15 +1830,15 @@ export const STRINGS_VI = { name: 'Nhấn Enter để mở tệp', desc: 'Chỉ mở tệp khi nhấn Enter trong quá trình điều hướng bằng bàn phím trong danh sách. Trên macOS, thao tác này ngăn Enter đổi tên tệp.' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: 'Chọn Shift+Enter mở hay đổi tên tệp đã chọn.' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: 'Chọn Cmd+Enter mở hay đổi tên tệp đã chọn.' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: 'Chọn Ctrl+Enter mở hay đổi tên tệp đã chọn.' }, @@ -1798,12 +1846,12 @@ export const STRINGS_VI = { name: 'Nút quay lại/tiến lên của chuột', desc: 'Hành động cho nút quay lại và tiến lên của chuột trên máy tính.', options: { - none: 'Sử dụng mặc định hệ thống', + systemDefault: 'Sử dụng mặc định hệ thống', singlePaneSwitch: 'Chuyển ngăn (một ngăn)', history: 'Điều hướng lịch sử' } }, - fileVisibility: { + showFileTypes: { name: 'Hiện loại tệp (hồ sơ vault)', desc: 'Lọc loại tệp hiển thị trong trình điều hướng. Loại tệp không được Obsidian hỗ trợ có thể mở bằng ứng dụng ngoài.', options: { @@ -1835,12 +1883,12 @@ export const STRINGS_VI = { desc: 'Tạo ghi chú định kỳ khi khởi động hoặc qua lệnh nếu chưa tồn tại.' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: 'Ẩn ghi chú theo quy tắc thuộc tính (hồ sơ vault)', desc: 'Danh sách quy tắc frontmatter phân cách bằng dấu phẩy. Sử dụng mục `key` hoặc `key=value` (ví dụ: status=done, published=true, archived).', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: 'Ẩn tệp (hồ sơ vault)', desc: 'Danh sách mẫu tên tệp phân cách bằng dấu phẩy để ẩn. Hỗ trợ ký tự đại diện * và đường dẫn / (ví dụ: temp-*, *.png, /assets/*).', placeholder: 'temp-*, *.png, /assets/*' @@ -1867,7 +1915,7 @@ export const STRINGS_VI = { duplicateName: 'Tên hồ sơ đã tồn tại' } }, - vaultTitle: { + vaultTitlePlacement: { name: 'Vị trí tiêu đề vault', desc: 'Chọn nơi tiêu đề vault được hiển thị.', options: { @@ -1875,7 +1923,7 @@ export const STRINGS_VI = { navigation: 'Hiển thị trong bảng điều hướng' } }, - excludedFolders: { + hideFolders: { name: 'Ẩn thư mục (hồ sơ vault)', desc: 'Danh sách thư mục cần ẩn phân cách bằng dấu phẩy. Mẫu tên: assets* (thư mục bắt đầu bằng assets), *_temp (kết thúc bằng _temp). Mẫu đường dẫn: /archive (chỉ archive gốc), /res* (thư mục gốc bắt đầu bằng res), /*/temp (thư mục temp ở độ sâu một cấp), /projects/* (tất cả thư mục trong projects).', placeholder: 'mẫu, assets*, /lưu trữ, /res*' @@ -1889,7 +1937,7 @@ export const STRINGS_VI = { name: 'Hiện ngày', desc: 'Hiển thị ngày bên dưới tên ghi chú.' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: 'Khi sắp xếp theo tên', desc: 'Ngày hiển thị khi ghi chú được sắp xếp theo bảng chữ cái.', options: { @@ -1901,7 +1949,7 @@ export const STRINGS_VI = { name: 'Hiện thẻ tệp', desc: 'Hiển thị thẻ có thể nhấn trong mục tệp.' }, - showFileTagAncestors: { + showFullTagPaths: { name: 'Hiện đường dẫn thẻ đầy đủ', desc: "Hiển thị đường dẫn phân cấp thẻ đầy đủ. Khi bật: 'ai/openai', 'công việc/dự án/2024'. Khi tắt: 'openai', '2024'." }, @@ -1909,7 +1957,7 @@ export const STRINGS_VI = { name: 'Tô màu thẻ tệp', desc: 'Áp dụng màu thẻ cho huy hiệu thẻ trên mục tệp.' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: 'Hiện thẻ có màu trước', desc: 'Sắp xếp thẻ có màu trước các thẻ khác trên mục tệp.' }, @@ -1925,7 +1973,7 @@ export const STRINGS_VI = { name: 'Tô màu thuộc tính tệp', desc: 'Áp dụng màu thuộc tính cho huy hiệu thuộc tính trên mục tệp.' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: 'Hiện thuộc tính có màu trước', desc: 'Sắp xếp thuộc tính có màu trước các thuộc tính khác trên mục tệp.' }, @@ -1933,7 +1981,7 @@ export const STRINGS_VI = { name: 'Hiện thuộc tính ở chế độ gọn', desc: 'Hiển thị thuộc tính khi chế độ gọn đang hoạt động.' }, - textCountDisplay: { + textCountType: { name: 'Loại bộ đếm', desc: 'Chọn số liệu văn bản xuất hiện trong mục tệp.', options: { @@ -1963,11 +2011,11 @@ export const STRINGS_VI = { name: 'Thuộc tính mục tiêu', desc: 'Khóa thuộc tính frontmatter chứa số từ mục tiêu. Để trống để ẩn mục tiêu.' }, - showWordCountPercentage: { + showTargetPercentage: { name: 'Hiển thị phần trăm mục tiêu', desc: 'Chỉ hiển thị phần trăm tiến độ khi có số từ mục tiêu.' }, - propertyFields: { + propertyKeys: { name: 'Khóa thuộc tính (hồ sơ kho)', desc: 'Các khóa thuộc tính frontmatter, với khả năng thiết lập hiển thị từng khóa cho điều hướng và danh sách tệp.', addButtonTooltip: 'Cấu hình khóa thuộc tính', @@ -1979,11 +2027,11 @@ export const STRINGS_VI = { name: 'Hiển thị thuộc tính trên các dòng riêng', desc: 'Hiển thị mỗi thuộc tính trên một dòng riêng.' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: 'Liên kết nhãn thuộc tính với ghi chú', desc: 'Nhấp vào nhãn thuộc tính để mở ghi chú được liên kết.' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: 'Liên kết nhãn thuộc tính với URL', desc: 'Nhấp vào nhãn thuộc tính để mở URL được liên kết.' }, @@ -2003,7 +2051,7 @@ export const STRINGS_VI = { helpTooltip: 'Định dạng với Moment', momentLinkText: 'định dạng Moment' }, - showFilePreview: { + showNotePreview: { name: 'Hiện xem trước ghi chú', desc: 'Hiển thị văn bản xem trước bên dưới tên ghi chú.' }, @@ -2032,7 +2080,7 @@ export const STRINGS_VI = { desc: 'Danh sách thuộc tính frontmatter phân cách bằng dấu phẩy để kiểm tra văn bản xem trước. Thuộc tính đầu tiên có văn bản sẽ được dùng.', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: 'Quay lại nội dung ghi chú', desc: 'Hiển thị nội dung ghi chú làm xem trước khi không có thuộc tính nào được chỉ định chứa văn bản.' }, @@ -2047,7 +2095,7 @@ export const STRINGS_VI = { '5': '5 dòng' } }, - fileNameRows: { + titleRows: { name: 'Dòng tiêu đề', desc: 'Số dòng hiển thị cho tiêu đề ghi chú.', options: { @@ -2078,22 +2126,22 @@ export const STRINGS_VI = { desc: 'Danh sách thuộc tính frontmatter phân cách bằng dấu phẩy. Ghi chú chứa bất kỳ thuộc tính nào trong số này không lưu trữ ảnh nổi bật.', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: 'Kích thước hiển thị ảnh nổi bật', desc: 'Kích thước hiển thị tối đa cho ảnh nổi bật trong danh sách ghi chú.', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: 'Kích thước pixel ảnh nổi bật', desc: 'Độ phân giải được sử dụng khi tạo hình thu nhỏ ảnh nổi bật đã lưu. Tăng giá trị này nếu bản xem trước lớn hơn bị mờ.', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2101,7 +2149,7 @@ export const STRINGS_VI = { name: 'Tải hình ảnh bên ngoài', desc: 'Tải hình ảnh từ xa và hình thu nhỏ YouTube cho hình ảnh nổi bật.' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: 'Ẩn ảnh xem trước đã xuất', desc: 'Ẩn các tệp PNG xem trước bản vẽ đã xuất. Bật "Hiện mục ẩn" để hiển thị chúng.' }, @@ -2134,11 +2182,11 @@ export const STRINGS_VI = { alphaDesc: 'Z đến A' } }, - showNoteCount: { + showFileCount: { name: 'Hiện số lượng tệp', desc: 'Hiển thị số lượng tệp bên cạnh thư mục, thẻ và thuộc tính.' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: 'Hiện biểu tượng cho lối tắt và mục gần đây', desc: 'Hiển thị biểu tượng bên cạnh các mục trong phần Lối tắt và Gần đây.' }, @@ -2147,7 +2195,7 @@ export const STRINGS_VI = { desc: 'Chỉnh sửa biểu tượng thanh công cụ, thư mục, thẻ, thuộc tính, đã ghim, tìm kiếm và sắp xếp.', buttonText: 'Chỉnh sửa biểu tượng' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: 'Chỉ áp dụng màu cho biểu tượng', desc: 'Khi bật, màu tùy chỉnh chỉ áp dụng cho biểu tượng. Khi tắt, màu áp dụng cho cả biểu tượng và nhãn văn bản.' }, @@ -2155,9 +2203,9 @@ export const STRINGS_VI = { name: 'Chế độ màu cầu vồng (hồ sơ vault)', desc: 'Áp dụng màu cầu vồng trong bảng điều hướng.', options: { - none: 'Tắt', - foreground: 'Màu chữ', - background: 'Màu nền' + off: 'Tắt', + textColor: 'Màu chữ', + backgroundColor: 'Màu nền' } }, navRainbowFirstColor: { @@ -2180,7 +2228,7 @@ export const STRINGS_VI = { name: 'Áp dụng cho lối tắt', desc: 'Áp dụng màu cầu vồng cho lối tắt.' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: 'Áp dụng cho mục gần đây', desc: 'Áp dụng màu cầu vồng cho mục gần đây.' }, @@ -2214,7 +2262,7 @@ export const STRINGS_VI = { name: 'Áp dụng cho thuộc tính', desc: 'Áp dụng màu cầu vồng cho thuộc tính.' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: 'Độ sáng đồng nhất giữa các sắc độ', // (English: Consistent brightness across hues) desc: 'Nội suy độ sáng giữa màu bắt đầu và màu kết thúc trong quá trình chuyển đổi sắc độ.' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2232,7 +2280,7 @@ export const STRINGS_VI = { all: 'Mọi cấp' } }, - collapseBehavior: { + collapseItems: { name: 'Thu gọn mục', desc: 'Chọn nút mở rộng/thu gọn tất cả ảnh hưởng đến gì.', options: { @@ -2242,7 +2290,7 @@ export const STRINGS_VI = { propertiesOnly: 'Chỉ thuộc tính' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: 'Giữ mục đã chọn mở rộng', desc: 'Khi thu gọn, giữ mục đã chọn và cha của nó mở rộng.' }, @@ -2250,7 +2298,7 @@ export const STRINGS_VI = { name: 'Bỏ qua thư mục gốc vault khi thu gọn', desc: 'Khi thu gọn tất cả mục, giữ thư mục gốc vault ở trạng thái hiện tại.' }, - navIndent: { + treeIndentation: { name: 'Thụt lề cây', desc: 'Điều chỉnh độ rộng thụt lề cho thư mục, thẻ và thuộc tính lồng nhau (pixel).' }, @@ -2276,7 +2324,7 @@ export const STRINGS_VI = { line: 'Đường kẻ' } }, - navRootSpacing: { + rootItemSpacing: { name: 'Khoảng cách mục gốc', desc: 'Khoảng cách giữa các thư mục, thẻ và thuộc tính cấp gốc (pixel).' }, @@ -2303,15 +2351,15 @@ export const STRINGS_VI = { highToLow: 'cao đến thấp' } }, - showAllTagsFolder: { + showTagsFolder: { name: 'Hiện thư mục thẻ', desc: 'Hiển thị "Thẻ" như thư mục có thể thu gọn.' }, - showUntagged: { + showUntaggedNotes: { name: 'Hiện ghi chú không có thẻ', desc: 'Hiển thị mục "Không có thẻ" cho ghi chú không có thẻ nào.' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: 'Lọc thẻ theo lựa chọn', desc: 'Chỉ hiển thị thẻ xuất hiện trong ghi chú thuộc thư mục hoặc thuộc tính đã chọn.' }, @@ -2345,20 +2393,20 @@ export const STRINGS_VI = { highToLow: 'cao đến thấp' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: 'Hiển thị thư mục thuộc tính', desc: 'Hiển thị "Thuộc tính" dưới dạng thư mục có thể thu gọn.' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: 'Lọc thuộc tính theo lựa chọn', desc: 'Chỉ hiển thị thuộc tính xuất hiện trong ghi chú thuộc thư mục hoặc thẻ đã chọn.' }, - hiddenTags: { + hideTags: { name: 'Ẩn thẻ (hồ sơ vault)', desc: 'Danh sách mẫu thẻ phân cách bằng dấu phẩy. Mẫu tên: tag* (bắt đầu bằng), *tag (kết thúc bằng). Mẫu đường dẫn: archive (thẻ và con cháu), archive/* (chỉ con cháu), projects/*/drafts (ký tự đại diện ở giữa).', placeholder: 'archive*, *draft, projects/*/old' }, - hiddenFileTags: { + hideNotesWithTags: { name: 'Ẩn ghi chú có thẻ (hồ sơ vault)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2391,7 +2439,7 @@ export const STRINGS_VI = { desc: 'Tệp mẫu được dùng khi tạo ghi chú thư mục. Mẫu Markdown có thể dùng Templater. Mẫu Canvas và Base được sao chép dưới dạng nội dung tệp. Đặt vị trí thư mục mẫu trong Thao tác tệp > Mẫu.', formatWarning: 'Định dạng mẫu phải khớp với loại ghi chú thư mục đã chọn: .md, .canvas hoặc .base.' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: 'Tên thư mục mở ghi chú thư mục', desc: 'Nhấp vào tên thư mục sẽ mở ghi chú thư mục của thư mục đó. Khi tắt, ghi chú thư mục chỉ cung cấp metadata thư mục như tên, biểu tượng và màu.' }, @@ -2412,7 +2460,7 @@ export const STRINGS_VI = { rightSidebar: 'Thanh bên phải' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: 'Thanh bên phải: Hiển thị ghi chú thư mục gần nhất', desc: 'Khi một thư mục được chọn, thanh bên phải tự động hiển thị ghi chú thư mục tổ tiên gần nhất.' }, @@ -2455,7 +2503,7 @@ export const STRINGS_VI = { indexingTitle: 'Đang lập chỉ mục vault...', progress: 'Đang cập nhật cache Notebook Navigator.' }, - externalIcons: { + iconPackManagement: { downloadButton: 'Tải về', downloadingLabel: 'Đang tải...', removeButton: 'Gỡ bỏ', @@ -2467,7 +2515,7 @@ export const STRINGS_VI = { infoNote: 'Gói biểu tượng đã tải đồng bộ trạng thái cài đặt giữa các thiết bị. Gói biểu tượng ở trong cơ sở dữ liệu cục bộ trên mỗi thiết bị; đồng bộ chỉ theo dõi tải hay gỡ. Gói biểu tượng tải từ kho Notebook Navigator (https://github.com/johansan/notebook-navigator/tree/main/icon-assets).' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: 'Dùng metadata frontmatter', desc: 'Dùng frontmatter cho tên ghi chú, dấu thời gian, biểu tượng và màu' }, @@ -2486,7 +2534,7 @@ export const STRINGS_VI = { desc: 'Trường frontmatter cho màu nền. Để trống để dùng màu nền lưu trong cài đặt.', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: 'Di chuyển biểu tượng và màu từ cài đặt', desc: 'Lưu trong cài đặt: {icons} biểu tượng, {colors} màu.', button: 'Di chuyển', @@ -2496,7 +2544,7 @@ export const STRINGS_VI = { noticeFailures: 'Mục thất bại: {failures}.', noticeError: 'Di chuyển thất bại. Kiểm tra console để biết chi tiết.' }, - frontmatterNameField: { + frontmatterNameFields: { name: 'Các trường tên', desc: 'Danh sách trường frontmatter phân cách bằng dấu phẩy. Sử dụng giá trị không trống đầu tiên. Quay lại tên tệp.', placeholder: 'title, name' @@ -2511,7 +2559,7 @@ export const STRINGS_VI = { desc: 'Tên trường frontmatter cho dấu thời gian sửa. Để trống để chỉ dùng ngày hệ thống tệp.', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: 'Định dạng dấu thời gian', desc: 'Định dạng dùng để phân tích dấu thời gian trong frontmatter. Để trống để dùng định dạng ISO 8601', helpTooltip: 'Định dạng với Moment', @@ -2524,12 +2572,12 @@ export const STRINGS_VI = { buttonText: '❤️ Tài trợ', coffeeButton: '☕️ Mua cho tôi một ly cà phê' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: 'Kiểm tra phiên bản mới khi khởi động', desc: 'Kiểm tra bản phát hành plugin mới khi khởi động và hiện thông báo khi có bản cập nhật. Kiểm tra xảy ra tối đa một lần mỗi ngày.', status: 'Có phiên bản mới: {version}' }, - debugLogging: { + startupDebugLogging: { name: 'Ghi log gỡ lỗi khi khởi động', desc: 'Ghi chẩn đoán khởi động vào một tệp Markdown có dấu thời gian ở thư mục gốc của kho, rồi dừng sau khi khởi động ổn định. Tệp có thể được đồng bộ hóa và có thể bao gồm đường dẫn tệp.' }, diff --git a/src/i18n/locales/zh_cn.ts b/src/i18n/locales/zh_cn.ts index 2d8b82a9e..ce2b2f441 100644 --- a/src/i18n/locales/zh_cn.ts +++ b/src/i18n/locales/zh_cn.ts @@ -73,6 +73,9 @@ export const STRINGS_ZH_CN = { shortcutsHeader: '快捷方式', recentFilesHeader: '最近文件', // Header label for recent files section in navigation pane (English: Recent files) properties: '属性', + folders: '文件夹', + tags: '标签', + calendar: '导航日历', reorderRootFoldersTitle: '重新排列导航', reorderRootFoldersHint: '使用箭头或拖动来重新排列', vaultRootLabel: '仓库', @@ -1002,101 +1005,142 @@ export const STRINGS_ZH_CN = { exportSuccess: '失败的元数据报告已导出至:{filename}', exportFailed: '导出元数据报告失败' }, - sections: { - general: '通用', - vaultFilters: '显示过滤器', - appearanceBehavior: '外观和行为', - navigationPane: '导航窗格', - calendar: '导航日历', - fileOperations: '文件操作', - icons: '图标包', - folders: '文件夹', - folderNotes: '文件夹笔记', - folderNoteFiles: '文件夹笔记文件', - foldersAndFolderNotes: '文件夹和文件夹笔记', - tagsAndProperties: '标签与属性', - tags: '标签', - listPane: '列表窗格', - notes: '文件显示', - shortcutsAndRecentFiles: '快捷方式与最近文件', - advanced: '高级' + index: { + label: '通用', + description: '发行说明、支持、仓库配置文件、文件类型和属性键。', + groups: { + vaultSetup: '仓库设置' + } }, pageGroups: { configuration: '配置', - navigationAndContent: '导航窗格', - notesAndLists: '列表窗格', + navigationPane: '导航窗格', + listPane: '列表窗格', calendarAndTools: '日历和工具' }, - pageDescriptions: { - general: '发行说明、支持、仓库配置文件、文件类型和属性键。', - vaultFilters: '隐藏的文件夹、标签、文件、文件标签和属性规则。', - appearanceBehavior: '行为、键盘导航、鼠标按钮、外观和格式。', - navigationPane: '布局、外观、文件数量、折叠行为和彩虹颜色。', - shortcuts: '快捷方式可见性、徽章、最近文件和固定项目。', - calendar: '日历显示、日期笔记、模板、区域设置和侧边栏位置。', - fileOperations: '模板、删除确认、附件和文件移动冲突行为。', - foldersAndFolderNotes: '文件夹显示、文件夹笔记、文件夹笔记模板和文件夹笔记行为。', - tagsProperties: '标签和属性部分、图标、排序、范围和继承。', - listPane: '排序、分组、列表模式、固定笔记和绘图预览。', - frontmatter: '用于显示名称、时间戳、图标和颜色的前置元数据字段。', - notes: '标题、预览文本、特色图片、标签、属性、日期、字数和字符数。', - iconPacks: '界面图标、文件图标和图标包管理。', - advanced: '诊断、元数据清理、导入/导出和重置。' - }, - groups: { - general: { - vaultConfiguration: '仓库设置', - templates: '模板', - behavior: '行为', - startup: '启动', - keyboardNavigation: '键盘导航', - mouseButtons: '鼠标按钮', - view: '外观', - icons: '图标', - desktopAppearance: '桌面外观', - mobileAppearance: '移动端外观', - formatting: '格式' + pages: { + displayFilters: { + label: '显示过滤器', + description: '隐藏的文件夹、标签、文件、文件标签和属性规则。' + }, + appearanceAndBehavior: { + label: '外观和行为', + description: '行为、键盘导航、鼠标按钮、外观和格式。', + groups: { + startup: '启动', + keyboardNavigation: '键盘导航', + mouseButtons: '鼠标按钮', + desktopAppearance: '桌面外观', + mobileAppearance: '移动端外观', + appearance: '外观', + icons: '图标', + formatting: '格式' + } + }, + navigationPane: { + label: '导航窗格', + description: '布局、外观、文件数量、折叠行为和彩虹颜色。', + groups: { + appearance: '外观', + banner: '横幅', + collapseItems: '折叠项目', + dragAndDrop: '拖放', + fileCounts: '文件数', + rainbowColors: '彩虹颜色' + } + }, + shortcutsAndRecentFiles: { + label: '快捷方式与最近文件', + description: '快捷方式可见性、徽章、最近文件和固定项目。', + groups: { + shortcuts: '快捷方式', + recentFiles: '最近文件' + } + }, + foldersAndFolderNotes: { + label: '文件夹和文件夹笔记', + description: '文件夹显示、文件夹笔记、文件夹笔记模板和文件夹笔记行为。', + groups: { + folders: '文件夹', + folderNotes: '文件夹笔记', + folderNoteFiles: '文件夹笔记文件' + } + }, + tagsAndProperties: { + label: '标签与属性', + description: '标签和属性部分、图标、排序、范围和继承。', + groups: { + tags: '标签', + properties: '属性' + } + }, + listPane: { + label: '列表窗格', + description: '排序、分组、列表模式、固定笔记和绘图预览。', + groups: { + appearance: '外观', + sortAndGroup: '排序与分组', + groupHeaders: '分组标题', + manualSort: '手动排序', + pinnedNotes: '固定笔记', + behavior: '行为', + drawingPreviews: '绘图预览' + } + }, + fileOperations: { + label: '文件操作', + description: '模板、删除确认、附件和文件移动冲突行为。', + groups: { + templates: '模板' + } + }, + frontmatterFields: { + label: '前置元数据字段', + description: '用于显示名称、时间戳、图标和颜色的前置元数据字段。' + }, + fileDisplay: { + label: '文件显示', + description: '标题、预览文本、特色图片、标签、属性、日期、字数和字符数。', + groups: { + icon: '图标', + title: '标题', + previewText: '预览文本', + featureImage: '特色图片', + tags: '标签', + properties: '属性', + tasks: '任务', + date: '日期', + parentFolder: '父文件夹', + wordAndCharacterCount: '字数和字符数' + } + }, + calendar: { + label: '导航日历', + description: '日历显示、日期笔记、模板、区域设置和侧边栏位置。', + groups: { + appearance: '外观', + leftSidebar: '左侧边栏', + calendarIntegration: '日历集成', + rightSidebar: '右侧边栏' + } + }, + iconPacks: { + label: '图标包', + description: '界面图标、文件图标和图标包管理。' }, advanced: { - maintenance: '维护', - resetSettings: '重置设置' - }, - navigation: { - appearance: '外观', - banner: '横幅', - collapseItems: '折叠项目', - dragAndDrop: '拖放', - noteCounts: '文件数', - rainbowColors: '彩虹颜色', - leftSidebar: '左侧边栏', - calendarIntegration: '日历集成' - }, - list: { - display: '外观', - sortAndGroup: '排序与分组', - groupHeaders: '分组标题', - manualSort: '手动排序', - pinnedNotes: '固定笔记', - drawingPreviews: '绘图预览' - }, - notes: { - frontmatter: '前置元数据字段', - tasks: '任务', - icon: '图标', - title: '标题', - previewText: '预览文本', - featureImage: '特色图片', - tags: '标签', - properties: '属性', - date: '日期', - parentFolder: '父文件夹', - wordCount: '字数和字符数' + label: '高级', + description: '诊断、元数据清理、导入/导出和重置。', + groups: { + maintenance: '维护', + resetSettings: '重置设置' + } } }, syncMode: { notSynced: '(未同步)', - switchToSynced: '启用同步', - switchToLocal: '禁用同步' + enableSync: '启用同步', + disableSync: '禁用同步' }, items: { listPaneTitle: { @@ -1104,11 +1148,11 @@ export const STRINGS_ZH_CN = { desc: '选择列表窗格标题的显示位置。', options: { header: '显示在标题栏', - list: '显示在列表窗格', + listPane: '显示在列表窗格', hidden: '不显示' } }, - sortNotesBy: { + defaultSortOrder: { name: '默认排序方式', desc: '选择笔记的默认排序方式。“用于排序的属性”中的属性会作为额外的排序选项显示。', directions: { @@ -1116,18 +1160,18 @@ export const STRINGS_ZH_CN = { desc: '降序' }, dateDirections: { - desc: '最新在顶部', - asc: '最旧在顶部' + newestOnTop: '最新在顶部', + oldestOnTop: '最旧在顶部' }, textDirections: { - asc: '升序', - desc: '降序' + aOnTop: '升序', + zOnTop: '降序' }, fields: { - modified: '编辑日期', - created: '创建日期', + dateEdited: '编辑日期', + dateCreated: '创建日期', title: '标题', - filename: '文件名', + fileName: '文件名', property: '属性' } }, @@ -1140,7 +1184,7 @@ export const STRINGS_ZH_CN = { follow: '跟随排序' } }, - propertySortKey: { + sortingProperties: { name: '用于排序的属性', desc: '以逗号分隔的 frontmatter 属性。每个属性会作为排序选项显示在默认排序方式设置和列表窗格的排序菜单中。这些属性不会被更改。', placeholder: 'published, author', @@ -1150,14 +1194,14 @@ export const STRINGS_ZH_CN = { both: '默认排序方式和默认分组已重置,因为其属性已不可用。' } }, - propertySortSecondary: { + propertySecondarySort: { name: '次要排序', desc: '与属性排序配合使用,当笔记具有相同的属性值或没有属性值时生效。', options: { title: '标题', - filename: '文件名', - created: '创建日期', - modified: '编辑日期' + fileName: '文件名', + dateCreated: '创建日期', + dateEdited: '编辑日期' } }, propertySortInstructions: { @@ -1170,16 +1214,16 @@ export const STRINGS_ZH_CN = { '**标签和属性视图:** 选择 **文件夹** 分组后,会改为显示日期标题。' ] }, - propertyGroupKey: { + groupingProperties: { name: '用于分组的属性', desc: '以逗号分隔的 frontmatter 属性。每个属性会作为分组选项显示在默认分组设置和列表窗格的排序菜单中。这些属性不会被更改。', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: '手动排序属性', desc: '用于存储手动排序数字索引值的 frontmatter 属性。' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: '分组标题属性', desc: '用于存储自定义分组标题的 frontmatter 属性。' }, @@ -1193,7 +1237,7 @@ export const STRINGS_ZH_CN = { options: { top: '顶部', bottom: '底部', - 'below-selected-note': '所选笔记下方', + belowSelectedNote: '所选笔记下方', unsorted: '未排序' } }, @@ -1209,7 +1253,7 @@ export const STRINGS_ZH_CN = { '在列表窗格中,选择一条笔记或多选若干条,然后按 **Cmd/Ctrl + Arrow Up/Down** 向上或向下移动所选内容。' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: '列表变更时滚动到选定文件', desc: '在固定笔记、显示后代笔记、更改文件夹外观或执行文件操作时滚动到选定的文件。' }, @@ -1217,15 +1261,15 @@ export const STRINGS_ZH_CN = { name: '显示子文件夹/后代的笔记', desc: '在查看文件夹、标签或属性时包含嵌套子文件夹以及标签和属性后代中的笔记。' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: '仅在笔记所在文件夹中固定', desc: '固定笔记仅在其所在文件夹中显示为已固定。适用于文件夹笔记或固定笔记较多的情况。不影响标签或属性视图。' }, - separateNoteCounts: { + separateFileCounts: { name: '分别显示当前和后代文件计数', desc: '为文件夹、标签和属性以"当前 ▾ 后代"格式显示文件计数。' }, - groupNotes: { + defaultGrouping: { name: '默认分组', desc: '**标题**在不改变顺序的情况下为已排序的列表添加标注:自定义显示在 frontmatter 中定义的标题,日期插入日期标题。**分组**会重新排列列表:文件夹和属性分组按自身顺序排列,每个分组内的笔记遵循排序方式。', families: { @@ -1238,7 +1282,7 @@ export const STRINGS_ZH_CN = { folder: '文件夹' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: '始终显示所有标签和属性标记', desc: '禁用时,与当前导航选择匹配的标记会被隐藏(例如,浏览"食谱"标签时,"食谱"标签标记会被隐藏)。启用后所有标记始终可见。' }, @@ -1246,7 +1290,7 @@ export const STRINGS_ZH_CN = { name: '固定分组标题', desc: '滚动时保持当前日期、文件夹、属性或固定部分的标题可见。' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: '显示子文件夹路径', desc: '在列表窗格中按文件夹分组时,显示子文件夹路径,而不是仅显示文件夹名称。' }, @@ -1274,9 +1318,9 @@ export const STRINGS_ZH_CN = { name: '未完成任务图标', desc: '当笔记包含未完成任务时替换文件图标。', options: { - none: '已禁用', + disabled: '已禁用', compact: '紧凑模式', - all: '标准和紧凑' + standardAndCompact: '标准和紧凑' } }, useFolderIcon: { @@ -1299,7 +1343,7 @@ export const STRINGS_ZH_CN = { name: '任务进度:全部完成时隐藏', desc: '当笔记中的所有任务都已完成时隐藏任务进度。' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: '未完成任务背景', desc: '当笔记包含未完成任务时应用背景颜色。' }, @@ -1307,7 +1351,7 @@ export const STRINGS_ZH_CN = { name: '未完成任务背景颜色', desc: '设置笔记包含未完成任务时使用的背景颜色。' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: '按文件名设置图标', desc: '根据文件名中的文本分配图标。' }, @@ -1317,7 +1361,7 @@ export const STRINGS_ZH_CN = { placeholder: '# 文本=图标\n会议=ph-calendar\n发票=ph-receipt', editTooltip: '编辑映射' }, - showCategoryIcons: { + showFileTypeIcons: { name: '按文件类型设置图标', desc: '根据文件扩展名分配图标。' }, @@ -1325,7 +1369,7 @@ export const STRINGS_ZH_CN = { name: '文件图标预设', desc: '选择内置图标或图标包预设。自定义扩展名规则会覆盖此预设。', options: { - none: '内置图标' + builtIn: '内置图标' }, notInstalledWarning: '未安装此图标包。将改为显示内置图标。' }, @@ -1348,11 +1392,11 @@ export const STRINGS_ZH_CN = { name: '显示父文件夹', desc: '为子文件夹、标签或属性中的笔记显示父文件夹名称。' }, - showParentFolderFullPath: { + showFolderPath: { name: '显示文件夹路径', desc: '显示相对于所选文件夹的路径,而不是仅显示文件夹名称。标签和属性显示完整路径。' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: '点击父文件夹打开文件夹', desc: '点击父文件夹名称时,在列表面板中打开该文件夹。' }, @@ -1380,7 +1424,7 @@ export const STRINGS_ZH_CN = { vertical: '垂直分割' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: '侧边栏过窄时', desc: '选择导航窗格和列表窗格无法并排显示时的处理方式。', options: { @@ -1389,7 +1433,7 @@ export const STRINGS_ZH_CN = { vertical: '切换到垂直分割' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: '窄侧边栏阈值', desc: '选择侧边栏宽度阈值的计算方式。', options: { @@ -1397,41 +1441,41 @@ export const STRINGS_ZH_CN = { customWidth: '自定义宽度' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: '窄侧边栏阈值宽度', desc: '当侧边栏窄于此宽度时切换。', resetTooltip: '重置为默认宽度' }, - appearanceBackground: { + paneBackgroundColor: { name: '背景色', desc: '为导航窗格和列表窗格选择背景色。', options: { separate: '分开背景', - primary: '使用列表背景', - secondary: '使用导航背景' + listBackground: '使用列表背景', + navigationBackground: '使用导航背景' } }, - appearanceScale: { + zoomLevel: { name: '缩放级别', desc: '控制 Notebook Navigator 的整体缩放级别(百分比)。' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: '在 iOS 上使用浮动工具栏', desc: '仅适用于 iOS。' }, - startView: { + defaultStartupView: { name: '默认启动视图', desc: '选择打开 Notebook Navigator 时处于活动状态的窗格。单窗格布局优先显示该窗格;双窗格布局将键盘焦点移至该窗格。', options: { navigation: '导航窗格', - files: '列表窗格' + listPane: '列表窗格' } }, toolbarButtons: { name: '工具栏按钮', desc: '选择在工具栏中显示哪些按钮。隐藏的按钮仍可通过命令和菜单访问。' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: '在新标签页中打开新笔记', desc: '启用后,"创建新笔记"命令会在新标签页中打开笔记。禁用后,笔记将替换当前标签页。' }, @@ -1451,20 +1495,20 @@ export const STRINGS_ZH_CN = { name: '自动显示:忽略其他窗口的事件', desc: '在其他窗口中操作笔记时不更改活动笔记。' }, - paneTransitionDuration: { + singlePaneAnimation: { name: '单窗格动画', desc: '在单窗格模式下切换窗格时的过渡持续时间(毫秒)。', resetTooltip: '重置为默认值' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: '自动选择第一个笔记', desc: '切换文件夹、标签或属性时自动打开第一个笔记。' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: '禁用快捷方式自动滚动', desc: '点击快捷方式中的项目时不滚动导航面板。' }, - autoExpandNavItems: { + expandOnSelection: { name: '选中时展开', desc: '选中时展开文件夹和标签。在单窗格模式下,首次选中展开,再次选中显示文件。' }, @@ -1502,16 +1546,16 @@ export const STRINGS_ZH_CN = { name: '快捷方式徽章', desc: '在快捷方式旁边显示的内容。使用"打开快捷方式1-9"命令可直接打开快捷方式。', options: { - index: '位置 (1-9)', + position: '位置 (1-9)', count: '项目计数', none: '无' } }, - showRecentNotes: { + showRecentFiles: { name: '显示最近文件', desc: '在导航窗格中显示最近文件部分。' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: '从最近文件中隐藏文件类型', desc: '选择在最近文件部分中隐藏的文件类型。', options: { @@ -1519,15 +1563,15 @@ export const STRINGS_ZH_CN = { folderNotes: '文件夹笔记' } }, - recentNotesCount: { + recentFilesCount: { name: '最近文件数量', desc: '要显示的最近文件数量。' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: '将最近文件与快捷方式一起固定', desc: '固定快捷方式时包含最近文件。' }, - calendarEnabled: { + enableCalendar: { name: '启用日历', desc: '启用 Notebook Navigator 的日历功能。' }, @@ -1539,12 +1583,12 @@ export const STRINGS_ZH_CN = { rightSidebar: '右侧边栏' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: '单窗格位置', desc: '单窗格模式下日历显示的位置。', options: { navigationPane: '导航窗格', - below: '窗格下方' + belowPanes: '窗格下方' } }, calendarLocale: { @@ -1565,7 +1609,7 @@ export const STRINGS_ZH_CN = { thuFri: '周四和周五' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: '月份名称格式', desc: '显示完整(一月)或简称(1月)的月份名称。', options: { @@ -1577,7 +1621,7 @@ export const STRINGS_ZH_CN = { name: '显示信息按钮', desc: '在搜索栏和日历标题中显示信息按钮。' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: '左侧边栏显示周数', desc: '右侧边栏的日历始终显示完整月份。', options: { @@ -1622,7 +1666,7 @@ export const STRINGS_ZH_CN = { name: '显示隐藏项目', desc: '启用时,日历始终显示所有日历笔记,包括被仓库配置过滤器隐藏的笔记。' }, - calendarIntegrationMode: { + dailyNoteSource: { name: '日记来源', desc: '日历笔记的来源。', options: { @@ -1642,52 +1686,56 @@ export const STRINGS_ZH_CN = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: '根文件夹', desc: '周期笔记的基础文件夹。日期模式可以包含子文件夹。随所选仓库配置文件更改。', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: '模板文件夹位置', desc: '模板文件选择器显示此文件夹中的笔记。', placeholder: 'Templates', usage: '用于日历笔记和文件夹笔记。在导航日历 > 日历集成和文件夹和文件夹笔记 > 文件夹笔记文件中配置模板。' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: '日记', desc: '使用 Moment 日期格式设置路径。将子文件夹名称用方括号括起来,例如 [Work]/YYYY。点击模板图标设置模板。在文件操作 > 模板中设置模板文件夹位置。', + placeholder: 'YYYY/YYYYMMDD', + parsingError: '模式必须能格式化并重新解析为完整日期(年、月、日)。' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: '使用 ', momentLinkText: 'Moment 日期格式', momentDescSuffix: ' 设置路径。将子文件夹名称用方括号括起来,例如 [Work]/YYYY。点击模板图标设置模板。在文件操作 > 模板中设置模板文件夹位置。', - templaterSupportInstalled: '✅ 已安装 Templater 插件,支持完整模板功能。', - templaterSupportMissing: '⚠️ 安装 Templater 插件以支持模板功能。', templateTokenNoticeLabel: '重要!', templateTokenNotice: '模板功能需要 Templater 插件。{{date}} 和 {{title}} 等内置格式仅在{source}设置为{option}时可用。', - placeholder: 'YYYY/YYYYMMDD', - example: '当前语法:{path}', - parsingError: '模式必须能格式化并重新解析为完整日期(年、月、日)。' + example: '当前语法:{path}' + }, + templaterSupport: { + installed: '✅ 已安装 Templater 插件,支持完整模板功能。', + missing: '⚠️ 安装 Templater 插件以支持模板功能。' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: '周记', parsingError: '模式必须能格式化并重新解析为完整周(周年、周数)。', weekPathMismatchWarning: '周记路径使用周期笔记语言。请使用匹配的语言,或使用 "GGGG" 与 "WW" 以星期一为基准的周。', mixedWeekTokensWarning: '此模式混用了基于星期一的周标记("W" 或 "G")和基于语言的周标记("w" 或 "g")。请始终使用同一组:以星期一为基准的周使用 "GGGG" 与 "WW",如果周记应遵循所选语言设置,则使用 "gggg" 与 "ww"。' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: '月记', parsingError: '模式必须能格式化并重新解析为完整月份(年、月)。' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: '季度笔记', parsingError: '模式必须能格式化并重新解析为完整季度(年、季度)。' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: '年记', parsingError: '模式必须能格式化并重新解析为完整年份(年)。' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: '模板文件:{name}' }, showTooltips: { @@ -1708,7 +1756,7 @@ export const STRINGS_ZH_CN = { buttonText: '重置分隔符', notice: '分隔符位置已重置。重启 Obsidian 或重新打开 Notebook Navigator 以应用。' }, - settingsTransfer: { + importAndExportSettings: { name: '导入和导出设置', desc: '将 Notebook Navigator 设置导出或导入为 JSON。导入会替换所有设置。', importButtonText: '导入', @@ -1766,15 +1814,15 @@ export const STRINGS_ZH_CN = { name: '按 Enter 键打开文件', desc: '仅在列表键盘导航时按 Enter 键打开文件。在 macOS 上,这会阻止 Enter 键重命名文件。' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: '选择 Shift+Enter 是打开还是重命名所选文件。' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: '选择 Cmd+Enter 是打开还是重命名所选文件。' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: '选择 Ctrl+Enter 是打开还是重命名所选文件。' }, @@ -1782,17 +1830,17 @@ export const STRINGS_ZH_CN = { name: '鼠标后退/前进按钮', desc: '桌面端鼠标后退和前进按钮的操作。', options: { - none: '使用系统默认', + systemDefault: '使用系统默认', singlePaneSwitch: '切换面板(单面板)', history: '浏览历史' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: '按属性规则隐藏笔记 (库配置)', desc: '逗号分隔的前置元数据规则列表。使用 `key` 或 `key=value` 条目(例如:status=done, published=true, archived)。', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: '隐藏文件 (库配置)', desc: '逗号分隔的文件名模式列表,用于隐藏文件。支持 * 通配符和 / 路径(例如:temp-*、*.png、/assets/*)。', placeholder: 'temp-*, *.png, /assets/*' @@ -1818,7 +1866,7 @@ export const STRINGS_ZH_CN = { duplicateName: '配置文件名称已存在' } }, - vaultTitle: { + vaultTitlePlacement: { name: '库标题位置', desc: '选择库标题显示的位置。', options: { @@ -1826,7 +1874,7 @@ export const STRINGS_ZH_CN = { navigation: '显示在导航窗格' } }, - excludedFolders: { + hideFolders: { name: '隐藏文件夹 (库配置)', desc: '逗号分隔的要隐藏的文件夹列表。名称模式:assets*(以assets开头的文件夹),*_temp(以_temp结尾)。路径模式:/archive(仅根目录archive),/res*(以res开头的根文件夹),/*/temp(一级目录下的temp文件夹),/projects/*(projects内的所有文件夹)。', placeholder: 'templates, assets*, /archive, /res*' @@ -1836,7 +1884,7 @@ export const STRINGS_ZH_CN = { desc: '逗号分隔的文件夹列表,用于在收集子文件夹中的笔记时跳过这些文件夹。文件夹仍会显示,选择该文件夹时仍会显示其中的笔记。使用与隐藏文件夹相同的模式。', placeholder: '日记, 资源, /archive' }, - fileVisibility: { + showFileTypes: { name: '显示文件类型 (库配置)', desc: '过滤在导航器中显示的文件类型。Obsidian不支持的文件类型可能会在外部应用程序中打开。', options: { @@ -1872,7 +1920,7 @@ export const STRINGS_ZH_CN = { name: '显示日期', desc: '在笔记名称下方显示日期。' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: '按名称排序时', desc: '笔记按字母顺序排序时显示的日期。', options: { @@ -1884,7 +1932,7 @@ export const STRINGS_ZH_CN = { name: '显示文件标签', desc: '在文件项中显示可点击的标签。' }, - showFileTagAncestors: { + showFullTagPaths: { name: '显示完整标签路径', desc: "显示完整的标签层级路径。启用:'ai/openai','工作/项目/2024'。禁用:'openai','2024'。" }, @@ -1892,7 +1940,7 @@ export const STRINGS_ZH_CN = { name: '为文件标签着色', desc: '将标签颜色应用于文件项中的标签徽章。' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: '优先显示彩色标签', desc: '将彩色标签排列在其他标签之前。' }, @@ -1908,7 +1956,7 @@ export const STRINGS_ZH_CN = { name: '为文件属性着色', desc: '将属性颜色应用到文件项的属性徽章上。' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: '优先显示彩色属性', desc: '在文件项中将彩色属性排列在其他属性之前。' }, @@ -1916,7 +1964,7 @@ export const STRINGS_ZH_CN = { name: '在精简模式中显示属性', desc: '精简模式启用时显示属性。' }, - textCountDisplay: { + textCountType: { name: '计数类型', desc: '选择文件项目中显示哪些文本计数。', options: { @@ -1946,11 +1994,11 @@ export const STRINGS_ZH_CN = { name: '目标属性', desc: '包含目标字数的前置元数据属性键。留空可隐藏目标。' }, - showWordCountPercentage: { + showTargetPercentage: { name: '显示目标百分比', desc: '有目标字数时,仅显示进度百分比。' }, - propertyFields: { + propertyKeys: { name: '属性键(保险库配置)', desc: 'Frontmatter 属性键,可按键设置导航和文件列表的可见性。', addButtonTooltip: '配置属性键', @@ -1962,11 +2010,11 @@ export const STRINGS_ZH_CN = { name: '在单独的行中显示属性', desc: '将每个属性显示在单独的行中。' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: '将属性标签链接到笔记', desc: '点击属性标签以打开链接的笔记。' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: '将属性标签链接到 URL', desc: '点击属性标签以打开链接的 URL。' }, @@ -1986,7 +2034,7 @@ export const STRINGS_ZH_CN = { helpTooltip: '使用 Moment 格式', momentLinkText: 'Moment 格式' }, - showFilePreview: { + showNotePreview: { name: '显示笔记预览', desc: '在笔记名称下方显示预览文本。' }, @@ -2015,7 +2063,7 @@ export const STRINGS_ZH_CN = { desc: '用于查找预览文本的前置属性的逗号分隔列表。将使用第一个包含文本的属性。', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: '回退到笔记内容', desc: '当指定的属性都不包含文本时,显示笔记内容作为预览。' }, @@ -2030,7 +2078,7 @@ export const STRINGS_ZH_CN = { '5': '5 行' } }, - fileNameRows: { + titleRows: { name: '标题行数', desc: '笔记标题显示的行数。', options: { @@ -2061,22 +2109,22 @@ export const STRINGS_ZH_CN = { desc: '逗号分隔的前置元数据属性列表。包含这些属性的笔记不会存储特色图片。', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: '特色图片显示大小', desc: '笔记列表中特色图片的最大渲染大小。', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: '特色图片像素大小', desc: '生成存储的特色图片缩略图时使用的分辨率。如果较大的预览看起来模糊,请增大此值。', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2084,7 +2132,7 @@ export const STRINGS_ZH_CN = { name: '下载外部图片', desc: '下载远程图片和 YouTube 缩略图作为特色图片。' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: '隐藏导出的预览图片', desc: '隐藏导出的绘图预览 PNG 文件。开启"显示隐藏项目"以显示它们。' }, @@ -2117,11 +2165,11 @@ export const STRINGS_ZH_CN = { alphaDesc: 'Z 到 A' } }, - showNoteCount: { + showFileCount: { name: '显示文件数', desc: '在文件夹、标签和属性旁显示文件数量。' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: '显示快捷方式和最近项目的图标', desc: '在快捷方式和最近文件分区中的项目旁显示图标。' }, @@ -2130,7 +2178,7 @@ export const STRINGS_ZH_CN = { desc: '编辑工具栏、文件夹、标签、属性、固定、搜索和排序图标。', buttonText: '编辑图标' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: '仅对图标应用颜色', desc: '启用时,自定义颜色仅应用于图标。禁用时,颜色将同时应用于图标和文本标签。' }, @@ -2138,9 +2186,9 @@ export const STRINGS_ZH_CN = { name: '彩虹颜色模式(仓库配置文件)', desc: '在导航窗格中应用彩虹颜色。', options: { - none: '关闭', - foreground: '文字颜色', - background: '背景颜色' + off: '关闭', + textColor: '文字颜色', + backgroundColor: '背景颜色' } }, navRainbowFirstColor: { @@ -2163,7 +2211,7 @@ export const STRINGS_ZH_CN = { name: '应用到快捷方式', desc: '将彩虹颜色应用到快捷方式。' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: '应用到最近项目', desc: '将彩虹颜色应用到最近项目。' }, @@ -2197,7 +2245,7 @@ export const STRINGS_ZH_CN = { name: '应用到属性', desc: '将彩虹颜色应用到属性。' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: '色相间一致的亮度', // (English: Consistent brightness across hues) desc: '在色相过渡期间在起始颜色和结束颜色之间插值亮度。' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2215,7 +2263,7 @@ export const STRINGS_ZH_CN = { all: '每个级别' } }, - collapseBehavior: { + collapseItems: { name: '折叠项目', desc: '选择展开/折叠全部按钮影响的内容。', options: { @@ -2225,7 +2273,7 @@ export const STRINGS_ZH_CN = { propertiesOnly: '仅属性' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: '保持选中项展开', desc: '折叠时,保持选中项及其父级展开。' }, @@ -2233,7 +2281,7 @@ export const STRINGS_ZH_CN = { name: '折叠时跳过仓库根目录', desc: '折叠所有项目时,保持仓库根文件夹的当前状态。' }, - navIndent: { + treeIndentation: { name: '树形缩进', desc: '调整嵌套文件夹、标签和属性的缩进宽度(像素)。' }, @@ -2259,7 +2307,7 @@ export const STRINGS_ZH_CN = { line: '直线' } }, - navRootSpacing: { + rootItemSpacing: { name: '根级项目间距', desc: '根级文件夹、标签和属性之间的间距(像素)。' }, @@ -2286,15 +2334,15 @@ export const STRINGS_ZH_CN = { highToLow: '从高到低' } }, - showAllTagsFolder: { + showTagsFolder: { name: '显示标签文件夹', desc: '将"标签"显示为可折叠文件夹。' }, - showUntagged: { + showUntaggedNotes: { name: '显示无标签笔记', desc: '为没有任何标签的笔记显示"无标签"项目。' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: '按选择筛选标签', desc: '仅显示所选文件夹或属性中笔记包含的标签。' }, @@ -2328,20 +2376,20 @@ export const STRINGS_ZH_CN = { highToLow: '从高到低' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: '显示属性文件夹', desc: '将"属性"显示为可折叠文件夹。' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: '按选择筛选属性', desc: '仅显示所选文件夹或标签中笔记包含的属性。' }, - hiddenTags: { + hideTags: { name: '隐藏标签 (库配置)', desc: '逗号分隔的标签模式列表。名称模式:tag*(以...开头)、*tag(以...结尾)。路径模式:archive(标签及其后代)、archive/*(仅后代)、projects/*/drafts(中间通配符)。', placeholder: 'archive*, *draft, projects/*/old' }, - hiddenFileTags: { + hideNotesWithTags: { name: '隐藏带标签的笔记 (库配置)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2374,7 +2422,7 @@ export const STRINGS_ZH_CN = { desc: '创建文件夹笔记时使用的模板文件。Markdown 模板可以使用 Templater。Canvas 和 Base 模板会作为文件内容复制。在文件操作 > 模板中设置模板文件夹位置。', formatWarning: '模板格式必须与所选文件夹笔记类型匹配:.md、.canvas 或 .base。' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: '文件夹名称打开文件夹笔记', desc: '点击文件夹名称会打开其文件夹笔记。关闭时,文件夹笔记仅提供文件夹元数据,例如名称、图标和颜色。' }, @@ -2395,7 +2443,7 @@ export const STRINGS_ZH_CN = { rightSidebar: '右侧边栏' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: '右侧边栏:显示最近的文件夹笔记', desc: '选择文件夹时,右侧边栏会自动显示最近的上级文件夹笔记。' }, @@ -2437,7 +2485,7 @@ export const STRINGS_ZH_CN = { indexingTitle: '正在索引仓库...', progress: '正在更新 Notebook Navigator 缓存.' }, - externalIcons: { + iconPackManagement: { downloadButton: '下载', downloadingLabel: '正在下载...', removeButton: '移除', @@ -2449,11 +2497,11 @@ export const STRINGS_ZH_CN = { infoNote: '下载的图标包会在设备之间同步安装状态。图标包保存在每个设备的本地数据库中;同步仅跟踪它们是否应该被下载或移除。图标包从Notebook Navigator仓库下载 (https://github.com/johansan/notebook-navigator/tree/main/icon-assets)。' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: '使用前言元数据', desc: '使用前言设置笔记名称、时间戳、图标和颜色' }, - frontmatterNameField: { + frontmatterNameFields: { name: '名称字段(多个)', desc: '逗号分隔的前言字段列表。使用第一个非空值。回退到文件名。', placeholder: 'title, name' @@ -2473,7 +2521,7 @@ export const STRINGS_ZH_CN = { desc: '背景颜色的前言字段。留空使用存储在设置中的背景颜色。', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: '从设置迁移图标和颜色', desc: '存储在设置中:{icons} 个图标,{colors} 种颜色。', button: '迁移', @@ -2493,7 +2541,7 @@ export const STRINGS_ZH_CN = { desc: '修改时间戳的前言字段名称。留空仅使用文件系统日期。', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: '时间戳格式', desc: '用于解析前言中时间戳的格式。留空使用 ISO 8601 解析。', helpTooltip: '使用 Moment 格式', @@ -2506,12 +2554,12 @@ export const STRINGS_ZH_CN = { buttonText: '❤️ 赞助', coffeeButton: '☕️ 请我喝咖啡' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: '启动时检查新版本', desc: '启动时检查新的插件版本,当有可用更新时显示通知。检查最多每天一次。', status: '有新版本可用:{version}' }, - debugLogging: { + startupDebugLogging: { name: '启动调试日志', desc: '将启动诊断写入保管库根目录中带时间戳的 Markdown 文件,并在启动稳定后停止。该文件可能会同步,并且可能包含文件路径。' }, diff --git a/src/i18n/locales/zh_tw.ts b/src/i18n/locales/zh_tw.ts index a887237ab..049fe7c41 100644 --- a/src/i18n/locales/zh_tw.ts +++ b/src/i18n/locales/zh_tw.ts @@ -73,6 +73,9 @@ export const STRINGS_ZH_TW = { shortcutsHeader: '捷徑', recentFilesHeader: '最近檔案', // Header label for recent files section in navigation pane (English: Recent files) properties: '屬性', + folders: '資料夾', + tags: '標籤', + calendar: '導覽日曆', reorderRootFoldersTitle: '重新排列導覽', reorderRootFoldersHint: '使用方向鍵或拖曳來重新排列', vaultRootLabel: '保險庫', @@ -1003,101 +1006,142 @@ export const STRINGS_ZH_TW = { exportSuccess: '失敗的中繼資料報告已匯出至:{filename}', exportFailed: '匯出中繼資料報告失敗' }, - sections: { - general: '一般', - vaultFilters: '顯示篩選器', - appearanceBehavior: '外觀與行為', - navigationPane: '導覽窗格', - calendar: '導覽日曆', - fileOperations: '檔案操作', - icons: '圖示包', - folders: '資料夾', - folderNotes: '資料夾筆記', - folderNoteFiles: '資料夾筆記檔案', - foldersAndFolderNotes: '資料夾與資料夾筆記', - tagsAndProperties: '標籤與屬性', - tags: '標籤', - listPane: '列表窗格', - notes: '檔案顯示', - shortcutsAndRecentFiles: '快捷方式與最近檔案', - advanced: '進階' + index: { + label: '一般', + description: '發行說明、支援、保險庫設定檔、檔案類型與屬性鍵。', + groups: { + vaultSetup: '保險庫設定' + } }, pageGroups: { configuration: '設定', - navigationAndContent: '導覽窗格', - notesAndLists: '列表窗格', + navigationPane: '導覽窗格', + listPane: '列表窗格', calendarAndTools: '日曆與工具' }, - pageDescriptions: { - general: '發行說明、支援、保險庫設定檔、檔案類型與屬性鍵。', - vaultFilters: '隱藏的資料夾、標籤、檔案、檔案標籤與屬性規則。', - appearanceBehavior: '行為、鍵盤導覽、滑鼠按鈕、外觀與格式。', - navigationPane: '版面配置、外觀、檔案數量、摺疊行為與彩虹顏色。', - shortcuts: '快捷方式可見性、徽章、最近檔案與釘選項目。', - calendar: '日曆顯示、日期筆記、範本、區域設定與側邊欄位置。', - fileOperations: '範本、刪除確認、附件與檔案移動衝突行為。', - foldersAndFolderNotes: '資料夾顯示、資料夾筆記、資料夾筆記範本與資料夾筆記行為。', - tagsProperties: '標籤與屬性區段、圖示、排序、範圍與繼承。', - listPane: '排序、群組、列表模式、釘選筆記與繪圖預覽。', - frontmatter: '用於顯示名稱、時間戳記、圖示與顏色的前置中繼資料欄位。', - notes: '標題、預覽文字、特色圖片、標籤、屬性、日期、字數與字元數。', - iconPacks: '介面圖示、檔案圖示與圖示包管理。', - advanced: '診斷、中繼資料清理、匯入/匯出與重設。' - }, - groups: { - general: { - vaultConfiguration: '保險庫設定', - templates: '範本', - behavior: '行為', - startup: '啟動', - keyboardNavigation: '鍵盤導覽', - mouseButtons: '滑鼠按鈕', - view: '外觀', - icons: '圖示', - desktopAppearance: '桌面外觀', - mobileAppearance: '行動裝置外觀', - formatting: '格式' + pages: { + displayFilters: { + label: '顯示篩選器', + description: '隱藏的資料夾、標籤、檔案、檔案標籤與屬性規則。' + }, + appearanceAndBehavior: { + label: '外觀與行為', + description: '行為、鍵盤導覽、滑鼠按鈕、外觀與格式。', + groups: { + startup: '啟動', + keyboardNavigation: '鍵盤導覽', + mouseButtons: '滑鼠按鈕', + desktopAppearance: '桌面外觀', + mobileAppearance: '行動裝置外觀', + appearance: '外觀', + icons: '圖示', + formatting: '格式' + } + }, + navigationPane: { + label: '導覽窗格', + description: '版面配置、外觀、檔案數量、摺疊行為與彩虹顏色。', + groups: { + appearance: '外觀', + banner: '橫幅', + collapseItems: '摺疊項目', + dragAndDrop: '拖放', + fileCounts: '檔案數', + rainbowColors: '彩虹顏色' + } + }, + shortcutsAndRecentFiles: { + label: '快捷方式與最近檔案', + description: '快捷方式可見性、徽章、最近檔案與釘選項目。', + groups: { + shortcuts: '捷徑', + recentFiles: '最近檔案' + } + }, + foldersAndFolderNotes: { + label: '資料夾與資料夾筆記', + description: '資料夾顯示、資料夾筆記、資料夾筆記範本與資料夾筆記行為。', + groups: { + folders: '資料夾', + folderNotes: '資料夾筆記', + folderNoteFiles: '資料夾筆記檔案' + } + }, + tagsAndProperties: { + label: '標籤與屬性', + description: '標籤與屬性區段、圖示、排序、範圍與繼承。', + groups: { + tags: '標籤', + properties: '屬性' + } + }, + listPane: { + label: '列表窗格', + description: '排序、群組、列表模式、釘選筆記與繪圖預覽。', + groups: { + appearance: '外觀', + sortAndGroup: '排序與分組', + groupHeaders: '群組標題', + manualSort: '手動排序', + pinnedNotes: '釘選筆記', + behavior: '行為', + drawingPreviews: '繪圖預覽' + } + }, + fileOperations: { + label: '檔案操作', + description: '範本、刪除確認、附件與檔案移動衝突行為。', + groups: { + templates: '範本' + } + }, + frontmatterFields: { + label: '前置中繼資料欄位', + description: '用於顯示名稱、時間戳記、圖示與顏色的前置中繼資料欄位。' + }, + fileDisplay: { + label: '檔案顯示', + description: '標題、預覽文字、特色圖片、標籤、屬性、日期、字數與字元數。', + groups: { + icon: '圖示', + title: '標題', + previewText: '預覽文字', + featureImage: '特色圖片', + tags: '標籤', + properties: '屬性', + tasks: '任務', + date: '日期', + parentFolder: '父資料夾', + wordAndCharacterCount: '字數與字元數' + } + }, + calendar: { + label: '導覽日曆', + description: '日曆顯示、日期筆記、範本、區域設定與側邊欄位置。', + groups: { + appearance: '外觀', + leftSidebar: '左側邊欄', + calendarIntegration: '行事曆整合', + rightSidebar: '右側邊欄' + } + }, + iconPacks: { + label: '圖示包', + description: '介面圖示、檔案圖示與圖示包管理。' }, advanced: { - maintenance: '維護', - resetSettings: '重設設定' - }, - navigation: { - appearance: '外觀', - banner: '橫幅', - collapseItems: '摺疊項目', - dragAndDrop: '拖放', - noteCounts: '檔案數', - rainbowColors: '彩虹顏色', - leftSidebar: '左側邊欄', - calendarIntegration: '行事曆整合' - }, - list: { - display: '外觀', - sortAndGroup: '排序與分組', - groupHeaders: '群組標題', - manualSort: '手動排序', - pinnedNotes: '釘選筆記', - drawingPreviews: '繪圖預覽' - }, - notes: { - frontmatter: '前置中繼資料欄位', - tasks: '任務', - icon: '圖示', - title: '標題', - previewText: '預覽文字', - featureImage: '特色圖片', - tags: '標籤', - properties: '屬性', - date: '日期', - parentFolder: '父資料夾', - wordCount: '字數與字元數' + label: '進階', + description: '診斷、中繼資料清理、匯入/匯出與重設。', + groups: { + maintenance: '維護', + resetSettings: '重設設定' + } } }, syncMode: { notSynced: '(未同步)', - switchToSynced: '啟用同步', - switchToLocal: '停用同步' + enableSync: '啟用同步', + disableSync: '停用同步' }, items: { listPaneTitle: { @@ -1105,11 +1149,11 @@ export const STRINGS_ZH_TW = { desc: '選擇列表窗格標題的顯示位置。', options: { header: '顯示在標題列', - list: '顯示在列表窗格', + listPane: '顯示在列表窗格', hidden: '不顯示' } }, - sortNotesBy: { + defaultSortOrder: { name: '預設排序方式', desc: '選擇筆記的預設排序方式。「用於排序的屬性」中的屬性會作為額外的排序選項顯示。', directions: { @@ -1117,18 +1161,18 @@ export const STRINGS_ZH_TW = { desc: '降序' }, dateDirections: { - desc: '最新在頂部', - asc: '最舊在頂部' + newestOnTop: '最新在頂部', + oldestOnTop: '最舊在頂部' }, textDirections: { - asc: '升序', - desc: '降序' + aOnTop: '升序', + zOnTop: '降序' }, fields: { - modified: '編輯日期', - created: '建立日期', + dateEdited: '編輯日期', + dateCreated: '建立日期', title: '標題', - filename: '檔案名稱', + fileName: '檔案名稱', property: '屬性' } }, @@ -1141,7 +1185,7 @@ export const STRINGS_ZH_TW = { follow: '跟隨排序' } }, - propertySortKey: { + sortingProperties: { name: '用於排序的屬性', desc: '以逗號分隔的 frontmatter 屬性。每個屬性會作為排序選項顯示在預設排序方式設定和列表面板的排序選單中。這些屬性不會被更改。', placeholder: 'published, author', @@ -1151,14 +1195,14 @@ export const STRINGS_ZH_TW = { both: '預設排序方式和預設分組已重設,因為其屬性已不可用。' } }, - propertySortSecondary: { + propertySecondarySort: { name: '次要排序', desc: '與屬性排序配合使用,當筆記具有相同的屬性值或沒有屬性值時生效。', options: { title: '標題', - filename: '檔案名稱', - created: '建立日期', - modified: '編輯日期' + fileName: '檔案名稱', + dateCreated: '建立日期', + dateEdited: '編輯日期' } }, propertySortInstructions: { @@ -1171,16 +1215,16 @@ export const STRINGS_ZH_TW = { '**標籤和屬性檢視:** 選擇 **資料夾** 分組後,會改為顯示日期標題。' ] }, - propertyGroupKey: { + groupingProperties: { name: '用於分組的屬性', desc: '以逗號分隔的 frontmatter 屬性。每個屬性會作為分組選項顯示在預設分組設定和列表面板的排序選單中。這些屬性不會被更改。', placeholder: 'status, genre' }, - manualSortPropertyKey: { + manualSortProperty: { name: '手動排序屬性', desc: '用於儲存手動排序數字索引值的 frontmatter 屬性。' }, - manualSortGroupHeaderProperty: { + groupHeaderProperty: { name: '群組標題屬性', desc: '用於儲存自訂群組標題的 frontmatter 屬性。' }, @@ -1194,7 +1238,7 @@ export const STRINGS_ZH_TW = { options: { top: '頂部', bottom: '底部', - 'below-selected-note': '在選定筆記下方', + belowSelectedNote: '在選定筆記下方', unsorted: '未排序' } }, @@ -1210,7 +1254,7 @@ export const STRINGS_ZH_TW = { '在列表面板中,選取一則筆記或多選數則,然後按 **Cmd/Ctrl + Arrow Up/Down** 將所選項目上移或下移。' ] }, - revealFileOnListChanges: { + scrollToSelectedFileOnListChanges: { name: '列表變更時捲動到選定檔案', desc: '在釘選筆記、顯示後代筆記、變更資料夾外觀或執行檔案操作時捲動到選定的檔案。' }, @@ -1218,15 +1262,15 @@ export const STRINGS_ZH_TW = { name: '顯示子資料夾/後代的筆記', desc: '在檢視資料夾、標籤或屬性時包含巢狀子資料夾以及標籤和屬性後代中的筆記。' }, - limitPinnedToCurrentFolder: { + filterPinnedNotesByFolder: { name: '僅在筆記所在資料夾中釘選', desc: '釘選筆記僅在其所在資料夾中顯示為已釘選。適用於資料夾筆記或釘選筆記較多的情況。不影響標籤或屬性檢視。' }, - separateNoteCounts: { + separateFileCounts: { name: '分別顯示目前和後代檔案計數', desc: '為資料夾、標籤和屬性以「目前 ▾ 後代」格式顯示檔案計數。' }, - groupNotes: { + defaultGrouping: { name: '預設分組', desc: '**標題**在不改變順序的情況下為已排序的列表加上標註:自訂顯示在 frontmatter 中定義的標題,日期插入日期標題。**分組**會重新排列列表:資料夾和屬性分組按自身順序排列,每個分組內的筆記遵循排序方式。', families: { @@ -1239,7 +1283,7 @@ export const STRINGS_ZH_TW = { folder: '資料夾' } }, - showSelectedNavigationPills: { + alwaysShowAllTagAndPropertyPills: { name: '始終顯示所有標籤和屬性標記', desc: '停用時,與目前導覽選擇相符的標記會被隱藏(例如,瀏覽「食譜」標籤時,「食譜」標籤標記會被隱藏)。啟用後所有標記始終可見。' }, @@ -1247,7 +1291,7 @@ export const STRINGS_ZH_TW = { name: '固定群組標題', desc: '捲動時保持目前的日期、資料夾、屬性或釘選區段的標題可見。' }, - showFolderGroupPaths: { + showSubfolderPaths: { name: '顯示子資料夾路徑', desc: '在列表窗格中按資料夾分組時,顯示子資料夾路徑,而不是僅顯示資料夾名稱。' }, @@ -1275,9 +1319,9 @@ export const STRINGS_ZH_TW = { name: '未完成任務圖示', desc: '當筆記包含未完成任務時取代檔案圖示。', options: { - none: '已停用', + disabled: '已停用', compact: '精簡模式', - all: '標準和精簡' + standardAndCompact: '標準和精簡' } }, useFolderIcon: { @@ -1300,7 +1344,7 @@ export const STRINGS_ZH_TW = { name: '工作進度:全部完成時隱藏', desc: '當筆記中的所有任務都已完成時隱藏任務進度。' }, - showFileBackgroundUnfinishedTask: { + unfinishedTaskBackground: { name: '未完成任務背景', desc: '當筆記包含未完成任務時套用背景顏色。' }, @@ -1308,7 +1352,7 @@ export const STRINGS_ZH_TW = { name: '未完成任務背景顏色', desc: '設定筆記包含未完成任務時使用的背景顏色。' }, - showFilenameMatchIcons: { + showFileNameIcons: { name: '按檔名設定圖示', desc: '根據檔名中的文字指派圖示。' }, @@ -1318,7 +1362,7 @@ export const STRINGS_ZH_TW = { placeholder: '# 文字=圖示\n會議=ph-calendar\n發票=ph-receipt', editTooltip: '編輯對應' }, - showCategoryIcons: { + showFileTypeIcons: { name: '按檔案類型設定圖示', desc: '根據檔案副檔名指派圖示。' }, @@ -1326,7 +1370,7 @@ export const STRINGS_ZH_TW = { name: '檔案圖示預設', desc: '選擇內建圖示或圖示包預設。自訂副檔名規則會覆寫此預設。', options: { - none: '內建圖示' + builtIn: '內建圖示' }, notInstalledWarning: '未安裝此圖示包。將改為顯示內建圖示。' }, @@ -1349,11 +1393,11 @@ export const STRINGS_ZH_TW = { name: '顯示父資料夾', desc: '為子資料夾、標籤或屬性中的筆記顯示父資料夾名稱。' }, - showParentFolderFullPath: { + showFolderPath: { name: '顯示資料夾路徑', desc: '顯示相對於所選資料夾的路徑,而不是僅顯示資料夾名稱。標籤和屬性顯示完整路徑。' }, - parentFolderClickRevealsFile: { + parentFolderClickOpensFolder: { name: '點按父資料夾開啟資料夾', desc: '點按父資料夾名稱時,在列表面板中開啟該資料夾。' }, @@ -1381,7 +1425,7 @@ export const STRINGS_ZH_TW = { vertical: '垂直分割' } }, - narrowSidebarLayout: { + narrowSidebarBehavior: { name: '側邊欄過窄時', desc: '選擇導覽窗格和清單窗格無法並排顯示時的處理方式。', options: { @@ -1390,7 +1434,7 @@ export const STRINGS_ZH_TW = { vertical: '切換到垂直分割' } }, - narrowSidebarTrigger: { + narrowSidebarThresholdMode: { name: '窄側邊欄閾值', desc: '選擇側邊欄寬度閾值的計算方式。', options: { @@ -1398,41 +1442,41 @@ export const STRINGS_ZH_TW = { customWidth: '自訂寬度' } }, - narrowSidebarCustomWidth: { + narrowSidebarThresholdWidth: { name: '窄側邊欄閾值寬度', desc: '當側邊欄窄於此寬度時切換。', resetTooltip: '重設為預設寬度' }, - appearanceBackground: { + paneBackgroundColor: { name: '背景色', desc: '為導覽窗格和列表窗格選擇背景色。', options: { separate: '分開背景', - primary: '使用列表背景', - secondary: '使用導覽背景' + listBackground: '使用列表背景', + navigationBackground: '使用導覽背景' } }, - appearanceScale: { + zoomLevel: { name: '縮放級別', desc: '控制 Notebook Navigator 的整體縮放級別(百分比)。' }, - useFloatingToolbars: { + useFloatingToolbarsOnIOS: { name: '在 iOS 上使用浮動工具列', desc: '僅適用於 iOS。' }, - startView: { + defaultStartupView: { name: '預設啟動檢視', desc: '選擇開啟 Notebook Navigator 時處於作用中的窗格。單窗格版面配置會優先顯示此窗格;雙窗格版面配置會將鍵盤焦點移至此窗格。', options: { navigation: '導覽窗格', - files: '列表窗格' + listPane: '列表窗格' } }, toolbarButtons: { name: '工具列按鈕', desc: '選擇在工具列中顯示哪些按鈕。隱藏的按鈕仍可透過命令和選單存取。' }, - createNewNotesInNewTab: { + openNewNotesInNewTab: { name: '在新分頁中開啟新筆記', desc: '啟用後,「建立新筆記」命令會在新分頁中開啟筆記。停用後,筆記將取代目前的分頁。' }, @@ -1452,20 +1496,20 @@ export const STRINGS_ZH_TW = { name: '自動顯示:忽略其他視窗的事件', desc: '在其他視窗中操作筆記時不變更使用中的筆記。' }, - paneTransitionDuration: { + singlePaneAnimation: { name: '單窗格動畫', desc: '在單窗格模式下切換窗格時的過渡持續時間(毫秒)。', resetTooltip: '重設為預設值' }, - autoSelectFirstFileOnFocusChange: { + autoSelectFirstNote: { name: '自動選擇第一個筆記', desc: '切換資料夾、標籤或屬性時自動開啟第一個筆記。' }, - skipAutoScroll: { + disableShortcutAutoScroll: { name: '停用捷徑自動捲動', desc: '點按捷徑中的項目時不捲動導覽面板。' }, - autoExpandNavItems: { + expandOnSelection: { name: '選取時展開', desc: '選取時展開資料夾和標籤。在單窗格模式下,首次選取展開,再次選取顯示檔案。' }, @@ -1503,16 +1547,16 @@ export const STRINGS_ZH_TW = { name: '捷徑徽章', desc: '在捷徑旁邊顯示的內容。使用「開啟捷徑 1-9」命令可直接開啟捷徑。', options: { - index: '位置 (1-9)', + position: '位置 (1-9)', count: '項目計數', none: '無' } }, - showRecentNotes: { + showRecentFiles: { name: '顯示最近檔案', desc: '在導覽窗格中顯示最近檔案區段。' }, - hideRecentNotes: { + hideFileTypesFromRecentFiles: { name: '從最近檔案中隱藏檔案類型', desc: '選擇在最近檔案區段中隱藏的檔案類型。', options: { @@ -1520,15 +1564,15 @@ export const STRINGS_ZH_TW = { folderNotes: '資料夾筆記' } }, - recentNotesCount: { + recentFilesCount: { name: '最近檔案數量', desc: '要顯示的最近檔案數量。' }, - pinRecentNotesWithShortcuts: { + pinRecentFilesWithShortcuts: { name: '將最近檔案與捷徑一起釘選', desc: '釘選捷徑時包含最近檔案。' }, - calendarEnabled: { + enableCalendar: { name: '啟用日曆', desc: '啟用 Notebook Navigator 的日曆功能。' }, @@ -1540,12 +1584,12 @@ export const STRINGS_ZH_TW = { rightSidebar: '右側邊欄' } }, - calendarLeftPlacement: { + calendarSinglePanePlacement: { name: '單窗格位置', desc: '單窗格模式下日曆顯示的位置。', options: { navigationPane: '導航窗格', - below: '窗格下方' + belowPanes: '窗格下方' } }, calendarLocale: { @@ -1566,7 +1610,7 @@ export const STRINGS_ZH_TW = { thuFri: '週四和週五' } }, - calendarMonthHeadingFormat: { + calendarMonthNameFormat: { name: '月份名稱格式', desc: '顯示完整(一月)或簡稱(1月)的月份名稱。', options: { @@ -1578,7 +1622,7 @@ export const STRINGS_ZH_TW = { name: '顯示資訊按鈕', desc: '在搜尋列和日曆標題中顯示資訊按鈕。' }, - calendarWeeksToShow: { + calendarLeftSidebarWeeksToShow: { name: '左側邊欄顯示週數', desc: '右側邊欄的日曆始終顯示完整月份。', options: { @@ -1623,7 +1667,7 @@ export const STRINGS_ZH_TW = { name: '顯示隱藏項目', desc: '啟用時,日曆一律顯示所有日曆筆記,包括被倉庫設定檔篩選器隱藏的筆記。' }, - calendarIntegrationMode: { + dailyNoteSource: { name: '日記來源', desc: '行事曆筆記的來源。', options: { @@ -1643,52 +1687,56 @@ export const STRINGS_ZH_TW = { } }, - calendarCustomRootFolder: { + periodicNotesRootFolder: { name: '根資料夾', desc: '週期筆記的基礎資料夾。日期模式可以包含子資料夾。隨所選儲存庫設定檔更改。', placeholder: 'Personal/Diary' }, - calendarTemplateFolder: { + templateFolderLocation: { name: '範本資料夾位置', desc: '範本檔案選擇器顯示此資料夾中的筆記。', placeholder: 'Templates', usage: '用於行事曆筆記與資料夾筆記。在導覽日曆 > 行事曆整合和資料夾與資料夾筆記 > 資料夾筆記檔案中設定範本。' }, - calendarCustomFilePattern: { + calendarDailyNotePattern: { name: '日記', desc: '使用 Moment 日期格式設定路徑。將子資料夾名稱用方括號括起來,例如 [Work]/YYYY。點擊範本圖示設定範本。在檔案操作 > 範本中設定範本資料夾位置。', + placeholder: 'YYYY/YYYYMMDD', + parsingError: '模式必須能格式化並重新解析為完整日期(年、月、日)。' + }, + calendarPeriodicNotePatterns: { momentDescPrefix: '使用 ', momentLinkText: 'Moment 日期格式', momentDescSuffix: ' 設定路徑。將子資料夾名稱用方括號括起來,例如 [Work]/YYYY。點擊範本圖示設定範本。在檔案操作 > 範本中設定範本資料夾位置。', - templaterSupportInstalled: '✅ 已安裝 Templater 外掛,支援完整範本功能。', - templaterSupportMissing: '⚠️ 安裝 Templater 外掛以支援範本功能。', templateTokenNoticeLabel: '重要!', templateTokenNotice: '範本功能需要 Templater 外掛。{{date}} 與 {{title}} 等內建格式僅在{source}設定為{option}時可用。', - placeholder: 'YYYY/YYYYMMDD', - example: '目前語法:{path}', - parsingError: '模式必須能格式化並重新解析為完整日期(年、月、日)。' + example: '目前語法:{path}' + }, + templaterSupport: { + installed: '✅ 已安裝 Templater 外掛,支援完整範本功能。', + missing: '⚠️ 安裝 Templater 外掛以支援範本功能。' }, - calendarCustomWeekPattern: { + calendarWeeklyNotePattern: { name: '週記', parsingError: '模式必須能格式化並重新解析為完整週(週年、週數)。', weekPathMismatchWarning: '週記路徑使用週期筆記語言。請使用相符的語言,或使用 "GGGG" 搭配 "WW" 以星期一為基準的週。', mixedWeekTokensWarning: '此模式混用了以星期一為基準的週標記("W" 或 "G")和以語言為基準的週標記("w" 或 "g")。請始終使用同一組:以星期一為基準的週使用 "GGGG" 搭配 "WW",若週記應遵循所選語言設定,則使用 "gggg" 搭配 "ww"。' }, - calendarCustomMonthPattern: { + calendarMonthlyNotePattern: { name: '月記', parsingError: '模式必須能格式化並重新解析為完整月份(年、月)。' }, - calendarCustomQuarterPattern: { + calendarQuarterlyNotePattern: { name: '季度筆記', parsingError: '模式必須能格式化並重新解析為完整季度(年、季度)。' }, - calendarCustomYearPattern: { + calendarYearlyNotePattern: { name: '年記', parsingError: '模式必須能格式化並重新解析為完整年份(年)。' }, - calendarTemplateFile: { + periodicNoteTemplateFile: { current: '範本檔案:{name}' }, showTooltips: { @@ -1709,7 +1757,7 @@ export const STRINGS_ZH_TW = { buttonText: '重設分隔符', notice: '分隔符位置已重設。重新啟動 Obsidian 或重新開啟 Notebook Navigator 以套用。' }, - settingsTransfer: { + importAndExportSettings: { name: '匯入和匯出設定', desc: '將 Notebook Navigator 設定匯出或匯入為 JSON。匯入會取代所有設定。', importButtonText: '匯入', @@ -1767,15 +1815,15 @@ export const STRINGS_ZH_TW = { name: '按 Enter 鍵開啟檔案', desc: '僅在清單鍵盤導覽時按 Enter 鍵開啟檔案。在 macOS 上,這會阻止 Enter 鍵重新命名檔案。' }, - shiftEnterOpenContext: { + shiftEnterAction: { name: 'Shift+Enter', desc: '選擇 Shift+Enter 要開啟還是重新命名所選檔案。' }, - cmdEnterOpenContext: { + cmdEnterAction: { name: 'Cmd+Enter', desc: '選擇 Cmd+Enter 要開啟還是重新命名所選檔案。' }, - ctrlEnterOpenContext: { + ctrlEnterAction: { name: 'Ctrl+Enter', desc: '選擇 Ctrl+Enter 要開啟還是重新命名所選檔案。' }, @@ -1783,17 +1831,17 @@ export const STRINGS_ZH_TW = { name: '滑鼠上一頁/下一頁按鈕', desc: '桌面端滑鼠上一頁和下一頁按鈕的操作。', options: { - none: '使用系統預設', + systemDefault: '使用系統預設', singlePaneSwitch: '切換面板(單面板)', history: '瀏覽歷史' } }, - excludedNotes: { + hideNotesWithPropertyRules: { name: '依屬性規則隱藏筆記(保險庫設定檔)', desc: '逗號分隔的前置中繼資料規則列表。使用 `key` 或 `key=value` 條目(例如:status=done, published=true, archived)。', placeholder: 'status=done, published=true, archived' }, - excludedFileNamePatterns: { + hideFiles: { name: '隱藏檔案(保險庫設定檔)', desc: '逗號分隔的檔名模式列表,用於隱藏檔案。支援 * 萬用字元和 / 路徑(例如:temp-*、*.png、/assets/*)。', placeholder: 'temp-*, *.png, /assets/*' @@ -1819,7 +1867,7 @@ export const STRINGS_ZH_TW = { duplicateName: '設定檔名稱已存在' } }, - vaultTitle: { + vaultTitlePlacement: { name: '保險庫標題位置', desc: '選擇保險庫標題顯示的位置。', options: { @@ -1827,7 +1875,7 @@ export const STRINGS_ZH_TW = { navigation: '顯示在導覽窗格' } }, - excludedFolders: { + hideFolders: { name: '隱藏資料夾(保險庫設定檔)', desc: '逗號分隔的要隱藏的資料夾列表。名稱模式:assets*(以 assets 開頭的資料夾),*_temp(以 _temp 結尾)。路徑模式:/archive(僅根目錄 archive),/res*(以 res 開頭的根資料夾),/*/temp(一級目錄下的 temp 資料夾),/projects/*(projects 內的所有資料夾)。', placeholder: 'templates, assets*, /archive, /res*' @@ -1837,7 +1885,7 @@ export const STRINGS_ZH_TW = { desc: '逗號分隔的資料夾列表,用於在收集子資料夾中的筆記時略過這些資料夾。資料夾仍會顯示,選取該資料夾時仍會顯示其中的筆記。使用與隱藏資料夾相同的模式。', placeholder: '日記, 資源, /archive' }, - fileVisibility: { + showFileTypes: { name: '顯示檔案類型(保險庫設定檔)', desc: '篩選在導覽器中顯示的檔案類型。Obsidian 不支援的檔案類型可能會在外部應用程式中開啟。', options: { @@ -1873,7 +1921,7 @@ export const STRINGS_ZH_TW = { name: '顯示日期', desc: '在筆記名稱下方顯示日期。' }, - alphabeticalDateMode: { + dateWhenSortingByName: { name: '按名稱排序時', desc: '筆記按字母順序排序時顯示的日期。', options: { @@ -1885,7 +1933,7 @@ export const STRINGS_ZH_TW = { name: '顯示檔案標籤', desc: '在檔案項目中顯示可點按的標籤。' }, - showFileTagAncestors: { + showFullTagPaths: { name: '顯示完整標籤路徑', desc: "顯示完整的標籤層級路徑。啟用:'ai/openai','工作/專案/2024'。停用:'openai','2024'。" }, @@ -1893,7 +1941,7 @@ export const STRINGS_ZH_TW = { name: '為檔案標籤著色', desc: '將標籤顏色套用於檔案項目中的標籤徽章。' }, - prioritizeColoredFileTags: { + showColoredTagsFirst: { name: '優先顯示彩色標籤', desc: '將彩色標籤排列在其他標籤之前。' }, @@ -1909,7 +1957,7 @@ export const STRINGS_ZH_TW = { name: '為檔案屬性著色', desc: '將屬性顏色套用到檔案項目的屬性徽章上。' }, - prioritizeColoredFileProperties: { + showColoredPropertiesFirst: { name: '優先顯示彩色屬性', desc: '在檔案項目中將彩色屬性排列在其他屬性之前。' }, @@ -1917,7 +1965,7 @@ export const STRINGS_ZH_TW = { name: '在精簡模式中顯示屬性', desc: '精簡模式啟用時顯示屬性。' }, - textCountDisplay: { + textCountType: { name: '計數類型', desc: '選擇檔案項目中要顯示哪些文字計數。', options: { @@ -1947,11 +1995,11 @@ export const STRINGS_ZH_TW = { name: '目標屬性', desc: '包含目標字數的前置元資料屬性鍵。留空可隱藏目標。' }, - showWordCountPercentage: { + showTargetPercentage: { name: '顯示目標百分比', desc: '有目標字數時,只顯示進度百分比。' }, - propertyFields: { + propertyKeys: { name: '屬性鍵(保險庫設定檔)', desc: 'Frontmatter 屬性鍵,可按鍵設定導覽和檔案清單的可見性。', addButtonTooltip: '設定屬性鍵', @@ -1963,11 +2011,11 @@ export const STRINGS_ZH_TW = { name: '在個別行中顯示屬性', desc: '將每個屬性顯示在個別行中。' }, - enablePropertyInternalLinks: { + linkPropertyPillsToNotes: { name: '將屬性標籤連結到筆記', desc: '點擊屬性標籤以開啟連結的筆記。' }, - enablePropertyExternalLinks: { + linkPropertyPillsToUrls: { name: '將屬性標籤連結到 URL', desc: '點擊屬性標籤以開啟連結的 URL。' }, @@ -1987,7 +2035,7 @@ export const STRINGS_ZH_TW = { helpTooltip: '使用 Moment 格式', momentLinkText: 'Moment 格式' }, - showFilePreview: { + showNotePreview: { name: '顯示筆記預覽', desc: '在筆記名稱下方顯示預覽文字。' }, @@ -2016,7 +2064,7 @@ export const STRINGS_ZH_TW = { desc: '用於尋找預覽文字的前置屬性的逗號分隔列表。將使用第一個包含文字的屬性。', placeholder: 'summary, description, abstract' }, - previewPropertiesFallback: { + fallbackToNoteContent: { name: '回退到筆記內容', desc: '當指定的屬性都不包含文字時,顯示筆記內容作為預覽。' }, @@ -2031,7 +2079,7 @@ export const STRINGS_ZH_TW = { '5': '5 行' } }, - fileNameRows: { + titleRows: { name: '標題行數', desc: '筆記標題顯示的行數。', options: { @@ -2062,22 +2110,22 @@ export const STRINGS_ZH_TW = { desc: '逗號分隔的前置中繼資料屬性列表。包含這些屬性的筆記不會儲存特色圖片。', placeholder: 'private, confidential' }, - featureImageSize: { + featureImageDisplaySize: { name: '特色圖片顯示大小', desc: '筆記列表中特色圖片的最大渲染大小。', options: { - standard: '64 px', - large: '96 px', - extraLarge: '128 px' + '64': '64 px', + '96': '96 px', + '128': '128 px' } }, featureImagePixelSize: { name: '特色圖片像素大小', desc: '產生儲存的特色圖片縮圖時使用的解析度。如果較大的預覽看起來模糊,請增大此值。', options: { - standard: '256 x 144 px', - large: '384 x 216 px', - extraLarge: '512 x 288 px' + '256x144': '256 x 144 px', + '384x216': '384 x 216 px', + '512x288': '512 x 288 px' } }, @@ -2085,7 +2133,7 @@ export const STRINGS_ZH_TW = { name: '下載外部圖片', desc: '下載遠端圖片和 YouTube 縮圖作為特色圖片。' }, - hideDrawingPreviewImages: { + hideExportedPreviewImages: { name: '隱藏匯出的預覽圖片', desc: '隱藏匯出的繪圖預覽 PNG 檔案。開啟「顯示隱藏項目」以顯示它們。' }, @@ -2118,11 +2166,11 @@ export const STRINGS_ZH_TW = { alphaDesc: 'Z 到 A' } }, - showNoteCount: { + showFileCount: { name: '顯示檔案數', desc: '在資料夾、標籤和屬性旁顯示檔案數量。' }, - showSectionIcons: { + showShortcutAndRecentItemIcons: { name: '顯示捷徑和最近項目的圖示', desc: '在捷徑和最近檔案區段中的項目旁顯示圖示。' }, @@ -2131,7 +2179,7 @@ export const STRINGS_ZH_TW = { desc: '編輯工具列、資料夾、標籤、屬性、釘選、搜尋和排序圖示。', buttonText: '編輯圖示' }, - showIconsColorOnly: { + applyColorToIconsOnly: { name: '僅對圖示套用顏色', desc: '啟用時,自訂顏色僅套用於圖示。停用時,顏色將同時套用於圖示和文字標籤。' }, @@ -2139,9 +2187,9 @@ export const STRINGS_ZH_TW = { name: '彩虹顏色模式(保險庫設定檔)', desc: '在導覽窗格中套用彩虹顏色。', options: { - none: '關閉', - foreground: '文字顏色', - background: '背景顏色' + off: '關閉', + textColor: '文字顏色', + backgroundColor: '背景顏色' } }, navRainbowFirstColor: { @@ -2164,7 +2212,7 @@ export const STRINGS_ZH_TW = { name: '套用到捷徑', desc: '將彩虹顏色套用到捷徑。' }, - navRainbowApplyToRecent: { + navRainbowApplyToRecentItems: { name: '套用到最近項目', desc: '將彩虹顏色套用到最近項目。' }, @@ -2198,7 +2246,7 @@ export const STRINGS_ZH_TW = { name: '套用到屬性', desc: '將彩虹顏色套用到屬性。' }, - navRainbowBalanceHueLuminance: { + navRainbowConsistentBrightness: { name: '色相間一致的亮度', // (English: Consistent brightness across hues) desc: '在色相過渡期間在起始顏色和結束顏色之間插值亮度。' // (English: Interpolates brightness between the start and end colors during hue transitions.) }, @@ -2216,7 +2264,7 @@ export const STRINGS_ZH_TW = { all: '每個層級' } }, - collapseBehavior: { + collapseItems: { name: '摺疊項目', desc: '選擇展開/摺疊全部按鈕影響的內容。', options: { @@ -2226,7 +2274,7 @@ export const STRINGS_ZH_TW = { propertiesOnly: '僅屬性' } }, - smartCollapse: { + keepSelectedItemExpanded: { name: '保持選取項展開', desc: '摺疊時,保持選取項及其父級展開。' }, @@ -2234,7 +2282,7 @@ export const STRINGS_ZH_TW = { name: '摺疊時略過保險庫根目錄', desc: '摺疊所有項目時,保持保險庫根資料夾的目前狀態。' }, - navIndent: { + treeIndentation: { name: '樹狀縮排', desc: '調整巢狀資料夾、標籤和屬性的縮排寬度(像素)。' }, @@ -2260,7 +2308,7 @@ export const STRINGS_ZH_TW = { line: '直線' } }, - navRootSpacing: { + rootItemSpacing: { name: '根級項目間距', desc: '根級資料夾、標籤和屬性之間的間距(像素)。' }, @@ -2287,15 +2335,15 @@ export const STRINGS_ZH_TW = { highToLow: '從高到低' } }, - showAllTagsFolder: { + showTagsFolder: { name: '顯示標籤資料夾', desc: '將「標籤」顯示為可摺疊資料夾。' }, - showUntagged: { + showUntaggedNotes: { name: '顯示無標籤筆記', desc: '為沒有任何標籤的筆記顯示「無標籤」項目。' }, - scopeTagsToCurrentContext: { + filterTagsBySelection: { name: '依選擇篩選標籤', desc: '僅顯示所選資料夾或屬性中筆記包含的標籤。' }, @@ -2329,20 +2377,20 @@ export const STRINGS_ZH_TW = { highToLow: '由高到低' } }, - showAllPropertiesFolder: { + showPropertiesFolder: { name: '顯示屬性資料夾', desc: '將「屬性」顯示為可摺疊資料夾。' }, - scopePropertiesToCurrentContext: { + filterPropertiesBySelection: { name: '依選擇篩選屬性', desc: '僅顯示所選資料夾或標籤中筆記包含的屬性。' }, - hiddenTags: { + hideTags: { name: '隱藏標籤(保險庫設定檔)', desc: '逗號分隔的標籤模式列表。名稱模式:tag*(以...開頭)、*tag(以...結尾)。路徑模式:archive(標籤及其後代)、archive/*(僅後代)、projects/*/drafts(中間萬用字元)。', placeholder: 'archive*, *draft, projects/*/old' }, - hiddenFileTags: { + hideNotesWithTags: { name: '隱藏帶有標籤的筆記(保險庫設定檔)', desc: 'Comma-separated list of tag patterns. Notes containing matching tags are hidden. Name patterns: tag* (starting with), *tag (ending with). Path patterns: archive (tag and descendants), archive/* (descendants only), projects/*/drafts (mid-segment wildcard).', placeholder: 'archive*, *draft, projects/*/old' @@ -2375,7 +2423,7 @@ export const STRINGS_ZH_TW = { desc: '建立資料夾筆記時使用的範本檔案。Markdown 範本可以使用 Templater。Canvas 和 Base 範本會作為檔案內容複製。在檔案操作 > 範本中設定範本資料夾位置。', formatWarning: '範本格式必須與所選資料夾筆記類型相符:.md、.canvas 或 .base。' }, - enableFolderNoteLinks: { + folderNamesOpenFolderNotes: { name: '資料夾名稱開啟資料夾筆記', desc: '點擊資料夾名稱會開啟其資料夾筆記。關閉時,資料夾筆記僅提供資料夾中繼資料,例如名稱、圖示和顏色。' }, @@ -2396,7 +2444,7 @@ export const STRINGS_ZH_TW = { rightSidebar: '右側邊欄' } }, - showNearestFolderNoteInSidebar: { + showClosestFolderNoteInRightSidebar: { name: '右側邊欄:顯示最近的資料夾筆記', desc: '選取資料夾時,右側邊欄會自動顯示最近的上層資料夾筆記。' }, @@ -2438,7 +2486,7 @@ export const STRINGS_ZH_TW = { indexingTitle: '正在索引保險庫...', progress: '正在更新 Notebook Navigator 快取.' }, - externalIcons: { + iconPackManagement: { downloadButton: '下載', downloadingLabel: '正在下載...', removeButton: '移除', @@ -2450,11 +2498,11 @@ export const STRINGS_ZH_TW = { infoNote: '下載的圖示包會在裝置之間同步安裝狀態。圖示包儲存在每個裝置的本機資料庫中;同步僅追蹤它們是否應該被下載或移除。圖示包從 Notebook Navigator 儲存庫下載 (https://github.com/johansan/notebook-navigator/tree/main/icon-assets)。' }, - useFrontmatterDates: { + useFrontmatterMetadata: { name: '使用前置中繼資料', desc: '使用前置設定筆記名稱、時間戳記、圖示和顏色' }, - frontmatterNameField: { + frontmatterNameFields: { name: '名稱欄位(多個)', desc: '逗號分隔的前置欄位列表。使用第一個非空值。回退到檔名。', placeholder: 'title, name' @@ -2474,7 +2522,7 @@ export const STRINGS_ZH_TW = { desc: '背景顏色的前置欄位。留空使用儲存在設定中的背景顏色。', placeholder: 'background' }, - frontmatterMigration: { + migrateIconsAndColorsFromSettings: { name: '從設定遷移圖示和顏色', desc: '儲存在設定中:{icons} 個圖示,{colors} 種顏色。', button: '遷移', @@ -2494,7 +2542,7 @@ export const STRINGS_ZH_TW = { desc: '修改時間戳記的前置欄位名稱。留空僅使用檔案系統日期。', placeholder: 'modified' }, - frontmatterDateFormat: { + frontmatterTimestampFormat: { name: '時間戳記格式', desc: '用於解析前置中時間戳記的格式。留空使用 ISO 8601 解析。', helpTooltip: '使用 Moment 格式', @@ -2507,12 +2555,12 @@ export const STRINGS_ZH_TW = { buttonText: '❤️ 贊助', coffeeButton: '☕️ 請我喝咖啡' }, - updateCheckOnStart: { + checkForNewVersionOnStart: { name: '啟動時檢查新版本', desc: '啟動時檢查新的外掛版本,當有可用更新時顯示通知。檢查最多每天一次。', status: '有新版本可用:{version}' }, - debugLogging: { + startupDebugLogging: { name: '啟動偵錯記錄', desc: '將啟動診斷寫入保存庫根目錄中含時間戳的 Markdown 檔案,並在啟動穩定後停止。該檔案可能會同步,且可能包含檔案路徑。' }, diff --git a/src/modals/NavRainbowSectionModal.ts b/src/modals/NavRainbowSectionModal.ts index 04cd5a942..39b8748f7 100644 --- a/src/modals/NavRainbowSectionModal.ts +++ b/src/modals/NavRainbowSectionModal.ts @@ -180,7 +180,7 @@ export class NavRainbowSectionModal extends Modal { if (this.section === 'recent') { return this.createSectionAccess({ - sectionLabel: strings.settings.items.navRainbowApplyToRecent.name, + sectionLabel: strings.settings.items.navRainbowApplyToRecentItems.name, getSection: settings => settings.recent, setSection: (settings, section) => ({ ...settings, recent: section }), defaultSection: NAV_RAINBOW_DEFAULTS.recent diff --git a/src/modals/SettingsTransferModal.ts b/src/modals/SettingsTransferModal.ts index 88cbc7f5c..86aa1ccf9 100644 --- a/src/modals/SettingsTransferModal.ts +++ b/src/modals/SettingsTransferModal.ts @@ -75,7 +75,7 @@ export class SettingsImportModal extends Modal { super(app); this.plugin = plugin; this.modalEl.addClass('nn-settings-transfer-modal'); - this.titleEl.setText(strings.settings.items.settingsTransfer.import.modalTitle); + this.titleEl.setText(strings.settings.items.importAndExportSettings.import.modalTitle); } onOpen(): void { @@ -97,11 +97,11 @@ export class SettingsImportModal extends Modal { }; new Setting(contentEl) - .setName(strings.settings.items.settingsTransfer.import.fileButtonName) - .setDesc(strings.settings.items.settingsTransfer.import.fileButtonDesc) + .setName(strings.settings.items.importAndExportSettings.import.fileButtonName) + .setDesc(strings.settings.items.importAndExportSettings.import.fileButtonDesc) .addButton(button => { fileButton = button; - button.setButtonText(strings.settings.items.settingsTransfer.import.fileButtonText).onClick(() => { + button.setButtonText(strings.settings.items.importAndExportSettings.import.fileButtonText).onClick(() => { if (isBusy) { return; } @@ -112,11 +112,11 @@ export class SettingsImportModal extends Modal { createEditorLabel( contentEl, - strings.settings.items.settingsTransfer.import.editorName, - strings.settings.items.settingsTransfer.import.editorDesc + strings.settings.items.importAndExportSettings.import.editorName, + strings.settings.items.importAndExportSettings.import.editorDesc ); - const editorEl = createEditor(contentEl, '', strings.settings.items.settingsTransfer.import.placeholder); + const editorEl = createEditor(contentEl, '', strings.settings.items.importAndExportSettings.import.placeholder); fileInputEl.addEventListener('change', () => { const file = fileInputEl.files?.[0]; @@ -132,7 +132,7 @@ export class SettingsImportModal extends Modal { } catch (error) { console.error('Failed to read settings import file', error); const message = getErrorMessage(error); - showNotice(strings.settings.items.settingsTransfer.import.fileReadError.replace('{message}', message), { + showNotice(strings.settings.items.importAndExportSettings.import.fileReadError.replace('{message}', message), { variant: 'warning' }); } finally { @@ -144,7 +144,7 @@ export class SettingsImportModal extends Modal { const buttonContainer = contentEl.createDiv('nn-button-container'); importButton = new ButtonComponent(buttonContainer); - importButton.setButtonText(strings.settings.items.settingsTransfer.import.confirmButtonText); + importButton.setButtonText(strings.settings.items.importAndExportSettings.import.confirmButtonText); importButton.setCta(); importButton.onClick(() => { if (isBusy) { @@ -157,7 +157,7 @@ export class SettingsImportModal extends Modal { } catch (error) { console.error('Failed to parse settings transfer', error); const message = getErrorMessage(error); - showNotice(strings.settings.items.settingsTransfer.import.errorNotice.replace('{message}', message), { + showNotice(strings.settings.items.importAndExportSettings.import.errorNotice.replace('{message}', message), { variant: 'warning' }); return; @@ -167,8 +167,8 @@ export class SettingsImportModal extends Modal { new ConfirmModal( this.app, - strings.settings.items.settingsTransfer.import.confirmTitle, - strings.settings.items.settingsTransfer.import.confirmMessage, + strings.settings.items.importAndExportSettings.import.confirmTitle, + strings.settings.items.importAndExportSettings.import.confirmMessage, async () => { setBusyState(true); try { @@ -179,9 +179,12 @@ export class SettingsImportModal extends Modal { } catch (error) { console.error('Failed to save settings transfer backup', error); const message = getErrorMessage(error); - showNotice(strings.settings.items.settingsTransfer.import.backupError.replace('{message}', message), { - variant: 'warning' - }); + showNotice( + strings.settings.items.importAndExportSettings.import.backupError.replace('{message}', message), + { + variant: 'warning' + } + ); return; } } @@ -190,26 +193,29 @@ export class SettingsImportModal extends Modal { persistSettingsImportBackupToRoot(shouldSaveBackup); showNotice( backupPath - ? strings.settings.items.settingsTransfer.import.successWithBackupNotice.replace('{path}', backupPath) - : strings.settings.items.settingsTransfer.import.successNotice + ? strings.settings.items.importAndExportSettings.import.successWithBackupNotice.replace( + '{path}', + backupPath + ) + : strings.settings.items.importAndExportSettings.import.successNotice ); this.close(); } catch (error) { console.error('Failed to import settings transfer', error); const message = getErrorMessage(error); - showNotice(strings.settings.items.settingsTransfer.import.errorNotice.replace('{message}', message), { + showNotice(strings.settings.items.importAndExportSettings.import.errorNotice.replace('{message}', message), { variant: 'warning' }); } finally { setBusyState(false); } }, - strings.settings.items.settingsTransfer.import.confirmButtonText, + strings.settings.items.importAndExportSettings.import.confirmButtonText, { buildContent: containerEl => { new Setting(containerEl) - .setName(strings.settings.items.settingsTransfer.import.backupToggleName) - .setDesc(strings.settings.items.settingsTransfer.import.backupToggleDesc) + .setName(strings.settings.items.importAndExportSettings.import.backupToggleName) + .setDesc(strings.settings.items.importAndExportSettings.import.backupToggleDesc) .addToggle(toggle => { toggle.setValue(shouldSaveBackup).onChange(value => { shouldSaveBackup = value; @@ -237,7 +243,7 @@ export class SettingsExportModal extends Modal { super(app); this.plugin = plugin; this.modalEl.addClass('nn-settings-transfer-modal'); - this.titleEl.setText(strings.settings.items.settingsTransfer.export.modalTitle); + this.titleEl.setText(strings.settings.items.importAndExportSettings.export.modalTitle); } onOpen(): void { @@ -246,25 +252,25 @@ export class SettingsExportModal extends Modal { createEditorLabel( contentEl, - strings.settings.items.settingsTransfer.export.editorName, - strings.settings.items.settingsTransfer.export.editorDesc + strings.settings.items.importAndExportSettings.export.editorName, + strings.settings.items.importAndExportSettings.export.editorDesc ); const editorEl = createEditor( contentEl, this.plugin.createSettingsTransferJson(), - strings.settings.items.settingsTransfer.export.placeholder + strings.settings.items.importAndExportSettings.export.placeholder ); const buttonContainer = contentEl.createDiv('nn-button-container'); const copyButton = new ButtonComponent(buttonContainer); - copyButton.setButtonText(strings.settings.items.settingsTransfer.export.copyButtonText); + copyButton.setButtonText(strings.settings.items.importAndExportSettings.export.copyButtonText); copyButton.onClick(() => { runAsyncAction(async () => { try { await navigator.clipboard.writeText(editorEl.value); - showNotice(strings.settings.items.settingsTransfer.export.copyNotice); + showNotice(strings.settings.items.importAndExportSettings.export.copyNotice); } catch (error) { console.error('Failed to copy settings transfer', error); showNotice(strings.common.clipboardWriteError, { variant: 'warning' }); @@ -273,16 +279,16 @@ export class SettingsExportModal extends Modal { }); const downloadButton = new ButtonComponent(buttonContainer); - downloadButton.setButtonText(strings.settings.items.settingsTransfer.export.downloadButtonText); + downloadButton.setButtonText(strings.settings.items.importAndExportSettings.export.downloadButtonText); downloadButton.setCta(); downloadButton.onClick(() => { try { downloadTransferFile(editorEl.value); - showNotice(strings.settings.items.settingsTransfer.export.downloadNotice); + showNotice(strings.settings.items.importAndExportSettings.export.downloadNotice); } catch (error) { console.error('Failed to download settings transfer', error); const message = getErrorMessage(error); - showNotice(strings.settings.items.settingsTransfer.export.downloadError.replace('{message}', message), { + showNotice(strings.settings.items.importAndExportSettings.export.downloadError.replace('{message}', message), { variant: 'warning' }); } diff --git a/src/modals/UXIconMapModal.ts b/src/modals/UXIconMapModal.ts index fbfaf41ea..23607dbb0 100644 --- a/src/modals/UXIconMapModal.ts +++ b/src/modals/UXIconMapModal.ts @@ -126,19 +126,19 @@ export class UXIconMapModal extends Modal { private resolveCategoryLabel(category: UXIconCategory): string { switch (category) { case 'navigationPane': - return strings.settings.items.startView.options.navigation; + return strings.settings.items.defaultStartupView.options.navigation; case 'folders': - return strings.settings.sections.folders; + return strings.navigationPane.folders; case 'tags': - return strings.settings.sections.tags; + return strings.navigationPane.tags; case 'properties': return strings.navigationPane.properties; case 'listPane': - return strings.settings.items.startView.options.files; + return strings.settings.items.defaultStartupView.options.listPane; case 'fileItems': return strings.modals.interfaceIcons.fileItemsSection; case 'calendar': - return strings.settings.sections.calendar; + return strings.navigationPane.calendar; default: return ''; } diff --git a/src/releaseNotes.ts b/src/releaseNotes.ts index 60245d5df..4e000ec79 100644 --- a/src/releaseNotes.ts +++ b/src/releaseNotes.ts @@ -108,11 +108,11 @@ export interface ReleaseNote { const RELEASE_NOTES: ReleaseNote[] = [ { version: '3.3.3', - date: '2026-08-08', + date: '2026-08-09', showOnUpdate: true, bannerUrl: true, new: [ - "You can now change the display of tags, properties, tasks, and word counts for each location! Maybe you want word counts only for a specific folder, or you don't want to show tasks in another folder. This is now possible! Just click the new ==Appearance== menu in the list pane (see screenshot above).", + "You can now **change the display of tags, properties, tasks, and word counts for each location!** Maybe you want word counts only for a specific folder, or you don't want to show tasks in another folder. This is now possible! Just click the new ==Appearance== menu in the list pane (see screenshot above).", "When I added the new task display in 3.3.1 I removed the unfinished task icon. Unfortunately this meant no way of showing unfinished tasks in compact mode. So I put it back, and made it better. You can now choose if you want the unfinished task icon to appear in only compact or in both display modes. You'll find it at File display > Icon > ==Unfinished task icon==. Default set to compact mode.", 'New setting: Calendar > ==Show days from other months==. You can now leave the days before and after the current month empty, so only the days of the month are shown. Only applies when calendar is showing a full month. Enabled by default.' ], diff --git a/src/settings.ts b/src/settings.ts index e1b86754d..ea937524e 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -34,12 +34,7 @@ import { createSettingGroupFactory } from './settings/settingGroups'; import { runAsyncAction } from './utils/async'; import { NOTEBOOK_NAVIGATOR_ICON_ID } from './constants/notebookNavigatorIcon'; import { SettingsDiagnosticsController } from './settings/SettingsDiagnosticsController'; -import { - SETTINGS_PAGE_DESCRIPTION_GETTERS, - SETTINGS_PAGE_GROUP_DEFINITIONS, - SETTINGS_PANE_DEFINITION_MAP, - type SettingsPaneId -} from './settings/SettingsPaneDefinitions'; +import { SETTINGS_PAGE_GROUP_DEFINITIONS, SETTINGS_PANE_DEFINITION_MAP, type SettingsPaneId } from './settings/SettingsPaneDefinitions'; import { applyAppearanceBehaviorControlValue, getAppearanceBehaviorControlValue, @@ -425,7 +420,7 @@ export class NotebookNavigatorSettingTab extends PluginSettingTab { const name = definition.getLabel(); const setting = addSetting(setting => { - setting.setName(name).setDesc(SETTINGS_PAGE_DESCRIPTION_GETTERS[tabId]()); + setting.setName(name).setDesc(definition.getDescription()); setting.addExtraButton(button => { button.setIcon('lucide-chevron-right').onClick(() => this.openLegacySettingsPage(tabId)); button.extraSettingsEl.setAttr('aria-label', name); @@ -603,7 +598,7 @@ export class NotebookNavigatorSettingTab extends PluginSettingTab { private createNativeSettingsPageDefinition(tabId: SettingsPaneId): SettingDefinitionPage { const definition = SETTINGS_PANE_DEFINITION_MAP.get(tabId); const name = definition?.getLabel() ?? tabId; - const desc = SETTINGS_PAGE_DESCRIPTION_GETTERS[tabId](); + const desc = definition?.getDescription() ?? ''; const definitionItems = definition?.createDefinitions?.(this.createTabContext(this.containerEl)); if (definitionItems) { let pageContainerEl: HTMLElement | null = null; diff --git a/src/settings/SettingsPaneDefinitions.ts b/src/settings/SettingsPaneDefinitions.ts index 976002f4d..9063d9d39 100644 --- a/src/settings/SettingsPaneDefinitions.ts +++ b/src/settings/SettingsPaneDefinitions.ts @@ -57,6 +57,7 @@ export interface SettingsPageGroupDefinition { export interface SettingsPaneDefinition { id: SettingsPaneId; getLabel: () => string; + getDescription: () => string; render: (context: SettingsTabContext) => void; createDefinitions?: (context: SettingsTabContext) => SettingDefinitionItem[]; } @@ -67,11 +68,11 @@ export const SETTINGS_PAGE_GROUP_DEFINITIONS: SettingsPageGroupDefinition[] = [ items: ['vault-filters', 'appearance-behavior', 'file-operations'] }, { - getHeading: () => strings.settings.pageGroups.navigationAndContent, + getHeading: () => strings.settings.pageGroups.navigationPane, items: ['navigation-pane', 'shortcuts', 'folders', 'tags-properties'] }, { - getHeading: () => strings.settings.pageGroups.notesAndLists, + getHeading: () => strings.settings.pageGroups.listPane, items: ['list-pane', 'frontmatter', 'notes'] }, { @@ -80,101 +81,102 @@ export const SETTINGS_PAGE_GROUP_DEFINITIONS: SettingsPageGroupDefinition[] = [ } ]; -export const SETTINGS_PAGE_DESCRIPTION_GETTERS: Record string> = { - general: () => strings.settings.pageDescriptions.general, - 'vault-filters': () => strings.settings.pageDescriptions.vaultFilters, - 'appearance-behavior': () => strings.settings.pageDescriptions.appearanceBehavior, - 'navigation-pane': () => strings.settings.pageDescriptions.navigationPane, - shortcuts: () => strings.settings.pageDescriptions.shortcuts, - calendar: () => strings.settings.pageDescriptions.calendar, - folders: () => strings.settings.pageDescriptions.foldersAndFolderNotes, - 'tags-properties': () => strings.settings.pageDescriptions.tagsProperties, - 'file-operations': () => strings.settings.pageDescriptions.fileOperations, - 'list-pane': () => strings.settings.pageDescriptions.listPane, - frontmatter: () => strings.settings.pageDescriptions.frontmatter, - notes: () => strings.settings.pageDescriptions.notes, - 'icon-packs': () => strings.settings.pageDescriptions.iconPacks, - advanced: () => strings.settings.pageDescriptions.advanced -}; - // Native pages use createDefinitions; legacy pages use render. const SETTINGS_PANE_DEFINITIONS: SettingsPaneDefinition[] = [ - { id: 'general', getLabel: () => strings.settings.sections.general, render: renderGeneralTab }, + { + id: 'general', + getLabel: () => strings.settings.index.label, + getDescription: () => strings.settings.index.description, + render: renderGeneralTab + }, { id: 'vault-filters', - getLabel: () => strings.settings.sections.vaultFilters, + getLabel: () => strings.settings.pages.displayFilters.label, + getDescription: () => strings.settings.pages.displayFilters.description, render: renderDisplayFiltersTab, createDefinitions: createDisplayFiltersSettingDefinitions }, { id: 'appearance-behavior', - getLabel: () => strings.settings.sections.appearanceBehavior, + getLabel: () => strings.settings.pages.appearanceAndBehavior.label, + getDescription: () => strings.settings.pages.appearanceAndBehavior.description, render: renderAppearanceBehaviorTab, createDefinitions: createAppearanceBehaviorSettingDefinitions }, { id: 'navigation-pane', - getLabel: () => strings.settings.sections.navigationPane, + getLabel: () => strings.settings.pages.navigationPane.label, + getDescription: () => strings.settings.pages.navigationPane.description, render: renderNavigationPaneTab, createDefinitions: createNavigationPaneSettingDefinitions }, { id: 'shortcuts', - getLabel: () => strings.settings.sections.shortcutsAndRecentFiles, + getLabel: () => strings.settings.pages.shortcutsAndRecentFiles.label, + getDescription: () => strings.settings.pages.shortcutsAndRecentFiles.description, render: renderShortcutsTab, createDefinitions: createShortcutsSettingDefinitions }, { id: 'folders', - getLabel: () => strings.settings.sections.foldersAndFolderNotes, + getLabel: () => strings.settings.pages.foldersAndFolderNotes.label, + getDescription: () => strings.settings.pages.foldersAndFolderNotes.description, render: renderFoldersAndFolderNotesTab, createDefinitions: createFoldersAndFolderNotesSettingDefinitions }, { id: 'tags-properties', - getLabel: () => strings.settings.sections.tagsAndProperties, + getLabel: () => strings.settings.pages.tagsAndProperties.label, + getDescription: () => strings.settings.pages.tagsAndProperties.description, render: renderTagsPropertiesTab, createDefinitions: createTagsPropertiesSettingDefinitions }, { id: 'list-pane', - getLabel: () => strings.settings.sections.listPane, + getLabel: () => strings.settings.pages.listPane.label, + getDescription: () => strings.settings.pages.listPane.description, render: renderListPaneTab, createDefinitions: createListPaneSettingDefinitions }, { id: 'file-operations', - getLabel: () => strings.settings.sections.fileOperations, + getLabel: () => strings.settings.pages.fileOperations.label, + getDescription: () => strings.settings.pages.fileOperations.description, render: renderFilesTab, createDefinitions: createFilesSettingDefinitions }, { id: 'frontmatter', - getLabel: () => strings.settings.groups.notes.frontmatter, + getLabel: () => strings.settings.pages.frontmatterFields.label, + getDescription: () => strings.settings.pages.frontmatterFields.description, render: renderFrontmatterTab, createDefinitions: createFrontmatterSettingDefinitions }, { id: 'notes', - getLabel: () => strings.settings.sections.notes, + getLabel: () => strings.settings.pages.fileDisplay.label, + getDescription: () => strings.settings.pages.fileDisplay.description, render: renderNotesTab, createDefinitions: createNotesSettingDefinitions }, { id: 'calendar', - getLabel: () => strings.settings.sections.calendar, + getLabel: () => strings.settings.pages.calendar.label, + getDescription: () => strings.settings.pages.calendar.description, render: renderCalendarTab, createDefinitions: createCalendarSettingDefinitions }, { id: 'icon-packs', - getLabel: () => strings.settings.sections.icons, + getLabel: () => strings.settings.pages.iconPacks.label, + getDescription: () => strings.settings.pages.iconPacks.description, render: renderIconPacksTab, createDefinitions: createIconPacksSettingDefinitions }, { id: 'advanced', - getLabel: () => strings.settings.sections.advanced, + getLabel: () => strings.settings.pages.advanced.label, + getDescription: () => strings.settings.pages.advanced.description, render: renderAdvancedTab, createDefinitions: createAdvancedSettingDefinitions } diff --git a/src/settings/syncModeToggle.ts b/src/settings/syncModeToggle.ts index facb75589..9b03fbe8b 100644 --- a/src/settings/syncModeToggle.ts +++ b/src/settings/syncModeToggle.ts @@ -51,7 +51,7 @@ export function addSettingSyncModeToggle(options: SettingSyncModeToggleOptions): const updateButtonState = () => { const isLocal = plugin.isLocal(settingId); button.setIcon(isLocal ? 'lucide-cloud-off' : 'lucide-cloud'); - const tooltip = isLocal ? strings.settings.syncMode.switchToSynced : strings.settings.syncMode.switchToLocal; + const tooltip = isLocal ? strings.settings.syncMode.enableSync : strings.settings.syncMode.disableSync; button.setTooltip(tooltip); button.extraSettingsEl.setAttr('aria-label', tooltip); diff --git a/src/settings/tabs/AdvancedTab.ts b/src/settings/tabs/AdvancedTab.ts index e9df6859c..67c917914 100644 --- a/src/settings/tabs/AdvancedTab.ts +++ b/src/settings/tabs/AdvancedTab.ts @@ -35,31 +35,34 @@ import { getNotSyncedSettingName } from '../syncModeToggle'; export function createAdvancedSettingDefinitions(context: SettingsTabContext): SettingDefinitionItem[] { const generalItems: NonNullable = [ createToggleDefinition('checkForUpdatesOnStart', { - name: strings.settings.items.updateCheckOnStart.name, - desc: strings.settings.items.updateCheckOnStart.desc + name: strings.settings.items.checkForNewVersionOnStart.name, + desc: strings.settings.items.checkForNewVersionOnStart.desc }), createRenderDefinition({ - name: getNotSyncedSettingName(strings.settings.items.debugLogging.name), - desc: strings.settings.items.debugLogging.desc, - aliases: [strings.settings.items.debugLogging.name], + name: getNotSyncedSettingName(strings.settings.items.startupDebugLogging.name), + desc: strings.settings.items.startupDebugLogging.desc, + aliases: [strings.settings.items.startupDebugLogging.name], render: setting => renderDebugLoggingSetting(setting, context) }), createRenderDefinition({ - name: strings.settings.items.settingsTransfer.name, - desc: strings.settings.items.settingsTransfer.desc, - aliases: [strings.settings.items.settingsTransfer.importButtonText, strings.settings.items.settingsTransfer.exportButtonText], + name: strings.settings.items.importAndExportSettings.name, + desc: strings.settings.items.importAndExportSettings.desc, + aliases: [ + strings.settings.items.importAndExportSettings.importButtonText, + strings.settings.items.importAndExportSettings.exportButtonText + ], render: setting => { const { plugin } = context; setting - .setName(strings.settings.items.settingsTransfer.name) - .setDesc(strings.settings.items.settingsTransfer.desc) + .setName(strings.settings.items.importAndExportSettings.name) + .setDesc(strings.settings.items.importAndExportSettings.desc) .addButton(button => - button.setButtonText(strings.settings.items.settingsTransfer.importButtonText).onClick(() => { + button.setButtonText(strings.settings.items.importAndExportSettings.importButtonText).onClick(() => { new SettingsImportModal(context.app, plugin).open(); }) ) .addButton(button => - button.setButtonText(strings.settings.items.settingsTransfer.exportButtonText).onClick(() => { + button.setButtonText(strings.settings.items.importAndExportSettings.exportButtonText).onClick(() => { new SettingsExportModal(context.app, plugin).open(); }) ); @@ -124,8 +127,8 @@ export function createAdvancedSettingDefinitions(context: SettingsTabContext): S return [ createGroupDefinition(undefined, generalItems), - createGroupDefinition(strings.settings.groups.advanced.maintenance, maintenanceItems), - createGroupDefinition(strings.settings.groups.advanced.resetSettings, resetItems) + createGroupDefinition(strings.settings.pages.advanced.groups.maintenance, maintenanceItems), + createGroupDefinition(strings.settings.pages.advanced.groups.resetSettings, resetItems) ]; } @@ -133,8 +136,8 @@ function renderDebugLoggingSetting(setting: Setting, context: SettingsTabContext const { plugin } = context; setting - .setName(getNotSyncedSettingName(strings.settings.items.debugLogging.name)) - .setDesc(strings.settings.items.debugLogging.desc) + .setName(getNotSyncedSettingName(strings.settings.items.startupDebugLogging.name)) + .setDesc(strings.settings.items.startupDebugLogging.desc) .addToggle(toggle => toggle.setValue(plugin.isDebugLoggingEnabled()).onChange(value => { plugin.setDebugLoggingEnabled(value); diff --git a/src/settings/tabs/AppearanceBehaviorTab.ts b/src/settings/tabs/AppearanceBehaviorTab.ts index e7bd5383a..0fea36f5a 100644 --- a/src/settings/tabs/AppearanceBehaviorTab.ts +++ b/src/settings/tabs/AppearanceBehaviorTab.ts @@ -97,8 +97,8 @@ function createBehaviorDefinitionGroup(context: SettingsTabContext): SettingDefi return createGroupDefinition(undefined, [ createToggleDefinition('createNewNotesInNewTab', { - name: strings.settings.items.createNewNotesInNewTab.name, - desc: strings.settings.items.createNewNotesInNewTab.desc + name: strings.settings.items.openNewNotesInNewTab.name, + desc: strings.settings.items.openNewNotesInNewTab.desc }), createToggleDefinition('autoRevealActiveFile', { name: strings.settings.items.autoRevealActiveNote.name, @@ -125,14 +125,14 @@ function createBehaviorDefinitionGroup(context: SettingsTabContext): SettingDefi function createStartupDefinitionGroup(context: SettingsTabContext): SettingDefinitionGroup { const { plugin } = context; - return createGroupDefinition(strings.settings.groups.general.startup, [ + return createGroupDefinition(strings.settings.pages.appearanceAndBehavior.groups.startup, [ createDropdownDefinition('startView', { - name: strings.settings.items.startView.name, - desc: strings.settings.items.startView.desc, - aliases: optionAliases(strings.settings.items.startView.options), + name: strings.settings.items.defaultStartupView.name, + desc: strings.settings.items.defaultStartupView.desc, + aliases: optionAliases(strings.settings.items.defaultStartupView.options), options: { - navigation: strings.settings.items.startView.options.navigation, - files: strings.settings.items.startView.options.files + navigation: strings.settings.items.defaultStartupView.options.navigation, + files: strings.settings.items.defaultStartupView.options.listPane } }), createRenderDefinition({ @@ -172,9 +172,9 @@ function createKeyboardNavigationDefinitionGroup(context: SettingsTabContext): S rename: strings.contextMenu.file.renameFile }; // Platform.isMacOS is also true on iOS/iPadOS devices, which use Cmd-based keyboards - const cmdCtrlStrings = Platform.isMacOS ? strings.settings.items.cmdEnterOpenContext : strings.settings.items.ctrlEnterOpenContext; + const cmdCtrlStrings = Platform.isMacOS ? strings.settings.items.cmdEnterAction : strings.settings.items.ctrlEnterAction; - return createGroupDefinition(strings.settings.groups.general.keyboardNavigation, [ + return createGroupDefinition(strings.settings.pages.appearanceAndBehavior.groups.keyboardNavigation, [ createDropdownDefinition('multiSelectModifier', { name: strings.settings.items.multiSelectModifier.name, desc: strings.settings.items.multiSelectModifier.desc, @@ -189,8 +189,8 @@ function createKeyboardNavigationDefinitionGroup(context: SettingsTabContext): S desc: strings.settings.items.enterToOpenFiles.desc }), createDropdownDefinition('shiftEnterOpenContext', { - name: strings.settings.items.shiftEnterOpenContext.name, - desc: strings.settings.items.shiftEnterOpenContext.desc, + name: strings.settings.items.shiftEnterAction.name, + desc: strings.settings.items.shiftEnterAction.desc, aliases: optionAliases(openContextOptions), options: openContextOptions, visible: () => plugin.settings.enterToOpenFiles @@ -208,13 +208,14 @@ function createKeyboardNavigationDefinitionGroup(context: SettingsTabContext): S function createMouseButtonsDefinitionGroup(): SettingDefinitionGroup { const mouseBackForwardOptions = strings.settings.items.mouseBackForwardAction.options; - return createGroupDefinition(strings.settings.groups.general.mouseButtons, [ + return createGroupDefinition(strings.settings.pages.appearanceAndBehavior.groups.mouseButtons, [ createDropdownDefinition('mouseBackForwardAction', { name: strings.settings.items.mouseBackForwardAction.name, desc: strings.settings.items.mouseBackForwardAction.desc, aliases: optionAliases(mouseBackForwardOptions), options: { - none: mouseBackForwardOptions.none, + // `none` is persisted when the plugin leaves the system action unchanged. + none: mouseBackForwardOptions.systemDefault, singlePaneSwitch: mouseBackForwardOptions.singlePaneSwitch, history: mouseBackForwardOptions.history } @@ -266,20 +267,20 @@ function createDualPaneDefinitions(context: SettingsTabContext): SettingDefiniti } }), createRenderDefinition({ - name: strings.settings.items.narrowSidebarLayout.name, - desc: strings.settings.items.narrowSidebarLayout.desc, - aliases: optionAliases(strings.settings.items.narrowSidebarLayout.options), + name: strings.settings.items.narrowSidebarBehavior.name, + desc: strings.settings.items.narrowSidebarBehavior.desc, + aliases: optionAliases(strings.settings.items.narrowSidebarBehavior.options), visible: () => plugin.getDualPaneOrientation() === 'horizontal', render: setting => { setting - .setName(strings.settings.items.narrowSidebarLayout.name) - .setDesc(strings.settings.items.narrowSidebarLayout.desc) + .setName(strings.settings.items.narrowSidebarBehavior.name) + .setDesc(strings.settings.items.narrowSidebarBehavior.desc) .addDropdown(dropdown => { dropdown .addOptions({ - none: strings.settings.items.narrowSidebarLayout.options.none, - singlePane: strings.settings.items.narrowSidebarLayout.options.singlePane, - vertical: strings.settings.items.narrowSidebarLayout.options.vertical + none: strings.settings.items.narrowSidebarBehavior.options.none, + singlePane: strings.settings.items.narrowSidebarBehavior.options.singlePane, + vertical: strings.settings.items.narrowSidebarBehavior.options.vertical }) .setValue(plugin.settings.narrowSidebarLayout) .onChange(value => { @@ -292,16 +293,16 @@ function createDualPaneDefinitions(context: SettingsTabContext): SettingDefiniti } }), createRenderDefinition({ - name: strings.settings.items.narrowSidebarTrigger.name, - desc: strings.settings.items.narrowSidebarTrigger.desc, - aliases: optionAliases(strings.settings.items.narrowSidebarTrigger.options), + name: strings.settings.items.narrowSidebarThresholdMode.name, + desc: strings.settings.items.narrowSidebarThresholdMode.desc, + aliases: optionAliases(strings.settings.items.narrowSidebarThresholdMode.options), visible: () => plugin.getDualPaneOrientation() === 'horizontal' && plugin.settings.narrowSidebarLayout !== 'none', render: setting => renderNarrowSidebarTriggerSetting(setting, context) }), createRenderDefinition({ - name: strings.settings.items.narrowSidebarCustomWidth.name, - desc: strings.settings.items.narrowSidebarCustomWidth.desc, - aliases: [NARROW_SIDEBAR_CUSTOM_WIDTH_DEFAULT.toString(), strings.settings.items.narrowSidebarCustomWidth.resetTooltip], + name: strings.settings.items.narrowSidebarThresholdWidth.name, + desc: strings.settings.items.narrowSidebarThresholdWidth.desc, + aliases: [NARROW_SIDEBAR_CUSTOM_WIDTH_DEFAULT.toString(), strings.settings.items.narrowSidebarThresholdWidth.resetTooltip], visible: () => plugin.getDualPaneOrientation() === 'horizontal' && plugin.settings.narrowSidebarLayout !== 'none' && @@ -314,16 +315,16 @@ function createDualPaneDefinitions(context: SettingsTabContext): SettingDefiniti function createDesktopAppearanceDefinitionGroup(context: SettingsTabContext): SettingDefinitionGroup { const { plugin } = context; - return createGroupDefinition(strings.settings.groups.general.desktopAppearance, [ + return createGroupDefinition(strings.settings.pages.appearanceAndBehavior.groups.desktopAppearance, [ ...createDualPaneDefinitions(context), createDropdownDefinition('desktopBackground', { - name: strings.settings.items.appearanceBackground.name, - desc: strings.settings.items.appearanceBackground.desc, - aliases: optionAliases(strings.settings.items.appearanceBackground.options), + name: strings.settings.items.paneBackgroundColor.name, + desc: strings.settings.items.paneBackgroundColor.desc, + aliases: optionAliases(strings.settings.items.paneBackgroundColor.options), options: { - separate: strings.settings.items.appearanceBackground.options.separate, - primary: strings.settings.items.appearanceBackground.options.primary, - secondary: strings.settings.items.appearanceBackground.options.secondary + separate: strings.settings.items.paneBackgroundColor.options.separate, + primary: strings.settings.items.paneBackgroundColor.options.listBackground, + secondary: strings.settings.items.paneBackgroundColor.options.navigationBackground } }), createToggleDefinition('showTooltips', { @@ -346,7 +347,7 @@ function createDesktopAppearanceDefinitionGroup(context: SettingsTabContext): Se function createMobileAppearanceDefinitionGroup(context: SettingsTabContext): SettingDefinitionGroup { const { plugin } = context; - return createGroupDefinition(strings.settings.groups.general.mobileAppearance, [ + return createGroupDefinition(strings.settings.pages.appearanceAndBehavior.groups.mobileAppearance, [ // Tablets support the dual pane layout, so they get the same pane settings as desktop ...(Platform.isTablet ? createDualPaneDefinitions(context) : []), // Floating toolbars only render with the phone chrome; tablets use the desktop headers @@ -354,12 +355,12 @@ function createMobileAppearanceDefinitionGroup(context: SettingsTabContext): Set ? [] : [ createRenderDefinition({ - name: strings.settings.items.useFloatingToolbars.name, - desc: strings.settings.items.useFloatingToolbars.desc, + name: strings.settings.items.useFloatingToolbarsOnIOS.name, + desc: strings.settings.items.useFloatingToolbarsOnIOS.desc, render: setting => { setting - .setName(strings.settings.items.useFloatingToolbars.name) - .setDesc(strings.settings.items.useFloatingToolbars.desc) + .setName(strings.settings.items.useFloatingToolbarsOnIOS.name) + .setDesc(strings.settings.items.useFloatingToolbarsOnIOS.desc) .addToggle(toggle => toggle.setValue(plugin.settings.useFloatingToolbars).onChange(value => { plugin.setUseFloatingToolbars(value); @@ -373,16 +374,16 @@ function createMobileAppearanceDefinitionGroup(context: SettingsTabContext): Set } function createViewDefinitionGroup(context: SettingsTabContext): SettingDefinitionGroup { - return createGroupDefinition(strings.settings.groups.general.view, [ + return createGroupDefinition(strings.settings.pages.appearanceAndBehavior.groups.appearance, [ createRenderDefinition({ - name: strings.settings.items.appearanceScale.name, - desc: strings.settings.items.appearanceScale.desc, + name: strings.settings.items.zoomLevel.name, + desc: strings.settings.items.zoomLevel.desc, render: setting => renderUIScaleSetting(setting, context) }), createRenderDefinition({ - name: strings.settings.items.paneTransitionDuration.name, - desc: strings.settings.items.paneTransitionDuration.desc, - aliases: [strings.settings.items.paneTransitionDuration.resetTooltip], + name: strings.settings.items.singlePaneAnimation.name, + desc: strings.settings.items.singlePaneAnimation.desc, + aliases: [strings.settings.items.singlePaneAnimation.resetTooltip], render: setting => renderPaneTransitionSetting(setting, context) }), createToggleDefinition('showInfoButtons', { @@ -395,7 +396,7 @@ function createViewDefinitionGroup(context: SettingsTabContext): SettingDefiniti function createIconDefinitionGroup(context: SettingsTabContext): SettingDefinitionGroup { const { plugin } = context; - return createGroupDefinition(strings.settings.groups.general.icons, [ + return createGroupDefinition(strings.settings.pages.appearanceAndBehavior.groups.icons, [ createRenderDefinition({ name: strings.settings.items.interfaceIcons.name, desc: strings.settings.items.interfaceIcons.desc, @@ -427,14 +428,14 @@ function createIconDefinitionGroup(context: SettingsTabContext): SettingDefiniti } }), createToggleDefinition('colorIconOnly', { - name: strings.settings.items.showIconsColorOnly.name, - desc: strings.settings.items.showIconsColorOnly.desc + name: strings.settings.items.applyColorToIconsOnly.name, + desc: strings.settings.items.applyColorToIconsOnly.desc }) ]); } function createFormattingDefinitionGroup(context: SettingsTabContext): SettingDefinitionGroup { - return createGroupDefinition(strings.settings.groups.general.formatting, [ + return createGroupDefinition(strings.settings.pages.appearanceAndBehavior.groups.formatting, [ createRenderDefinition({ name: strings.settings.items.dateFormat.name, desc: strings.settings.items.dateFormat.desc, @@ -455,8 +456,8 @@ function renderUIScaleSetting(setting: Setting, context: SettingsTabContext): vo const initialUIScalePercent = scaleToPercent(plugin.getUIScale()); renderSliderSetting(setting, { - name: strings.settings.items.appearanceScale.name, - desc: strings.settings.items.appearanceScale.desc, + name: strings.settings.items.zoomLevel.name, + desc: strings.settings.items.zoomLevel.desc, value: initialUIScalePercent, defaultValue: scaleToPercent(DEFAULT_UI_SCALE), min: MIN_UI_SCALE_PERCENT, @@ -475,14 +476,14 @@ function renderPaneTransitionSetting(setting: Setting, context: SettingsTabConte const { plugin } = context; renderSliderSetting(setting, { - name: strings.settings.items.paneTransitionDuration.name, - desc: strings.settings.items.paneTransitionDuration.desc, + name: strings.settings.items.singlePaneAnimation.name, + desc: strings.settings.items.singlePaneAnimation.desc, value: plugin.settings.paneTransitionDuration, defaultValue: DEFAULT_SETTINGS.paneTransitionDuration, min: MIN_PANE_TRANSITION_DURATION_MS, max: MAX_PANE_TRANSITION_DURATION_MS, step: PANE_TRANSITION_DURATION_STEP_MS, - resetTooltip: strings.settings.items.paneTransitionDuration.resetTooltip, + resetTooltip: strings.settings.items.singlePaneAnimation.resetTooltip, formatValue: value => `${value}ms`, onChange: value => { plugin.setPaneTransitionDuration(value); @@ -496,13 +497,13 @@ function renderNarrowSidebarTriggerSetting(setting: Setting, context: SettingsTa const { plugin } = context; setting - .setName(strings.settings.items.narrowSidebarTrigger.name) - .setDesc(strings.settings.items.narrowSidebarTrigger.desc) + .setName(strings.settings.items.narrowSidebarThresholdMode.name) + .setDesc(strings.settings.items.narrowSidebarThresholdMode.desc) .addDropdown(dropdown => { dropdown .addOptions({ - fitPanes: strings.settings.items.narrowSidebarTrigger.options.fitPanes, - customWidth: strings.settings.items.narrowSidebarTrigger.options.customWidth + fitPanes: strings.settings.items.narrowSidebarThresholdMode.options.fitPanes, + customWidth: strings.settings.items.narrowSidebarThresholdMode.options.customWidth }) .setValue(plugin.settings.narrowSidebarTriggerMode) .onChange(value => { @@ -518,14 +519,14 @@ function renderNarrowSidebarCustomWidthSetting(setting: Setting, context: Settin const { plugin } = context; renderSliderSetting(setting, { - name: strings.settings.items.narrowSidebarCustomWidth.name, - desc: strings.settings.items.narrowSidebarCustomWidth.desc, + name: strings.settings.items.narrowSidebarThresholdWidth.name, + desc: strings.settings.items.narrowSidebarThresholdWidth.desc, value: plugin.settings.narrowSidebarCustomWidth, defaultValue: NARROW_SIDEBAR_CUSTOM_WIDTH_DEFAULT, min: NARROW_SIDEBAR_CUSTOM_WIDTH_MIN, max: NARROW_SIDEBAR_CUSTOM_WIDTH_MAX, step: NARROW_SIDEBAR_CUSTOM_WIDTH_STEP, - resetTooltip: strings.settings.items.narrowSidebarCustomWidth.resetTooltip, + resetTooltip: strings.settings.items.narrowSidebarThresholdWidth.resetTooltip, formatValue: formatPixelSliderValue, onChange: value => { plugin.setNarrowSidebarCustomWidth(value); diff --git a/src/settings/tabs/CalendarCustomPatternSection.ts b/src/settings/tabs/CalendarCustomPatternSection.ts index fef6ab9f8..e6f8273d6 100644 --- a/src/settings/tabs/CalendarCustomPatternSection.ts +++ b/src/settings/tabs/CalendarCustomPatternSection.ts @@ -142,53 +142,53 @@ export function createCalendarCustomPatternSettingDefinitions( renderers: CalendarCustomPatternRenderers, visible: () => boolean ): SettingDefinitionRender[] { - const templateAlias = strings.settings.items.calendarTemplateFile.current.replace('{name}', '').trim(); + const templateAlias = strings.settings.items.periodicNoteTemplateFile.current.replace('{name}', '').trim(); return [ createRenderDefinition({ - name: strings.settings.items.calendarCustomRootFolder.name, - desc: strings.settings.items.calendarCustomRootFolder.desc, - aliases: [strings.settings.items.calendarCustomRootFolder.placeholder], + name: strings.settings.items.periodicNotesRootFolder.name, + desc: strings.settings.items.periodicNotesRootFolder.desc, + aliases: [strings.settings.items.periodicNotesRootFolder.placeholder], visible, render: setting => renderers.renderRootFolderSetting(setting) }), createRenderDefinition({ - name: strings.settings.items.calendarCustomFilePattern.name, - desc: strings.settings.items.calendarCustomFilePattern.desc, + name: strings.settings.items.calendarDailyNotePattern.name, + desc: strings.settings.items.calendarDailyNotePattern.desc, aliases: [ - strings.settings.items.calendarCustomFilePattern.placeholder, - strings.settings.items.calendarCustomFilePattern.momentLinkText, + strings.settings.items.calendarDailyNotePattern.placeholder, + strings.settings.items.calendarPeriodicNotePatterns.momentLinkText, templateAlias ], visible, render: setting => renderers.renderDailyPatternSetting(setting) }), createRenderDefinition({ - name: strings.settings.items.calendarCustomWeekPattern.name, + name: strings.settings.items.calendarWeeklyNotePattern.name, aliases: [DEFAULT_CALENDAR_CUSTOM_WEEK_PATTERN, templateAlias], visible, render: setting => renderers.renderWeeklyPatternSetting(setting) }), createRenderDefinition({ - name: strings.settings.items.calendarCustomMonthPattern.name, + name: strings.settings.items.calendarMonthlyNotePattern.name, aliases: [DEFAULT_CALENDAR_CUSTOM_MONTH_PATTERN, templateAlias], visible, render: setting => renderers.renderMonthlyPatternSetting(setting) }), createRenderDefinition({ - name: strings.settings.items.calendarCustomQuarterPattern.name, + name: strings.settings.items.calendarQuarterlyNotePattern.name, aliases: [DEFAULT_CALENDAR_CUSTOM_QUARTER_PATTERN, templateAlias], visible, render: setting => renderers.renderQuarterlyPatternSetting(setting) }), createRenderDefinition({ - name: strings.settings.items.calendarCustomYearPattern.name, + name: strings.settings.items.calendarYearlyNotePattern.name, aliases: [DEFAULT_CALENDAR_CUSTOM_YEAR_PATTERN, templateAlias], visible, render: setting => renderers.renderYearlyPatternSetting(setting) }), createRenderDefinition({ - name: strings.settings.items.calendarCustomFilePattern.momentLinkText, + name: strings.settings.items.calendarPeriodicNotePatterns.momentLinkText, searchable: false, visible, render: setting => renderers.renderPatternInfoSetting(setting) @@ -225,9 +225,9 @@ export function createCalendarCustomPatternRenderers(options: CalendarCustomPatt const renderRootFolderSetting = (setting: Setting): (() => void) => { configureDebouncedTextSetting( setting, - strings.settings.items.calendarCustomRootFolder.name, - strings.settings.items.calendarCustomRootFolder.desc, - strings.settings.items.calendarCustomRootFolder.placeholder, + strings.settings.items.periodicNotesRootFolder.name, + strings.settings.items.periodicNotesRootFolder.desc, + strings.settings.items.periodicNotesRootFolder.placeholder, () => getActiveProfile().periodicNotesFolder, value => { getActiveProfile().periodicNotesFolder = normalizeCalendarCustomRootFolder(value); @@ -317,8 +317,8 @@ export function createCalendarCustomPatternRenderers(options: CalendarCustomPatt const renderDailyPatternSetting = (setting: Setting): (() => void) => { const target = createCalendarCustomPatternSetting(setting, { - name: strings.settings.items.calendarCustomFilePattern.name, - placeholder: strings.settings.items.calendarCustomFilePattern.placeholder, + name: strings.settings.items.calendarDailyNotePattern.name, + placeholder: strings.settings.items.calendarDailyNotePattern.placeholder, getValue: () => normalizeCalendarCustomFilePattern(plugin.settings.calendarCustomFilePattern), setValue: value => { plugin.settings.calendarCustomFilePattern = normalizeCalendarCustomFilePattern(value); @@ -346,7 +346,7 @@ export function createCalendarCustomPatternRenderers(options: CalendarCustomPatt const renderWeeklyPatternSetting = (setting: Setting): (() => void) => { const target = createCalendarCustomPatternSetting(setting, { - name: strings.settings.items.calendarCustomWeekPattern.name, + name: strings.settings.items.calendarWeeklyNotePattern.name, placeholder: DEFAULT_CALENDAR_CUSTOM_WEEK_PATTERN, getValue: () => normalizeCalendarCustomFilePattern(plugin.settings.calendarCustomWeekPattern, ''), setValue: value => { @@ -379,7 +379,7 @@ export function createCalendarCustomPatternRenderers(options: CalendarCustomPatt const renderMonthlyPatternSetting = (setting: Setting): (() => void) => { const target = createCalendarCustomPatternSetting(setting, { - name: strings.settings.items.calendarCustomMonthPattern.name, + name: strings.settings.items.calendarMonthlyNotePattern.name, placeholder: DEFAULT_CALENDAR_CUSTOM_MONTH_PATTERN, getValue: () => normalizeCalendarCustomFilePattern(plugin.settings.calendarCustomMonthPattern, ''), setValue: value => { @@ -408,7 +408,7 @@ export function createCalendarCustomPatternRenderers(options: CalendarCustomPatt const renderQuarterlyPatternSetting = (setting: Setting): (() => void) => { const target = createCalendarCustomPatternSetting(setting, { - name: strings.settings.items.calendarCustomQuarterPattern.name, + name: strings.settings.items.calendarQuarterlyNotePattern.name, placeholder: DEFAULT_CALENDAR_CUSTOM_QUARTER_PATTERN, getValue: () => normalizeCalendarCustomFilePattern(plugin.settings.calendarCustomQuarterPattern, ''), setValue: value => { @@ -437,7 +437,7 @@ export function createCalendarCustomPatternRenderers(options: CalendarCustomPatt const renderYearlyPatternSetting = (setting: Setting): (() => void) => { const target = createCalendarCustomPatternSetting(setting, { - name: strings.settings.items.calendarCustomYearPattern.name, + name: strings.settings.items.calendarYearlyNotePattern.name, placeholder: DEFAULT_CALENDAR_CUSTOM_YEAR_PATTERN, getValue: () => normalizeCalendarCustomFilePattern(plugin.settings.calendarCustomYearPattern, ''), setValue: value => { @@ -469,26 +469,26 @@ export function createCalendarCustomPatternRenderers(options: CalendarCustomPatt setting.settingEl.addClass('nn-setting-info-container'); setting.descEl.empty(); const description = createInlineExternalLinkText({ - prefix: strings.settings.items.calendarCustomFilePattern.momentDescPrefix, - link: { text: strings.settings.items.calendarCustomFilePattern.momentLinkText, href: MOMENT_FORMAT_DOCS_URL }, - suffix: strings.settings.items.calendarCustomFilePattern.momentDescSuffix + prefix: strings.settings.items.calendarPeriodicNotePatterns.momentDescPrefix, + link: { text: strings.settings.items.calendarPeriodicNotePatterns.momentLinkText, href: MOMENT_FORMAT_DOCS_URL }, + suffix: strings.settings.items.calendarPeriodicNotePatterns.momentDescSuffix }); const templaterSupportText = getTemplaterCreateNoteFromTemplate(context.app) - ? strings.settings.items.calendarCustomFilePattern.templaterSupportInstalled - : strings.settings.items.calendarCustomFilePattern.templaterSupportMissing; + ? strings.settings.items.templaterSupport.installed + : strings.settings.items.templaterSupport.missing; // Built-in formats such as {{date}} are only applied when daily notes come from the Daily Notes core plugin, // so this section leaves them literally. The setting name and option label are substituted from the dropdown // strings so the notice keeps matching the control it refers to in every locale. - const tokenNoticeText = strings.settings.items.calendarCustomFilePattern.templateTokenNotice - .replace('{source}', strings.settings.items.calendarIntegrationMode.name) - .replace('{option}', strings.settings.items.calendarIntegrationMode.options.dailyNotes); + const tokenNoticeText = strings.settings.items.calendarPeriodicNotePatterns.templateTokenNotice + .replace('{source}', strings.settings.items.dailyNoteSource.name) + .replace('{option}', strings.settings.items.dailyNoteSource.options.dailyNotes); description.append( createEl('br'), createEl('br'), createEl('strong', { text: templaterSupportText }), createEl('br'), createEl('br'), - createEl('strong', { text: strings.settings.items.calendarCustomFilePattern.templateTokenNoticeLabel }), + createEl('strong', { text: strings.settings.items.calendarPeriodicNotePatterns.templateTokenNoticeLabel }), ` ${tokenNoticeText}` ); setting.descEl.append(description); @@ -504,14 +504,14 @@ export function createCalendarCustomPatternRenderers(options: CalendarCustomPatt } const templateName = templatePath ? getTemplateFileName(templatePath) : '-'; - target.templateTextEl.setText(strings.settings.items.calendarTemplateFile.current.replace('{name}', templateName)); + target.templateTextEl.setText(strings.settings.items.periodicNoteTemplateFile.current.replace('{name}', templateName)); setElementVisible(target.templateEl, true); }); }; const renderCalendarCustomPatternPreviews = (): void => { const momentApi = getMomentApi(); - const exampleTemplate = strings.settings.items.calendarCustomFilePattern.example; + const exampleTemplate = strings.settings.items.calendarPeriodicNotePatterns.example; const clearExamples = (): void => { getPatternTargets().forEach(target => setExampleText(target, '')); @@ -632,8 +632,8 @@ export function createCalendarCustomPatternRenderers(options: CalendarCustomPatt setElementTextIfPresent( calendarCustomWeekPatternWarningEl, doesCalendarCustomWeekPatternMixWeekTokenTypes(weekCustomPattern) - ? strings.settings.items.calendarCustomWeekPattern.mixedWeekTokensWarning - : strings.settings.items.calendarCustomWeekPattern.weekPathMismatchWarning + ? strings.settings.items.calendarWeeklyNotePattern.mixedWeekTokensWarning + : strings.settings.items.calendarWeeklyNotePattern.weekPathMismatchWarning ); setElementVisibleIfPresent(calendarLocaleWarningEl, true); setElementVisibleIfPresent(calendarCustomWeekPatternWarningEl, true); @@ -664,7 +664,7 @@ export function createCalendarCustomPatternRenderers(options: CalendarCustomPatt const showDailyError = !isCalendarCustomDatePatternValid(dailyCustomPattern, momentApi); setElementTextIfPresent( calendarCustomFilePatternErrorEl, - showDailyError ? strings.settings.items.calendarCustomFilePattern.parsingError : '' + showDailyError ? strings.settings.items.calendarDailyNotePattern.parsingError : '' ); setElementVisibleIfPresent(calendarCustomFilePatternErrorEl, showDailyError); } @@ -675,7 +675,7 @@ export function createCalendarCustomPatternRenderers(options: CalendarCustomPatt const showWeekError = weekPatternRaw.trim() !== '' && !isCalendarCustomWeekPatternValid(weekCustomPattern, momentApi); setElementTextIfPresent( calendarCustomWeekPatternErrorEl, - showWeekError ? strings.settings.items.calendarCustomWeekPattern.parsingError : '' + showWeekError ? strings.settings.items.calendarWeeklyNotePattern.parsingError : '' ); setElementVisibleIfPresent(calendarCustomWeekPatternErrorEl, showWeekError); } @@ -686,7 +686,7 @@ export function createCalendarCustomPatternRenderers(options: CalendarCustomPatt const showMonthError = monthPatternRaw.trim() !== '' && !isCalendarCustomMonthPatternValid(monthCustomPattern, momentApi); setElementTextIfPresent( calendarCustomMonthPatternErrorEl, - showMonthError ? strings.settings.items.calendarCustomMonthPattern.parsingError : '' + showMonthError ? strings.settings.items.calendarMonthlyNotePattern.parsingError : '' ); setElementVisibleIfPresent(calendarCustomMonthPatternErrorEl, showMonthError); } @@ -698,7 +698,7 @@ export function createCalendarCustomPatternRenderers(options: CalendarCustomPatt quarterPatternRaw.trim() !== '' && !isCalendarCustomQuarterPatternValid(quarterCustomPattern, momentApi); setElementTextIfPresent( calendarCustomQuarterPatternErrorEl, - showQuarterError ? strings.settings.items.calendarCustomQuarterPattern.parsingError : '' + showQuarterError ? strings.settings.items.calendarQuarterlyNotePattern.parsingError : '' ); setElementVisibleIfPresent(calendarCustomQuarterPatternErrorEl, showQuarterError); } @@ -709,7 +709,7 @@ export function createCalendarCustomPatternRenderers(options: CalendarCustomPatt const showYearError = yearPatternRaw.trim() !== '' && !isCalendarCustomYearPatternValid(yearCustomPattern, momentApi); setElementTextIfPresent( calendarCustomYearPatternErrorEl, - showYearError ? strings.settings.items.calendarCustomYearPattern.parsingError : '' + showYearError ? strings.settings.items.calendarYearlyNotePattern.parsingError : '' ); setElementVisibleIfPresent(calendarCustomYearPatternErrorEl, showYearError); } diff --git a/src/settings/tabs/CalendarDisplaySection.ts b/src/settings/tabs/CalendarDisplaySection.ts index 498661051..c1e907722 100644 --- a/src/settings/tabs/CalendarDisplaySection.ts +++ b/src/settings/tabs/CalendarDisplaySection.ts @@ -51,7 +51,7 @@ function parseCalendarWeeksToShow(value: string): CalendarWeeksToShow | null { } function formatCalendarWeeksOption(count: number): string { - return strings.settings.items.calendarWeeksToShow.options.weeksCount.replace('{count}', count.toString()); + return strings.settings.items.calendarLeftSidebarWeeksToShow.options.weeksCount.replace('{count}', count.toString()); } export function renderCalendarDisplaySections( @@ -65,7 +65,7 @@ export function renderCalendarDisplaySections( topGroup .addSetting(setting => { - setting.setName(strings.settings.items.calendarEnabled.name).setDesc(strings.settings.items.calendarEnabled.desc); + setting.setName(strings.settings.items.enableCalendar.name).setDesc(strings.settings.items.enableCalendar.desc); }) .addToggle(toggle => toggle.setValue(plugin.settings.calendarEnabled).onChange(async value => { @@ -120,7 +120,7 @@ export function renderCalendarDisplaySections( }) ); - const appearanceGroup = createGroup(strings.settings.groups.navigation.appearance); + const appearanceGroup = createGroup(strings.settings.pages.calendar.groups.appearance); const momentApi = getMomentApi(); const localeOptions = momentApi ? [...momentApi.locales()].sort((a, b) => a.localeCompare(b)) : []; const systemLocale = typeof navigator !== 'undefined' ? (navigator.language ?? '').toLowerCase() : ''; @@ -174,13 +174,13 @@ export function renderCalendarDisplaySections( appearanceGroup .addSetting(setting => { setting - .setName(strings.settings.items.calendarMonthHeadingFormat.name) - .setDesc(strings.settings.items.calendarMonthHeadingFormat.desc); + .setName(strings.settings.items.calendarMonthNameFormat.name) + .setDesc(strings.settings.items.calendarMonthNameFormat.desc); }) .addDropdown((dropdown: DropdownComponent) => { dropdown - .addOption('full', strings.settings.items.calendarMonthHeadingFormat.options.full) - .addOption('short', strings.settings.items.calendarMonthHeadingFormat.options.short) + .addOption('full', strings.settings.items.calendarMonthNameFormat.options.full) + .addOption('short', strings.settings.items.calendarMonthNameFormat.options.short) .setValue(plugin.settings.calendarMonthHeadingFormat) .onChange(async value => { if (!isCalendarMonthHeadingFormat(value)) { @@ -262,15 +262,17 @@ export function renderCalendarDisplaySections( }) ); - const leftSidebarGroup = createGroup(strings.settings.groups.navigation.leftSidebar); + const leftSidebarGroup = createGroup(strings.settings.pages.calendar.groups.leftSidebar); const calendarLeftPlacementSetting = leftSidebarGroup.addSetting(setting => { - setting.setName(strings.settings.items.calendarLeftPlacement.name).setDesc(strings.settings.items.calendarLeftPlacement.desc); + setting + .setName(strings.settings.items.calendarSinglePanePlacement.name) + .setDesc(strings.settings.items.calendarSinglePanePlacement.desc); }); calendarLeftPlacementSetting.addDropdown((dropdown: DropdownComponent) => { dropdown - .addOption('below', strings.settings.items.calendarLeftPlacement.options.below) - .addOption('navigation', strings.settings.items.calendarLeftPlacement.options.navigationPane) + .addOption('below', strings.settings.items.calendarSinglePanePlacement.options.belowPanes) + .addOption('navigation', strings.settings.items.calendarSinglePanePlacement.options.navigationPane) .setValue(plugin.settings.calendarLeftPlacement) .onChange(value => { if (!isCalendarLeftPlacement(value)) { @@ -284,15 +286,17 @@ export function renderCalendarDisplaySections( addSettingSyncModeToggle({ setting: calendarLeftPlacementSetting, plugin, settingId: 'calendarLeftPlacement' }); const calendarWeeksToShowSetting = leftSidebarGroup.addSetting(setting => { - setting.setName(strings.settings.items.calendarWeeksToShow.name).setDesc(strings.settings.items.calendarWeeksToShow.desc); + setting + .setName(strings.settings.items.calendarLeftSidebarWeeksToShow.name) + .setDesc(strings.settings.items.calendarLeftSidebarWeeksToShow.desc); }); calendarWeeksToShowSetting.addDropdown((dropdown: DropdownComponent) => { - dropdown.addOption('1', strings.settings.items.calendarWeeksToShow.options.oneWeek); + dropdown.addOption('1', strings.settings.items.calendarLeftSidebarWeeksToShow.options.oneWeek); for (let count = 2; count <= 5; count++) { dropdown.addOption(String(count), formatCalendarWeeksOption(count)); } - dropdown.addOption('6', strings.settings.items.calendarWeeksToShow.options.fullMonth); + dropdown.addOption('6', strings.settings.items.calendarLeftSidebarWeeksToShow.options.fullMonth); dropdown.setValue(String(plugin.settings.calendarWeeksToShow)).onChange(value => { const parsed = parseCalendarWeeksToShow(value); @@ -306,7 +310,7 @@ export function renderCalendarDisplaySections( addSettingSyncModeToggle({ setting: calendarWeeksToShowSetting, plugin, settingId: 'calendarWeeksToShow' }); - const rightSidebarGroup = createGroup(strings.settings.items.calendarPlacement.options.rightSidebar); + const rightSidebarGroup = createGroup(strings.settings.pages.calendar.groups.rightSidebar); rightSidebarGroup .addSetting(setting => { diff --git a/src/settings/tabs/CalendarIntegrationSection.ts b/src/settings/tabs/CalendarIntegrationSection.ts index 100d1ad93..c3ef9a1d1 100644 --- a/src/settings/tabs/CalendarIntegrationSection.ts +++ b/src/settings/tabs/CalendarIntegrationSection.ts @@ -86,19 +86,19 @@ function renderDailyNotesInfoSetting(setting: Setting): void { setting.setName('').setDesc(''); setting.settingEl.addClass('nn-setting-info-container'); setting.descEl.empty(); - setting.descEl.createDiv({ text: strings.settings.items.calendarIntegrationMode.info.dailyNotes }); + setting.descEl.createDiv({ text: strings.settings.items.dailyNoteSource.info.dailyNotes }); } function renderCalendarIntegrationModeSetting(setting: Setting, context: SettingsTabContext, onChange: () => void): void { const { plugin } = context; setting - .setName(strings.settings.items.calendarIntegrationMode.name) - .setDesc(strings.settings.items.calendarIntegrationMode.desc) + .setName(strings.settings.items.dailyNoteSource.name) + .setDesc(strings.settings.items.dailyNoteSource.desc) .addDropdown(dropdown => dropdown - .addOption('daily-notes', strings.settings.items.calendarIntegrationMode.options.dailyNotes) - .addOption('notebook-navigator', strings.settings.items.calendarIntegrationMode.options.notebookNavigator) + .addOption('daily-notes', strings.settings.items.dailyNoteSource.options.dailyNotes) + .addOption('notebook-navigator', strings.settings.items.dailyNoteSource.options.notebookNavigator) .setValue(plugin.settings.calendarIntegrationMode) .onChange(async value => { if (value !== 'daily-notes' && value !== 'notebook-navigator') { @@ -202,11 +202,11 @@ export function createCalendarIntegrationSettingDefinitions( }; return [ - createGroupDefinition(strings.settings.groups.navigation.calendarIntegration, [ + createGroupDefinition(strings.settings.pages.calendar.groups.calendarIntegration, [ createRenderDefinition({ - name: strings.settings.items.calendarIntegrationMode.name, - desc: strings.settings.items.calendarIntegrationMode.desc, - aliases: Object.values(strings.settings.items.calendarIntegrationMode.options), + name: strings.settings.items.dailyNoteSource.name, + desc: strings.settings.items.dailyNoteSource.desc, + aliases: Object.values(strings.settings.items.dailyNoteSource.options), render: setting => { renderCalendarIntegrationModeSetting(setting, context, refreshCalendarIntegrationDomState); context.registerSettingsUpdateListener('calendar-tab-calendar-integration', refreshCalendarIntegrationDomState); @@ -214,7 +214,7 @@ export function createCalendarIntegrationSettingDefinitions( } }), createRenderDefinition({ - name: strings.settings.items.calendarIntegrationMode.info.dailyNotes, + name: strings.settings.items.dailyNoteSource.info.dailyNotes, searchable: false, visible: () => plugin.settings.calendarIntegrationMode === 'daily-notes', render: setting => renderDailyNotesInfoSetting(setting) @@ -247,7 +247,7 @@ export function renderCalendarIntegrationSection( const getActiveProfile = () => getActiveVaultProfile(plugin.settings); const resolveSelectedCalendarLocales = createSelectedCalendarLocalesResolver(context); - const calendarIntegrationGroup = createGroup(strings.settings.groups.navigation.calendarIntegration); + const calendarIntegrationGroup = createGroup(strings.settings.pages.calendar.groups.calendarIntegration); let renderCalendarIntegrationVisibility = (): void => {}; const calendarIntegrationSetting = calendarIntegrationGroup.addSetting(setting => { diff --git a/src/settings/tabs/CalendarTab.ts b/src/settings/tabs/CalendarTab.ts index 6aac9ceeb..662804e91 100644 --- a/src/settings/tabs/CalendarTab.ts +++ b/src/settings/tabs/CalendarTab.ts @@ -35,8 +35,8 @@ export function createCalendarSettingDefinitions(context: SettingsTabContext): S return [ createGroupDefinition(undefined, [ createToggleDefinition('calendarEnabled', { - name: strings.settings.items.calendarEnabled.name, - desc: strings.settings.items.calendarEnabled.desc + name: strings.settings.items.enableCalendar.name, + desc: strings.settings.items.enableCalendar.desc }), createRenderDefinition({ name: strings.settings.items.calendarPlacement.name, @@ -53,7 +53,7 @@ export function createCalendarSettingDefinitions(context: SettingsTabContext): S desc: strings.settings.items.calendarShowHiddenItems.desc }) ]), - createGroupDefinition(strings.settings.groups.navigation.appearance, [ + createGroupDefinition(strings.settings.pages.calendar.groups.appearance, [ createRenderDefinition({ name: strings.settings.items.calendarLocale.name, desc: strings.settings.items.calendarLocale.desc, @@ -73,12 +73,12 @@ export function createCalendarSettingDefinitions(context: SettingsTabContext): S } }), createDropdownDefinition('calendarMonthHeadingFormat', { - name: strings.settings.items.calendarMonthHeadingFormat.name, - desc: strings.settings.items.calendarMonthHeadingFormat.desc, - aliases: Object.values(strings.settings.items.calendarMonthHeadingFormat.options), + name: strings.settings.items.calendarMonthNameFormat.name, + desc: strings.settings.items.calendarMonthNameFormat.desc, + aliases: Object.values(strings.settings.items.calendarMonthNameFormat.options), options: { - full: strings.settings.items.calendarMonthHeadingFormat.options.full, - short: strings.settings.items.calendarMonthHeadingFormat.options.short + full: strings.settings.items.calendarMonthNameFormat.options.full, + short: strings.settings.items.calendarMonthNameFormat.options.short } }), createToggleDefinition('calendarHighlightToday', { @@ -106,21 +106,21 @@ export function createCalendarSettingDefinitions(context: SettingsTabContext): S desc: strings.settings.items.calendarShowQuarter.desc }) ]), - createGroupDefinition(strings.settings.groups.navigation.leftSidebar, [ + createGroupDefinition(strings.settings.pages.calendar.groups.leftSidebar, [ createRenderDefinition({ - name: strings.settings.items.calendarLeftPlacement.name, - desc: strings.settings.items.calendarLeftPlacement.desc, - aliases: Object.values(strings.settings.items.calendarLeftPlacement.options), + name: strings.settings.items.calendarSinglePanePlacement.name, + desc: strings.settings.items.calendarSinglePanePlacement.desc, + aliases: Object.values(strings.settings.items.calendarSinglePanePlacement.options), render: setting => renderCalendarLeftPlacementSetting(setting, context) }), createRenderDefinition({ - name: strings.settings.items.calendarWeeksToShow.name, - desc: strings.settings.items.calendarWeeksToShow.desc, - aliases: Object.values(strings.settings.items.calendarWeeksToShow.options), + name: strings.settings.items.calendarLeftSidebarWeeksToShow.name, + desc: strings.settings.items.calendarLeftSidebarWeeksToShow.desc, + aliases: Object.values(strings.settings.items.calendarLeftSidebarWeeksToShow.options), render: setting => renderCalendarWeeksToShowSetting(setting, context) }) ]), - createGroupDefinition(strings.settings.items.calendarPlacement.options.rightSidebar, [ + createGroupDefinition(strings.settings.pages.calendar.groups.rightSidebar, [ createToggleDefinition('calendarShowYearCalendar', { name: strings.settings.items.calendarShowYearCalendar.name, desc: strings.settings.items.calendarShowYearCalendar.desc @@ -184,11 +184,13 @@ function renderCalendarLocaleSetting(setting: Setting, context: SettingsTabConte function renderCalendarLeftPlacementSetting(setting: Setting, context: SettingsTabContext): void { const { plugin } = context; - setting.setName(strings.settings.items.calendarLeftPlacement.name).setDesc(strings.settings.items.calendarLeftPlacement.desc); + setting + .setName(strings.settings.items.calendarSinglePanePlacement.name) + .setDesc(strings.settings.items.calendarSinglePanePlacement.desc); setting.addDropdown((dropdown: DropdownComponent) => { dropdown - .addOption('below', strings.settings.items.calendarLeftPlacement.options.below) - .addOption('navigation', strings.settings.items.calendarLeftPlacement.options.navigationPane) + .addOption('below', strings.settings.items.calendarSinglePanePlacement.options.belowPanes) + .addOption('navigation', strings.settings.items.calendarSinglePanePlacement.options.navigationPane) .setValue(plugin.settings.calendarLeftPlacement) .onChange(value => { if (!isCalendarLeftPlacement(value)) { @@ -205,16 +207,18 @@ function renderCalendarLeftPlacementSetting(setting: Setting, context: SettingsT function renderCalendarWeeksToShowSetting(setting: Setting, context: SettingsTabContext): void { const { plugin } = context; - setting.setName(strings.settings.items.calendarWeeksToShow.name).setDesc(strings.settings.items.calendarWeeksToShow.desc); + setting + .setName(strings.settings.items.calendarLeftSidebarWeeksToShow.name) + .setDesc(strings.settings.items.calendarLeftSidebarWeeksToShow.desc); setting.addDropdown((dropdown: DropdownComponent) => { - dropdown.addOption('1', strings.settings.items.calendarWeeksToShow.options.oneWeek); + dropdown.addOption('1', strings.settings.items.calendarLeftSidebarWeeksToShow.options.oneWeek); for (let count = 2; count <= 5; count++) { dropdown.addOption( String(count), - strings.settings.items.calendarWeeksToShow.options.weeksCount.replace('{count}', count.toString()) + strings.settings.items.calendarLeftSidebarWeeksToShow.options.weeksCount.replace('{count}', count.toString()) ); } - dropdown.addOption('6', strings.settings.items.calendarWeeksToShow.options.fullMonth); + dropdown.addOption('6', strings.settings.items.calendarLeftSidebarWeeksToShow.options.fullMonth); dropdown.setValue(String(plugin.settings.calendarWeeksToShow)).onChange(value => { const parsed = Number.parseInt(value, 10); diff --git a/src/settings/tabs/ContentTab.ts b/src/settings/tabs/ContentTab.ts index 4c684427e..c3f829ef5 100644 --- a/src/settings/tabs/ContentTab.ts +++ b/src/settings/tabs/ContentTab.ts @@ -25,13 +25,13 @@ import { createTagsSettingDefinitions } from './TagsTab'; /** Builds native 1.13 setting definitions for folder display and folder note settings. */ export function createFoldersAndFolderNotesSettingDefinitions(context: SettingsTabContext): SettingDefinitionItem[] { - return createFoldersSettingDefinitions(context, strings.settings.sections.folders); + return createFoldersSettingDefinitions(context, strings.settings.pages.foldersAndFolderNotes.groups.folders); } /** Builds native 1.13 setting definitions for tag and property settings. */ export function createTagsPropertiesSettingDefinitions(context: SettingsTabContext): SettingDefinitionItem[] { return [ - ...createTagsSettingDefinitions(context, strings.settings.sections.tags), - ...createPropertiesSettingDefinitions(context, strings.navigationPane.properties) + ...createTagsSettingDefinitions(context, strings.settings.pages.tagsAndProperties.groups.tags), + ...createPropertiesSettingDefinitions(context, strings.settings.pages.tagsAndProperties.groups.properties) ]; } diff --git a/src/settings/tabs/DisplayFiltersTab.ts b/src/settings/tabs/DisplayFiltersTab.ts index d0918f8ff..9a668bc57 100644 --- a/src/settings/tabs/DisplayFiltersTab.ts +++ b/src/settings/tabs/DisplayFiltersTab.ts @@ -40,15 +40,15 @@ export function createDisplayFiltersSettingDefinitions(context: SettingsTabConte return [ createGroupDefinition(undefined, [ createRenderDefinition({ - name: strings.settings.items.excludedFileNamePatterns.name, - desc: strings.settings.items.excludedFileNamePatterns.desc, - aliases: [strings.settings.items.excludedFileNamePatterns.placeholder], + name: strings.settings.items.hideFiles.name, + desc: strings.settings.items.hideFiles.desc, + aliases: [strings.settings.items.hideFiles.placeholder], render: setting => { context.configureDebouncedTextSetting( setting, - strings.settings.items.excludedFileNamePatterns.name, - strings.settings.items.excludedFileNamePatterns.desc, - strings.settings.items.excludedFileNamePatterns.placeholder, + strings.settings.items.hideFiles.name, + strings.settings.items.hideFiles.desc, + strings.settings.items.hideFiles.placeholder, () => formatCommaSeparatedList(getActiveProfile()?.hiddenFileNames ?? []), value => { const activeProfile = getActiveProfile(); @@ -62,15 +62,15 @@ export function createDisplayFiltersSettingDefinitions(context: SettingsTabConte } }), createRenderDefinition({ - name: strings.settings.items.excludedFolders.name, - desc: strings.settings.items.excludedFolders.desc, - aliases: [strings.settings.items.excludedFolders.placeholder], + name: strings.settings.items.hideFolders.name, + desc: strings.settings.items.hideFolders.desc, + aliases: [strings.settings.items.hideFolders.placeholder], render: setting => { context.configureDebouncedTextSetting( setting, - strings.settings.items.excludedFolders.name, - strings.settings.items.excludedFolders.desc, - strings.settings.items.excludedFolders.placeholder, + strings.settings.items.hideFolders.name, + strings.settings.items.hideFolders.desc, + strings.settings.items.hideFolders.placeholder, () => formatCommaSeparatedList(getActiveProfile()?.hiddenFolders ?? []), value => { const activeProfile = getActiveProfile(); @@ -106,15 +106,15 @@ export function createDisplayFiltersSettingDefinitions(context: SettingsTabConte } }), createRenderDefinition({ - name: strings.settings.items.hiddenTags.name, - desc: strings.settings.items.hiddenTags.desc, - aliases: [strings.settings.items.hiddenTags.placeholder], + name: strings.settings.items.hideTags.name, + desc: strings.settings.items.hideTags.desc, + aliases: [strings.settings.items.hideTags.placeholder], render: setting => { context.configureDebouncedTextSetting( setting, - strings.settings.items.hiddenTags.name, - strings.settings.items.hiddenTags.desc, - strings.settings.items.hiddenTags.placeholder, + strings.settings.items.hideTags.name, + strings.settings.items.hideTags.desc, + strings.settings.items.hideTags.placeholder, () => formatCommaSeparatedList(getActiveProfile()?.hiddenTags ?? []), value => { const activeProfile = getActiveProfile(); @@ -132,15 +132,15 @@ export function createDisplayFiltersSettingDefinitions(context: SettingsTabConte } }), createRenderDefinition({ - name: strings.settings.items.hiddenFileTags.name, - desc: strings.settings.items.hiddenFileTags.desc, - aliases: [strings.settings.items.hiddenFileTags.placeholder], + name: strings.settings.items.hideNotesWithTags.name, + desc: strings.settings.items.hideNotesWithTags.desc, + aliases: [strings.settings.items.hideNotesWithTags.placeholder], render: setting => { context.configureDebouncedTextSetting( setting, - strings.settings.items.hiddenFileTags.name, - strings.settings.items.hiddenFileTags.desc, - strings.settings.items.hiddenFileTags.placeholder, + strings.settings.items.hideNotesWithTags.name, + strings.settings.items.hideNotesWithTags.desc, + strings.settings.items.hideNotesWithTags.placeholder, () => formatCommaSeparatedList(getActiveProfile()?.hiddenFileTags ?? []), value => { const activeProfile = getActiveProfile(); @@ -159,15 +159,15 @@ export function createDisplayFiltersSettingDefinitions(context: SettingsTabConte } }), createRenderDefinition({ - name: strings.settings.items.excludedNotes.name, - desc: strings.settings.items.excludedNotes.desc, - aliases: [strings.settings.items.excludedNotes.placeholder], + name: strings.settings.items.hideNotesWithPropertyRules.name, + desc: strings.settings.items.hideNotesWithPropertyRules.desc, + aliases: [strings.settings.items.hideNotesWithPropertyRules.placeholder], render: setting => { context.configureDebouncedTextSetting( setting, - strings.settings.items.excludedNotes.name, - strings.settings.items.excludedNotes.desc, - strings.settings.items.excludedNotes.placeholder, + strings.settings.items.hideNotesWithPropertyRules.name, + strings.settings.items.hideNotesWithPropertyRules.desc, + strings.settings.items.hideNotesWithPropertyRules.placeholder, () => formatCommaSeparatedList(getActiveProfile()?.hiddenFileProperties ?? []), value => { const activeProfile = getActiveProfile(); diff --git a/src/settings/tabs/FilesTab.ts b/src/settings/tabs/FilesTab.ts index 584b44231..aedd5d406 100644 --- a/src/settings/tabs/FilesTab.ts +++ b/src/settings/tabs/FilesTab.ts @@ -56,12 +56,12 @@ export function createFilesSettingDefinitions(context: SettingsTabContext, headi } }) ]), - createGroupDefinition(strings.settings.groups.general.templates, [ + createGroupDefinition(strings.settings.pages.fileOperations.groups.templates, [ createFolderDefinition('calendarTemplateFolder', { - name: strings.settings.items.calendarTemplateFolder.name, - desc: strings.settings.items.calendarTemplateFolder.desc, - aliases: [strings.settings.items.calendarTemplateFolder.placeholder], - placeholder: strings.settings.items.calendarTemplateFolder.placeholder, + name: strings.settings.items.templateFolderLocation.name, + desc: strings.settings.items.templateFolderLocation.desc, + aliases: [strings.settings.items.templateFolderLocation.placeholder], + placeholder: strings.settings.items.templateFolderLocation.placeholder, includeRoot: true }), createRenderDefinition({ @@ -78,10 +78,10 @@ function renderTemplateFolderInfoSetting(setting: Setting, context: SettingsTabC setting.settingEl.addClass('nn-setting-info-container'); setting.descEl.empty(); - setting.descEl.createDiv({ text: strings.settings.items.calendarTemplateFolder.usage }); + setting.descEl.createDiv({ text: strings.settings.items.templateFolderLocation.usage }); const templaterSupportText = getTemplaterCreateNoteFromTemplate(context.app) - ? strings.settings.items.calendarCustomFilePattern.templaterSupportInstalled - : strings.settings.items.calendarCustomFilePattern.templaterSupportMissing; + ? strings.settings.items.templaterSupport.installed + : strings.settings.items.templaterSupport.missing; setting.descEl.append(createEl('br'), createEl('strong', { text: templaterSupportText })); } diff --git a/src/settings/tabs/FoldersTab.ts b/src/settings/tabs/FoldersTab.ts index d9524fbc0..3281204d3 100644 --- a/src/settings/tabs/FoldersTab.ts +++ b/src/settings/tabs/FoldersTab.ts @@ -61,7 +61,7 @@ export function createFoldersSettingDefinitions(context: SettingsTabContext, hea render: setting => renderFolderSortOrderSetting(setting, context) }) ]), - createGroupDefinition(strings.settings.sections.folderNotes, [ + createGroupDefinition(strings.settings.pages.foldersAndFolderNotes.groups.folderNotes, [ createToggleDefinition('enableFolderNotes', { name: strings.settings.items.enableFolderNotes.name, desc: strings.settings.items.enableFolderNotes.desc @@ -78,13 +78,13 @@ export function createFoldersSettingDefinitions(context: SettingsTabContext, hea } }), createToggleDefinition('showNearestFolderNoteInSidebar', { - name: strings.settings.items.showNearestFolderNoteInSidebar.name, - desc: strings.settings.items.showNearestFolderNoteInSidebar.desc, + name: strings.settings.items.showClosestFolderNoteInRightSidebar.name, + desc: strings.settings.items.showClosestFolderNoteInRightSidebar.desc, visible: () => plugin.settings.enableFolderNotes && plugin.settings.folderNoteOpenLocation === 'right-sidebar' }), createToggleDefinition('enableFolderNoteLinks', { - name: strings.settings.items.enableFolderNoteLinks.name, - desc: strings.settings.items.enableFolderNoteLinks.desc, + name: strings.settings.items.folderNamesOpenFolderNotes.name, + desc: strings.settings.items.folderNamesOpenFolderNotes.desc, visible: () => plugin.settings.enableFolderNotes }), createToggleDefinition('hideFolderNoteInList', { @@ -99,7 +99,7 @@ export function createFoldersSettingDefinitions(context: SettingsTabContext, hea }) ]), createGroupDefinition( - strings.settings.sections.folderNoteFiles, + strings.settings.pages.foldersAndFolderNotes.groups.folderNoteFiles, [ createDropdownDefinition('folderNoteType', { name: strings.settings.items.folderNoteType.name, @@ -207,7 +207,7 @@ function renderFolderNoteTemplateInfoSetting(setting: Setting, context: Settings setting.descEl.empty(); const templaterSupportText = getTemplaterCreateNoteFromTemplate(context.app) - ? strings.settings.items.calendarCustomFilePattern.templaterSupportInstalled - : strings.settings.items.calendarCustomFilePattern.templaterSupportMissing; + ? strings.settings.items.templaterSupport.installed + : strings.settings.items.templaterSupport.missing; setting.descEl.createEl('strong', { text: templaterSupportText }); } diff --git a/src/settings/tabs/FrontmatterTab.ts b/src/settings/tabs/FrontmatterTab.ts index 3b638b613..cd6609018 100644 --- a/src/settings/tabs/FrontmatterTab.ts +++ b/src/settings/tabs/FrontmatterTab.ts @@ -91,7 +91,7 @@ export function createFrontmatterSettingDefinitions(context: SettingsTabContext) const canMigrateMetadata = hasIconField || hasColorField || hasBackgroundField; const isFrontmatterMetadataEnabled = plugin.settings.useFrontmatterMetadata; - const descriptionText = strings.settings.items.frontmatterMigration.desc + const descriptionText = strings.settings.items.migrateIconsAndColorsFromSettings.desc .replace('{icons}', iconsBefore.toString()) .replace('{colors}', colorsBefore.toString()); @@ -104,12 +104,12 @@ export function createFrontmatterSettingDefinitions(context: SettingsTabContext) return [ createGroupDefinition(undefined, [ createRenderDefinition({ - name: strings.settings.items.useFrontmatterDates.name, - desc: strings.settings.items.useFrontmatterDates.desc, + name: strings.settings.items.useFrontmatterMetadata.name, + desc: strings.settings.items.useFrontmatterMetadata.desc, render: setting => { setting - .setName(strings.settings.items.useFrontmatterDates.name) - .setDesc(strings.settings.items.useFrontmatterDates.desc) + .setName(strings.settings.items.useFrontmatterMetadata.name) + .setDesc(strings.settings.items.useFrontmatterMetadata.desc) .addToggle(toggle => toggle.setValue(plugin.settings.useFrontmatterMetadata).onChange(async value => { plugin.settings.useFrontmatterMetadata = value; @@ -157,14 +157,14 @@ export function createFrontmatterSettingDefinitions(context: SettingsTabContext) onAfterUpdate: refreshMetadataSettings }), createRenderDefinition({ - name: strings.settings.items.frontmatterMigration.name, - aliases: [strings.settings.items.frontmatterMigration.button], + name: strings.settings.items.migrateIconsAndColorsFromSettings.name, + aliases: [strings.settings.items.migrateIconsAndColorsFromSettings.button], visible: () => plugin.settings.useFrontmatterMetadata, render: setting => { - migrationSetting = setting.setName(strings.settings.items.frontmatterMigration.name); + migrationSetting = setting.setName(strings.settings.items.migrateIconsAndColorsFromSettings.name); setting.addButton(button => { migrateButton = button; - button.setButtonText(strings.settings.items.frontmatterMigration.button); + button.setButtonText(strings.settings.items.migrateIconsAndColorsFromSettings.button); button.setCta(); button.onClick(() => { runAsyncAction(async () => { @@ -173,7 +173,7 @@ export function createFrontmatterSettingDefinitions(context: SettingsTabContext) } button.setDisabled(true); - button.setButtonText(strings.settings.items.frontmatterMigration.buttonWorking); + button.setButtonText(strings.settings.items.migrateIconsAndColorsFromSettings.buttonWorking); try { const result = await plugin.metadataService.migrateFileMetadataToFrontmatter(); @@ -182,28 +182,28 @@ export function createFrontmatterSettingDefinitions(context: SettingsTabContext) const { iconsBefore, colorsBefore, migratedIcons, migratedColors, failures } = result; if (iconsBefore === 0 && colorsBefore === 0) { - showNotice(strings.settings.items.frontmatterMigration.noticeNone); + showNotice(strings.settings.items.migrateIconsAndColorsFromSettings.noticeNone); } else if (migratedIcons === 0 && migratedColors === 0) { - showNotice(strings.settings.items.frontmatterMigration.noticeNone); + showNotice(strings.settings.items.migrateIconsAndColorsFromSettings.noticeNone); } else { - let message = strings.settings.items.frontmatterMigration.noticeDone + let message = strings.settings.items.migrateIconsAndColorsFromSettings.noticeDone .replace('{migratedIcons}', migratedIcons.toString()) .replace('{icons}', iconsBefore.toString()) .replace('{migratedColors}', migratedColors.toString()) .replace('{colors}', colorsBefore.toString()); if (failures > 0) { - message += ` ${strings.settings.items.frontmatterMigration.noticeFailures.replace('{failures}', failures.toString())}`; + message += ` ${strings.settings.items.migrateIconsAndColorsFromSettings.noticeFailures.replace('{failures}', failures.toString())}`; } showNotice(message, { variant: 'success' }); } } catch (error) { console.error('Failed to migrate icon/color metadata to frontmatter', error); - showNotice(strings.settings.items.frontmatterMigration.noticeError, { + showNotice(strings.settings.items.migrateIconsAndColorsFromSettings.noticeError, { timeout: TIMEOUTS.NOTICE_ERROR, variant: 'warning' }); } finally { - button.setButtonText(strings.settings.items.frontmatterMigration.button); + button.setButtonText(strings.settings.items.migrateIconsAndColorsFromSettings.button); button.setDisabled(false); refreshMetadataSettings(); } @@ -215,9 +215,9 @@ export function createFrontmatterSettingDefinitions(context: SettingsTabContext) }), createFrontmatterTextRenderDefinition({ context, - name: strings.settings.items.frontmatterNameField.name, - desc: strings.settings.items.frontmatterNameField.desc, - placeholder: strings.settings.items.frontmatterNameField.placeholder, + name: strings.settings.items.frontmatterNameFields.name, + desc: strings.settings.items.frontmatterNameFields.desc, + placeholder: strings.settings.items.frontmatterNameFields.placeholder, visible: () => plugin.settings.useFrontmatterMetadata, getValue: () => normalizeCommaSeparatedList(plugin.settings.frontmatterNameField), setValue: value => { @@ -250,21 +250,21 @@ export function createFrontmatterSettingDefinitions(context: SettingsTabContext) onAfterUpdate: () => context.requestStatisticsRefresh() }), createRenderDefinition({ - name: strings.settings.items.frontmatterDateFormat.name, - desc: strings.settings.items.frontmatterDateFormat.desc, + name: strings.settings.items.frontmatterTimestampFormat.name, + desc: strings.settings.items.frontmatterTimestampFormat.desc, aliases: [ - strings.settings.items.frontmatterDateFormat.momentLinkText, - strings.settings.items.frontmatterDateFormat.helpTooltip + strings.settings.items.frontmatterTimestampFormat.momentLinkText, + strings.settings.items.frontmatterTimestampFormat.helpTooltip ], visible: () => plugin.settings.useFrontmatterMetadata, render: setting => { context.configureDebouncedTextSetting( setting, - strings.settings.items.frontmatterDateFormat.name, + strings.settings.items.frontmatterTimestampFormat.name, createSettingDescriptionWithExternalLink({ - text: strings.settings.items.frontmatterDateFormat.desc, + text: strings.settings.items.frontmatterTimestampFormat.desc, link: { - text: strings.settings.items.frontmatterDateFormat.momentLinkText, + text: strings.settings.items.frontmatterTimestampFormat.momentLinkText, href: MOMENT_FORMAT_DOCS_URL } }), @@ -279,9 +279,9 @@ export function createFrontmatterSettingDefinitions(context: SettingsTabContext) setting.addExtraButton(button => button .setIcon('lucide-help-circle') - .setTooltip(strings.settings.items.frontmatterDateFormat.helpTooltip) + .setTooltip(strings.settings.items.frontmatterTimestampFormat.helpTooltip) .onClick(() => { - showNotice(strings.settings.items.frontmatterDateFormat.help, { timeout: TIMEOUTS.NOTICE_HELP }); + showNotice(strings.settings.items.frontmatterTimestampFormat.help, { timeout: TIMEOUTS.NOTICE_HELP }); }) ); setting.controlEl.addClass('nn-setting-wide-input'); diff --git a/src/settings/tabs/IconPacksTab.ts b/src/settings/tabs/IconPacksTab.ts index 07724d556..2928ab51a 100644 --- a/src/settings/tabs/IconPacksTab.ts +++ b/src/settings/tabs/IconPacksTab.ts @@ -35,15 +35,15 @@ export function createIconPacksSettingDefinitions(context: SettingsTabContext): name: config.name, desc: config.catalogUrl, aliases: [ - strings.settings.items.externalIcons.downloadButton, - strings.settings.items.externalIcons.removeButton, + strings.settings.items.iconPackManagement.downloadButton, + strings.settings.items.iconPackManagement.removeButton, config.catalogUrl ], render: setting => renderIconProviderSetting(setting, context, config) }) ), createRenderDefinition({ - name: strings.settings.items.externalIcons.infoNote, + name: strings.settings.items.iconPackManagement.infoNote, searchable: false, render: setting => { setting.setName('').setDesc(''); @@ -51,7 +51,7 @@ export function createIconPacksSettingDefinitions(context: SettingsTabContext): setting.descEl.empty(); setting.descEl.createDiv().append( createExternalLinkText({ - text: strings.settings.items.externalIcons.infoNote, + text: strings.settings.items.iconPackManagement.infoNote, link: { text: ICON_ASSETS_REPOSITORY_URL, href: ICON_ASSETS_REPOSITORY_URL } }) ); @@ -75,11 +75,11 @@ function renderIconProviderSetting( const version = plugin.getExternalIconProviderVersion(config.id); const statusText = isInstalled - ? strings.settings.items.externalIcons.statusInstalled.replace( + ? strings.settings.items.iconPackManagement.statusInstalled.replace( '{version}', - version || strings.settings.items.externalIcons.versionUnknown + version || strings.settings.items.iconPackManagement.versionUnknown ) - : strings.settings.items.externalIcons.statusNotInstalled; + : strings.settings.items.iconPackManagement.statusNotInstalled; setting.setName(config.name).setDesc(''); @@ -99,7 +99,7 @@ function renderIconProviderSetting( if (isInstalled) { setting.addButton(button => { - button.setButtonText(strings.settings.items.externalIcons.removeButton); + button.setButtonText(strings.settings.items.iconPackManagement.removeButton); button.setDisabled(isDownloading); button.onClick(() => { runAsyncAction(async () => { @@ -109,7 +109,7 @@ function renderIconProviderSetting( renderState(); } catch (error) { console.error('Failed to remove icon provider', error); - showNotice(strings.settings.items.externalIcons.removeFailed.replace('{name}', config.name), { + showNotice(strings.settings.items.iconPackManagement.removeFailed.replace('{name}', config.name), { variant: 'warning' }); button.setDisabled(false); @@ -122,7 +122,9 @@ function renderIconProviderSetting( setting.addButton(button => { button.setButtonText( - isDownloading ? strings.settings.items.externalIcons.downloadingLabel : strings.settings.items.externalIcons.downloadButton + isDownloading + ? strings.settings.items.iconPackManagement.downloadingLabel + : strings.settings.items.iconPackManagement.downloadButton ); button.setDisabled(isDownloading); button.onClick(() => { @@ -133,7 +135,7 @@ function renderIconProviderSetting( renderState(); } catch (error) { console.error('Failed to download icon provider', error); - showNotice(strings.settings.items.externalIcons.downloadFailed.replace('{name}', config.name), { + showNotice(strings.settings.items.iconPackManagement.downloadFailed.replace('{name}', config.name), { variant: 'warning' }); button.setDisabled(false); diff --git a/src/settings/tabs/ListTab.ts b/src/settings/tabs/ListTab.ts index ea3be2cf2..59f6b27d9 100644 --- a/src/settings/tabs/ListTab.ts +++ b/src/settings/tabs/ListTab.ts @@ -27,7 +27,9 @@ import { getPropertyGroupingOrder, MANUAL_SORT_NEW_NOTE_PLACEMENT_OPTIONS, normalizeListNoteGroupingOption, - PROPERTY_SORT_SECONDARY_OPTIONS + PROPERTY_SORT_SECONDARY_OPTIONS, + type ManualSortNewNotePlacement, + type PropertySortSecondaryOption } from '../types'; import type { NotebookNavigatorSettings } from '../types'; import type { SettingsTabContext } from './SettingsTabContext'; @@ -103,48 +105,48 @@ export function createListPaneSettingDefinitions(context: SettingsTabContext): S render: setting => renderIncludeDescendantNotesSetting(setting, context) }) ]), - createGroupDefinition(strings.settings.groups.list.sortAndGroup, [ + createGroupDefinition(strings.settings.pages.listPane.groups.sortAndGroup, [ createRenderDefinition({ - name: strings.settings.items.sortNotesBy.name, - desc: strings.settings.items.sortNotesBy.desc, + name: strings.settings.items.defaultSortOrder.name, + desc: strings.settings.items.defaultSortOrder.desc, aliases: [ - ...Object.values(strings.settings.items.sortNotesBy.fields), - ...Object.values(strings.settings.items.sortNotesBy.directions), - ...Object.values(strings.settings.items.sortNotesBy.dateDirections), - ...Object.values(strings.settings.items.sortNotesBy.textDirections), + ...Object.values(strings.settings.items.defaultSortOrder.fields), + ...Object.values(strings.settings.items.defaultSortOrder.directions), + ...Object.values(strings.settings.items.defaultSortOrder.dateDirections), + ...Object.values(strings.settings.items.defaultSortOrder.textDirections), strings.settings.items.defaultSortDirection.name ], render: setting => renderDefaultFolderSortSetting(setting, context) }), createRenderDefinition({ - name: strings.settings.items.groupNotes.name, - desc: getPlainSettingText(strings.settings.items.groupNotes.desc), + name: strings.settings.items.defaultGrouping.name, + desc: getPlainSettingText(strings.settings.items.defaultGrouping.desc), aliases: [ - ...Object.values(strings.settings.items.groupNotes.options), - ...Object.values(strings.settings.items.groupNotes.families), - ...Object.values(strings.settings.items.sortNotesBy.directions), + ...Object.values(strings.settings.items.defaultGrouping.options), + ...Object.values(strings.settings.items.defaultGrouping.families), + ...Object.values(strings.settings.items.defaultSortOrder.directions), strings.settings.items.defaultGroupingDirection.name, strings.settings.items.defaultGroupingDirection.options.follow ], render: setting => renderNoteGroupingSetting(setting, context) }), createRenderDefinition({ - name: strings.settings.items.propertySortKey.name, - desc: strings.settings.items.propertySortKey.desc, - aliases: [strings.settings.items.propertySortKey.placeholder], + name: strings.settings.items.sortingProperties.name, + desc: strings.settings.items.sortingProperties.desc, + aliases: [strings.settings.items.sortingProperties.placeholder], render: setting => renderPropertySortKeySetting(setting, context) }), createDropdownDefinition('propertySortSecondary', { - name: strings.settings.items.propertySortSecondary.name, - desc: strings.settings.items.propertySortSecondary.desc, - aliases: Object.values(strings.settings.items.propertySortSecondary.options), + name: strings.settings.items.propertySecondarySort.name, + desc: strings.settings.items.propertySecondarySort.desc, + aliases: Object.values(strings.settings.items.propertySecondarySort.options), visible: () => plugin.settings.propertySortKey.trim().length > 0, options: createPropertySortSecondaryOptions() }), createRenderDefinition({ - name: strings.settings.items.propertyGroupKey.name, - desc: strings.settings.items.propertyGroupKey.desc, - aliases: [strings.settings.items.propertyGroupKey.placeholder], + name: strings.settings.items.groupingProperties.name, + desc: strings.settings.items.groupingProperties.desc, + aliases: [strings.settings.items.groupingProperties.placeholder], render: setting => renderPropertyGroupKeySetting(setting, context) }), createToggleDefinition('showCurrentFolderFilesAtBottom', { @@ -157,22 +159,22 @@ export function createListPaneSettingDefinitions(context: SettingsTabContext): S render: setting => renderInstructionSetting(setting, strings.settings.items.propertySortInstructions) }) ]), - createGroupDefinition(strings.settings.groups.list.groupHeaders, [ + createGroupDefinition(strings.settings.pages.listPane.groups.groupHeaders, [ createToggleDefinition('stickyGroupHeaders', { name: strings.settings.items.stickyGroupHeaders.name, desc: strings.settings.items.stickyGroupHeaders.desc }), createToggleDefinition('showFolderGroupPaths', { - name: strings.settings.items.showFolderGroupPaths.name, - desc: strings.settings.items.showFolderGroupPaths.desc + name: strings.settings.items.showSubfolderPaths.name, + desc: strings.settings.items.showSubfolderPaths.desc }), createToggleDefinition('showGroupHeaderItemCounts', { name: strings.settings.items.showGroupHeaderItemCounts.name, desc: strings.settings.items.showGroupHeaderItemCounts.desc }), createRenderDefinition({ - name: strings.settings.items.manualSortGroupHeaderProperty.name, - desc: strings.settings.items.manualSortGroupHeaderProperty.desc, + name: strings.settings.items.groupHeaderProperty.name, + desc: strings.settings.items.groupHeaderProperty.desc, render: setting => renderManualSortGroupHeaderPropertySetting(setting, context) }), createRenderDefinition({ @@ -181,10 +183,10 @@ export function createListPaneSettingDefinitions(context: SettingsTabContext): S render: setting => renderInstructionSetting(setting, strings.settings.items.groupHeadersInstructions) }) ]), - createGroupDefinition(strings.settings.groups.list.manualSort, [ + createGroupDefinition(strings.settings.pages.listPane.groups.manualSort, [ createRenderDefinition({ - name: strings.settings.items.manualSortPropertyKey.name, - desc: strings.settings.items.manualSortPropertyKey.desc, + name: strings.settings.items.manualSortProperty.name, + desc: strings.settings.items.manualSortProperty.desc, aliases: [DEFAULT_SETTINGS.manualSortPropertyKey], render: setting => renderManualSortPropertyKeySetting(setting, context) }), @@ -204,17 +206,17 @@ export function createListPaneSettingDefinitions(context: SettingsTabContext): S render: setting => renderInstructionSetting(setting, strings.settings.items.manualSortInstructions) }) ]), - createGroupDefinition(strings.settings.groups.list.pinnedNotes, [ + createGroupDefinition(strings.settings.pages.listPane.groups.pinnedNotes, [ createToggleDefinition('filterPinnedByFolder', { - name: strings.settings.items.limitPinnedToCurrentFolder.name, - desc: strings.settings.items.limitPinnedToCurrentFolder.desc + name: strings.settings.items.filterPinnedNotesByFolder.name, + desc: strings.settings.items.filterPinnedNotesByFolder.desc }) ]), createListAppearanceDefinitionGroup(context), - createGroupDefinition(strings.settings.groups.general.behavior, [ + createGroupDefinition(strings.settings.pages.listPane.groups.behavior, [ createToggleDefinition('revealFileOnListChanges', { - name: strings.settings.items.revealFileOnListChanges.name, - desc: strings.settings.items.revealFileOnListChanges.desc + name: strings.settings.items.scrollToSelectedFileOnListChanges.name, + desc: strings.settings.items.scrollToSelectedFileOnListChanges.desc }), ...(Platform.isMobile ? [] @@ -233,10 +235,10 @@ export function createListPaneSettingDefinitions(context: SettingsTabContext): S }) ]) ]), - createGroupDefinition(strings.settings.groups.list.drawingPreviews, [ + createGroupDefinition(strings.settings.pages.listPane.groups.drawingPreviews, [ createToggleDefinition('hideDrawingPreviewImages', { - name: strings.settings.items.hideDrawingPreviewImages.name, - desc: strings.settings.items.hideDrawingPreviewImages.desc + name: strings.settings.items.hideExportedPreviewImages.name, + desc: strings.settings.items.hideExportedPreviewImages.desc }), createRenderDefinition({ name: strings.settings.items.drawingIntegrationInfo.intro, @@ -261,7 +263,7 @@ function createListAppearanceDefinitionGroup(context: SettingsTabContext): Setti aliases: Object.values(strings.settings.items.listPaneTitle.options), options: { header: strings.settings.items.listPaneTitle.options.header, - list: strings.settings.items.listPaneTitle.options.list, + list: strings.settings.items.listPaneTitle.options.listPane, hidden: strings.settings.items.listPaneTitle.options.hidden } }) @@ -290,12 +292,12 @@ function createListAppearanceDefinitionGroup(context: SettingsTabContext): Setti render: setting => renderCompactItemHeightScaleTextSetting(setting, context) }), createToggleDefinition('showSelectedNavigationPills', { - name: strings.settings.items.showSelectedNavigationPills.name, - desc: strings.settings.items.showSelectedNavigationPills.desc + name: strings.settings.items.alwaysShowAllTagAndPropertyPills.name, + desc: strings.settings.items.alwaysShowAllTagAndPropertyPills.desc }) ); - return createGroupDefinition(strings.settings.groups.list.display, items); + return createGroupDefinition(strings.settings.pages.listPane.groups.appearance, items); } const BIDI_ISOLATE_START = '\u2068'; // First Strong Isolate @@ -307,7 +309,7 @@ function isolateBidiText(value: string): string { } function getPropertyDropdownOptionLabel(propertyKey: string): string { - return `${strings.settings.items.sortNotesBy.fields.property} \u2018${isolateBidiText(propertyKey)}\u2019`; + return `${strings.settings.items.defaultSortOrder.fields.property} \u2018${isolateBidiText(propertyKey)}\u2019`; } /** @@ -326,10 +328,10 @@ export function renderDefaultFolderSortSetting(setting: Setting, context: Settin let refreshDirectionControl: () => void = () => {}; setting - .setName(strings.settings.items.sortNotesBy.name) - .setDesc(strings.settings.items.sortNotesBy.desc) + .setName(strings.settings.items.defaultSortOrder.name) + .setDesc(strings.settings.items.defaultSortOrder.desc) .addDropdown(dropdown => { - dropdown.selectEl.setAttribute('aria-label', strings.settings.items.sortNotesBy.name); + dropdown.selectEl.setAttribute('aria-label', strings.settings.items.defaultSortOrder.name); // Maps property entry ids to their key. Index-based ids mean decoding never parses the // property key out of the id (keys may contain any characters, including separators). let propertySelections = new Map(); @@ -354,8 +356,16 @@ export function renderDefaultFolderSortSetting(setting: Setting, context: Settin const rebuildOptions = (): void => { propertySelections = new Map(); dropdown.selectEl.empty(); + // Persisted sort fields intentionally differ from some localization aliases, so + // indexing the translated record with the stored value would omit those labels. + const fieldLabels: Record, string> = { + modified: strings.settings.items.defaultSortOrder.fields.dateEdited, + created: strings.settings.items.defaultSortOrder.fields.dateCreated, + title: strings.settings.items.defaultSortOrder.fields.title, + filename: strings.settings.items.defaultSortOrder.fields.fileName + }; (['modified', 'created', 'title', 'filename'] as const).forEach(field => { - dropdown.addOption(field, strings.settings.items.sortNotesBy.fields[field]); + dropdown.addOption(field, fieldLabels[field]); }); getAvailablePropertySortKeys(plugin.settings).forEach((propertyKey, index) => { const id = `property:${index}`; @@ -404,12 +414,18 @@ export function renderDefaultFolderSortSetting(setting: Setting, context: Settin const getDirectionLabels = (): Record => { const field = getSortField(plugin.settings.defaultFolderSort); if (field === 'modified' || field === 'created') { - return strings.settings.items.sortNotesBy.dateDirections; + return { + asc: strings.settings.items.defaultSortOrder.dateDirections.oldestOnTop, + desc: strings.settings.items.defaultSortOrder.dateDirections.newestOnTop + }; } if (field === 'property') { - return strings.settings.items.sortNotesBy.directions; + return strings.settings.items.defaultSortOrder.directions; } - return strings.settings.items.sortNotesBy.textDirections; + return { + asc: strings.settings.items.defaultSortOrder.textDirections.aOnTop, + desc: strings.settings.items.defaultSortOrder.textDirections.zOnTop + }; }; const rebuildOptions = (): void => { @@ -458,13 +474,13 @@ export function renderNoteGroupingSetting(setting: Setting, context: SettingsTab // update listener would leave the order control briefly shown or hidden for the wrong mode. let refreshOrderControl: () => void = () => {}; - setting.setName(strings.settings.items.groupNotes.name).setDesc(''); + setting.setName(strings.settings.items.defaultGrouping.name).setDesc(''); setting.descEl.empty(); - appendSettingText(setting.descEl, strings.settings.items.groupNotes.desc); + appendSettingText(setting.descEl, strings.settings.items.defaultGrouping.desc); setting .addDropdown(dropdown => { - dropdown.selectEl.setAttribute('aria-label', strings.settings.items.groupNotes.name); + dropdown.selectEl.setAttribute('aria-label', strings.settings.items.defaultGrouping.name); // Property entry ids use the follow-sort encoding regardless of the stored order; // the order lives in the group order dropdown in the same row. const getSelectedValue = (): string => { @@ -491,15 +507,15 @@ export function renderNoteGroupingSetting(setting: Setting, context: SettingsTab // partition the list and order the groups on their own. The optgroup labels make // that split visible in the control itself. const headersGroupEl = dropdown.selectEl.createEl('optgroup', { - attr: { label: strings.settings.items.groupNotes.families.headers } + attr: { label: strings.settings.items.defaultGrouping.families.headers } }); (['custom', 'date'] as const).forEach(option => { - headersGroupEl.createEl('option', { value: option, text: strings.settings.items.groupNotes.options[option] }); + headersGroupEl.createEl('option', { value: option, text: strings.settings.items.defaultGrouping.options[option] }); }); const groupsGroupEl = dropdown.selectEl.createEl('optgroup', { - attr: { label: strings.settings.items.groupNotes.families.groups } + attr: { label: strings.settings.items.defaultGrouping.families.groups } }); - groupsGroupEl.createEl('option', { value: 'folder', text: strings.settings.items.groupNotes.options.folder }); + groupsGroupEl.createEl('option', { value: 'folder', text: strings.settings.items.defaultGrouping.options.folder }); getAvailablePropertyGroupKeys(plugin.settings).forEach(propertyKey => { groupsGroupEl.createEl('option', { value: createPropertyGroupingOption(propertyKey, 'follow'), @@ -544,7 +560,7 @@ export function renderNoteGroupingSetting(setting: Setting, context: SettingsTab order, order === 'follow' ? strings.settings.items.defaultGroupingDirection.options.follow - : strings.settings.items.sortNotesBy.directions[order] + : strings.settings.items.defaultSortOrder.directions[order] ); }); @@ -586,8 +602,8 @@ export function renderPropertyGroupKeySetting(setting: Setting, context: Setting const { plugin } = context; setting - .setName(strings.settings.items.propertyGroupKey.name) - .setDesc(strings.settings.items.propertyGroupKey.desc) + .setName(strings.settings.items.groupingProperties.name) + .setDesc(strings.settings.items.groupingProperties.desc) .addText(text => { const commitPropertyGroupKey = async (): Promise => { const value = text.getValue(); @@ -612,7 +628,7 @@ export function renderPropertyGroupKeySetting(setting: Setting, context: Setting text.inputEl.blur(); }); - return text.setPlaceholder(strings.settings.items.propertyGroupKey.placeholder).setValue(plugin.settings.propertyGroupKey); + return text.setPlaceholder(strings.settings.items.groupingProperties.placeholder).setValue(plugin.settings.propertyGroupKey); }); } @@ -624,7 +640,7 @@ export function renderPropertyGroupKeySetting(setting: Setting, context: Setting export function reconcileDefaultsAfterPropertyKeysEdit(settings: NotebookNavigatorSettings): void { const sortResult = reconcileDefaultFolderSort(settings); const groupingResult = reconcileDefaultNoteGrouping(settings); - const notices = strings.settings.items.propertySortKey.defaultsResetNotices; + const notices = strings.settings.items.sortingProperties.defaultsResetNotices; if (sortResult.reset && groupingResult.reset) { showNotice(notices.both); } else if (sortResult.reset) { @@ -637,7 +653,7 @@ export function reconcileDefaultsAfterPropertyKeysEdit(settings: NotebookNavigat function createPropertySortSecondaryOptions(): Record { const options: Record = {}; PROPERTY_SORT_SECONDARY_OPTIONS.forEach(option => { - options[option] = strings.settings.items.propertySortSecondary.options[option]; + options[option] = getPropertySecondarySortOptionLabel(option); }); return options; } @@ -645,11 +661,39 @@ function createPropertySortSecondaryOptions(): Record { function createManualSortNewNotePlacementOptions(): Record { const options: Record = {}; MANUAL_SORT_NEW_NOTE_PLACEMENT_OPTIONS.forEach(option => { - options[option] = strings.settings.items.manualSortNewNotePlacement.options[option]; + options[option] = getManualSortNewNotePlacementOptionLabel(option); }); return options; } +/** Maps persisted property-sort values to their semantic localization aliases. */ +export function getPropertySecondarySortOptionLabel(option: PropertySortSecondaryOption): string { + switch (option) { + case 'title': + return strings.settings.items.propertySecondarySort.options.title; + case 'filename': + return strings.settings.items.propertySecondarySort.options.fileName; + case 'created': + return strings.settings.items.propertySecondarySort.options.dateCreated; + case 'modified': + return strings.settings.items.propertySecondarySort.options.dateEdited; + } +} + +/** Maps persisted manual-sort placement values to their semantic localization aliases. */ +export function getManualSortNewNotePlacementOptionLabel(option: ManualSortNewNotePlacement): string { + switch (option) { + case 'top': + return strings.settings.items.manualSortNewNotePlacement.options.top; + case 'bottom': + return strings.settings.items.manualSortNewNotePlacement.options.bottom; + case 'below-selected-note': + return strings.settings.items.manualSortNewNotePlacement.options.belowSelectedNote; + case 'unsorted': + return strings.settings.items.manualSortNewNotePlacement.options.unsorted; + } +} + function renderIncludeDescendantNotesSetting(setting: Setting, context: SettingsTabContext): void { const { plugin } = context; @@ -706,8 +750,8 @@ function renderManualSortGroupHeaderPropertySetting(setting: Setting, context: S const { plugin } = context; setting - .setName(strings.settings.items.manualSortGroupHeaderProperty.name) - .setDesc(strings.settings.items.manualSortGroupHeaderProperty.desc) + .setName(strings.settings.items.groupHeaderProperty.name) + .setDesc(strings.settings.items.groupHeaderProperty.desc) .addText(text => { const commitGroupHeaderProperty = async (): Promise => { const value = text.getValue().trim(); @@ -751,8 +795,8 @@ function renderPropertySortKeySetting(setting: Setting, context: SettingsTabCont const { plugin } = context; setting - .setName(strings.settings.items.propertySortKey.name) - .setDesc(strings.settings.items.propertySortKey.desc) + .setName(strings.settings.items.sortingProperties.name) + .setDesc(strings.settings.items.sortingProperties.desc) .addText(text => { const commitPropertySortKey = async (): Promise => { const value = text.getValue(); @@ -778,7 +822,7 @@ function renderPropertySortKeySetting(setting: Setting, context: SettingsTabCont text.inputEl.blur(); }); - return text.setPlaceholder(strings.settings.items.propertySortKey.placeholder).setValue(plugin.settings.propertySortKey); + return text.setPlaceholder(strings.settings.items.sortingProperties.placeholder).setValue(plugin.settings.propertySortKey); }); } @@ -786,8 +830,8 @@ function renderManualSortPropertyKeySetting(setting: Setting, context: SettingsT const { plugin } = context; setting - .setName(strings.settings.items.manualSortPropertyKey.name) - .setDesc(strings.settings.items.manualSortPropertyKey.desc) + .setName(strings.settings.items.manualSortProperty.name) + .setDesc(strings.settings.items.manualSortProperty.desc) .addText(text => { const commitManualSortPropertyKey = async (): Promise => { const value = normalizeManualSortPropertyKey(text.getValue()); diff --git a/src/settings/tabs/NavigationTab.ts b/src/settings/tabs/NavigationTab.ts index 913b06b34..a3bc6179b 100644 --- a/src/settings/tabs/NavigationTab.ts +++ b/src/settings/tabs/NavigationTab.ts @@ -64,35 +64,35 @@ export function createNavigationPaneSettingDefinitions(context: SettingsTabConte ...(supportsKeyboardInteractions() ? [ createToggleDefinition('autoSelectFirstFileOnFocusChange', { - name: strings.settings.items.autoSelectFirstFileOnFocusChange.name, - desc: strings.settings.items.autoSelectFirstFileOnFocusChange.desc + name: strings.settings.items.autoSelectFirstNote.name, + desc: strings.settings.items.autoSelectFirstNote.desc }) ] : []), createToggleDefinition('autoExpandNavItems', { - name: strings.settings.items.autoExpandNavItems.name, - desc: strings.settings.items.autoExpandNavItems.desc + name: strings.settings.items.expandOnSelection.name, + desc: strings.settings.items.expandOnSelection.desc }), createToggleDefinition('collapseOtherBranchesOnExpand', { name: strings.settings.items.collapseOtherBranchesOnExpand.name, desc: strings.settings.items.collapseOtherBranchesOnExpand.desc }) ]), - createGroupDefinition(strings.settings.groups.navigation.collapseItems, [ + createGroupDefinition(strings.settings.pages.navigationPane.groups.collapseItems, [ createDropdownDefinition('collapseBehavior', { - name: strings.settings.items.collapseBehavior.name, - desc: strings.settings.items.collapseBehavior.desc, - aliases: Object.values(strings.settings.items.collapseBehavior.options), + name: strings.settings.items.collapseItems.name, + desc: strings.settings.items.collapseItems.desc, + aliases: Object.values(strings.settings.items.collapseItems.options), options: { - all: strings.settings.items.collapseBehavior.options.all, - 'folders-only': strings.settings.items.collapseBehavior.options.foldersOnly, - 'tags-only': strings.settings.items.collapseBehavior.options.tagsOnly, - 'properties-only': strings.settings.items.collapseBehavior.options.propertiesOnly + all: strings.settings.items.collapseItems.options.all, + 'folders-only': strings.settings.items.collapseItems.options.foldersOnly, + 'tags-only': strings.settings.items.collapseItems.options.tagsOnly, + 'properties-only': strings.settings.items.collapseItems.options.propertiesOnly } }), createToggleDefinition('smartCollapse', { - name: strings.settings.items.smartCollapse.name, - desc: strings.settings.items.smartCollapse.desc + name: strings.settings.items.keepSelectedItemExpanded.name, + desc: strings.settings.items.keepSelectedItemExpanded.desc }), createToggleDefinition('excludeVaultRootFromCollapse', { name: strings.settings.items.excludeVaultRootFromCollapse.name, @@ -102,7 +102,7 @@ export function createNavigationPaneSettingDefinitions(context: SettingsTabConte ...(Platform.isMobile ? [] : [ - createGroupDefinition(strings.settings.groups.navigation.dragAndDrop, [ + createGroupDefinition(strings.settings.pages.navigationPane.groups.dragAndDrop, [ createToggleDefinition('springLoadedFolders', { name: strings.settings.items.springLoadedFolders.name, desc: strings.settings.items.springLoadedFolders.desc @@ -121,7 +121,7 @@ export function createNavigationPaneSettingDefinitions(context: SettingsTabConte }) ]) ]), - createGroupDefinition(strings.settings.groups.navigation.rainbowColors, [ + createGroupDefinition(strings.settings.pages.navigationPane.groups.rainbowColors, [ createRenderDefinition({ name: strings.settings.items.navRainbowMode.name, desc: strings.settings.items.navRainbowMode.desc, @@ -135,8 +135,8 @@ export function createNavigationPaneSettingDefinitions(context: SettingsTabConte render: setting => renderNavRainbowSectionSetting(setting, context, 'shortcuts') }), createRenderDefinition({ - name: strings.settings.items.navRainbowApplyToRecent.name, - desc: strings.settings.items.navRainbowApplyToRecent.desc, + name: strings.settings.items.navRainbowApplyToRecentItems.name, + desc: strings.settings.items.navRainbowApplyToRecentItems.desc, visible: () => getActiveVaultProfile(plugin.settings).navRainbow.mode !== 'none', render: setting => renderNavRainbowSectionSetting(setting, context, 'recent') }), @@ -159,8 +159,8 @@ export function createNavigationPaneSettingDefinitions(context: SettingsTabConte render: setting => renderNavRainbowSectionSetting(setting, context, 'properties') }), createRenderDefinition({ - name: strings.settings.items.navRainbowBalanceHueLuminance.name, - desc: strings.settings.items.navRainbowBalanceHueLuminance.desc, + name: strings.settings.items.navRainbowConsistentBrightness.name, + desc: strings.settings.items.navRainbowConsistentBrightness.desc, visible: () => getActiveVaultProfile(plugin.settings).navRainbow.mode !== 'none', render: setting => renderNavRainbowToggleSetting(setting, context, 'balanceHueLuminance') }), @@ -171,18 +171,18 @@ export function createNavigationPaneSettingDefinitions(context: SettingsTabConte render: setting => renderNavRainbowToggleSetting(setting, context, 'separateThemeColors') }) ]), - createGroupDefinition(strings.settings.groups.navigation.noteCounts, [ + createGroupDefinition(strings.settings.pages.navigationPane.groups.fileCounts, [ createToggleDefinition('showNoteCount', { - name: strings.settings.items.showNoteCount.name, - desc: strings.settings.items.showNoteCount.desc + name: strings.settings.items.showFileCount.name, + desc: strings.settings.items.showFileCount.desc }), createToggleDefinition('separateNoteCounts', { - name: strings.settings.items.separateNoteCounts.name, - desc: strings.settings.items.separateNoteCounts.desc, + name: strings.settings.items.separateFileCounts.name, + desc: strings.settings.items.separateFileCounts.desc, visible: () => plugin.settings.showNoteCount }) ]), - createGroupDefinition(strings.settings.groups.navigation.banner, [ + createGroupDefinition(strings.settings.pages.navigationPane.groups.banner, [ createRenderDefinition({ name: strings.settings.items.navigationBanner.name, desc: strings.settings.items.navigationBanner.desc, @@ -195,7 +195,7 @@ export function createNavigationPaneSettingDefinitions(context: SettingsTabConte render: setting => renderPinNavigationBannerSetting(setting, context) }) ]), - createGroupDefinition(strings.settings.groups.navigation.appearance, [ + createGroupDefinition(strings.settings.pages.navigationPane.groups.appearance, [ createToggleDefinition('showIndentGuides', { name: strings.settings.items.showIndentGuides.name, desc: strings.settings.items.showIndentGuides.desc @@ -212,13 +212,13 @@ export function createNavigationPaneSettingDefinitions(context: SettingsTabConte } }), createRenderDefinition({ - name: strings.settings.items.navRootSpacing.name, - desc: strings.settings.items.navRootSpacing.desc, + name: strings.settings.items.rootItemSpacing.name, + desc: strings.settings.items.rootItemSpacing.desc, render: setting => renderRootLevelSpacingSetting(setting, context) }), createRenderDefinition({ - name: strings.settings.items.navIndent.name, - desc: strings.settings.items.navIndent.desc, + name: strings.settings.items.treeIndentation.name, + desc: strings.settings.items.treeIndentation.desc, render: setting => renderNavIndentSetting(setting, context) }), createRenderDefinition({ @@ -310,8 +310,8 @@ function renderRootLevelSpacingSetting(setting: Setting, context: SettingsTabCon const { plugin } = context; renderSliderSetting(setting, { - name: strings.settings.items.navRootSpacing.name, - desc: strings.settings.items.navRootSpacing.desc, + name: strings.settings.items.rootItemSpacing.name, + desc: strings.settings.items.rootItemSpacing.desc, value: plugin.settings.rootLevelSpacing, defaultValue: DEFAULT_SETTINGS.rootLevelSpacing, min: 0, @@ -329,8 +329,8 @@ function renderNavIndentSetting(setting: Setting, context: SettingsTabContext): const { plugin } = context; renderSliderSetting(setting, { - name: strings.settings.items.navIndent.name, - desc: strings.settings.items.navIndent.desc, + name: strings.settings.items.treeIndentation.name, + desc: strings.settings.items.treeIndentation.desc, value: plugin.settings.navIndent, defaultValue: DEFAULT_SETTINGS.navIndent, min: 10, @@ -428,9 +428,9 @@ function renderNavRainbowModeSetting(setting: Setting, context: SettingsTabConte .setDesc(strings.settings.items.navRainbowMode.desc) .addDropdown(dropdown => dropdown - .addOption('none', strings.settings.items.navRainbowMode.options.none) - .addOption('foreground', strings.settings.items.navRainbowMode.options.foreground) - .addOption('background', strings.settings.items.navRainbowMode.options.background) + .addOption('none', strings.settings.items.navRainbowMode.options.off) + .addOption('foreground', strings.settings.items.navRainbowMode.options.textColor) + .addOption('background', strings.settings.items.navRainbowMode.options.backgroundColor) .setValue(getActiveVaultProfile(plugin.settings).navRainbow.mode) .onChange(async value => { if (!isNavRainbowColorMode(value)) { @@ -453,7 +453,7 @@ function renderNavRainbowSectionSetting( const { plugin } = context; const sectionStrings = { shortcuts: strings.settings.items.navRainbowApplyToShortcuts, - recent: strings.settings.items.navRainbowApplyToRecent, + recent: strings.settings.items.navRainbowApplyToRecentItems, folders: strings.settings.items.navRainbowApplyToFolders, tags: strings.settings.items.navRainbowApplyToTags, properties: strings.settings.items.navRainbowApplyToProperties @@ -486,7 +486,7 @@ function renderNavRainbowToggleSetting( const { plugin } = context; const itemStrings = key === 'balanceHueLuminance' - ? strings.settings.items.navRainbowBalanceHueLuminance + ? strings.settings.items.navRainbowConsistentBrightness : strings.settings.items.navRainbowSeparateThemeColors; setting.setName(itemStrings.name).setDesc(itemStrings.desc); diff --git a/src/settings/tabs/NotesTab.ts b/src/settings/tabs/NotesTab.ts index 22172250c..d5a9f630c 100644 --- a/src/settings/tabs/NotesTab.ts +++ b/src/settings/tabs/NotesTab.ts @@ -62,7 +62,7 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett const { plugin } = context; return [ - createGroupDefinition(strings.settings.groups.notes.icon, [ + createGroupDefinition(strings.settings.pages.fileDisplay.groups.icon, [ createToggleDefinition('showFileIcons', { name: strings.settings.items.showFileIcons.name, desc: strings.settings.items.showFileIcons.desc @@ -72,9 +72,9 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett desc: strings.settings.items.unfinishedTaskIcon.desc, aliases: Object.values(strings.settings.items.unfinishedTaskIcon.options), options: { - none: strings.settings.items.unfinishedTaskIcon.options.none, + none: strings.settings.items.unfinishedTaskIcon.options.disabled, compact: strings.settings.items.unfinishedTaskIcon.options.compact, - all: strings.settings.items.unfinishedTaskIcon.options.all + all: strings.settings.items.unfinishedTaskIcon.options.standardAndCompact }, visible: () => plugin.settings.showFileIcons }), @@ -84,8 +84,8 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett visible: () => plugin.settings.showFileIcons }), createToggleDefinition('showFilenameMatchIcons', { - name: strings.settings.items.showFilenameMatchIcons.name, - desc: strings.settings.items.showFilenameMatchIcons.desc, + name: strings.settings.items.showFileNameIcons.name, + desc: strings.settings.items.showFileNameIcons.desc, visible: () => plugin.settings.showFileIcons }), createRenderDefinition({ @@ -109,8 +109,8 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett }) }), createToggleDefinition('showCategoryIcons', { - name: strings.settings.items.showCategoryIcons.name, - desc: strings.settings.items.showCategoryIcons.desc, + name: strings.settings.items.showFileTypeIcons.name, + desc: strings.settings.items.showFileTypeIcons.desc, visible: () => plugin.settings.showFileIcons }), createRenderDefinition({ @@ -141,11 +141,11 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett }) }) ]), - createGroupDefinition(strings.settings.groups.notes.title, [ + createGroupDefinition(strings.settings.pages.fileDisplay.groups.title, [ createRenderDefinition({ - name: strings.settings.items.fileNameRows.name, - desc: strings.settings.items.fileNameRows.desc, - aliases: Object.values(strings.settings.items.fileNameRows.options), + name: strings.settings.items.titleRows.name, + desc: strings.settings.items.titleRows.desc, + aliases: Object.values(strings.settings.items.titleRows.options), render: setting => renderFileNameRowsSetting(setting, context) }), createToggleDefinition('useFolderColorForTitles', { @@ -153,10 +153,10 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett desc: strings.settings.items.useFolderColor.desc }) ]), - createGroupDefinition(strings.settings.groups.notes.previewText, [ + createGroupDefinition(strings.settings.pages.fileDisplay.groups.previewText, [ createToggleDefinition('showFilePreview', { - name: strings.settings.items.showFilePreview.name, - desc: strings.settings.items.showFilePreview.desc + name: strings.settings.items.showNotePreview.name, + desc: strings.settings.items.showNotePreview.desc }), createRenderDefinition({ name: strings.settings.items.previewRows.name, @@ -208,12 +208,12 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett }) }), createToggleDefinition('previewPropertiesFallback', { - name: strings.settings.items.previewPropertiesFallback.name, - desc: strings.settings.items.previewPropertiesFallback.desc, + name: strings.settings.items.fallbackToNoteContent.name, + desc: strings.settings.items.fallbackToNoteContent.desc, visible: () => plugin.settings.showFilePreview && plugin.settings.previewProperties.length > 0 }) ]), - createGroupDefinition(strings.settings.groups.notes.featureImage, [ + createGroupDefinition(strings.settings.pages.fileDisplay.groups.featureImage, [ createToggleDefinition('showFeatureImage', { name: strings.settings.items.showFeatureImage.name, desc: strings.settings.items.showFeatureImage.desc @@ -251,9 +251,9 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett }) }), createRenderDefinition({ - name: strings.settings.items.featureImageSize.name, - desc: strings.settings.items.featureImageSize.desc, - aliases: Object.values(strings.settings.items.featureImageSize.options), + name: strings.settings.items.featureImageDisplaySize.name, + desc: strings.settings.items.featureImageDisplaySize.desc, + aliases: Object.values(strings.settings.items.featureImageDisplaySize.options), visible: () => plugin.settings.showFeatureImage, render: setting => renderFeatureImageSizeSetting(setting, context) }), @@ -276,7 +276,7 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett }) ]), createGroupDefinition( - strings.settings.groups.notes.tags, + strings.settings.pages.fileDisplay.groups.tags, [ createToggleDefinition('showFileTags', { name: strings.settings.items.showFileTags.name, @@ -288,13 +288,13 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett visible: () => plugin.settings.showFileTags }), createToggleDefinition('prioritizeColoredFileTags', { - name: strings.settings.items.prioritizeColoredFileTags.name, - desc: strings.settings.items.prioritizeColoredFileTags.desc, + name: strings.settings.items.showColoredTagsFirst.name, + desc: strings.settings.items.showColoredTagsFirst.desc, visible: () => plugin.settings.showFileTags && plugin.settings.colorFileTags }), createToggleDefinition('showFileTagAncestors', { - name: strings.settings.items.showFileTagAncestors.name, - desc: strings.settings.items.showFileTagAncestors.desc, + name: strings.settings.items.showFullTagPaths.name, + desc: strings.settings.items.showFullTagPaths.desc, visible: () => plugin.settings.showFileTags }), createToggleDefinition('showFileTagsInCompactMode', { @@ -305,7 +305,7 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett ], { visible: () => plugin.settings.showTags } ), - createGroupDefinition(strings.settings.groups.notes.properties, [ + createGroupDefinition(strings.settings.pages.fileDisplay.groups.properties, [ createToggleDefinition('showFileProperties', { name: strings.settings.items.showFileProperties.name, desc: strings.settings.items.showFileProperties.desc @@ -316,8 +316,8 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett visible: () => plugin.settings.showFileProperties }), createToggleDefinition('prioritizeColoredFileProperties', { - name: strings.settings.items.prioritizeColoredFileProperties.name, - desc: strings.settings.items.prioritizeColoredFileProperties.desc, + name: strings.settings.items.showColoredPropertiesFirst.name, + desc: strings.settings.items.showColoredPropertiesFirst.desc, visible: () => plugin.settings.showFileProperties && plugin.settings.colorFileProperties }), createToggleDefinition('showFilePropertiesInCompactMode', { @@ -331,17 +331,17 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett visible: () => plugin.settings.showFileProperties }), createToggleDefinition('enablePropertyInternalLinks', { - name: strings.settings.items.enablePropertyInternalLinks.name, - desc: strings.settings.items.enablePropertyInternalLinks.desc, + name: strings.settings.items.linkPropertyPillsToNotes.name, + desc: strings.settings.items.linkPropertyPillsToNotes.desc, visible: () => plugin.settings.showFileProperties }), createToggleDefinition('enablePropertyExternalLinks', { - name: strings.settings.items.enablePropertyExternalLinks.name, - desc: strings.settings.items.enablePropertyExternalLinks.desc, + name: strings.settings.items.linkPropertyPillsToUrls.name, + desc: strings.settings.items.linkPropertyPillsToUrls.desc, visible: () => plugin.settings.showFileProperties }) ]), - createGroupDefinition(strings.settings.groups.notes.tasks, [ + createGroupDefinition(strings.settings.pages.fileDisplay.groups.tasks, [ createToggleDefinition('showFileTaskProgress', { name: strings.settings.items.showFileTaskProgress.name, desc: strings.settings.items.showFileTaskProgress.desc @@ -362,8 +362,8 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett visible: () => plugin.settings.showFileTaskProgress }), createToggleDefinition('showFileBackgroundUnfinishedTask', { - name: strings.settings.items.showFileBackgroundUnfinishedTask.name, - desc: strings.settings.items.showFileBackgroundUnfinishedTask.desc + name: strings.settings.items.unfinishedTaskBackground.name, + desc: strings.settings.items.unfinishedTaskBackground.desc }), createRenderDefinition({ name: strings.settings.items.unfinishedTaskBackgroundColor.name, @@ -390,35 +390,35 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett }) }) ]), - createGroupDefinition(strings.settings.groups.notes.date, [ + createGroupDefinition(strings.settings.pages.fileDisplay.groups.date, [ createToggleDefinition('showFileDate', { name: strings.settings.items.showFileDate.name, desc: strings.settings.items.showFileDate.desc }), createDropdownDefinition('alphabeticalDateMode', { - name: strings.settings.items.alphabeticalDateMode.name, - desc: strings.settings.items.alphabeticalDateMode.desc, - aliases: Object.values(strings.settings.items.alphabeticalDateMode.options), + name: strings.settings.items.dateWhenSortingByName.name, + desc: strings.settings.items.dateWhenSortingByName.desc, + aliases: Object.values(strings.settings.items.dateWhenSortingByName.options), visible: () => plugin.settings.showFileDate, options: { - created: strings.settings.items.alphabeticalDateMode.options.created, - modified: strings.settings.items.alphabeticalDateMode.options.modified + created: strings.settings.items.dateWhenSortingByName.options.created, + modified: strings.settings.items.dateWhenSortingByName.options.modified } }) ]), - createGroupDefinition(strings.settings.groups.notes.parentFolder, [ + createGroupDefinition(strings.settings.pages.fileDisplay.groups.parentFolder, [ createToggleDefinition('showParentFolder', { name: strings.settings.items.showParentFolder.name, desc: strings.settings.items.showParentFolder.desc }), createToggleDefinition('showParentFolderFullPath', { - name: strings.settings.items.showParentFolderFullPath.name, - desc: strings.settings.items.showParentFolderFullPath.desc, + name: strings.settings.items.showFolderPath.name, + desc: strings.settings.items.showFolderPath.desc, visible: () => plugin.settings.showParentFolder }), createToggleDefinition('parentFolderClickRevealsFile', { - name: strings.settings.items.parentFolderClickRevealsFile.name, - desc: strings.settings.items.parentFolderClickRevealsFile.desc, + name: strings.settings.items.parentFolderClickOpensFolder.name, + desc: strings.settings.items.parentFolderClickOpensFolder.desc, visible: () => plugin.settings.showParentFolder }), createToggleDefinition('showParentFolderColor', { @@ -432,16 +432,16 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett visible: () => plugin.settings.showParentFolder }) ]), - createGroupDefinition(strings.settings.groups.notes.wordCount, [ + createGroupDefinition(strings.settings.pages.fileDisplay.groups.wordAndCharacterCount, [ createDropdownDefinition('textCountDisplay', { - name: strings.settings.items.textCountDisplay.name, - desc: strings.settings.items.textCountDisplay.desc, - aliases: Object.values(strings.settings.items.textCountDisplay.options), + name: strings.settings.items.textCountType.name, + desc: strings.settings.items.textCountType.desc, + aliases: Object.values(strings.settings.items.textCountType.options), options: { - none: strings.settings.items.textCountDisplay.options.none, - words: strings.settings.items.textCountDisplay.options.words, - characters: strings.settings.items.textCountDisplay.options.characters, - both: strings.settings.items.textCountDisplay.options.both + none: strings.settings.items.textCountType.options.none, + words: strings.settings.items.textCountType.options.words, + characters: strings.settings.items.textCountType.options.characters, + both: strings.settings.items.textCountType.options.both } }), createDropdownDefinition('textCountPlacement', { @@ -484,8 +484,8 @@ export function createNotesSettingDefinitions(context: SettingsTabContext): Sett } }), createToggleDefinition('showWordCountPercentage', { - name: strings.settings.items.showWordCountPercentage.name, - desc: strings.settings.items.showWordCountPercentage.desc, + name: strings.settings.items.showTargetPercentage.name, + desc: strings.settings.items.showTargetPercentage.desc, visible: () => showsWordCount(plugin.settings.textCountDisplay) }) ]) @@ -512,7 +512,7 @@ function renderColorSetting( function getFileTypeIconPresetOptions(context: SettingsTabContext): Record { const options: Record = { none: { - label: strings.settings.items.fileTypeIconPreset.options.none, + label: strings.settings.items.fileTypeIconPreset.options.builtIn, isInstalled: true } }; @@ -655,13 +655,13 @@ function renderFileNameRowsSetting(setting: Setting, context: SettingsTabContext const { plugin } = context; setting - .setName(strings.settings.items.fileNameRows.name) - .setDesc(strings.settings.items.fileNameRows.desc) + .setName(strings.settings.items.titleRows.name) + .setDesc(strings.settings.items.titleRows.desc) .addDropdown(dropdown => dropdown - .addOption('1', strings.settings.items.fileNameRows.options['1']) - .addOption('2', strings.settings.items.fileNameRows.options['2']) - .addOption('3', strings.settings.items.fileNameRows.options['3']) + .addOption('1', strings.settings.items.titleRows.options['1']) + .addOption('2', strings.settings.items.titleRows.options['2']) + .addOption('3', strings.settings.items.titleRows.options['3']) .setValue(plugin.settings.fileNameRows.toString()) .onChange(async value => { plugin.settings.fileNameRows = parseInt(value, 10); @@ -720,13 +720,13 @@ function renderFeatureImageSizeSetting(setting: Setting, context: SettingsTabCon const { plugin } = context; setting - .setName(strings.settings.items.featureImageSize.name) - .setDesc(strings.settings.items.featureImageSize.desc) + .setName(strings.settings.items.featureImageDisplaySize.name) + .setDesc(strings.settings.items.featureImageDisplaySize.desc) .addDropdown(dropdown => dropdown - .addOption('64', strings.settings.items.featureImageSize.options.standard) - .addOption('96', strings.settings.items.featureImageSize.options.large) - .addOption('128', strings.settings.items.featureImageSize.options.extraLarge) + .addOption('64', strings.settings.items.featureImageDisplaySize.options['64']) + .addOption('96', strings.settings.items.featureImageDisplaySize.options['96']) + .addOption('128', strings.settings.items.featureImageDisplaySize.options['128']) .setValue(plugin.settings.featureImageSize) .onChange(value => { if (!isFeatureImageSizeSetting(value)) { @@ -746,9 +746,9 @@ function renderFeatureImagePixelSizeSetting(setting: Setting, context: SettingsT .setDesc(strings.settings.items.featureImagePixelSize.desc) .addDropdown(dropdown => dropdown - .addOption('256', strings.settings.items.featureImagePixelSize.options.standard) - .addOption('384', strings.settings.items.featureImagePixelSize.options.large) - .addOption('512', strings.settings.items.featureImagePixelSize.options.extraLarge) + .addOption('256', strings.settings.items.featureImagePixelSize.options['256x144']) + .addOption('384', strings.settings.items.featureImagePixelSize.options['384x216']) + .addOption('512', strings.settings.items.featureImagePixelSize.options['512x288']) .setValue(plugin.settings.featureImagePixelSize) .onChange(value => { if (!isFeatureImagePixelSizeSetting(value)) { diff --git a/src/settings/tabs/PropertiesTab.ts b/src/settings/tabs/PropertiesTab.ts index 281550e96..ecd82f80c 100644 --- a/src/settings/tabs/PropertiesTab.ts +++ b/src/settings/tabs/PropertiesTab.ts @@ -52,13 +52,13 @@ export function createPropertiesSettingDefinitions(context: SettingsTabContext, render: setting => renderPropertySortOrderSetting(setting, context) }), createToggleDefinition('showAllPropertiesFolder', { - name: strings.settings.items.showAllPropertiesFolder.name, - desc: strings.settings.items.showAllPropertiesFolder.desc, + name: strings.settings.items.showPropertiesFolder.name, + desc: strings.settings.items.showPropertiesFolder.desc, visible: () => plugin.settings.showProperties }), createToggleDefinition('scopePropertiesToCurrentContext', { - name: strings.settings.items.scopePropertiesToCurrentContext.name, - desc: strings.settings.items.scopePropertiesToCurrentContext.desc, + name: strings.settings.items.filterPropertiesBySelection.name, + desc: strings.settings.items.filterPropertiesBySelection.desc, visible: () => plugin.settings.showProperties }), createRenderDefinition({ diff --git a/src/settings/tabs/ShortcutsTab.ts b/src/settings/tabs/ShortcutsTab.ts index 04f4f4596..226d105aa 100644 --- a/src/settings/tabs/ShortcutsTab.ts +++ b/src/settings/tabs/ShortcutsTab.ts @@ -31,11 +31,11 @@ export function createShortcutsSettingDefinitions(context: SettingsTabContext): return [ createGroupDefinition(undefined, [ createToggleDefinition('showSectionIcons', { - name: strings.settings.items.showSectionIcons.name, - desc: strings.settings.items.showSectionIcons.desc + name: strings.settings.items.showShortcutAndRecentItemIcons.name, + desc: strings.settings.items.showShortcutAndRecentItemIcons.desc }) ]), - createGroupDefinition(strings.navigationPane.shortcutsHeader, [ + createGroupDefinition(strings.settings.pages.shortcutsAndRecentFiles.groups.shortcuts, [ createToggleDefinition('showShortcuts', { name: strings.settings.items.showShortcuts.name, desc: strings.settings.items.showShortcuts.desc @@ -46,40 +46,40 @@ export function createShortcutsSettingDefinitions(context: SettingsTabContext): aliases: Object.values(strings.settings.items.shortcutBadgeDisplay.options), visible: () => plugin.settings.showShortcuts, options: { - index: strings.settings.items.shortcutBadgeDisplay.options.index, + index: strings.settings.items.shortcutBadgeDisplay.options.position, count: strings.settings.items.shortcutBadgeDisplay.options.count, none: strings.settings.items.shortcutBadgeDisplay.options.none } }), createToggleDefinition('skipAutoScroll', { - name: strings.settings.items.skipAutoScroll.name, - desc: strings.settings.items.skipAutoScroll.desc, + name: strings.settings.items.disableShortcutAutoScroll.name, + desc: strings.settings.items.disableShortcutAutoScroll.desc, visible: () => plugin.settings.showShortcuts }) ]), - createGroupDefinition(strings.navigationPane.recentFilesHeader, [ + createGroupDefinition(strings.settings.pages.shortcutsAndRecentFiles.groups.recentFiles, [ createToggleDefinition('showRecentNotes', { - name: strings.settings.items.showRecentNotes.name, - desc: strings.settings.items.showRecentNotes.desc + name: strings.settings.items.showRecentFiles.name, + desc: strings.settings.items.showRecentFiles.desc }), createDropdownDefinition('hideRecentNotes', { - name: strings.settings.items.hideRecentNotes.name, - desc: strings.settings.items.hideRecentNotes.desc, - aliases: Object.values(strings.settings.items.hideRecentNotes.options), + name: strings.settings.items.hideFileTypesFromRecentFiles.name, + desc: strings.settings.items.hideFileTypesFromRecentFiles.desc, + aliases: Object.values(strings.settings.items.hideFileTypesFromRecentFiles.options), visible: () => plugin.settings.showRecentNotes, options: { - none: strings.settings.items.hideRecentNotes.options.none, - 'folder-notes': strings.settings.items.hideRecentNotes.options.folderNotes + none: strings.settings.items.hideFileTypesFromRecentFiles.options.none, + 'folder-notes': strings.settings.items.hideFileTypesFromRecentFiles.options.folderNotes } }), createToggleDefinition('pinRecentNotesWithShortcuts', { - name: strings.settings.items.pinRecentNotesWithShortcuts.name, - desc: strings.settings.items.pinRecentNotesWithShortcuts.desc, + name: strings.settings.items.pinRecentFilesWithShortcuts.name, + desc: strings.settings.items.pinRecentFilesWithShortcuts.desc, visible: () => plugin.settings.showRecentNotes }), createRenderDefinition({ - name: strings.settings.items.recentNotesCount.name, - desc: strings.settings.items.recentNotesCount.desc, + name: strings.settings.items.recentFilesCount.name, + desc: strings.settings.items.recentFilesCount.desc, visible: () => plugin.settings.showRecentNotes, render: setting => renderRecentNotesCountSetting(setting, context) }) @@ -91,8 +91,8 @@ function renderRecentNotesCountSetting(setting: Setting, context: SettingsTabCon const { plugin } = context; renderSliderSetting(setting, { - name: strings.settings.items.recentNotesCount.name, - desc: strings.settings.items.recentNotesCount.desc, + name: strings.settings.items.recentFilesCount.name, + desc: strings.settings.items.recentFilesCount.desc, value: plugin.settings.recentNotesCount, defaultValue: DEFAULT_SETTINGS.recentNotesCount, min: 1, diff --git a/src/settings/tabs/StartResourcesSection.ts b/src/settings/tabs/StartResourcesSection.ts index 84297917f..6ed64adc5 100644 --- a/src/settings/tabs/StartResourcesSection.ts +++ b/src/settings/tabs/StartResourcesSection.ts @@ -39,7 +39,9 @@ export function renderStartResourcesSection(context: SettingsTabContext): void { return; } const hasVersion = Boolean(version); - updateStatusEl.setText(hasVersion ? strings.settings.items.updateCheckOnStart.status.replace('{version}', version ?? '') : ''); + updateStatusEl.setText( + hasVersion ? strings.settings.items.checkForNewVersionOnStart.status.replace('{version}', version ?? '') : '' + ); setElementVisible(updateStatusEl, hasVersion); }; @@ -146,7 +148,7 @@ export function createStartResourcesSettingDefinitions(context: SettingsTabConte } const hasVersion = Boolean(version); updateStatusEl.setText( - hasVersion ? strings.settings.items.updateCheckOnStart.status.replace('{version}', version ?? '') : '' + hasVersion ? strings.settings.items.checkForNewVersionOnStart.status.replace('{version}', version ?? '') : '' ); setElementVisible(updateStatusEl, hasVersion); }; diff --git a/src/settings/tabs/TagsTab.ts b/src/settings/tabs/TagsTab.ts index ad4c4f8c5..7bb0ee3be 100644 --- a/src/settings/tabs/TagsTab.ts +++ b/src/settings/tabs/TagsTab.ts @@ -52,18 +52,18 @@ export function createTagsSettingDefinitions(context: SettingsTabContext, headin render: setting => renderTagSortOrderSetting(setting, context) }), createToggleDefinition('showAllTagsFolder', { - name: strings.settings.items.showAllTagsFolder.name, - desc: strings.settings.items.showAllTagsFolder.desc, + name: strings.settings.items.showTagsFolder.name, + desc: strings.settings.items.showTagsFolder.desc, visible: () => plugin.settings.showTags }), createToggleDefinition('showUntagged', { - name: strings.settings.items.showUntagged.name, - desc: strings.settings.items.showUntagged.desc, + name: strings.settings.items.showUntaggedNotes.name, + desc: strings.settings.items.showUntaggedNotes.desc, visible: () => plugin.settings.showTags }), createToggleDefinition('scopeTagsToCurrentContext', { - name: strings.settings.items.scopeTagsToCurrentContext.name, - desc: strings.settings.items.scopeTagsToCurrentContext.desc, + name: strings.settings.items.filterTagsBySelection.name, + desc: strings.settings.items.filterTagsBySelection.desc, visible: () => plugin.settings.showTags }), createToggleDefinition('keepEmptyTagsProperty', { diff --git a/src/settings/tabs/VaultSetupSection.ts b/src/settings/tabs/VaultSetupSection.ts index d56c76cba..ccdb3e07a 100644 --- a/src/settings/tabs/VaultSetupSection.ts +++ b/src/settings/tabs/VaultSetupSection.ts @@ -53,7 +53,7 @@ interface VaultSetupRenderers { /** Renders the vault setup section inside the General settings page. */ export function renderGeneralVaultSetupSection(context: SettingsTabContext): void { renderVaultSetupSection(context, { - heading: strings.settings.groups.general.vaultConfiguration + heading: strings.settings.index.groups.vaultSetup }); } @@ -82,13 +82,13 @@ export function createVaultSetupSettingDefinitions(context: SettingsTabContext): render: setting => renderers.renderProfileSetting(setting) }), createRenderDefinition({ - name: strings.settings.items.fileVisibility.name, - desc: strings.settings.items.fileVisibility.desc, + name: strings.settings.items.showFileTypes.name, + desc: strings.settings.items.showFileTypes.desc, render: setting => renderers.renderFileVisibilitySetting(setting) }), createRenderDefinition({ - name: strings.settings.items.propertyFields.name, - desc: strings.settings.items.propertyFields.desc, + name: strings.settings.items.propertyKeys.name, + desc: strings.settings.items.propertyKeys.desc, render: setting => renderers.renderPropertyKeysSetting(setting) }) ]; @@ -100,14 +100,14 @@ export function createVaultSetupSettingDefinitions(context: SettingsTabContext): 1, 0, createRenderDefinition({ - name: strings.settings.items.vaultTitle.name, - desc: strings.settings.items.vaultTitle.desc, + name: strings.settings.items.vaultTitlePlacement.name, + desc: strings.settings.items.vaultTitlePlacement.desc, render: setting => renderers.renderVaultTitleSetting(setting) }) ); } - return [createGroupDefinition(strings.settings.groups.general.vaultConfiguration, items)]; + return [createGroupDefinition(strings.settings.index.groups.vaultSetup, items)]; } function createVaultSetupRenderers(context: SettingsTabContext): VaultSetupRenderers { @@ -136,16 +136,16 @@ function createVaultSetupRenderers(context: SettingsTabContext): VaultSetupRende const configuredKeys = propertyKeys.map(entry => entry.key.trim()).filter(key => key.length > 0); const configuredCount = configuredKeys.length; if (configuredCount === 0) { - return strings.settings.items.propertyFields.noneConfigured; + return strings.settings.items.propertyKeys.noneConfigured; } const visibleKeys = configuredKeys.slice(0, 5); const keyList = configuredCount > visibleKeys.length ? `${visibleKeys.join(', ')}, ...` : visibleKeys.join(', '); if (configuredCount === 1) { - return strings.settings.items.propertyFields.singleConfigured.replace('{properties}', keyList); + return strings.settings.items.propertyKeys.singleConfigured.replace('{properties}', keyList); } - return strings.settings.items.propertyFields.multipleConfigured + return strings.settings.items.propertyKeys.multipleConfigured .replace('{count}', configuredCount.toString()) .replace('{properties}', keyList); }; @@ -283,12 +283,12 @@ function createVaultSetupRenderers(context: SettingsTabContext): VaultSetupRende const renderVaultTitleSetting = (setting: Setting): void => { setting - .setName(strings.settings.items.vaultTitle.name) - .setDesc(strings.settings.items.vaultTitle.desc) + .setName(strings.settings.items.vaultTitlePlacement.name) + .setDesc(strings.settings.items.vaultTitlePlacement.desc) .addDropdown(dropdown => dropdown - .addOption('header', strings.settings.items.vaultTitle.options.header) - .addOption('navigation', strings.settings.items.vaultTitle.options.navigation) + .addOption('header', strings.settings.items.vaultTitlePlacement.options.header) + .addOption('navigation', strings.settings.items.vaultTitlePlacement.options.navigation) .setValue(plugin.settings.vaultTitle) .onChange(async value => { if (!isVaultTitleOption(value)) { @@ -302,14 +302,14 @@ function createVaultSetupRenderers(context: SettingsTabContext): VaultSetupRende const renderFileVisibilitySetting = (setting: Setting): void => { setting - .setName(strings.settings.items.fileVisibility.name) - .setDesc(strings.settings.items.fileVisibility.desc) + .setName(strings.settings.items.showFileTypes.name) + .setDesc(strings.settings.items.showFileTypes.desc) .addDropdown(dropdown => { fileVisibilityDropdown = dropdown; dropdown - .addOption(FILE_VISIBILITY.DOCUMENTS, strings.settings.items.fileVisibility.options.documents) - .addOption(FILE_VISIBILITY.SUPPORTED, strings.settings.items.fileVisibility.options.supported) - .addOption(FILE_VISIBILITY.ALL, strings.settings.items.fileVisibility.options.all) + .addOption(FILE_VISIBILITY.DOCUMENTS, strings.settings.items.showFileTypes.options.documents) + .addOption(FILE_VISIBILITY.SUPPORTED, strings.settings.items.showFileTypes.options.supported) + .addOption(FILE_VISIBILITY.ALL, strings.settings.items.showFileTypes.options.all) .setValue(getActiveProfile()?.fileVisibility ?? FILE_VISIBILITY.SUPPORTED) .onChange(async value => { if (!isFileVisibility(value)) { @@ -327,7 +327,7 @@ function createVaultSetupRenderers(context: SettingsTabContext): VaultSetupRende }; const renderPropertyKeysSetting = (propertyKeysSetting: Setting): void => { - propertyKeysSetting.setName(strings.settings.items.propertyFields.name).setDesc(strings.settings.items.propertyFields.desc); + propertyKeysSetting.setName(strings.settings.items.propertyKeys.name).setDesc(strings.settings.items.propertyKeys.desc); const propertyKeysCountLineEl = propertyKeysSetting.descEl.createDiv({ cls: 'nn-setting-property-keys-count-line' @@ -335,7 +335,7 @@ function createVaultSetupRenderers(context: SettingsTabContext): VaultSetupRende propertyKeysSummaryTextEl = propertyKeysCountLineEl.createSpan({ cls: 'nn-setting-property-keys-summary-text' }); propertyKeysSetting.addButton(button => - button.setButtonText(strings.settings.items.propertyFields.addButtonTooltip).onClick(() => { + button.setButtonText(strings.settings.items.propertyKeys.addButtonTooltip).onClick(() => { const activeProfile = getActiveProfile(); if (!activeProfile) { return; diff --git a/src/settings/tabs/legacy/AdvancedLegacyTab.ts b/src/settings/tabs/legacy/AdvancedLegacyTab.ts index 48b03e777..58ccb2e0a 100644 --- a/src/settings/tabs/legacy/AdvancedLegacyTab.ts +++ b/src/settings/tabs/legacy/AdvancedLegacyTab.ts @@ -36,13 +36,13 @@ export function renderAdvancedTab(context: SettingsTabContext): void { const createGroup = createSettingGroupFactory(containerEl); const advancedGroup = createGroup(undefined); - const maintenanceGroup = createGroup(strings.settings.groups.advanced.maintenance); - const resetGroup = createGroup(strings.settings.groups.advanced.resetSettings); + const maintenanceGroup = createGroup(strings.settings.pages.advanced.groups.maintenance); + const resetGroup = createGroup(strings.settings.pages.advanced.groups.resetSettings); advancedGroup.addSetting(setting => { setting - .setName(strings.settings.items.updateCheckOnStart.name) - .setDesc(strings.settings.items.updateCheckOnStart.desc) + .setName(strings.settings.items.checkForNewVersionOnStart.name) + .setDesc(strings.settings.items.checkForNewVersionOnStart.desc) .addToggle(toggle => toggle.setValue(plugin.settings.checkForUpdatesOnStart).onChange(async value => { plugin.settings.checkForUpdatesOnStart = value; @@ -59,8 +59,8 @@ export function renderAdvancedTab(context: SettingsTabContext): void { advancedGroup.addSetting(setting => { setting - .setName(getNotSyncedSettingName(strings.settings.items.debugLogging.name)) - .setDesc(strings.settings.items.debugLogging.desc) + .setName(getNotSyncedSettingName(strings.settings.items.startupDebugLogging.name)) + .setDesc(strings.settings.items.startupDebugLogging.desc) .addToggle(toggle => toggle.setValue(plugin.isDebugLoggingEnabled()).onChange(value => { plugin.setDebugLoggingEnabled(value); @@ -87,15 +87,15 @@ export function renderAdvancedTab(context: SettingsTabContext): void { advancedGroup.addSetting(setting => { setting - .setName(strings.settings.items.settingsTransfer.name) - .setDesc(strings.settings.items.settingsTransfer.desc) + .setName(strings.settings.items.importAndExportSettings.name) + .setDesc(strings.settings.items.importAndExportSettings.desc) .addButton(button => - button.setButtonText(strings.settings.items.settingsTransfer.importButtonText).onClick(() => { + button.setButtonText(strings.settings.items.importAndExportSettings.importButtonText).onClick(() => { new SettingsImportModal(context.app, plugin).open(); }) ) .addButton(button => - button.setButtonText(strings.settings.items.settingsTransfer.exportButtonText).onClick(() => { + button.setButtonText(strings.settings.items.importAndExportSettings.exportButtonText).onClick(() => { new SettingsExportModal(context.app, plugin).open(); }) ); diff --git a/src/settings/tabs/legacy/AppearanceBehaviorLegacyTab.ts b/src/settings/tabs/legacy/AppearanceBehaviorLegacyTab.ts index ed1770ba8..d278bcff9 100644 --- a/src/settings/tabs/legacy/AppearanceBehaviorLegacyTab.ts +++ b/src/settings/tabs/legacy/AppearanceBehaviorLegacyTab.ts @@ -89,8 +89,8 @@ function renderBehaviorSettings(context: SettingsTabContext, createGroup: Create addToggleSetting( behaviorGroup.addSetting, - strings.settings.items.createNewNotesInNewTab.name, - strings.settings.items.createNewNotesInNewTab.desc, + strings.settings.items.openNewNotesInNewTab.name, + strings.settings.items.openNewNotesInNewTab.desc, () => plugin.settings.createNewNotesInNewTab, value => { plugin.settings.createNewNotesInNewTab = value; @@ -143,17 +143,17 @@ function renderBehaviorSettings(context: SettingsTabContext, createGroup: Create function renderStartupSettings(context: SettingsTabContext, createGroup: CreateSettingGroup): void { const { plugin } = context; - const startupGroup = createGroup(strings.settings.groups.general.startup); + const startupGroup = createGroup(strings.settings.pages.appearanceAndBehavior.groups.startup); startupGroup.addSetting(setting => { setting - .setName(strings.settings.items.startView.name) - .setDesc(strings.settings.items.startView.desc) + .setName(strings.settings.items.defaultStartupView.name) + .setDesc(strings.settings.items.defaultStartupView.desc) .addDropdown(dropdown => { dropdown .addOptions({ - navigation: strings.settings.items.startView.options.navigation, - files: strings.settings.items.startView.options.files + navigation: strings.settings.items.defaultStartupView.options.navigation, + files: strings.settings.items.defaultStartupView.options.listPane }) .setValue(plugin.settings.startView) .onChange(async value => { @@ -279,7 +279,7 @@ function renderStartupSettings(context: SettingsTabContext, createGroup: CreateS function renderKeyboardNavigationSettings(context: SettingsTabContext, createGroup: CreateSettingGroup): void { const { plugin } = context; - const keyboardNavigationGroup = createGroup(strings.settings.groups.general.keyboardNavigation); + const keyboardNavigationGroup = createGroup(strings.settings.pages.appearanceAndBehavior.groups.keyboardNavigation); keyboardNavigationGroup.addSetting(setting => { setting @@ -321,8 +321,8 @@ function renderKeyboardNavigationSettings(context: SettingsTabContext, createGro }; new Setting(enterToOpenSettingsEl) - .setName(strings.settings.items.shiftEnterOpenContext.name) - .setDesc(strings.settings.items.shiftEnterOpenContext.desc) + .setName(strings.settings.items.shiftEnterAction.name) + .setDesc(strings.settings.items.shiftEnterAction.desc) .addDropdown(dropdown => dropdown .addOption('tab', strings.contextMenu.file.openInNewTab) @@ -337,7 +337,7 @@ function renderKeyboardNavigationSettings(context: SettingsTabContext, createGro ); // Platform.isMacOS is also true on iOS/iPadOS devices, which use Cmd-based keyboards - const cmdCtrlStrings = Platform.isMacOS ? strings.settings.items.cmdEnterOpenContext : strings.settings.items.ctrlEnterOpenContext; + const cmdCtrlStrings = Platform.isMacOS ? strings.settings.items.cmdEnterAction : strings.settings.items.ctrlEnterAction; new Setting(enterToOpenSettingsEl) .setName(cmdCtrlStrings.name) @@ -358,7 +358,7 @@ function renderKeyboardNavigationSettings(context: SettingsTabContext, createGro function renderMouseButtonSettings(context: SettingsTabContext, createGroup: CreateSettingGroup): void { const { plugin } = context; - const mouseButtonsGroup = createGroup(strings.settings.groups.general.mouseButtons); + const mouseButtonsGroup = createGroup(strings.settings.pages.appearanceAndBehavior.groups.mouseButtons); const normalizeMouseBackForwardAction = (value: string): MouseBackForwardAction => { if (value === 'singlePaneSwitch' || value === 'history') { return value; @@ -372,7 +372,7 @@ function renderMouseButtonSettings(context: SettingsTabContext, createGroup: Cre .setDesc(strings.settings.items.mouseBackForwardAction.desc) .addDropdown(dropdown => dropdown - .addOption('none', strings.settings.items.mouseBackForwardAction.options.none) + .addOption('none', strings.settings.items.mouseBackForwardAction.options.systemDefault) .addOption('singlePaneSwitch', strings.settings.items.mouseBackForwardAction.options.singlePaneSwitch) .addOption('history', strings.settings.items.mouseBackForwardAction.options.history) .setValue(plugin.settings.mouseBackForwardAction) @@ -427,14 +427,14 @@ function renderDualPaneSettings(context: SettingsTabContext, group: ReturnType { setting - .setName(strings.settings.items.narrowSidebarLayout.name) - .setDesc(strings.settings.items.narrowSidebarLayout.desc) + .setName(strings.settings.items.narrowSidebarBehavior.name) + .setDesc(strings.settings.items.narrowSidebarBehavior.desc) .addDropdown(dropdown => { dropdown .addOptions({ - none: strings.settings.items.narrowSidebarLayout.options.none, - singlePane: strings.settings.items.narrowSidebarLayout.options.singlePane, - vertical: strings.settings.items.narrowSidebarLayout.options.vertical + none: strings.settings.items.narrowSidebarBehavior.options.none, + singlePane: strings.settings.items.narrowSidebarBehavior.options.singlePane, + vertical: strings.settings.items.narrowSidebarBehavior.options.vertical }) .setValue(plugin.settings.narrowSidebarLayout) .onChange(value => { @@ -450,13 +450,13 @@ function renderDualPaneSettings(context: SettingsTabContext, group: ReturnType { setting - .setName(strings.settings.items.narrowSidebarTrigger.name) - .setDesc(strings.settings.items.narrowSidebarTrigger.desc) + .setName(strings.settings.items.narrowSidebarThresholdMode.name) + .setDesc(strings.settings.items.narrowSidebarThresholdMode.desc) .addDropdown(dropdown => { dropdown .addOptions({ - fitPanes: strings.settings.items.narrowSidebarTrigger.options.fitPanes, - customWidth: strings.settings.items.narrowSidebarTrigger.options.customWidth + fitPanes: strings.settings.items.narrowSidebarThresholdMode.options.fitPanes, + customWidth: strings.settings.items.narrowSidebarThresholdMode.options.customWidth }) .setValue(plugin.settings.narrowSidebarTriggerMode) .onChange(value => { @@ -472,14 +472,14 @@ function renderDualPaneSettings(context: SettingsTabContext, group: ReturnType { renderSliderSetting(setting, { - name: strings.settings.items.narrowSidebarCustomWidth.name, - desc: strings.settings.items.narrowSidebarCustomWidth.desc, + name: strings.settings.items.narrowSidebarThresholdWidth.name, + desc: strings.settings.items.narrowSidebarThresholdWidth.desc, value: plugin.settings.narrowSidebarCustomWidth, defaultValue: NARROW_SIDEBAR_CUSTOM_WIDTH_DEFAULT, min: NARROW_SIDEBAR_CUSTOM_WIDTH_MIN, max: NARROW_SIDEBAR_CUSTOM_WIDTH_MAX, step: NARROW_SIDEBAR_CUSTOM_WIDTH_STEP, - resetTooltip: strings.settings.items.narrowSidebarCustomWidth.resetTooltip, + resetTooltip: strings.settings.items.narrowSidebarThresholdWidth.resetTooltip, formatValue: formatPixelSliderValue, onChange: value => { plugin.setNarrowSidebarCustomWidth(value); @@ -494,20 +494,20 @@ function renderDualPaneSettings(context: SettingsTabContext, group: ReturnType { setting - .setName(strings.settings.items.appearanceBackground.name) - .setDesc(strings.settings.items.appearanceBackground.desc) + .setName(strings.settings.items.paneBackgroundColor.name) + .setDesc(strings.settings.items.paneBackgroundColor.desc) .addDropdown(dropdown => dropdown .addOptions({ - separate: strings.settings.items.appearanceBackground.options.separate, - primary: strings.settings.items.appearanceBackground.options.primary, - secondary: strings.settings.items.appearanceBackground.options.secondary + separate: strings.settings.items.paneBackgroundColor.options.separate, + primary: strings.settings.items.paneBackgroundColor.options.listBackground, + secondary: strings.settings.items.paneBackgroundColor.options.navigationBackground }) .setValue(plugin.settings.desktopBackground ?? 'separate') .onChange(async value => { @@ -554,7 +554,7 @@ function renderDesktopAppearanceSettings(context: SettingsTabContext, createGrou function renderMobileAppearanceSettings(context: SettingsTabContext, createGroup: CreateSettingGroup): void { const { plugin } = context; - const mobileAppearanceGroup = createGroup(strings.settings.groups.general.mobileAppearance); + const mobileAppearanceGroup = createGroup(strings.settings.pages.appearanceAndBehavior.groups.mobileAppearance); // Tablets support the dual pane layout, so they get the same pane settings as desktop if (Platform.isTablet) { @@ -565,8 +565,8 @@ function renderMobileAppearanceSettings(context: SettingsTabContext, createGroup // Floating toolbars only render with the phone chrome; tablets use the desktop headers const useFloatingToolbarsSetting = mobileAppearanceGroup.addSetting(setting => { setting - .setName(strings.settings.items.useFloatingToolbars.name) - .setDesc(strings.settings.items.useFloatingToolbars.desc) + .setName(strings.settings.items.useFloatingToolbarsOnIOS.name) + .setDesc(strings.settings.items.useFloatingToolbarsOnIOS.desc) .addToggle(toggle => toggle.setValue(plugin.settings.useFloatingToolbars).onChange(value => { plugin.setUseFloatingToolbars(value); @@ -579,13 +579,13 @@ function renderMobileAppearanceSettings(context: SettingsTabContext, createGroup function renderViewSettings(context: SettingsTabContext, createGroup: CreateSettingGroup): void { const { plugin } = context; - const viewGroup = createGroup(strings.settings.groups.general.view); + const viewGroup = createGroup(strings.settings.pages.appearanceAndBehavior.groups.appearance); const initialUIScalePercent = scaleToPercent(plugin.getUIScale()); const uiScaleSetting = viewGroup.addSetting(setting => { renderSliderSetting(setting, { - name: strings.settings.items.appearanceScale.name, - desc: strings.settings.items.appearanceScale.desc, + name: strings.settings.items.zoomLevel.name, + desc: strings.settings.items.zoomLevel.desc, value: initialUIScalePercent, defaultValue: scaleToPercent(DEFAULT_UI_SCALE), min: MIN_UI_SCALE_PERCENT, @@ -602,14 +602,14 @@ function renderViewSettings(context: SettingsTabContext, createGroup: CreateSett const paneTransitionSetting = viewGroup.addSetting(setting => { renderSliderSetting(setting, { - name: strings.settings.items.paneTransitionDuration.name, - desc: strings.settings.items.paneTransitionDuration.desc, + name: strings.settings.items.singlePaneAnimation.name, + desc: strings.settings.items.singlePaneAnimation.desc, value: plugin.settings.paneTransitionDuration, defaultValue: DEFAULT_SETTINGS.paneTransitionDuration, min: MIN_PANE_TRANSITION_DURATION_MS, max: MAX_PANE_TRANSITION_DURATION_MS, step: PANE_TRANSITION_DURATION_STEP_MS, - resetTooltip: strings.settings.items.paneTransitionDuration.resetTooltip, + resetTooltip: strings.settings.items.singlePaneAnimation.resetTooltip, formatValue: value => `${value}ms`, onChange: value => { plugin.setPaneTransitionDuration(value); @@ -633,7 +633,7 @@ function renderViewSettings(context: SettingsTabContext, createGroup: CreateSett function renderIconSettings(context: SettingsTabContext, createGroup: CreateSettingGroup): void { const { plugin, addToggleSetting } = context; - const iconsGroup = createGroup(strings.settings.groups.general.icons); + const iconsGroup = createGroup(strings.settings.pages.appearanceAndBehavior.groups.icons); iconsGroup.addSetting(setting => { setting.setName(strings.settings.items.interfaceIcons.name).setDesc(strings.settings.items.interfaceIcons.desc); @@ -663,8 +663,8 @@ function renderIconSettings(context: SettingsTabContext, createGroup: CreateSett addToggleSetting( iconsGroup.addSetting, - strings.settings.items.showIconsColorOnly.name, - strings.settings.items.showIconsColorOnly.desc, + strings.settings.items.applyColorToIconsOnly.name, + strings.settings.items.applyColorToIconsOnly.desc, () => plugin.settings.colorIconOnly, value => { plugin.settings.colorIconOnly = value; @@ -674,7 +674,7 @@ function renderIconSettings(context: SettingsTabContext, createGroup: CreateSett function renderFormattingSettings(context: SettingsTabContext, createGroup: CreateSettingGroup): void { const { plugin, configureDebouncedTextSetting } = context; - const formattingGroup = createGroup(strings.settings.groups.general.formatting); + const formattingGroup = createGroup(strings.settings.pages.appearanceAndBehavior.groups.formatting); const dateFormatSetting = formattingGroup.addSetting(setting => { configureDebouncedTextSetting( diff --git a/src/settings/tabs/legacy/ContentLegacyTab.ts b/src/settings/tabs/legacy/ContentLegacyTab.ts index 1c2d4adcc..d316dab16 100644 --- a/src/settings/tabs/legacy/ContentLegacyTab.ts +++ b/src/settings/tabs/legacy/ContentLegacyTab.ts @@ -24,11 +24,11 @@ import { renderTagsTab } from './TagsLegacyTab'; /** Legacy settings renderer used only by Obsidian versions before native 1.13 setting definitions. */ export function renderFoldersAndFolderNotesTab(context: SettingsTabContext): void { - renderFoldersTab(context, strings.settings.sections.folders); + renderFoldersTab(context, strings.settings.pages.foldersAndFolderNotes.groups.folders); } /** Legacy settings renderer used only by Obsidian versions before native 1.13 setting definitions. */ export function renderTagsPropertiesTab(context: SettingsTabContext): void { - renderTagsTab(context, strings.settings.sections.tags); - renderPropertiesTab(context, strings.navigationPane.properties); + renderTagsTab(context, strings.settings.pages.tagsAndProperties.groups.tags); + renderPropertiesTab(context, strings.settings.pages.tagsAndProperties.groups.properties); } diff --git a/src/settings/tabs/legacy/DisplayFiltersLegacyTab.ts b/src/settings/tabs/legacy/DisplayFiltersLegacyTab.ts index 49c891c9b..a93878c51 100644 --- a/src/settings/tabs/legacy/DisplayFiltersLegacyTab.ts +++ b/src/settings/tabs/legacy/DisplayFiltersLegacyTab.ts @@ -70,9 +70,9 @@ export function renderDisplayFiltersTab(context: SettingsTabContext): void { const hiddenFileNamesSetting = filteringGroup.addSetting(setting => { configureDebouncedTextSetting( setting, - strings.settings.items.excludedFileNamePatterns.name, - strings.settings.items.excludedFileNamePatterns.desc, - strings.settings.items.excludedFileNamePatterns.placeholder, + strings.settings.items.hideFiles.name, + strings.settings.items.hideFiles.desc, + strings.settings.items.hideFiles.placeholder, () => formatCommaSeparatedList(getActiveProfile()?.hiddenFileNames ?? []), value => { const activeProfile = getActiveProfile(); @@ -90,9 +90,9 @@ export function renderDisplayFiltersTab(context: SettingsTabContext): void { const excludedFoldersSetting = filteringGroup.addSetting(setting => { configureDebouncedTextSetting( setting, - strings.settings.items.excludedFolders.name, - strings.settings.items.excludedFolders.desc, - strings.settings.items.excludedFolders.placeholder, + strings.settings.items.hideFolders.name, + strings.settings.items.hideFolders.desc, + strings.settings.items.hideFolders.placeholder, () => formatCommaSeparatedList(getActiveProfile()?.hiddenFolders ?? []), value => { const activeProfile = getActiveProfile(); @@ -130,9 +130,9 @@ export function renderDisplayFiltersTab(context: SettingsTabContext): void { const hiddenTagsSetting = filteringGroup.addSetting(setting => { configureDebouncedTextSetting( setting, - strings.settings.items.hiddenTags.name, - strings.settings.items.hiddenTags.desc, - strings.settings.items.hiddenTags.placeholder, + strings.settings.items.hideTags.name, + strings.settings.items.hideTags.desc, + strings.settings.items.hideTags.placeholder, () => formatCommaSeparatedList(getActiveProfile()?.hiddenTags ?? []), value => { const activeProfile = getActiveProfile(); @@ -153,9 +153,9 @@ export function renderDisplayFiltersTab(context: SettingsTabContext): void { const hiddenFileTagsSetting = filteringGroup.addSetting(setting => { configureDebouncedTextSetting( setting, - strings.settings.items.hiddenFileTags.name, - strings.settings.items.hiddenFileTags.desc, - strings.settings.items.hiddenFileTags.placeholder, + strings.settings.items.hideNotesWithTags.name, + strings.settings.items.hideNotesWithTags.desc, + strings.settings.items.hideNotesWithTags.placeholder, () => formatCommaSeparatedList(getActiveProfile()?.hiddenFileTags ?? []), value => { const activeProfile = getActiveProfile(); @@ -177,9 +177,9 @@ export function renderDisplayFiltersTab(context: SettingsTabContext): void { const excludedFilesSetting = filteringGroup.addSetting(setting => { configureDebouncedTextSetting( setting, - strings.settings.items.excludedNotes.name, - strings.settings.items.excludedNotes.desc, - strings.settings.items.excludedNotes.placeholder, + strings.settings.items.hideNotesWithPropertyRules.name, + strings.settings.items.hideNotesWithPropertyRules.desc, + strings.settings.items.hideNotesWithPropertyRules.placeholder, () => formatCommaSeparatedList(getActiveProfile()?.hiddenFileProperties ?? []), value => { const activeProfile = getActiveProfile(); diff --git a/src/settings/tabs/legacy/FilesLegacyTab.ts b/src/settings/tabs/legacy/FilesLegacyTab.ts index 47b59d3b0..50ab28f79 100644 --- a/src/settings/tabs/legacy/FilesLegacyTab.ts +++ b/src/settings/tabs/legacy/FilesLegacyTab.ts @@ -83,13 +83,13 @@ export function renderFilesTab(context: SettingsTabContext, heading?: string): v }); }); - const templatesGroup = createGroup(strings.settings.groups.general.templates); + const templatesGroup = createGroup(strings.settings.pages.fileOperations.groups.templates); const templateFolderSetting = templatesGroup.addSetting(setting => { context.configureDebouncedTextSetting( setting, - strings.settings.items.calendarTemplateFolder.name, - strings.settings.items.calendarTemplateFolder.desc, - strings.settings.items.calendarTemplateFolder.placeholder, + strings.settings.items.templateFolderLocation.name, + strings.settings.items.templateFolderLocation.desc, + strings.settings.items.templateFolderLocation.placeholder, () => normalizeCalendarCustomRootFolder(plugin.settings.calendarTemplateFolder), value => { plugin.settings.calendarTemplateFolder = normalizeCalendarCustomRootFolder(value); @@ -111,10 +111,10 @@ function renderTemplateFolderInfoSetting(setting: Setting, context: SettingsTabC setting.settingEl.addClass('nn-setting-info-container'); setting.descEl.empty(); - setting.descEl.createDiv({ text: strings.settings.items.calendarTemplateFolder.usage }); + setting.descEl.createDiv({ text: strings.settings.items.templateFolderLocation.usage }); const templaterSupportText = getTemplaterCreateNoteFromTemplate(context.app) - ? strings.settings.items.calendarCustomFilePattern.templaterSupportInstalled - : strings.settings.items.calendarCustomFilePattern.templaterSupportMissing; + ? strings.settings.items.templaterSupport.installed + : strings.settings.items.templaterSupport.missing; setting.descEl.append(createEl('br'), createEl('strong', { text: templaterSupportText })); } diff --git a/src/settings/tabs/legacy/FoldersLegacyTab.ts b/src/settings/tabs/legacy/FoldersLegacyTab.ts index 27ee6f127..ae21c5c76 100644 --- a/src/settings/tabs/legacy/FoldersLegacyTab.ts +++ b/src/settings/tabs/legacy/FoldersLegacyTab.ts @@ -85,7 +85,7 @@ export function renderFoldersTab(context: SettingsTabContext, heading?: string): addSettingSyncModeToggle({ setting: folderSortOrderSetting, plugin, settingId: 'folderSortOrder' }); - const folderNotesGroup = createGroup(strings.settings.sections.folderNotes); + const folderNotesGroup = createGroup(strings.settings.pages.foldersAndFolderNotes.groups.folderNotes); let folderNoteFilesGroupRootEl: HTMLElement | null = null; const enableFolderNotesSetting = folderNotesGroup.addSetting(setting => { @@ -127,8 +127,8 @@ export function renderFoldersTab(context: SettingsTabContext, heading?: string): }); showNearestFolderNoteSetting = new Setting(folderNotesSettingsEl) - .setName(strings.settings.items.showNearestFolderNoteInSidebar.name) - .setDesc(strings.settings.items.showNearestFolderNoteInSidebar.desc) + .setName(strings.settings.items.showClosestFolderNoteInRightSidebar.name) + .setDesc(strings.settings.items.showClosestFolderNoteInRightSidebar.desc) .addToggle(toggle => toggle.setValue(plugin.settings.showNearestFolderNoteInSidebar).onChange(async value => { plugin.settings.showNearestFolderNoteInSidebar = value; @@ -138,8 +138,8 @@ export function renderFoldersTab(context: SettingsTabContext, heading?: string): setElementVisible(showNearestFolderNoteSetting.settingEl, plugin.settings.folderNoteOpenLocation === 'right-sidebar'); new Setting(folderNotesSettingsEl) - .setName(strings.settings.items.enableFolderNoteLinks.name) - .setDesc(strings.settings.items.enableFolderNoteLinks.desc) + .setName(strings.settings.items.folderNamesOpenFolderNotes.name) + .setDesc(strings.settings.items.folderNamesOpenFolderNotes.desc) .addToggle(toggle => toggle.setValue(plugin.settings.enableFolderNoteLinks).onChange(async value => { plugin.settings.enableFolderNoteLinks = value; @@ -167,7 +167,7 @@ export function renderFoldersTab(context: SettingsTabContext, heading?: string): }) ); - const folderNoteFilesGroup = createGroup(strings.settings.sections.folderNoteFiles); + const folderNoteFilesGroup = createGroup(strings.settings.pages.foldersAndFolderNotes.groups.folderNoteFiles); folderNoteFilesGroupRootEl = folderNoteFilesGroup.rootEl; setElementVisible(folderNoteFilesGroupRootEl, plugin.settings.enableFolderNotes); @@ -263,7 +263,7 @@ function renderFolderNoteTemplateInfoSetting(setting: Setting, context: Settings setting.descEl.empty(); const templaterSupportText = getTemplaterCreateNoteFromTemplate(context.app) - ? strings.settings.items.calendarCustomFilePattern.templaterSupportInstalled - : strings.settings.items.calendarCustomFilePattern.templaterSupportMissing; + ? strings.settings.items.templaterSupport.installed + : strings.settings.items.templaterSupport.missing; setting.descEl.createEl('strong', { text: templaterSupportText }); } diff --git a/src/settings/tabs/legacy/FrontmatterLegacyTab.ts b/src/settings/tabs/legacy/FrontmatterLegacyTab.ts index ced7f9fe2..fbba324c3 100644 --- a/src/settings/tabs/legacy/FrontmatterLegacyTab.ts +++ b/src/settings/tabs/legacy/FrontmatterLegacyTab.ts @@ -69,7 +69,7 @@ export function renderFrontmatterTab(context: SettingsTabContext): void { const frontmatterGroup = createGroup(undefined); const useFrontmatterSetting = frontmatterGroup.addSetting(setting => { - setting.setName(strings.settings.items.useFrontmatterDates.name).setDesc(strings.settings.items.useFrontmatterDates.desc); + setting.setName(strings.settings.items.useFrontmatterMetadata.name).setDesc(strings.settings.items.useFrontmatterMetadata.desc); }); const frontmatterSettingsEl = wireToggleSettingWithDependentSection( @@ -129,11 +129,11 @@ export function renderFrontmatterTab(context: SettingsTabContext): void { ); frontmatterBackgroundSetting.controlEl.addClass('nn-setting-wide-input'); - const migrationSetting = new Setting(frontmatterSettingsEl).setName(strings.settings.items.frontmatterMigration.name); + const migrationSetting = new Setting(frontmatterSettingsEl).setName(strings.settings.items.migrateIconsAndColorsFromSettings.name); migrationSetting.addButton(button => { migrateButton = button; - button.setButtonText(strings.settings.items.frontmatterMigration.button); + button.setButtonText(strings.settings.items.migrateIconsAndColorsFromSettings.button); button.setCta(); // Migrate metadata to frontmatter without blocking the UI button.onClick(() => { @@ -143,7 +143,7 @@ export function renderFrontmatterTab(context: SettingsTabContext): void { } button.setDisabled(true); - button.setButtonText(strings.settings.items.frontmatterMigration.buttonWorking); + button.setButtonText(strings.settings.items.migrateIconsAndColorsFromSettings.buttonWorking); try { const result = await plugin.metadataService.migrateFileMetadataToFrontmatter(); @@ -152,28 +152,28 @@ export function renderFrontmatterTab(context: SettingsTabContext): void { const { iconsBefore, colorsBefore, migratedIcons, migratedColors, failures } = result; if (iconsBefore === 0 && colorsBefore === 0) { - showNotice(strings.settings.items.frontmatterMigration.noticeNone); + showNotice(strings.settings.items.migrateIconsAndColorsFromSettings.noticeNone); } else if (migratedIcons === 0 && migratedColors === 0) { - showNotice(strings.settings.items.frontmatterMigration.noticeNone); + showNotice(strings.settings.items.migrateIconsAndColorsFromSettings.noticeNone); } else { - let message = strings.settings.items.frontmatterMigration.noticeDone + let message = strings.settings.items.migrateIconsAndColorsFromSettings.noticeDone .replace('{migratedIcons}', migratedIcons.toString()) .replace('{icons}', iconsBefore.toString()) .replace('{migratedColors}', migratedColors.toString()) .replace('{colors}', colorsBefore.toString()); if (failures > 0) { - message += ` ${strings.settings.items.frontmatterMigration.noticeFailures.replace('{failures}', failures.toString())}`; + message += ` ${strings.settings.items.migrateIconsAndColorsFromSettings.noticeFailures.replace('{failures}', failures.toString())}`; } showNotice(message, { variant: 'success' }); } } catch (error) { console.error('Failed to migrate icon/color metadata to frontmatter', error); - showNotice(strings.settings.items.frontmatterMigration.noticeError, { + showNotice(strings.settings.items.migrateIconsAndColorsFromSettings.noticeError, { timeout: TIMEOUTS.NOTICE_ERROR, variant: 'warning' }); } finally { - button.setButtonText(strings.settings.items.frontmatterMigration.button); + button.setButtonText(strings.settings.items.migrateIconsAndColorsFromSettings.button); button.setDisabled(false); updateMigrationDescription?.(); context.requestStatisticsRefresh(); @@ -198,7 +198,7 @@ export function renderFrontmatterTab(context: SettingsTabContext): void { const canMigrateMetadata = hasIconField || hasColorField || hasBackgroundField; const isFrontmatterMetadataEnabled = plugin.settings.useFrontmatterMetadata; - const descriptionText = strings.settings.items.frontmatterMigration.desc + const descriptionText = strings.settings.items.migrateIconsAndColorsFromSettings.desc .replace('{icons}', iconsBefore.toString()) .replace('{colors}', colorsBefore.toString()); @@ -212,9 +212,9 @@ export function renderFrontmatterTab(context: SettingsTabContext): void { context.createDebouncedTextSetting( frontmatterSettingsEl, - strings.settings.items.frontmatterNameField.name, - strings.settings.items.frontmatterNameField.desc, - strings.settings.items.frontmatterNameField.placeholder, + strings.settings.items.frontmatterNameFields.name, + strings.settings.items.frontmatterNameFields.desc, + strings.settings.items.frontmatterNameFields.placeholder, () => normalizeCommaSeparatedList(plugin.settings.frontmatterNameField), value => { plugin.settings.frontmatterNameField = normalizeCommaSeparatedList(value); @@ -252,10 +252,10 @@ export function renderFrontmatterTab(context: SettingsTabContext): void { const dateFormatSetting = context .createDebouncedTextSetting( frontmatterSettingsEl, - strings.settings.items.frontmatterDateFormat.name, + strings.settings.items.frontmatterTimestampFormat.name, createSettingDescriptionWithExternalLink({ - text: strings.settings.items.frontmatterDateFormat.desc, - link: { text: strings.settings.items.frontmatterDateFormat.momentLinkText, href: MOMENT_FORMAT_DOCS_URL } + text: strings.settings.items.frontmatterTimestampFormat.desc, + link: { text: strings.settings.items.frontmatterTimestampFormat.momentLinkText, href: MOMENT_FORMAT_DOCS_URL } }), ISO_DATE_FORMAT, () => plugin.settings.frontmatterDateFormat, @@ -268,9 +268,9 @@ export function renderFrontmatterTab(context: SettingsTabContext): void { .addExtraButton(button => button .setIcon('lucide-help-circle') - .setTooltip(strings.settings.items.frontmatterDateFormat.helpTooltip) + .setTooltip(strings.settings.items.frontmatterTimestampFormat.helpTooltip) .onClick(() => { - showNotice(strings.settings.items.frontmatterDateFormat.help, { timeout: TIMEOUTS.NOTICE_HELP }); + showNotice(strings.settings.items.frontmatterTimestampFormat.help, { timeout: TIMEOUTS.NOTICE_HELP }); }) ); dateFormatSetting.controlEl.addClass('nn-setting-wide-input'); diff --git a/src/settings/tabs/legacy/IconPacksLegacyTab.ts b/src/settings/tabs/legacy/IconPacksLegacyTab.ts index 0acafbff8..6ab0556a3 100644 --- a/src/settings/tabs/legacy/IconPacksLegacyTab.ts +++ b/src/settings/tabs/legacy/IconPacksLegacyTab.ts @@ -44,11 +44,11 @@ function renderIconPacksContent(context: SettingsTabContext, iconPacksRootEl: HT const version = plugin.getExternalIconProviderVersion(config.id); const statusText = isInstalled - ? strings.settings.items.externalIcons.statusInstalled.replace( + ? strings.settings.items.iconPackManagement.statusInstalled.replace( '{version}', - version || strings.settings.items.externalIcons.versionUnknown + version || strings.settings.items.iconPackManagement.versionUnknown ) - : strings.settings.items.externalIcons.statusNotInstalled; + : strings.settings.items.iconPackManagement.statusNotInstalled; const setting = iconPacksGroup.addSetting(setting => { setting.setName(config.name).setDesc(''); @@ -70,7 +70,7 @@ function renderIconPacksContent(context: SettingsTabContext, iconPacksRootEl: HT if (isInstalled) { setting.addButton(button => { - button.setButtonText(strings.settings.items.externalIcons.removeButton); + button.setButtonText(strings.settings.items.iconPackManagement.removeButton); button.setDisabled(isDownloading); button.onClick(() => { runAsyncAction(async () => { @@ -80,7 +80,7 @@ function renderIconPacksContent(context: SettingsTabContext, iconPacksRootEl: HT renderIconPacksContent(context, iconPacksRootEl); } catch (error) { console.error('Failed to remove icon provider', error); - showNotice(strings.settings.items.externalIcons.removeFailed.replace('{name}', config.name), { + showNotice(strings.settings.items.iconPackManagement.removeFailed.replace('{name}', config.name), { variant: 'warning' }); button.setDisabled(false); @@ -92,8 +92,8 @@ function renderIconPacksContent(context: SettingsTabContext, iconPacksRootEl: HT setting.addButton(button => { button.setButtonText( isDownloading - ? strings.settings.items.externalIcons.downloadingLabel - : strings.settings.items.externalIcons.downloadButton + ? strings.settings.items.iconPackManagement.downloadingLabel + : strings.settings.items.iconPackManagement.downloadButton ); button.setDisabled(isDownloading); button.onClick(() => { @@ -104,7 +104,7 @@ function renderIconPacksContent(context: SettingsTabContext, iconPacksRootEl: HT renderIconPacksContent(context, iconPacksRootEl); } catch (error) { console.error('Failed to download icon provider', error); - showNotice(strings.settings.items.externalIcons.downloadFailed.replace('{name}', config.name), { + showNotice(strings.settings.items.iconPackManagement.downloadFailed.replace('{name}', config.name), { variant: 'warning' }); button.setDisabled(false); @@ -118,7 +118,7 @@ function renderIconPacksContent(context: SettingsTabContext, iconPacksRootEl: HT addInfoSetting(iconPacksGroup.addSetting, 'nn-setting-info-container', descEl => { descEl.createDiv().append( createExternalLinkText({ - text: strings.settings.items.externalIcons.infoNote, + text: strings.settings.items.iconPackManagement.infoNote, link: { text: ICON_ASSETS_REPOSITORY_URL, href: ICON_ASSETS_REPOSITORY_URL } }) ); diff --git a/src/settings/tabs/legacy/ListLegacyTab.ts b/src/settings/tabs/legacy/ListLegacyTab.ts index 382a7fe94..73472ff39 100644 --- a/src/settings/tabs/legacy/ListLegacyTab.ts +++ b/src/settings/tabs/legacy/ListLegacyTab.ts @@ -23,6 +23,8 @@ import { isListDisplayMode, isListPaneTitleOption, isManualSortNewNotePlacement, import { MANUAL_SORT_NEW_NOTE_PLACEMENT_OPTIONS, PROPERTY_SORT_SECONDARY_OPTIONS } from '../../types'; import type { SettingsTabContext } from '../SettingsTabContext'; import { + getManualSortNewNotePlacementOptionLabel, + getPropertySecondarySortOptionLabel, reconcileDefaultsAfterPropertyKeysEdit, renderDefaultFolderSortSetting, renderNoteGroupingSetting, @@ -59,7 +61,7 @@ export function renderListPaneTab(context: SettingsTabContext): void { const createGroup = createSettingGroupFactory(containerEl); const renderAppearanceGroup = (): void => { - const appearanceGroup = createGroup(strings.settings.groups.list.display); + const appearanceGroup = createGroup(strings.settings.pages.listPane.groups.appearance); // The list pane title only renders with the desktop chrome (desktop and tablets) if (!usesMobileChrome()) { @@ -70,7 +72,7 @@ export function renderListPaneTab(context: SettingsTabContext): void { .addDropdown(dropdown => dropdown .addOption('header', strings.settings.items.listPaneTitle.options.header) - .addOption('list', strings.settings.items.listPaneTitle.options.list) + .addOption('list', strings.settings.items.listPaneTitle.options.listPane) .addOption('hidden', strings.settings.items.listPaneTitle.options.hidden) .setValue(plugin.settings.listPaneTitle) .onChange(async value => { @@ -137,8 +139,8 @@ export function renderListPaneTab(context: SettingsTabContext): void { addToggleSetting( appearanceGroup.addSetting, - strings.settings.items.showSelectedNavigationPills.name, - strings.settings.items.showSelectedNavigationPills.desc, + strings.settings.items.alwaysShowAllTagAndPropertyPills.name, + strings.settings.items.alwaysShowAllTagAndPropertyPills.desc, () => plugin.settings.showSelectedNavigationPills, value => { plugin.settings.showSelectedNavigationPills = value; @@ -164,7 +166,7 @@ export function renderListPaneTab(context: SettingsTabContext): void { addSettingSyncModeToggle({ setting: includeDescendantNotesSetting, plugin, settingId: 'includeDescendantNotes' }); - const sortAndGroupGroup = createGroup(strings.settings.groups.list.sortAndGroup); + const sortAndGroupGroup = createGroup(strings.settings.pages.listPane.groups.sortAndGroup); let refreshPropertySortSecondaryVisibility = (): void => {}; sortAndGroupGroup.addSetting(setting => { @@ -177,8 +179,8 @@ export function renderListPaneTab(context: SettingsTabContext): void { const propertySortKeySetting = sortAndGroupGroup.addSetting(setting => { setting - .setName(strings.settings.items.propertySortKey.name) - .setDesc(strings.settings.items.propertySortKey.desc) + .setName(strings.settings.items.sortingProperties.name) + .setDesc(strings.settings.items.sortingProperties.desc) .addText(text => { const commitPropertySortKey = async (): Promise => { const value = text.getValue(); @@ -204,7 +206,7 @@ export function renderListPaneTab(context: SettingsTabContext): void { text.inputEl.blur(); }); - return text.setPlaceholder(strings.settings.items.propertySortKey.placeholder).setValue(plugin.settings.propertySortKey); + return text.setPlaceholder(strings.settings.items.sortingProperties.placeholder).setValue(plugin.settings.propertySortKey); }); }); @@ -214,11 +216,11 @@ export function renderListPaneTab(context: SettingsTabContext): void { }; new Setting(propertySortSecondarySettingsEl) - .setName(strings.settings.items.propertySortSecondary.name) - .setDesc(strings.settings.items.propertySortSecondary.desc) + .setName(strings.settings.items.propertySecondarySort.name) + .setDesc(strings.settings.items.propertySecondarySort.desc) .addDropdown(dropdown => { PROPERTY_SORT_SECONDARY_OPTIONS.forEach(option => { - dropdown.addOption(option, strings.settings.items.propertySortSecondary.options[option]); + dropdown.addOption(option, getPropertySecondarySortOptionLabel(option)); }); return dropdown.setValue(plugin.settings.propertySortSecondary).onChange(async value => { if (!isPropertySortSecondaryOption(value)) { @@ -254,7 +256,7 @@ export function renderListPaneTab(context: SettingsTabContext): void { }); }); - const groupHeadersGroup = createGroup(strings.settings.groups.list.groupHeaders); + const groupHeadersGroup = createGroup(strings.settings.pages.listPane.groups.groupHeaders); addToggleSetting( groupHeadersGroup.addSetting, @@ -268,8 +270,8 @@ export function renderListPaneTab(context: SettingsTabContext): void { addToggleSetting( groupHeadersGroup.addSetting, - strings.settings.items.showFolderGroupPaths.name, - strings.settings.items.showFolderGroupPaths.desc, + strings.settings.items.showSubfolderPaths.name, + strings.settings.items.showSubfolderPaths.desc, () => plugin.settings.showFolderGroupPaths, value => { plugin.settings.showFolderGroupPaths = value; @@ -288,8 +290,8 @@ export function renderListPaneTab(context: SettingsTabContext): void { groupHeadersGroup.addSetting(setting => { setting - .setName(strings.settings.items.manualSortGroupHeaderProperty.name) - .setDesc(strings.settings.items.manualSortGroupHeaderProperty.desc) + .setName(strings.settings.items.groupHeaderProperty.name) + .setDesc(strings.settings.items.groupHeaderProperty.desc) .addText(text => { const commitGroupHeaderProperty = async (): Promise => { const value = text.getValue().trim(); @@ -339,12 +341,12 @@ export function renderListPaneTab(context: SettingsTabContext): void { }); }); - const manualSortGroup = createGroup(strings.settings.groups.list.manualSort); + const manualSortGroup = createGroup(strings.settings.pages.listPane.groups.manualSort); manualSortGroup.addSetting(setting => { setting - .setName(strings.settings.items.manualSortPropertyKey.name) - .setDesc(strings.settings.items.manualSortPropertyKey.desc) + .setName(strings.settings.items.manualSortProperty.name) + .setDesc(strings.settings.items.manualSortProperty.desc) .addText(text => { const commitManualSortPropertyKey = async (): Promise => { const value = normalizeManualSortPropertyKey(text.getValue()); @@ -385,7 +387,7 @@ export function renderListPaneTab(context: SettingsTabContext): void { .setDesc(strings.settings.items.manualSortNewNotePlacement.desc) .addDropdown(dropdown => { MANUAL_SORT_NEW_NOTE_PLACEMENT_OPTIONS.forEach(option => { - dropdown.addOption(option, strings.settings.items.manualSortNewNotePlacement.options[option]); + dropdown.addOption(option, getManualSortNewNotePlacementOptionLabel(option)); }); return dropdown.setValue(plugin.settings.manualSortNewNotePlacement).onChange(async value => { if (!isManualSortNewNotePlacement(value)) { @@ -417,12 +419,12 @@ export function renderListPaneTab(context: SettingsTabContext): void { }); }); - const pinnedNotesGroup = createGroup(strings.settings.groups.list.pinnedNotes); + const pinnedNotesGroup = createGroup(strings.settings.pages.listPane.groups.pinnedNotes); addToggleSetting( pinnedNotesGroup.addSetting, - strings.settings.items.limitPinnedToCurrentFolder.name, - strings.settings.items.limitPinnedToCurrentFolder.desc, + strings.settings.items.filterPinnedNotesByFolder.name, + strings.settings.items.filterPinnedNotesByFolder.desc, () => plugin.settings.filterPinnedByFolder, value => { plugin.settings.filterPinnedByFolder = value; @@ -431,12 +433,12 @@ export function renderListPaneTab(context: SettingsTabContext): void { renderAppearanceGroup(); - const behaviorGroup = createGroup(strings.settings.groups.general.behavior); + const behaviorGroup = createGroup(strings.settings.pages.listPane.groups.behavior); addToggleSetting( behaviorGroup.addSetting, - strings.settings.items.revealFileOnListChanges.name, - strings.settings.items.revealFileOnListChanges.desc, + strings.settings.items.scrollToSelectedFileOnListChanges.name, + strings.settings.items.scrollToSelectedFileOnListChanges.desc, () => plugin.settings.revealFileOnListChanges, value => { plugin.settings.revealFileOnListChanges = value; @@ -530,12 +532,12 @@ export function renderListPaneTab(context: SettingsTabContext): void { updateButtonsDisabledState(plugin.settings.showQuickActions); } - const drawingPreviewsGroup = createGroup(strings.settings.groups.list.drawingPreviews); + const drawingPreviewsGroup = createGroup(strings.settings.pages.listPane.groups.drawingPreviews); addToggleSetting( drawingPreviewsGroup.addSetting, - strings.settings.items.hideDrawingPreviewImages.name, - strings.settings.items.hideDrawingPreviewImages.desc, + strings.settings.items.hideExportedPreviewImages.name, + strings.settings.items.hideExportedPreviewImages.desc, () => plugin.settings.hideDrawingPreviewImages, value => { plugin.settings.hideDrawingPreviewImages = value; diff --git a/src/settings/tabs/legacy/NavigationLegacyTab.ts b/src/settings/tabs/legacy/NavigationLegacyTab.ts index 0a195cdbd..1855fb9f5 100644 --- a/src/settings/tabs/legacy/NavigationLegacyTab.ts +++ b/src/settings/tabs/legacy/NavigationLegacyTab.ts @@ -68,12 +68,12 @@ export function renderNavigationPaneTab(context: SettingsTabContext): void { const createGroup = createSettingGroupFactory(containerEl); const behaviorGroup = createGroup(undefined); - const collapseGroup = createGroup(strings.settings.groups.navigation.collapseItems); - const dragAndDropGroup = Platform.isMobile ? null : createGroup(strings.settings.groups.navigation.dragAndDrop); - const rainbowGroup = createGroup(createRainbowHeading(strings.settings.groups.navigation.rainbowColors)); - const noteCountsGroup = createGroup(strings.settings.groups.navigation.noteCounts); - const bannerGroup = createGroup(strings.settings.groups.navigation.banner); - const appearanceGroup = createGroup(strings.settings.groups.navigation.appearance); + const collapseGroup = createGroup(strings.settings.pages.navigationPane.groups.collapseItems); + const dragAndDropGroup = Platform.isMobile ? null : createGroup(strings.settings.pages.navigationPane.groups.dragAndDrop); + const rainbowGroup = createGroup(createRainbowHeading(strings.settings.pages.navigationPane.groups.rainbowColors)); + const noteCountsGroup = createGroup(strings.settings.pages.navigationPane.groups.fileCounts); + const bannerGroup = createGroup(strings.settings.pages.navigationPane.groups.banner); + const appearanceGroup = createGroup(strings.settings.pages.navigationPane.groups.appearance); renderToolbarButtonsSetting(createSetting => behaviorGroup.addSetting(createSetting), plugin, 'navigation'); @@ -148,7 +148,7 @@ export function renderNavigationPaneTab(context: SettingsTabContext): void { addSettingSyncModeToggle({ setting: pinNavigationBannerSetting, plugin, settingId: 'pinNavigationBanner' }); const showNoteCountSetting = noteCountsGroup.addSetting(setting => { - setting.setName(strings.settings.items.showNoteCount.name).setDesc(strings.settings.items.showNoteCount.desc); + setting.setName(strings.settings.items.showFileCount.name).setDesc(strings.settings.items.showFileCount.desc); }); const noteCountDependentSettingsEl = wireToggleSettingWithDependentSection( @@ -161,8 +161,8 @@ export function renderNavigationPaneTab(context: SettingsTabContext): void { ); new Setting(noteCountDependentSettingsEl) - .setName(strings.settings.items.separateNoteCounts.name) - .setDesc(strings.settings.items.separateNoteCounts.desc) + .setName(strings.settings.items.separateFileCounts.name) + .setDesc(strings.settings.items.separateFileCounts.desc) .addToggle(toggle => toggle.setValue(plugin.settings.separateNoteCounts).onChange(async value => { plugin.settings.separateNoteCounts = value; @@ -204,8 +204,8 @@ export function renderNavigationPaneTab(context: SettingsTabContext): void { appearanceGroup.addSetting(setting => { renderSliderSetting(setting, { - name: strings.settings.items.navRootSpacing.name, - desc: strings.settings.items.navRootSpacing.desc, + name: strings.settings.items.rootItemSpacing.name, + desc: strings.settings.items.rootItemSpacing.desc, value: plugin.settings.rootLevelSpacing, defaultValue: DEFAULT_SETTINGS.rootLevelSpacing, min: 0, @@ -221,8 +221,8 @@ export function renderNavigationPaneTab(context: SettingsTabContext): void { const navIndentSetting = appearanceGroup.addSetting(setting => { renderSliderSetting(setting, { - name: strings.settings.items.navIndent.name, - desc: strings.settings.items.navIndent.desc, + name: strings.settings.items.treeIndentation.name, + desc: strings.settings.items.treeIndentation.desc, value: plugin.settings.navIndent, defaultValue: DEFAULT_SETTINGS.navIndent, min: 10, @@ -294,9 +294,9 @@ export function renderNavigationPaneTab(context: SettingsTabContext): void { rainbowModeSetting.addDropdown( dropdown => (navRainbowModeDropdown = dropdown - .addOption('none', strings.settings.items.navRainbowMode.options.none) - .addOption('foreground', strings.settings.items.navRainbowMode.options.foreground) - .addOption('background', strings.settings.items.navRainbowMode.options.background) + .addOption('none', strings.settings.items.navRainbowMode.options.off) + .addOption('foreground', strings.settings.items.navRainbowMode.options.textColor) + .addOption('background', strings.settings.items.navRainbowMode.options.backgroundColor) .setValue(getActiveProfile().navRainbow.mode) .onChange(async value => { if (!isNavRainbowColorMode(value)) { @@ -350,8 +350,8 @@ export function renderNavigationPaneTab(context: SettingsTabContext): void { }); createRainbowSectionSetting({ - name: strings.settings.items.navRainbowApplyToRecent.name, - desc: strings.settings.items.navRainbowApplyToRecent.desc, + name: strings.settings.items.navRainbowApplyToRecentItems.name, + desc: strings.settings.items.navRainbowApplyToRecentItems.desc, getEnabled: () => getActiveProfile().navRainbow.recent.enabled, setEnabled: async value => { await updateNavRainbow(settings => ({ ...settings, recent: { ...settings.recent, enabled: value } })); @@ -403,8 +403,8 @@ export function renderNavigationPaneTab(context: SettingsTabContext): void { }); new Setting(rainbowDependentSettingsEl) - .setName(strings.settings.items.navRainbowBalanceHueLuminance.name) - .setDesc(strings.settings.items.navRainbowBalanceHueLuminance.desc) + .setName(strings.settings.items.navRainbowConsistentBrightness.name) + .setDesc(strings.settings.items.navRainbowConsistentBrightness.desc) .addToggle(toggle => { navRainbowBalanceHueLuminanceToggle = toggle .setValue(getActiveProfile().navRainbow.balanceHueLuminance) @@ -438,8 +438,8 @@ export function renderNavigationPaneTab(context: SettingsTabContext): void { if (supportsKeyboardInteractions()) { addToggleSetting( behaviorGroup.addSetting, - strings.settings.items.autoSelectFirstFileOnFocusChange.name, - strings.settings.items.autoSelectFirstFileOnFocusChange.desc, + strings.settings.items.autoSelectFirstNote.name, + strings.settings.items.autoSelectFirstNote.desc, () => plugin.settings.autoSelectFirstFileOnFocusChange, value => { plugin.settings.autoSelectFirstFileOnFocusChange = value; @@ -449,8 +449,8 @@ export function renderNavigationPaneTab(context: SettingsTabContext): void { addToggleSetting( behaviorGroup.addSetting, - strings.settings.items.autoExpandNavItems.name, - strings.settings.items.autoExpandNavItems.desc, + strings.settings.items.expandOnSelection.name, + strings.settings.items.expandOnSelection.desc, () => plugin.settings.autoExpandNavItems, value => { plugin.settings.autoExpandNavItems = value; @@ -469,14 +469,14 @@ export function renderNavigationPaneTab(context: SettingsTabContext): void { collapseGroup.addSetting(setting => { setting - .setName(strings.settings.items.collapseBehavior.name) - .setDesc(strings.settings.items.collapseBehavior.desc) + .setName(strings.settings.items.collapseItems.name) + .setDesc(strings.settings.items.collapseItems.desc) .addDropdown(dropdown => dropdown - .addOption('all', strings.settings.items.collapseBehavior.options.all) - .addOption('folders-only', strings.settings.items.collapseBehavior.options.foldersOnly) - .addOption('tags-only', strings.settings.items.collapseBehavior.options.tagsOnly) - .addOption('properties-only', strings.settings.items.collapseBehavior.options.propertiesOnly) + .addOption('all', strings.settings.items.collapseItems.options.all) + .addOption('folders-only', strings.settings.items.collapseItems.options.foldersOnly) + .addOption('tags-only', strings.settings.items.collapseItems.options.tagsOnly) + .addOption('properties-only', strings.settings.items.collapseItems.options.propertiesOnly) .setValue(plugin.settings.collapseBehavior) .onChange(async value => { if (!isItemScope(value)) { @@ -490,8 +490,8 @@ export function renderNavigationPaneTab(context: SettingsTabContext): void { addToggleSetting( collapseGroup.addSetting, - strings.settings.items.smartCollapse.name, - strings.settings.items.smartCollapse.desc, + strings.settings.items.keepSelectedItemExpanded.name, + strings.settings.items.keepSelectedItemExpanded.desc, () => plugin.settings.smartCollapse, value => { plugin.settings.smartCollapse = value; diff --git a/src/settings/tabs/legacy/NotesLegacyTab.ts b/src/settings/tabs/legacy/NotesLegacyTab.ts index 5c24059fe..88b0dfc15 100644 --- a/src/settings/tabs/legacy/NotesLegacyTab.ts +++ b/src/settings/tabs/legacy/NotesLegacyTab.ts @@ -69,7 +69,7 @@ interface FileTypeIconPresetOption { function getFileTypeIconPresetOptions(context: SettingsTabContext): Record { const options: Record = { none: { - label: strings.settings.items.fileTypeIconPreset.options.none, + label: strings.settings.items.fileTypeIconPreset.options.builtIn, isInstalled: true } }; @@ -97,16 +97,16 @@ export function renderNotesTab(context: SettingsTabContext): void { const { app, containerEl, plugin } = context; const createGroup = createSettingGroupFactory(containerEl); - const iconGroup = createGroup(strings.settings.groups.notes.icon); - const titleGroup = createGroup(strings.settings.groups.notes.title); - const previewTextGroup = createGroup(strings.settings.groups.notes.previewText); - const featureImageGroup = createGroup(strings.settings.groups.notes.featureImage); - const tagsGroup = createGroup(strings.settings.groups.notes.tags); - const notePropertyGroup = createGroup(strings.settings.groups.notes.properties); - const tasksGroup = createGroup(strings.settings.groups.notes.tasks); - const dateGroup = createGroup(strings.settings.groups.notes.date); - const parentFolderGroup = createGroup(strings.settings.groups.notes.parentFolder); - const wordCountGroup = createGroup(strings.settings.groups.notes.wordCount); + const iconGroup = createGroup(strings.settings.pages.fileDisplay.groups.icon); + const titleGroup = createGroup(strings.settings.pages.fileDisplay.groups.title); + const previewTextGroup = createGroup(strings.settings.pages.fileDisplay.groups.previewText); + const featureImageGroup = createGroup(strings.settings.pages.fileDisplay.groups.featureImage); + const tagsGroup = createGroup(strings.settings.pages.fileDisplay.groups.tags); + const notePropertyGroup = createGroup(strings.settings.pages.fileDisplay.groups.properties); + const tasksGroup = createGroup(strings.settings.pages.fileDisplay.groups.tasks); + const dateGroup = createGroup(strings.settings.pages.fileDisplay.groups.date); + const parentFolderGroup = createGroup(strings.settings.pages.fileDisplay.groups.parentFolder); + const wordCountGroup = createGroup(strings.settings.pages.fileDisplay.groups.wordAndCharacterCount); const setGroupVisible = (groupRootEl: HTMLElement, visible: boolean) => { setElementVisible(groupRootEl, visible); @@ -180,9 +180,7 @@ export function renderNotesTab(context: SettingsTabContext): void { ); const showFileBackgroundUnfinishedTaskSetting = tasksGroup.addSetting(setting => { - setting - .setName(strings.settings.items.showFileBackgroundUnfinishedTask.name) - .setDesc(strings.settings.items.showFileBackgroundUnfinishedTask.desc); + setting.setName(strings.settings.items.unfinishedTaskBackground.name).setDesc(strings.settings.items.unfinishedTaskBackground.desc); }); const unfinishedTaskBackgroundSettingsEl = wireToggleSettingWithDependentSection( @@ -232,9 +230,9 @@ export function renderNotesTab(context: SettingsTabContext): void { .setDesc(strings.settings.items.unfinishedTaskIcon.desc) .addDropdown(dropdown => dropdown - .addOption('none', strings.settings.items.unfinishedTaskIcon.options.none) + .addOption('none', strings.settings.items.unfinishedTaskIcon.options.disabled) .addOption('compact', strings.settings.items.unfinishedTaskIcon.options.compact) - .addOption('all', strings.settings.items.unfinishedTaskIcon.options.all) + .addOption('all', strings.settings.items.unfinishedTaskIcon.options.standardAndCompact) .setValue(plugin.settings.unfinishedTaskIcon) .onChange(async value => { if (!isUnfinishedTaskIconMode(value)) { @@ -308,8 +306,8 @@ export function renderNotesTab(context: SettingsTabContext): void { ); const showFilenameMatchIconsSetting = new Setting(fileIconDependentSettingsEl) - .setName(strings.settings.items.showFilenameMatchIcons.name) - .setDesc(strings.settings.items.showFilenameMatchIcons.desc) + .setName(strings.settings.items.showFileNameIcons.name) + .setDesc(strings.settings.items.showFileNameIcons.desc) .addToggle(toggle => toggle.setValue(plugin.settings.showFilenameMatchIcons).onChange(async value => { plugin.settings.showFilenameMatchIcons = value; @@ -353,8 +351,8 @@ export function renderNotesTab(context: SettingsTabContext): void { updateFileNameIconMapVisibility(); const showCategoryIconsSetting = new Setting(fileIconDependentSettingsEl) - .setName(strings.settings.items.showCategoryIcons.name) - .setDesc(strings.settings.items.showCategoryIcons.desc) + .setName(strings.settings.items.showFileTypeIcons.name) + .setDesc(strings.settings.items.showFileTypeIcons.desc) .addToggle(toggle => toggle.setValue(plugin.settings.showCategoryIcons).onChange(async value => { plugin.settings.showCategoryIcons = value; @@ -441,13 +439,13 @@ export function renderNotesTab(context: SettingsTabContext): void { titleGroup.addSetting(setting => { setting - .setName(strings.settings.items.fileNameRows.name) - .setDesc(strings.settings.items.fileNameRows.desc) + .setName(strings.settings.items.titleRows.name) + .setDesc(strings.settings.items.titleRows.desc) .addDropdown(dropdown => dropdown - .addOption('1', strings.settings.items.fileNameRows.options['1']) - .addOption('2', strings.settings.items.fileNameRows.options['2']) - .addOption('3', strings.settings.items.fileNameRows.options['3']) + .addOption('1', strings.settings.items.titleRows.options['1']) + .addOption('2', strings.settings.items.titleRows.options['2']) + .addOption('3', strings.settings.items.titleRows.options['3']) .setValue(plugin.settings.fileNameRows.toString()) .onChange(async value => { plugin.settings.fileNameRows = parseInt(value, 10); @@ -469,7 +467,7 @@ export function renderNotesTab(context: SettingsTabContext): void { }); const showPreviewSetting = previewTextGroup.addSetting(setting => { - setting.setName(strings.settings.items.showFilePreview.name).setDesc(strings.settings.items.showFilePreview.desc); + setting.setName(strings.settings.items.showNotePreview.name).setDesc(strings.settings.items.showNotePreview.desc); }); const previewSettingsEl = wireToggleSettingWithDependentSection( @@ -565,8 +563,8 @@ export function renderNotesTab(context: SettingsTabContext): void { previewPropertiesSetting.controlEl.addClass('nn-setting-wide-input'); const previewFallbackSetting = new Setting(previewSettingsEl) - .setName(strings.settings.items.previewPropertiesFallback.name) - .setDesc(strings.settings.items.previewPropertiesFallback.desc) + .setName(strings.settings.items.fallbackToNoteContent.name) + .setDesc(strings.settings.items.fallbackToNoteContent.desc) .addToggle(toggle => toggle.setValue(plugin.settings.previewPropertiesFallback).onChange(async value => { plugin.settings.previewPropertiesFallback = value; @@ -617,13 +615,13 @@ export function renderNotesTab(context: SettingsTabContext): void { featureExcludePropertiesSetting.controlEl.addClass('nn-setting-wide-input'); const featureImageSizeSetting = new Setting(featureImageSettingsEl) - .setName(strings.settings.items.featureImageSize.name) - .setDesc(strings.settings.items.featureImageSize.desc) + .setName(strings.settings.items.featureImageDisplaySize.name) + .setDesc(strings.settings.items.featureImageDisplaySize.desc) .addDropdown(dropdown => dropdown - .addOption('64', strings.settings.items.featureImageSize.options.standard) - .addOption('96', strings.settings.items.featureImageSize.options.large) - .addOption('128', strings.settings.items.featureImageSize.options.extraLarge) + .addOption('64', strings.settings.items.featureImageDisplaySize.options['64']) + .addOption('96', strings.settings.items.featureImageDisplaySize.options['96']) + .addOption('128', strings.settings.items.featureImageDisplaySize.options['128']) .setValue(plugin.settings.featureImageSize) .onChange(value => { if (!isFeatureImageSizeSetting(value)) { @@ -639,9 +637,9 @@ export function renderNotesTab(context: SettingsTabContext): void { .setDesc(strings.settings.items.featureImagePixelSize.desc) .addDropdown(dropdown => dropdown - .addOption('256', strings.settings.items.featureImagePixelSize.options.standard) - .addOption('384', strings.settings.items.featureImagePixelSize.options.large) - .addOption('512', strings.settings.items.featureImagePixelSize.options.extraLarge) + .addOption('256', strings.settings.items.featureImagePixelSize.options['256x144']) + .addOption('384', strings.settings.items.featureImagePixelSize.options['384x216']) + .addOption('512', strings.settings.items.featureImagePixelSize.options['512x288']) .setValue(plugin.settings.featureImagePixelSize) .onChange(value => { if (!isFeatureImagePixelSizeSetting(value)) { @@ -698,8 +696,8 @@ export function renderNotesTab(context: SettingsTabContext): void { ); new Setting(colorFileTagsDependentSettingsEl) - .setName(strings.settings.items.prioritizeColoredFileTags.name) - .setDesc(strings.settings.items.prioritizeColoredFileTags.desc) + .setName(strings.settings.items.showColoredTagsFirst.name) + .setDesc(strings.settings.items.showColoredTagsFirst.desc) .addToggle(toggle => toggle.setValue(plugin.settings.prioritizeColoredFileTags).onChange(async value => { plugin.settings.prioritizeColoredFileTags = value; @@ -708,8 +706,8 @@ export function renderNotesTab(context: SettingsTabContext): void { ); new Setting(fileTagsDependentSettingsEl) - .setName(strings.settings.items.showFileTagAncestors.name) - .setDesc(strings.settings.items.showFileTagAncestors.desc) + .setName(strings.settings.items.showFullTagPaths.name) + .setDesc(strings.settings.items.showFullTagPaths.desc) .addToggle(toggle => toggle.setValue(plugin.settings.showFileTagAncestors).onChange(async value => { plugin.settings.showFileTagAncestors = value; @@ -754,8 +752,8 @@ export function renderNotesTab(context: SettingsTabContext): void { ); new Setting(colorFilePropertiesDependentSettingsEl) - .setName(strings.settings.items.prioritizeColoredFileProperties.name) - .setDesc(strings.settings.items.prioritizeColoredFileProperties.desc) + .setName(strings.settings.items.showColoredPropertiesFirst.name) + .setDesc(strings.settings.items.showColoredPropertiesFirst.desc) .addToggle(toggle => toggle.setValue(plugin.settings.prioritizeColoredFileProperties).onChange(async value => { plugin.settings.prioritizeColoredFileProperties = value; @@ -784,8 +782,8 @@ export function renderNotesTab(context: SettingsTabContext): void { ); new Setting(filePropertiesDependentSettingsEl) - .setName(strings.settings.items.enablePropertyInternalLinks.name) - .setDesc(strings.settings.items.enablePropertyInternalLinks.desc) + .setName(strings.settings.items.linkPropertyPillsToNotes.name) + .setDesc(strings.settings.items.linkPropertyPillsToNotes.desc) .addToggle(toggle => toggle.setValue(plugin.settings.enablePropertyInternalLinks).onChange(async value => { plugin.settings.enablePropertyInternalLinks = value; @@ -794,8 +792,8 @@ export function renderNotesTab(context: SettingsTabContext): void { ); new Setting(filePropertiesDependentSettingsEl) - .setName(strings.settings.items.enablePropertyExternalLinks.name) - .setDesc(strings.settings.items.enablePropertyExternalLinks.desc) + .setName(strings.settings.items.linkPropertyPillsToUrls.name) + .setDesc(strings.settings.items.linkPropertyPillsToUrls.desc) .addToggle(toggle => toggle.setValue(plugin.settings.enablePropertyExternalLinks).onChange(async value => { plugin.settings.enablePropertyExternalLinks = value; @@ -818,12 +816,12 @@ export function renderNotesTab(context: SettingsTabContext): void { // Dropdown to choose which date to display when sorting alphabetically new Setting(fileDateDependentSettingsEl) - .setName(strings.settings.items.alphabeticalDateMode.name) - .setDesc(strings.settings.items.alphabeticalDateMode.desc) + .setName(strings.settings.items.dateWhenSortingByName.name) + .setDesc(strings.settings.items.dateWhenSortingByName.desc) .addDropdown(dropdown => dropdown - .addOption('created', strings.settings.items.alphabeticalDateMode.options.created) - .addOption('modified', strings.settings.items.alphabeticalDateMode.options.modified) + .addOption('created', strings.settings.items.dateWhenSortingByName.options.created) + .addOption('modified', strings.settings.items.dateWhenSortingByName.options.modified) .setValue(plugin.settings.alphabeticalDateMode) .onChange(async value => { plugin.settings.alphabeticalDateMode = value === 'modified' ? 'modified' : 'created'; @@ -845,8 +843,8 @@ export function renderNotesTab(context: SettingsTabContext): void { ); new Setting(parentFolderSettingsEl) - .setName(strings.settings.items.showParentFolderFullPath.name) - .setDesc(strings.settings.items.showParentFolderFullPath.desc) + .setName(strings.settings.items.showFolderPath.name) + .setDesc(strings.settings.items.showFolderPath.desc) .addToggle(toggle => toggle.setValue(plugin.settings.showParentFolderFullPath).onChange(async value => { plugin.settings.showParentFolderFullPath = value; @@ -855,8 +853,8 @@ export function renderNotesTab(context: SettingsTabContext): void { ); new Setting(parentFolderSettingsEl) - .setName(strings.settings.items.parentFolderClickRevealsFile.name) - .setDesc(strings.settings.items.parentFolderClickRevealsFile.desc) + .setName(strings.settings.items.parentFolderClickOpensFolder.name) + .setDesc(strings.settings.items.parentFolderClickOpensFolder.desc) .addToggle(toggle => toggle.setValue(plugin.settings.parentFolderClickRevealsFile).onChange(async value => { plugin.settings.parentFolderClickRevealsFile = value; @@ -885,7 +883,7 @@ export function renderNotesTab(context: SettingsTabContext): void { ); const textCountDisplaySetting = wordCountGroup.addSetting(setting => { - setting.setName(strings.settings.items.textCountDisplay.name).setDesc(strings.settings.items.textCountDisplay.desc); + setting.setName(strings.settings.items.textCountType.name).setDesc(strings.settings.items.textCountType.desc); }); const textCountSettingsEl = createDependentSettingsSection(textCountDisplaySetting); const wordCountSettingsEl = textCountSettingsEl.createDiv(); @@ -899,10 +897,10 @@ export function renderNotesTab(context: SettingsTabContext): void { textCountDisplaySetting.addDropdown(dropdown => dropdown - .addOption('none', strings.settings.items.textCountDisplay.options.none) - .addOption('words', strings.settings.items.textCountDisplay.options.words) - .addOption('characters', strings.settings.items.textCountDisplay.options.characters) - .addOption('both', strings.settings.items.textCountDisplay.options.both) + .addOption('none', strings.settings.items.textCountType.options.none) + .addOption('words', strings.settings.items.textCountType.options.words) + .addOption('characters', strings.settings.items.textCountType.options.characters) + .addOption('both', strings.settings.items.textCountType.options.both) .setValue(plugin.settings.textCountDisplay) .onChange(async value => { if (!isTextCountDisplay(value)) { @@ -964,8 +962,8 @@ export function renderNotesTab(context: SettingsTabContext): void { wordCountTargetPropertySetting.controlEl.addClass('nn-setting-wide-input'); new Setting(wordCountSettingsEl) - .setName(strings.settings.items.showWordCountPercentage.name) - .setDesc(strings.settings.items.showWordCountPercentage.desc) + .setName(strings.settings.items.showTargetPercentage.name) + .setDesc(strings.settings.items.showTargetPercentage.desc) .addToggle(toggle => toggle.setValue(plugin.settings.showWordCountPercentage).onChange(async value => { plugin.settings.showWordCountPercentage = value; diff --git a/src/settings/tabs/legacy/PropertiesLegacyTab.ts b/src/settings/tabs/legacy/PropertiesLegacyTab.ts index 40b37a917..3115b9556 100644 --- a/src/settings/tabs/legacy/PropertiesLegacyTab.ts +++ b/src/settings/tabs/legacy/PropertiesLegacyTab.ts @@ -88,8 +88,8 @@ export function renderPropertiesTab(context: SettingsTabContext, heading?: strin addSettingSyncModeToggle({ setting: propertySortOrderSetting, plugin, settingId: 'propertySortOrder' }); new Setting(propertiesDependentSettingsEl) - .setName(strings.settings.items.showAllPropertiesFolder.name) - .setDesc(strings.settings.items.showAllPropertiesFolder.desc) + .setName(strings.settings.items.showPropertiesFolder.name) + .setDesc(strings.settings.items.showPropertiesFolder.desc) .addToggle(toggle => toggle.setValue(plugin.settings.showAllPropertiesFolder).onChange(async value => { plugin.settings.showAllPropertiesFolder = value; @@ -98,8 +98,8 @@ export function renderPropertiesTab(context: SettingsTabContext, heading?: strin ); new Setting(propertiesDependentSettingsEl) - .setName(strings.settings.items.scopePropertiesToCurrentContext.name) - .setDesc(strings.settings.items.scopePropertiesToCurrentContext.desc) + .setName(strings.settings.items.filterPropertiesBySelection.name) + .setDesc(strings.settings.items.filterPropertiesBySelection.desc) .addToggle(toggle => toggle.setValue(plugin.settings.scopePropertiesToCurrentContext).onChange(async value => { plugin.settings.scopePropertiesToCurrentContext = value; diff --git a/src/settings/tabs/legacy/ShortcutsLegacyTab.ts b/src/settings/tabs/legacy/ShortcutsLegacyTab.ts index 95fd1e47f..9f3ec8d1d 100644 --- a/src/settings/tabs/legacy/ShortcutsLegacyTab.ts +++ b/src/settings/tabs/legacy/ShortcutsLegacyTab.ts @@ -30,13 +30,13 @@ export function renderShortcutsTab(context: SettingsTabContext): void { const { containerEl, plugin, addToggleSetting } = context; const createGroup = createSettingGroupFactory(containerEl); const sharedGroup = createGroup(undefined); - const shortcutsGroup = createGroup(strings.navigationPane.shortcutsHeader); - const recentFilesGroup = createGroup(strings.navigationPane.recentFilesHeader); + const shortcutsGroup = createGroup(strings.settings.pages.shortcutsAndRecentFiles.groups.shortcuts); + const recentFilesGroup = createGroup(strings.settings.pages.shortcutsAndRecentFiles.groups.recentFiles); addToggleSetting( sharedGroup.addSetting, - strings.settings.items.showSectionIcons.name, - strings.settings.items.showSectionIcons.desc, + strings.settings.items.showShortcutAndRecentItemIcons.name, + strings.settings.items.showShortcutAndRecentItemIcons.desc, () => plugin.settings.showSectionIcons, value => { plugin.settings.showSectionIcons = value; @@ -61,7 +61,7 @@ export function renderShortcutsTab(context: SettingsTabContext): void { .setDesc(strings.settings.items.shortcutBadgeDisplay.desc) .addDropdown((dropdown: DropdownComponent) => dropdown - .addOption('index', strings.settings.items.shortcutBadgeDisplay.options.index) + .addOption('index', strings.settings.items.shortcutBadgeDisplay.options.position) .addOption('count', strings.settings.items.shortcutBadgeDisplay.options.count) .addOption('none', strings.settings.items.shortcutBadgeDisplay.options.none) .setValue(plugin.settings.shortcutBadgeDisplay) @@ -75,8 +75,8 @@ export function renderShortcutsTab(context: SettingsTabContext): void { ); new Setting(shortcutsDependentSettings) - .setName(strings.settings.items.skipAutoScroll.name) - .setDesc(strings.settings.items.skipAutoScroll.desc) + .setName(strings.settings.items.disableShortcutAutoScroll.name) + .setDesc(strings.settings.items.disableShortcutAutoScroll.desc) .addToggle(toggle => toggle.setValue(plugin.settings.skipAutoScroll).onChange(async value => { plugin.settings.skipAutoScroll = value; @@ -85,7 +85,7 @@ export function renderShortcutsTab(context: SettingsTabContext): void { ); const showRecentNotesSetting = recentFilesGroup.addSetting(setting => { - setting.setName(strings.settings.items.showRecentNotes.name).setDesc(strings.settings.items.showRecentNotes.desc); + setting.setName(strings.settings.items.showRecentFiles.name).setDesc(strings.settings.items.showRecentFiles.desc); }); const recentNotesDependentSettings = wireToggleSettingWithDependentSection( @@ -98,12 +98,12 @@ export function renderShortcutsTab(context: SettingsTabContext): void { ); new Setting(recentNotesDependentSettings) - .setName(strings.settings.items.hideRecentNotes.name) - .setDesc(strings.settings.items.hideRecentNotes.desc) + .setName(strings.settings.items.hideFileTypesFromRecentFiles.name) + .setDesc(strings.settings.items.hideFileTypesFromRecentFiles.desc) .addDropdown((dropdown: DropdownComponent) => dropdown - .addOption('none', strings.settings.items.hideRecentNotes.options.none) - .addOption('folder-notes', strings.settings.items.hideRecentNotes.options.folderNotes) + .addOption('none', strings.settings.items.hideFileTypesFromRecentFiles.options.none) + .addOption('folder-notes', strings.settings.items.hideFileTypesFromRecentFiles.options.folderNotes) .setValue(plugin.settings.hideRecentNotes) .onChange(async value => { if (!isRecentNotesHideMode(value)) { @@ -115,8 +115,8 @@ export function renderShortcutsTab(context: SettingsTabContext): void { ); new Setting(recentNotesDependentSettings) - .setName(strings.settings.items.pinRecentNotesWithShortcuts.name) - .setDesc(strings.settings.items.pinRecentNotesWithShortcuts.desc) + .setName(strings.settings.items.pinRecentFilesWithShortcuts.name) + .setDesc(strings.settings.items.pinRecentFilesWithShortcuts.desc) .addToggle(toggle => toggle.setValue(plugin.settings.pinRecentNotesWithShortcuts).onChange(async value => { plugin.settings.pinRecentNotesWithShortcuts = value; @@ -131,8 +131,8 @@ function renderRecentNotesCountSetting(setting: Setting, context: SettingsTabCon const { plugin } = context; renderSliderSetting(setting, { - name: strings.settings.items.recentNotesCount.name, - desc: strings.settings.items.recentNotesCount.desc, + name: strings.settings.items.recentFilesCount.name, + desc: strings.settings.items.recentFilesCount.desc, value: plugin.settings.recentNotesCount, defaultValue: DEFAULT_SETTINGS.recentNotesCount, min: 1, diff --git a/src/settings/tabs/legacy/TagsLegacyTab.ts b/src/settings/tabs/legacy/TagsLegacyTab.ts index 3447d741f..b944039e1 100644 --- a/src/settings/tabs/legacy/TagsLegacyTab.ts +++ b/src/settings/tabs/legacy/TagsLegacyTab.ts @@ -88,8 +88,8 @@ export function renderTagsTab(context: SettingsTabContext, heading?: string): vo addSettingSyncModeToggle({ setting: tagSortOrderSetting, plugin, settingId: 'tagSortOrder' }); new Setting(tagDependentSettingsEl) - .setName(strings.settings.items.showAllTagsFolder.name) - .setDesc(strings.settings.items.showAllTagsFolder.desc) + .setName(strings.settings.items.showTagsFolder.name) + .setDesc(strings.settings.items.showTagsFolder.desc) .addToggle(toggle => toggle.setValue(plugin.settings.showAllTagsFolder).onChange(async value => { plugin.settings.showAllTagsFolder = value; @@ -98,8 +98,8 @@ export function renderTagsTab(context: SettingsTabContext, heading?: string): vo ); new Setting(tagDependentSettingsEl) - .setName(strings.settings.items.showUntagged.name) - .setDesc(strings.settings.items.showUntagged.desc) + .setName(strings.settings.items.showUntaggedNotes.name) + .setDesc(strings.settings.items.showUntaggedNotes.desc) .addToggle(toggle => toggle.setValue(plugin.settings.showUntagged).onChange(async value => { plugin.settings.showUntagged = value; @@ -108,8 +108,8 @@ export function renderTagsTab(context: SettingsTabContext, heading?: string): vo ); new Setting(tagDependentSettingsEl) - .setName(strings.settings.items.scopeTagsToCurrentContext.name) - .setDesc(strings.settings.items.scopeTagsToCurrentContext.desc) + .setName(strings.settings.items.filterTagsBySelection.name) + .setDesc(strings.settings.items.filterTagsBySelection.desc) .addToggle(toggle => toggle.setValue(plugin.settings.scopeTagsToCurrentContext).onChange(async value => { plugin.settings.scopeTagsToCurrentContext = value; diff --git a/src/utils/calendarNotes.ts b/src/utils/calendarNotes.ts index 03139ff6b..16750d7ea 100644 --- a/src/utils/calendarNotes.ts +++ b/src/utils/calendarNotes.ts @@ -50,35 +50,35 @@ export function getCalendarNoteConfig(kind: CalendarNoteKind, settings: Notebook return { calendarCustomFilePattern: settings.calendarCustomFilePattern, isPatternValid: isCalendarCustomDatePatternValid, - parsingErrorText: strings.settings.items.calendarCustomFilePattern.parsingError + parsingErrorText: strings.settings.items.calendarDailyNotePattern.parsingError }; case 'week': return { calendarCustomFilePattern: settings.calendarCustomWeekPattern, fallbackPattern: '', isPatternValid: isCalendarCustomWeekPatternValid, - parsingErrorText: strings.settings.items.calendarCustomWeekPattern.parsingError + parsingErrorText: strings.settings.items.calendarWeeklyNotePattern.parsingError }; case 'month': return { calendarCustomFilePattern: settings.calendarCustomMonthPattern, fallbackPattern: '', isPatternValid: isCalendarCustomMonthPatternValid, - parsingErrorText: strings.settings.items.calendarCustomMonthPattern.parsingError + parsingErrorText: strings.settings.items.calendarMonthlyNotePattern.parsingError }; case 'quarter': return { calendarCustomFilePattern: settings.calendarCustomQuarterPattern, fallbackPattern: '', isPatternValid: isCalendarCustomQuarterPatternValid, - parsingErrorText: strings.settings.items.calendarCustomQuarterPattern.parsingError + parsingErrorText: strings.settings.items.calendarQuarterlyNotePattern.parsingError }; case 'year': return { calendarCustomFilePattern: settings.calendarCustomYearPattern, fallbackPattern: '', isPatternValid: isCalendarCustomYearPatternValid, - parsingErrorText: strings.settings.items.calendarCustomYearPattern.parsingError + parsingErrorText: strings.settings.items.calendarYearlyNotePattern.parsingError }; } } diff --git a/src/utils/contextMenu/navigationSectionMenuBuilder.ts b/src/utils/contextMenu/navigationSectionMenuBuilder.ts index dc3618a1b..cf1563f63 100644 --- a/src/utils/contextMenu/navigationSectionMenuBuilder.ts +++ b/src/utils/contextMenu/navigationSectionMenuBuilder.ts @@ -445,8 +445,8 @@ export function showNavigationSectionContextMenu({ menu.addItem(item => { const title = isTagSection - ? strings.settings.items.scopeTagsToCurrentContext.name - : strings.settings.items.scopePropertiesToCurrentContext.name; + ? strings.settings.items.filterTagsBySelection.name + : strings.settings.items.filterPropertiesBySelection.name; const checked = isTagSection ? plugin.settings.scopeTagsToCurrentContext : plugin.settings.scopePropertiesToCurrentContext; item.setTitle(title) diff --git a/tests/scripts/compareLocaleStrings.test.ts b/tests/scripts/compareLocaleStrings.test.ts new file mode 100644 index 000000000..f1d84ad4c --- /dev/null +++ b/tests/scripts/compareLocaleStrings.test.ts @@ -0,0 +1,398 @@ +/* + * Notebook Navigator - Plugin for Obsidian + * Copyright (c) 2025-2026 Johan Sanneblad + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +import { execFile } from 'node:child_process'; +import { mkdtemp, mkdir, rm, writeFile } from 'node:fs/promises'; +import os from 'node:os'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { promisify } from 'node:util'; +import { afterEach, describe, expect, it } from 'vitest'; + +const execFileAsync = promisify(execFile); +const dirname = path.dirname(fileURLToPath(import.meta.url)); +const repoRoot = path.resolve(dirname, '../..'); +const tempProjects: string[] = []; + +interface ScriptResult { + code: number; + stdout: string; + stderr: string; +} + +interface ExecFileError extends Error { + code?: number | string; + stdout?: string | Buffer; + stderr?: string | Buffer; +} + +function isExecFileError(error: unknown): error is ExecFileError { + return error instanceof Error; +} + +async function runScript(projectRoot: string, args: string[]): Promise { + try { + const { stdout, stderr } = await execFileAsync( + process.execPath, + [path.join(repoRoot, 'scripts/compare-locale-strings.mjs'), '--project-root', projectRoot, ...args], + { cwd: repoRoot, encoding: 'utf8' } + ); + return { code: 0, stdout: String(stdout), stderr: String(stderr) }; + } catch (error) { + if (!isExecFileError(error)) { + throw error; + } + return { + code: typeof error.code === 'number' ? error.code : 1, + stdout: String(error.stdout ?? ''), + stderr: String(error.stderr ?? '') + }; + } +} + +async function createTempProject(): Promise { + const projectRoot = await mkdtemp(path.join(os.tmpdir(), 'nn-locale-comparison-')); + tempProjects.push(projectRoot); + return projectRoot; +} + +async function writeProjectFile(projectRoot: string, relativePath: string, contents: string): Promise { + const filePath = path.join(projectRoot, relativePath); + await mkdir(path.dirname(filePath), { recursive: true }); + await writeFile(filePath, contents, 'utf8'); +} + +async function writeJson(projectRoot: string, relativePath: string, value: unknown): Promise { + await writeProjectFile(projectRoot, relativePath, `${JSON.stringify(value, null, 2)}\n`); +} + +async function runGit(projectRoot: string, args: string[]): Promise { + await execFileAsync('git', args, { cwd: projectRoot, encoding: 'utf8' }); +} + +function baselineLocale(suffix: string): string { + return `export const STRINGS_${suffix.toUpperCase()} = { + common: { + unchanged: '${suffix} common' + }, + settings: { + keep: { + message: "${suffix} Keep {name}" + }, + move: { + label: '${suffix} Move' + }, + fan: { + label: '${suffix} Fan' + }, + copy: { + label: '${suffix} Copy' + }, + split: { + left: '${suffix} Left', + right: '${suffix} Right' + }, + kinds: { + action: (name: string) => \`${suffix} Hello \${name}\`, + list: ['${suffix} One {count}', '${suffix} Two'] + } + } +}; +`; +} + +function workingLocale(suffix: string): string { + return `export const STRINGS_${suffix.toUpperCase()} = { + common: { + unchanged: '${suffix} common' + }, + settings: { + keep: { + message: '${suffix} Keep {name}' + }, + moved: { + label: '${suffix} Move' + }, + firstFan: { + label: '${suffix} Fan' + }, + secondFan: { + label: '${suffix} Fan' + }, + copy: { + label: '${suffix} Copy' + }, + copyMirror: { + label: '${suffix} Copy' + }, + leftPart: '${suffix} Left', + rightPart: '${suffix} Right', + kinds: { + action: (name: string) => \`${suffix} Hello \${name}\`, + list: ['${suffix} One {count}', '${suffix} Two'] + }, + added: '${suffix} Added {thing}' + } +}; +`; +} + +afterEach(async () => { + await Promise.all(tempProjects.map(projectRoot => rm(projectRoot, { recursive: true, force: true }))); + tempProjects.length = 0; +}); + +describe('compare-locale-strings.mjs', () => { + it('applies moves, splits, source-removing fan-outs, retained-source copies, retains, and approved additions', async () => { + const projectRoot = await createTempProject(); + await writeProjectFile(projectRoot, 'src/i18n/locales/en.ts', baselineLocale('en')); + await writeProjectFile(projectRoot, 'src/i18n/locales/fr.ts', baselineLocale('fr')); + + await runGit(projectRoot, ['init']); + await runGit(projectRoot, ['config', 'user.name', 'Notebook Navigator Tests']); + await runGit(projectRoot, ['config', 'user.email', 'tests@example.com']); + await runGit(projectRoot, ['add', 'src/i18n/locales']); + await runGit(projectRoot, ['commit', '-m', 'baseline']); + + await writeProjectFile(projectRoot, 'src/i18n/locales/en.ts', workingLocale('en')); + await writeProjectFile(projectRoot, 'src/i18n/locales/fr.ts', workingLocale('fr')); + await writeJson(projectRoot, 'manifest.json', { + schemaVersion: 1, + baselineRef: 'HEAD', + scopePrefixes: ['settings'], + operations: [ + { kind: 'move', source: 'settings.move', targets: ['settings.moved'] }, + { kind: 'fanOut', source: 'settings.fan', targets: ['settings.firstFan', 'settings.secondFan'] }, + { kind: 'copy', source: 'settings.copy', targets: ['settings.copyMirror'] }, + { kind: 'split', source: 'settings.split.left', targets: ['settings.leftPart'] }, + { kind: 'split', source: 'settings.split.right', targets: ['settings.rightPart'] } + ], + retains: ['settings.keep', 'settings.kinds'], + approvedAdditions: [{ path: 'settings.added', kind: 'leaf', placeholders: ['thing'] }] + }); + + const result = await runScript(projectRoot, ['--manifest', 'manifest.json']); + + expect(result.code).toBe(0); + expect(result.stdout).toContain('Locales: 2'); + expect(result.stdout).toContain('Operations: 5'); + expect(result.stdout).toContain('Locale values: OK'); + }); + + it('reports translated value, kind, placeholder, and unapproved-path changes', async () => { + const projectRoot = await createTempProject(); + const baselineRoot = path.join(projectRoot, 'baseline'); + await writeProjectFile( + baselineRoot, + 'src/i18n/locales/en.ts', + `export const STRINGS_EN = { + settings: { + keep: { message: 'Hello {name}' }, + kinds: { + action: (name: string) => \`Hello \${name}\`, + changedFunction: (name: string) => \`Hello \${name}\`, + changedArray: ['One', 'Two'] + } + } +}; +` + ); + await writeProjectFile( + projectRoot, + 'src/i18n/locales/en.ts', + `export const STRINGS_EN = { + settings: { + keep: { message: 'Hello {person}' }, + kinds: { + action: ['Hello'], + changedFunction: (name: string) => \`Hi \${name}\`, + changedArray: ['One', 'Three'] + }, + extra: 'Extra' + } +}; +` + ); + await writeJson(projectRoot, 'manifest.json', { + schemaVersion: 1, + scopePrefixes: ['settings'], + operations: [], + retains: ['settings.keep', 'settings.kinds'], + approvedAdditions: [] + }); + + const result = await runScript(projectRoot, ['--manifest', 'manifest.json', '--base-dir', baselineRoot]); + + expect(result.code).toBe(1); + expect(result.stderr).toContain('translated value changed at settings.keep.message'); + expect(result.stderr).toContain('placeholders changed at settings.keep.message'); + expect(result.stderr).toContain('value kind changed at settings.kinds.action'); + expect(result.stderr).toContain('translated value changed at settings.kinds.changedFunction'); + expect(result.stderr).toContain('translated value changed at settings.kinds.changedArray'); + expect(result.stderr).toContain('unapproved new path: settings.extra'); + }); + + it('reports uncovered baseline paths, unmatched rules, and unused approved additions', async () => { + const projectRoot = await createTempProject(); + const baselineRoot = path.join(projectRoot, 'baseline'); + const locale = `export const STRINGS_EN = { settings: { covered: 'Covered', uncovered: 'Uncovered' } };\n`; + await writeProjectFile(baselineRoot, 'src/i18n/locales/en.ts', locale); + await writeProjectFile(projectRoot, 'src/i18n/locales/en.ts', locale); + await writeJson(projectRoot, 'manifest.json', { + schemaVersion: 1, + scopePrefixes: ['settings'], + operations: [{ kind: 'move', source: 'settings.missing', targets: ['settings.alsoMissing'] }], + retains: ['settings.covered'], + approvedAdditions: [{ path: 'settings.notAdded' }] + }); + + const result = await runScript(projectRoot, ['--manifest', 'manifest.json', '--base-dir', baselineRoot]); + + expect(result.code).toBe(1); + expect(result.stderr).toContain('baseline path is not mapped or retained: settings.uncovered'); + expect(result.stderr).toContain('Manifest rule matches no baseline leaves: settings.missing'); + expect(result.stderr).toContain('Approved addition matches no working leaves: settings.notAdded'); + }); + + it('validates complete semantic-review coverage and split targets against the operation manifest', async () => { + const projectRoot = await createTempProject(); + const baselineRoot = path.join(projectRoot, 'baseline'); + await writeProjectFile( + baselineRoot, + 'src/i18n/locales/en.ts', + `export const STRINGS_EN = { + settings: { + items: { + alpha: { name: 'Alpha', options: { old: 'Old' } }, + shared: { first: 'First', second: 'Second' }, + placement: { name: 'Placement', options: { right: 'Right' } } + } + } +}; +` + ); + await writeProjectFile( + projectRoot, + 'src/i18n/locales/en.ts', + `export const STRINGS_EN = { + settings: { + items: { + beta: { name: 'Alpha', options: { current: 'Old' } }, + firstTarget: { first: 'First' }, + secondTarget: { second: 'Second' }, + placement: { name: 'Placement', options: { right: 'Right' } } + }, + pages: { + calendar: { groups: { right: 'Right' } } + } + } +}; +` + ); + await writeJson(projectRoot, 'semantic.json', { + schemaVersion: 1, + items: [ + { source: 'settings.items.alpha', target: 'settings.items.beta', decision: 'rename' }, + { + source: 'settings.items.shared', + targets: ['settings.items.firstTarget', 'settings.items.secondTarget'], + decision: 'rename' + }, + { source: 'settings.items.placement', target: 'settings.items.placement', decision: 'retain' } + ], + nestedIdentifiers: [ + { + source: 'settings.items.alpha.options.old', + target: 'settings.items.beta.options.current', + decision: 'rename' + }, + { + source: 'settings.items.placement.options.right', + target: 'settings.items.placement.options.right', + decision: 'retain' + } + ] + }); + await writeJson(projectRoot, 'manifest.json', { + schemaVersion: 1, + scopePrefixes: ['settings'], + semanticReview: 'semantic.json', + operations: [ + { kind: 'move', source: 'settings.items.alpha', targets: ['settings.items.beta'] }, + { + kind: 'move', + source: 'settings.items.alpha.options.old', + targets: ['settings.items.beta.options.current'] + }, + { + kind: 'split', + source: 'settings.items.shared.first', + targets: ['settings.items.firstTarget.first'] + }, + { + kind: 'split', + source: 'settings.items.shared.second', + targets: ['settings.items.secondTarget.second'] + }, + { + kind: 'copy', + source: 'settings.items.placement.options.right', + targets: ['settings.pages.calendar.groups.right'] + } + ], + retains: ['settings.items.placement'], + approvedAdditions: [] + }); + + const result = await runScript(projectRoot, ['--manifest', 'manifest.json', '--base-dir', baselineRoot]); + + expect(result.code, result.stderr).toBe(0); + expect(result.stdout).toContain('Semantic review decisions: 5'); + expect(result.stdout).toContain('Locale values: OK'); + }); + + it('reports incomplete semantic-review coverage', async () => { + const projectRoot = await createTempProject(); + const baselineRoot = path.join(projectRoot, 'baseline'); + const locale = `export const STRINGS_EN = { + settings: { items: { alpha: { name: 'Alpha', options: { old: 'Old' } } } } +}; +`; + await writeProjectFile(baselineRoot, 'src/i18n/locales/en.ts', locale); + await writeProjectFile(projectRoot, 'src/i18n/locales/en.ts', locale); + await writeJson(projectRoot, 'semantic.json', { + schemaVersion: 1, + items: [{ source: 'settings.items.alpha', target: 'settings.items.alpha', decision: 'retain' }], + nestedIdentifiers: [] + }); + await writeJson(projectRoot, 'manifest.json', { + schemaVersion: 1, + scopePrefixes: ['settings'], + semanticReview: 'semantic.json', + operations: [], + retains: ['settings.items.alpha'], + approvedAdditions: [] + }); + + const result = await runScript(projectRoot, ['--manifest', 'manifest.json', '--base-dir', baselineRoot]); + + expect(result.code).toBe(1); + expect(result.stderr).toContain('Semantic review nestedIdentifiers coverage mismatch'); + expect(result.stderr).toContain('settings.items.alpha.options.old'); + }); +}); diff --git a/tests/settings/SettingsPaneDefinitions.test.ts b/tests/settings/SettingsPaneDefinitions.test.ts new file mode 100644 index 000000000..bee658519 --- /dev/null +++ b/tests/settings/SettingsPaneDefinitions.test.ts @@ -0,0 +1,152 @@ +/* + * Notebook Navigator - Plugin for Obsidian + * Copyright (c) 2025-2026 Johan Sanneblad + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +import { describe, expect, it, vi } from 'vitest'; + +vi.mock('obsidian', async importOriginal => { + const original = await importOriginal(); + const fallbackClass = class {}; + return { + ...original, + AbstractInputSuggest: fallbackClass, + FuzzySuggestModal: fallbackClass, + ItemView: fallbackClass + }; +}); + +import { + SETTINGS_PAGE_GROUP_DEFINITIONS, + SETTINGS_PANE_DEFINITION_MAP, + type SettingsPaneId +} from '../../src/settings/SettingsPaneDefinitions'; + +const EXPECTED_PANES: Array<{ id: SettingsPaneId; label: string; description: string; native: boolean }> = [ + { + id: 'general', + label: 'General', + description: 'Release notes, support, vault profile, file types, and property keys.', + native: false + }, + { + id: 'vault-filters', + label: 'Display filters', + description: 'Hidden folders, tags, files, file tags, and property rules.', + native: true + }, + { + id: 'appearance-behavior', + label: 'Appearance & behavior', + description: 'Behavior, keyboard navigation, mouse buttons, appearance, and formatting.', + native: true + }, + { + id: 'navigation-pane', + label: 'Navigation pane', + description: 'Layout, appearance, file counts, collapse behavior, and rainbow colors.', + native: true + }, + { + id: 'shortcuts', + label: 'Shortcuts & recent files', + description: 'Shortcut visibility, badges, recent files, and pinned items.', + native: true + }, + { + id: 'folders', + label: 'Folders & folder notes', + description: 'Folder display, folder notes, folder note templates, and folder note behavior.', + native: true + }, + { + id: 'tags-properties', + label: 'Tags & properties', + description: 'Tag and property sections, icons, sorting, scope, and inheritance.', + native: true + }, + { + id: 'list-pane', + label: 'List pane', + description: 'Sorting, grouping, list modes, pinned notes, and drawing previews.', + native: true + }, + { + id: 'file-operations', + label: 'File operations', + description: 'Template folder, delete confirmations, attachments, and file move conflict behavior.', + native: true + }, + { + id: 'frontmatter', + label: 'Frontmatter fields', + description: 'Frontmatter fields for display names, timestamps, icons, and colors.', + native: true + }, + { + id: 'notes', + label: 'File display', + description: 'Titles, preview text, feature images, tags, properties, dates, word counts, and character counts.', + native: true + }, + { + id: 'calendar', + label: 'Calendar', + description: 'Calendar display, date notes, templates, locale, and sidebar placement.', + native: true + }, + { + id: 'icon-packs', + label: 'Icon packs', + description: 'Interface icons, file icons, and icon pack management.', + native: true + }, + { + id: 'advanced', + label: 'Advanced', + description: 'Diagnostics, metadata cleanup, import/export, and reset.', + native: true + } +]; + +describe('settings pane definitions', () => { + it('keeps each pane label and description in its registry entry', () => { + expect(SETTINGS_PANE_DEFINITION_MAP.size).toBe(EXPECTED_PANES.length); + + EXPECTED_PANES.forEach(expected => { + const definition = SETTINGS_PANE_DEFINITION_MAP.get(expected.id); + expect(definition?.getLabel()).toBe(expected.label); + expect(definition?.getDescription()).toBe(expected.description); + }); + }); + + it('keeps legacy renderers and native page definitions registered together', () => { + EXPECTED_PANES.forEach(expected => { + const definition = SETTINGS_PANE_DEFINITION_MAP.get(expected.id); + expect(definition?.render).toBeTypeOf('function'); + expect(definition?.createDefinitions !== undefined).toBe(expected.native); + }); + }); + + it('uses the current page group headings', () => { + expect(SETTINGS_PAGE_GROUP_DEFINITIONS.map(group => group.getHeading())).toEqual([ + 'Configuration', + 'Navigation pane', + 'List pane', + 'Calendar and tools' + ]); + }); +});