diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f15afd2..33ab1d95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,91 @@ # novelWriter Changelog +## Version 2.0 RC 2 [2022-11-13] + +### Release Notes + +This is a release candidate of the next release version, and is intended for testing purposes. +Please be careful when using this version on live writing projects, and make sure you take frequent +backups. + +Please check the changelog for an overview of changes. The full release notes will be added to the +final release. + +### Detailed Changelog + +Note: This release introduces a new Project XML format with version number 1.5. When the project is +opened, a request to update the file format will show up. + +**Bugfixes** + +* The custom folders for user defined themes and syntax were not created properly when the app was + first launched on a new computer. The folders were successfully created on a second launch. The + error was handled, but reported. This was caused by the folder creation process being in the + wrong order. Issue #1180. PR #1184. +* Fixed context menu entries for split and merge having inconsistent labels. Issue #1199. PR #1197. + +**User Interface** + +* The exported status for document items have been renamed to active/inactive. Their icons have + also been updated. Issues #1196 and #1198. PRs #1200 and #1216. +* The status/importance context menu now shows which label is the current. Issue #1202. PR #1207. +* The status/importance context menu now has a "Manage Labels" action that opens the Project + Settings dialog at the correct place. Issue #1203. PR #1207. +* Both GUI theme and syntax theme can now be updated without restarting the app. Issue #1171. + PR #1212. +* The GUI theme now determines which icon theme is to be loaded. It is no longer a separate + setting. The icon theme can also be reloaded without restart. Issue #1172. PR #1212. +* The block formating features in the Format menu now also works on empty lines. Issue #1178. + PR #1214. +* There is now a Format menu entry and shortcut code for synopsis comments. Issue #1177. PR #1214. +* The split document dialog now has the option to move teh source document to trash. Issue #1179. + PR #1217. + +**Other Changes** + +* Archived documents are now partially indexed. This mainly means that the item will have the + correct document icon in the project tree corresponding to its main heading. Issue #1176. + PR #1183. +* The option to add notes files in the Project Wizard now automatically switches off if there are + no notes categories enabled. Issue #1192. PR #1201. +* When a project is opened for the first time, the first document in the project is also opened. + Issue #1219. PR #1223. +* When there is no project open, the toolbars on the Project Tree, Novel View and Outline View are + disabled. They are enabled only when a project is loaded. Issue #1220. PR #1230. + +**Installation and Packaging** + +* The AppImage release now has version information in the package name. Issue #1182. PR #1218. + +**Code Improvements** + +* The main heading of a document is now stored in the item class instead of the index. PR #1183. +* The common module checker functions no longer allow None values. The only one needing it was the + string checker. A new string checker that allows None has been added for those cases. This makes + type discovery in the code editor easier. Issue #1185. PR #1188. +* Verbose logging has been removed. The lowest severity level is now DEBUG. Issue #1186. PR #1191. +* Added a number of None checks in the code where especially Qt calls could potentially return + None, even if they were unlikely to do so. PR #1197. +* Renamed the status bar attribute in the main GUI class as it conflicts with a Qt method. + Issue #1190. PR #1197. +* The data access methods for the custom config file parser have been improved to better report + correct type information. PR #1197. +* Saving and loading of XML data is now handled by a separate set of reader and writer classes. The + reader class is capable of reading all file formats that have been used thus far. The various + data classes have been improved, and a new XML file formart version 1.5 added. Issue #1189. + PRs #1221 and #1232. +* The project folder on disk is now wrapped in a storage class that the project accesses files + through. It also handles lock files and archiving used for backup. The change is in preparation + for adding a potential single file format. Issue #1222. PR #1225. +* The Project Wizard now creates the project on disk, and then opens it. This replaces the old + method where the new project was built directly into the current session. This caused a few + inconsistencies from time to time, and was a duplicate way of getting a project into the session. + Issue #1152. PR #1225. +* The Config class has been refactored extensively and now also uses pathlib for all paths. Tests + are also switched to using pathlib. Issue #1224. PRs #1228 and #1229. + +---- + ## Version 2.0 RC 1 [2022-10-17] ### Release Notes diff --git a/i18n/nw_base.ts b/i18n/nw_base.ts index 58a4c7e2..d4241a2b 100644 --- a/i18n/nw_base.ts +++ b/i18n/nw_base.ts @@ -4,72 +4,72 @@ Common - + in the future - + just now - + a minute ago - + {0} minutes ago - + an hour ago - + {0} hours ago - + a day ago - + {0} days ago - + a week ago - + {0} weeks ago - + a month ago - + {0} months ago - + a year ago - + {0} years ago @@ -77,264 +77,264 @@ Constant - - - + + + None - + Novel - - + + Plot - - + + Characters - - + + Locations - - - Timeline - - - - + - Objects + Timeline - Entities + Objects + Entities + + + + + Custom - + Archive - + Trash - - + + Novel Document - - + + Project Note - + Root Folder - + Folder - + Novel Title Page - + Novel Chapter - + Novel Scene - + Novel Section - + Tag - + Point of View - - + + Focus - + Title - + Level - + Document - + Line - + Chars - + Words - + Pars - + POV - + Synopsis - + Straight single quotation mark - + Straight double quotation mark - + Left single quotation mark - + Right single quotation mark - + Single low-9 quotation mark - + Single high-reversed-9 quotation mark - + Left double quotation mark - + Right double quotation mark - + Double low-9 quotation mark - + Double high-reversed-9 quotation mark - + Double low-reversed-9 quotation mark - + Single left-pointing angle quotation mark - + Single right-pointing angle quotation mark - + Double left-pointing angle quotation mark - + Double right-pointing angle quotation mark - + Left corner bracket - + Right corner bracket - + Left white corner bracket - + Right white corner bracket @@ -342,105 +342,105 @@ GuiAbout - - + + About novelWriter - + About - + Release - - - - - - Licence - - - - - Website: {0} - - - - - Credits - - - - - Developer - - - - - Concept - - - - - i18n - - - - - novelWriter is a markdown-like text editor designed for organising and writing novels. It is written in Python 3 with a Qt5 GUI, using PyQt5. - - - - - novelWriter 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. - - - - - novelWriter 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 Licence tab for the full licence text, or visit the GNU website at {0} for more details. - - - - - Translations - - - - - Theme: {0} - - - - - - - Author - - + + Licence + + + + + Website: {0} + + + + + Credits + + + + + Developer + + + + + Concept + + + + + i18n + + + + + novelWriter is a markdown-like text editor designed for organising and writing novels. It is written in Python 3 with a Qt5 GUI, using PyQt5. + + + + + novelWriter 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. + + + + + novelWriter 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 Licence tab for the full licence text, or visit the GNU website at {0} for more details. + + + + + Translations + + + + + Theme: {0} + + + + + + + Author + + + + + + Credit - + Icons: {0} - + Syntax: {0} @@ -629,7 +629,7 @@ - Ignore export flag + Include inactive files @@ -773,17 +773,17 @@ - + Save Document As - + {0} file successfully written to: - + Failed to write {0} file. {1} @@ -791,17 +791,17 @@ GuiBuildNovelDocView - + This area will show the content of the document to be exported or printed. Press the "Build Preview" button to generate content. - + Unknown - + Build Time: @@ -809,32 +809,32 @@ GuiDocEditFooter - + Status - + Line: {0} ({1}) - + Words: {0} ({1}) - + Document size is {0} bytes - + Words: {0} selected - + Character count: {0} @@ -842,22 +842,22 @@ GuiDocEditHeader - + Edit document label - + Search document - + Toggle Focus Mode - + Close the document @@ -865,58 +865,58 @@ GuiDocEditSearch - - + + Search - + Replace - + Case Sensitive - + Whole Words Only - + RegEx Mode - + Loop Search - + Search Next File - + Preserve Case - + Close Search - + Find in current document - + Find and replace in current document @@ -924,117 +924,117 @@ GuiDocEditor - + The document you are trying to open is too big. The document size is {0} MB. The maximum size allowed is {1} MB. - + Opened Document: {0} - + The text you are trying to add is too big. The text size is {0} MB. The maximum size allowed is {1} MB. - + File Changed on Disk - + This document has been changed outside of novelWriter while it was open. Overwrite the file on disk? - + Could not save document. - + Saved Document: {0} - + Spell checking requires the package PyEnchant. It does not appear to be installed. - + Spell check complete - + File Location - + The currently open file is saved in: - + The document has grown too big and you cannot add more text to it. The maximum size of a single novelWriter document is {0} MB. - + Follow Tag - + Cut - + Copy - + Paste - + Select All - + Select Word - + Select Paragraph - + Spelling Suggestion(s) - + No Suggestions - + Add Word to Dictionary - + Please select some text before calling replace quotes. @@ -1065,90 +1065,95 @@ GuiDocSplit - + Split Document - + Document Headers - + Select the maximum level to split into files. - + Split on Header Level 1 (Title) - + Split up to Header Level 2 (Chapter) - + Split up to Header Level 3 (Scene) - + Split up to Header Level 4 (Section) - + Split into a new folder - + Create document hierarchy + + + Move split document to Trash + + GuiDocViewFooter - + Show/hide the references panel - + Activate to freeze the content of the references panel when changing document - + Show comments - + Show synopsis comments - + References - + Sticky - + Comments - + Synopsis @@ -1156,22 +1161,22 @@ GuiDocViewHeader - + Go backward - + Go forward - + Reload the document - + Close the document @@ -1179,27 +1184,27 @@ GuiDocViewer - + An error occurred while generating the preview. - + Copy - + Select All - + Select Word - + Select Paragraph @@ -1220,37 +1225,37 @@ GuiItemDetails - + Label - + Status - + Class - + Usage - + Characters - + Words - + Paragraphs @@ -1258,27 +1263,27 @@ GuiLipsum - + Insert Placeholder Text - + Insert Lorem Ipsum Text - + Number of paragraphs - + Randomise order - + Insert @@ -1286,173 +1291,173 @@ GuiMain - + You are running an untested development version of novelWriter. Please be careful when working on a live project and make sure you take regular backups. - + novelWriter is ready ... - + Cannot create a new project when another project is open. - + A project already exists in that location. Please choose another folder. - - New project created ... - - - - + Close Project - + Close the current project? - - + + Changes are saved automatically. - + Backup Project - + Backup the current project? - + The project was locked by the computer '{0}' ({1} {2}), last active on {3}. - + Project Locked - + The project is already open by another instance of novelWriter, and is therefore locked. Override lock and continue anyway? - + Note: If the program or the computer previously crashed, the lock can safely be overridden. However, overriding it is not recommended if the project is open in another instance of novelWriter. Doing so may corrupt the project. - + The project index is outdated or broken. Rebuilding index. - + Text files ({0}) - + Markdown files ({0}) - + novelWriter files ({0}) - + All files ({0}) - + Import File - + Could not read file. The file must be an existing text file. - + Please open a document to import the text file into. - + Import Document - + Importing the file will overwrite the current content of the document. Do you want to proceed? - + Indexing completed in {0} ms - + The project index has been successfully rebuilt. - + + Some changes will not be applied until novelWriter has been restarted. + + + + Information - + Warning - + Error - + This is a bug! - + Internal Error - + Exit - + Do you want to exit novelWriter? - + Could not find the reference for tag '{0}'. It either doesn't exist, or the index is out of date. The index can be updated from the Tools menu, or by pressing {1}. @@ -1460,587 +1465,597 @@ GuiMainMenu - + &Project - + New Project - + Open Project - + Save Project - + Close Project - + Project Settings - + Project Details - + Rename Item - + Delete Item - + Empty Trash - + Exit - + &Document - + Open Document - + Save Document - + Close Document - + View Document - + Close Document View - + Show File Details - + Import Text from File - + &Edit - + Undo - + Redo - + Cut - + Copy - + Paste - + Select All - + Select Paragraph - + &View - + Go to Project Tree - + Go to Document Editor - + Go to Document Viewer - + Go to Outline - + Navigate Backward - + Navigate Forward - + Focus Mode - + Full Screen Mode - + &Insert - + Dashes - + Short Dash - + Long Dash - + Horizontal Bar - + Figure Dash - + Quote Marks - + Left Single Quote - + Right Single Quote - + Left Double Quote - + Right Double Quote - + Alternative Apostrophe - + General Punctuation - + Ellipsis - + Prime - + Double Prime - + White Spaces - + Non-Breaking Space - + Thin Space - + Thin Non-Breaking Space - + Other Symbols - + List Bullet - + Hyphen Bullet - + Flower Mark - + Per Mille - + Degree Symbol - + Minus Sign - + Times Sign - + Division Sign - + Tags and References - + + Special Comments + + + + + Synopsis Comment + + + + Page Break and Space - + Page Break - + Vertical Space (Single) - + Vertical Space (Multi) - + Placeholder Text - + &Format - + Emphasis - + Strong Emphasis - + Strikethrough - + Wrap Double Quotes - + Wrap Single Quotes - + Header 1 (Partition) - + Header 2 (Chapter) - + Header 3 (Scene) - + Header 4 (Section) - + Novel Title - + Unnumbered Chapter - + Align Left - + Align Centre - + Align Right - + Indent Left - + Indent Right - + Toggle Comment - + Remove Block Format - + Convert Single Quotes - + Convert Double Quotes - + Remove In-Paragraph Breaks - + &Search - + Find - + Replace - + Find Next - + Find Previous - + Replace Next - + &Tools - + Check Spelling - + Re-Run Spell Check - + Project Word List - + Rebuild Index - + Backup Project - + Build Novel Project - + Writing Statistics - + Preferences - + &Help - + About novelWriter - + About Qt5 - + User Manual (Online) - + User Manual (PDF) - + Report an Issue (GitHub) - + Ask a Question (GitHub) - + The novelWriter Website - + Check for New Release @@ -2048,38 +2063,38 @@ GuiMainStatus - + None - + Editor - + Project - + Session Time - + Words: {0} ({1}) - + Project word count (session change) - + Novel word count (session change) @@ -2087,47 +2102,47 @@ GuiNovelToolBar - + Novel Outline - + Refresh - + Novel Root - + Last Column - + Hidden - + Point of View Character - + Focus Character - + Novel Plot - + More Options @@ -2135,7 +2150,7 @@ GuiNovelTree - + No meta data @@ -2143,65 +2158,65 @@ GuiOutlineDetails - - - - + + + + Title - + Chapter - + Scene - + Section - + Document - + Status - + Characters - + Words - + Paragraphs - + Synopsis - + Title Details - + Reference Tags @@ -2209,7 +2224,7 @@ GuiOutlineHeaderMenu - + Select Columns @@ -2217,17 +2232,17 @@ GuiOutlineToolBar - + Outline of - + Refresh - + All Novel Folders @@ -2235,151 +2250,146 @@ GuiPreferences - + Preferences - + General - + Projects - + Documents - + Editor - + Highlighting - + Automation - + Quotes - - - Some changes will not be applied until novelWriter has been restarted. - - GuiPreferencesAutomation - + Automatic Features - + Auto-select word under cursor - + Apply formatting to word under cursor if no selection is made. - + Auto-replace text as you type - + Allow the editor to replace symbols as you type. - + Replace as You Type - + Auto-replace single quotes - - + + Try to guess which is an opening or a closing quote. - + Auto-replace double quotes - + Auto-replace dashes - + Double and triple hyphens become short and long dashes. - + Auto-replace dots - + Three consecutive dots become ellipsis. - + Automatic Padding - + Insert non-breaking space before - + Automatically add space before any of these symbols. - + Insert non-breaking space after - + Automatically add space after any of these symbols. - + Use thin space instead - + Inserts a thin space instead of a regular space. @@ -2387,93 +2397,93 @@ GuiPreferencesDocuments - + Text Style - + Font family - - - + + + Applies to both document editor and viewer. - + Font size - + pt - + Text Flow - + Maximum text width in "Normal Mode" - + Set to 0 to disable this feature. - - - - + + + + px - + Maximum text width in "Focus Mode" - + The maximum width cannot be disabled. - + Hide document footer in "Focus Mode" - + Hide the information bar in the document editor. - + Justify the text margins - + Minimum text margin - + Tab width - + The width of a tab key press in the editor and viewer. @@ -2481,117 +2491,117 @@ GuiPreferencesEditor - + Spell Checking - + None - + Not installed - + Spell check language - + Available languages are determined by your system. - + Big document limit - + Full spell checking is disabled above this limit. - + kB - + Word Count - + Word count interval - + seconds - + Include project notes in status bar word count - + Writing Guides - + Show tabs and spaces - + Show line endings - + Scroll Behaviour - + Scroll past end of the document - + Set to 0 to disable this feature. - + lines - + Typewriter style scrolling when you type - + Keeps the cursor at a fixed vertical position. - + Minimum position for Typewriter scrolling - + Percentage of the editor height from the top. @@ -2599,97 +2609,95 @@ GuiPreferencesGeneral - + Look and Feel - + Main GUI language - - - - - - Requires restart. + + + + Requires restart to take effect. - + Main GUI theme - - Main icon theme + + General colour theme and icons. - + Editor theme - + Colour theme for the editor and viewer. - + Font family - + Font size - + pt - + GUI Settings - + Emphasise partition and chapter labels - + Makes them stand out in the project tree. - + Show full path in document header - + Add the parent folder names to the header. - + Hide vertical scroll bars in main windows - - + + Scrolling available with mouse wheel and keys only. - + Hide horizontal scroll bars in main windows @@ -2697,109 +2705,109 @@ GuiPreferencesProjects - + Automatic Save - + Save document interval - + How often the document is automatically saved. - - + + seconds - + Save project interval - + How often the project is automatically saved. - + Project Backup - + Browse - + Backup storage location - - + + Path: {0} - + Run backup when the project is closed - + Can be overridden for individual projects in Project Settings. - + Ask before running backup - + If off, backups will run in the background. - + Session Timer - + Pause the session timer when not writing - + Also pauses when the application window does not have focus. - + Editor inactive time before pausing timer - + User activity includes typing and changing the content. - + minutes - + Backup Directory @@ -2807,47 +2815,47 @@ GuiPreferencesQuotes - + Quotation Style - + Single quote open style - + The symbol to use for a leading single quote. - + Single quote close style - + The symbol to use for a trailing single quote. - + Double quote open style - + The symbol to use for a leading double quote. - + Double quote close style - + The symbol to use for a trailing double quote. @@ -2855,59 +2863,59 @@ GuiPreferencesSyntax - + Quotes & Dialogue - + Highlight text wrapped in quotes - - - + + + Applies to the document editor only. - + Allow open-ended single quotes - + Highlight single-quoted line with no closing quote. - + Allow open-ended double quotes - + Highlight double-quoted line with no closing quote. - + Text Emphasis - + Add highlight colour to emphasised text - + Text Errors - + Highlight multiple or trailing spaces @@ -2933,72 +2941,72 @@ GuiProjectDetailsContents - + Table of Contents - + Title - + Words - + Pages - + Page - + Progress - + Typical word count for a 5 by 8 inch book page with 11 pt font is 350. - + Start counting page numbers from this page. - + Assume a new chapter or partition always start on an odd numbered page. - + Words per page - + Count pages from - + Clear double pages - + END - + Untitled @@ -3016,32 +3024,32 @@ - + Words - + Chapters - + Scenes - + Revisions - + Editing Time - + Path @@ -3049,58 +3057,58 @@ GuiProjectEditMain - + Project Settings - + Project name - + Should be set only once. - + Novel title - + Change whenever you want! - + Author(s) - + One name per line. - + Default - + Spell check language - - + + Overrides main preferences. - + No backup on close @@ -3108,27 +3116,27 @@ GuiProjectEditReplace - + Text Replace List for Preview and Export - + Keyword - + Replace With - + Select item to edit - + Save @@ -3136,67 +3144,67 @@ GuiProjectEditStatus - + Novel File Status Levels - + Note File Importance Levels - + Label - + Usage - + Select item to edit - + Colour - + Save - + Select Colour - + New Item - + Cannot delete a status item that is in use. - + Not in use - + Used once - + Used by {0} items @@ -3204,63 +3212,63 @@ GuiProjectLoad - + Open Project - + Working Title - + Words - + Last Opened - + Recently Opened Projects - + Path - + New - + Remove - + novelWriter Project File ({0}) - + All files ({0}) - + Remove Entry - + Remove '{0}' from the recent projects list? The project files will not be deleted. @@ -3268,27 +3276,27 @@ GuiProjectSettings - + Project Settings - + Settings - + Status - + Importance - + Auto-Replace @@ -3296,52 +3304,52 @@ GuiProjectToolBar - + Project Content - + Quick Links - + Move Up - + Move Down - + Add Item - + Expand All - + Collapse All - + Undo Move - + Empty Trash - + More Options @@ -3349,191 +3357,201 @@ GuiProjectTree - + + Active + + + + + Inactive + + + + Did not find anywhere to add the file or folder! - + Cannot add new files or folders to the Trash folder. - + New Note - + New Chapter - + New Scene - + New Document - + New Folder - + There is currently no Trash folder in this project. - + The Trash folder is already empty. - - + + Empty Trash - + Permanently delete {0} file(s) from Trash? - - + + Delete - + Move '{0}' to Trash? - + Root folders can only be deleted when they are empty. - + Permanently delete '{0}'? - + Open Document - + View Document - + Change Label - - Toggle Exported + + Toggle Active - + Set Status to ... - + Set Importance to ... - + Transform - - + + Convert to {0} - + Merge Child Items into Self - + Merge Child Items into New - - Combine Documents in Folder + + Merge Documents in Folder - - Split Document by Header + + Split Document by Headers - + Expand All - + Collapse All - + Delete Permanently - + Move to Trash - + Convert Folder - + Do you want to convert the folder to a {0}? This action cannot be reversed. - + No documents selected for merging. - + Merged - - + + Could not write document content. - + There is nowhere to add item with name '{0}'. @@ -3575,67 +3593,67 @@ GuiViewsBar - + Project - + Project Tree View - + Novel - + Novel Tree View - + Outline - + Novel Outline View - + Build - + Build Novel Project - + Details - + Project Details - + Stats - + Writing Statistics - + Settings @@ -3643,18 +3661,18 @@ GuiWordList - - + + Project Word List - + Cannot add a blank word. - + The word '{0}' is already in the word list. @@ -3692,122 +3710,122 @@ - + Sum Totals - + Total Time: - + Idle Time: - + Filtered Time: - + Novel Word Count: - + Notes Word Count: - + Total Word Count: - + Filters - + Count novel files - + Count note files - + Hide zero word count - + Hide negative word count - + Group entries by day - + Show idle time - + Word count cap for the histogram - + Save As - + JSON Data File (.json) - + CSV Data File (.csv) - + JSON Data File - + CSV Data File - + Save Data As - + {0} file successfully written to: - + Failed to write {0} file. - + Failed to read session log file. @@ -3815,295 +3833,173 @@ NWProject - + Could not delete document file. - - - New - - - - - Note - - - - - Draft - - - - - Finished - - - - - Minor - - - - - Major - - - - - Main - - - - - New Project - - - - - Title Page - - - - - By - - - - - - New Chapter - - - - - - New Scene - - - - - Summary of the chapter. - - - - - Summary of the scene. - - - - - Chapter {0} - - - - - - Scene {0} - - - - - Main Plot - - - - - Protagonist - - - - - Main Location - - - - - File not found: {0} - - - - - - Failed to parse project xml. - - - - - Attempting to open backup project file instead. - - - - - + Unknown - + Project file does not appear to be a novelWriterXML file. - + Unknown or unsupported novelWriter project file format. The project cannot be opened by this version of novelWriter. The file was saved with novelWriter version {0}. - + + Failed to parse project xml. + + + + File Version - + The file format of your project is about to be updated. If you proceed, older versions of novelWriter will no longer be able to open this project. Continue? - + Version Conflict - + This project was saved by a newer version of novelWriter, version {0}. This is version {1}. If you continue to open the project, some attributes and settings may not be preserved, but the overall project should be fine. Continue opening the project? - - There was an error updating the project. Some data may not have been preserved. - - - - + Opened Project: {0} - - Project path not set, cannot save project. + + There is no project open. - - + Failed to save project. - + Saved Project: {0} - + Backing up project ... - + Cannot backup project because no valid backup path is set. Please set a valid backup location in Preferences. - - Cannot backup project because no project name is set. Please set a Working Title in Project Settings. + + Cannot backup project because no project name is set. Please set a Project Name in Project Settings. - + Could not create backup folder. - - Cannot backup project because the backup path is within the project folder to be backed up. Please choose a different backup path in Preferences. - - - - + Backup from {0} - + Backup archive file written to: {0} - + Could not write backup archive. - + Project backed up to '{0}' - - - Failed to create a new example project. + + + New - - Failed to create a new example project. Could not find the necessary files. They seem to be missing from this installation. + + Note - - Could not create new project folder. + + Draft - - New project folder is not empty. Each project requires a dedicated project folder. + + Finished - - You must set a valid backup path in Preferences to use the automatic project backup feature. + + Minor - - You must set a valid project name in Project Settings to use the automatic project backup feature. + + Major - + + Main + + + + and - - Could not create folder. - - - - + Found {0} orphaned file(s) in project folder. - + Recovered - + [{0}] {1} - + Recovered File {0} - + One or more orphaned files could not be added back into the project. Make sure at least a Novel root folder exists. @@ -4111,42 +4007,42 @@ ProjWizardCustomPage - + Custom Project Options - + Select which additional elements to populate the project with. You can skip making chapters and add only scenes by setting the number of chapters to 0. - + Add a folder for plot notes - + Add a folder for character notes - + Add a folder for location notes - + Add example notes to the above - + Add chapters to the novel folder - + Add scenes to each chapter @@ -4154,82 +4050,82 @@ ProjWizardFinalPage - + Summary - + Project Name: {0} - + Project Path: {0} - + Fill the project with a minimal set of items - + Fill the project with example files - + Add a folder for plot notes - + Add a folder for character notes - + Add a folder for location notes - + Add example notes to the above - + Add {0} chapters to the novel folder - + Add {0} scenes to each chapter - + Add {0} scenes - + You have selected the following: - + Press '{0}' to create the new project. - + Done - + Finish @@ -4237,7 +4133,7 @@ ProjWizardFolderPage - + Select Project Folder @@ -4319,31 +4215,105 @@ ProjWizardPopulatePage - + Populate Project - + Choose how to pre-fill the project. Either with a minimal set of starter items, an example project explaining and showing many of the features, or show further custom options on the next page. - + Fill the project with a minimal set of items - + Fill the project with example files - + Show detailed options for filling the project + + ProjectBuilder + + + New Project + + + + + New Chapter + + + + + New Scene + + + + + Title Page + + + + + By + + + + + Summary of the chapter. + + + + + Summary of the scene. + + + + + Chapter {0} + + + + + + Scene {0} + + + + + Main Plot + + + + + Protagonist + + + + + Main Location + + + + + Failed to create a new example project. + + + + + Failed to create a new example project. Could not find the necessary files. They seem to be missing from this installation. + + + QDialogButtonBox @@ -4535,17 +4505,17 @@ Tokenizer - + Synopsis - + Document '{0}' is too big ({1} MB). Skipping. - + ERROR diff --git a/i18n/nw_en_US.ts b/i18n/nw_en_US.ts index 74c20d80..0bb773d2 100644 --- a/i18n/nw_en_US.ts +++ b/i18n/nw_en_US.ts @@ -4,72 +4,72 @@ Common - + in the future in the future - + just now just now - + a minute ago a minute ago - + {0} minutes ago {0} minutes ago - + an hour ago an hour ago - + {0} hours ago {0} hours ago - + a day ago a day ago - + {0} days ago {0} days ago - + a week ago a week ago - + {0} weeks ago {0} weeks ago - + a month ago a month ago - + {0} months ago {0} months ago - + a year ago a year ago - + {0} years ago {0} years ago @@ -77,264 +77,264 @@ Constant - - - + + + None None - + Novel Novel - - + + Plot Plot - - + + Characters Characters - - + + Locations Locations - - + + Timeline Timeline - - + + Objects Objects - - + + Entities Entities - - + + Custom Custom - + Archive Archive - + Trash Trash - - + + Novel Document Novel Document - - + + Project Note Project Note - + Root Folder Root Folder - + Folder Folder - + Novel Title Page Novel Title Page - + Novel Chapter Novel Chapter - + Novel Scene Novel Scene - + Novel Section Novel Section - + Tag Tag - + Point of View Point of View - - + + Focus Focus - + Title Title - + Level Level - + Document Document - + Line Line - + Chars Chars - + Words Words - + Pars Pars - + POV POV - + Synopsis Synopsis - + Straight single quotation mark Straight single quotation mark - + Straight double quotation mark Straight double quotation mark - + Left single quotation mark Left single quotation mark - + Right single quotation mark Right single quotation mark - + Single low-9 quotation mark Single low-9 quotation mark - + Single high-reversed-9 quotation mark Single high-reversed-9 quotation mark - + Left double quotation mark Left double quotation mark - + Right double quotation mark Right double quotation mark - + Double low-9 quotation mark Double low-9 quotation mark - + Double high-reversed-9 quotation mark Double high-reversed-9 quotation mark - + Double low-reversed-9 quotation mark Double low-reversed-9 quotation mark - + Single left-pointing angle quotation mark Single left-pointing angle quotation mark - + Single right-pointing angle quotation mark Single right-pointing angle quotation mark - + Double left-pointing angle quotation mark Double left-pointing angle quotation mark - + Double right-pointing angle quotation mark Double right-pointing angle quotation mark - + Left corner bracket Left corner bracket - + Right corner bracket Right corner bracket - + Left white corner bracket Left white corner bracket - + Right white corner bracket Right white corner bracket @@ -342,105 +342,105 @@ GuiAbout - - + + About novelWriter About novelWriter - + About About - + Release Release - - - - - - Licence - License - - - - Website: {0} - Website: {0} - - - - Credits - Credits - - - - Developer - Developer - - - - Concept - Concept - - - - i18n - i18n - - - - novelWriter is a markdown-like text editor designed for organising and writing novels. It is written in Python 3 with a Qt5 GUI, using PyQt5. - novelWriter is a markdown-like text editor designed for organising and writing novels. It is written in Python 3 with a Qt5 GUI, using PyQt5. - - - - novelWriter 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. - novelWriter 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. - - - - novelWriter 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. - novelWriter 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 Licence tab for the full licence text, or visit the GNU website at {0} for more details. - See the License tab for the full license text, or visit the GNU website at {0} for more details. - - - - Translations - Translations - - - - Theme: {0} - Theme: {0} - - - - - - Author - Author - + + Licence + License + + + + Website: {0} + Website: {0} + + + + Credits + Credits + + + + Developer + Developer + + + + Concept + Concept + + + + i18n + i18n + + + + novelWriter is a markdown-like text editor designed for organising and writing novels. It is written in Python 3 with a Qt5 GUI, using PyQt5. + novelWriter is a markdown-like text editor designed for organising and writing novels. It is written in Python 3 with a Qt5 GUI, using PyQt5. + + + + novelWriter 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. + novelWriter 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. + + + + novelWriter 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. + novelWriter 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 Licence tab for the full licence text, or visit the GNU website at {0} for more details. + See the License tab for the full license text, or visit the GNU website at {0} for more details. + + + + Translations + Translations + + + + Theme: {0} + Theme: {0} + + + + + + Author + Author + + + + + Credit Credit - + Icons: {0} Icons: {0} - + Syntax: {0} Syntax: {0} @@ -629,8 +629,8 @@ - Ignore export flag - Ignore export flag + Include inactive files + Include inactive files @@ -773,17 +773,17 @@ PDF - + Save Document As Save Document As - + {0} file successfully written to: {0} file successfully written to: - + Failed to write {0} file. {1} Failed to write {0} file. {1} @@ -791,17 +791,17 @@ GuiBuildNovelDocView - + This area will show the content of the document to be exported or printed. Press the "Build Preview" button to generate content. This area will show the content of the document to be exported or printed. Press the "Build Preview" button to generate content. - + Unknown Unknown - + Build Time: Build Time: @@ -809,32 +809,32 @@ GuiDocEditFooter - + Status Status - + Line: {0} ({1}) Line: {0} ({1}) - + Words: {0} ({1}) Words: {0} ({1}) - + Document size is {0} bytes Document size is {0} bytes - + Words: {0} selected Words: {0} selected - + Character count: {0} Character count: {0} @@ -842,22 +842,22 @@ GuiDocEditHeader - + Edit document label Edit document label - + Search document Search document - + Toggle Focus Mode Toggle Focus Mode - + Close the document Close the document @@ -865,58 +865,58 @@ GuiDocEditSearch - - + + Search Search - + Replace Replace - + Case Sensitive Case Sensitive - + Whole Words Only Whole Words Only - + RegEx Mode RegEx Mode - + Loop Search Loop Search - + Search Next File Search Next File - + Preserve Case Preserve Case - + Close Search Close Search - + Find in current document Find in current document - + Find and replace in current document Find and replace in current document @@ -924,117 +924,117 @@ GuiDocEditor - + The document you are trying to open is too big. The document size is {0} MB. The maximum size allowed is {1} MB. The document you are trying to open is too big. The document size is {0} MB. The maximum size allowed is {1} MB. - + Opened Document: {0} Opened Document: {0} - + The text you are trying to add is too big. The text size is {0} MB. The maximum size allowed is {1} MB. The text you are trying to add is too big. The text size is {0} MB. The maximum size allowed is {1} MB. - + File Changed on Disk File Changed on Disk - + This document has been changed outside of novelWriter while it was open. Overwrite the file on disk? This document has been changed outside of novelWriter while it was open. Overwrite the file on disk? - + Could not save document. Could not save document. - + Saved Document: {0} Saved Document: {0} - + Spell checking requires the package PyEnchant. It does not appear to be installed. Spell checking requires the package PyEnchant. It does not appear to be installed. - + Spell check complete Spell check complete - + File Location File Location - + The currently open file is saved in: The currently open file is saved in: - + The document has grown too big and you cannot add more text to it. The maximum size of a single novelWriter document is {0} MB. The document has grown too big and you cannot add more text to it. The maximum size of a single novelWriter document is {0} MB. - + Follow Tag Follow Tag - + Cut Cut - + Copy Copy - + Paste Paste - + Select All Select All - + Select Word Select Word - + Select Paragraph Select Paragraph - + Spelling Suggestion(s) Spelling Suggestion(s) - + No Suggestions No Suggestions - + Add Word to Dictionary Add Word to Dictionary - + Please select some text before calling replace quotes. Please select some text before calling replace quotes. @@ -1065,90 +1065,95 @@ GuiDocSplit - + Split Document Split Document - + Document Headers Document Headers - + Select the maximum level to split into files. Select the maximum level to split into files. - + Split on Header Level 1 (Title) Split on Header Level 1 (Title) - + Split up to Header Level 2 (Chapter) Split up to Header Level 2 (Chapter) - + Split up to Header Level 3 (Scene) Split up to Header Level 3 (Scene) - + Split up to Header Level 4 (Section) Split up to Header Level 4 (Section) - + Split into a new folder Split into a new folder - + Create document hierarchy Create document hierarchy + + + Move split document to Trash + Move split document to Trash + GuiDocViewFooter - + Show/hide the references panel Show/hide the references panel - + Activate to freeze the content of the references panel when changing document Activate to freeze the content of the references panel when changing document - + Show comments Show comments - + Show synopsis comments Show synopsis comments - + References References - + Sticky Sticky - + Comments Comments - + Synopsis Synopsis @@ -1156,22 +1161,22 @@ GuiDocViewHeader - + Go backward Go backward - + Go forward Go forward - + Reload the document Reload the document - + Close the document Close the document @@ -1179,27 +1184,27 @@ GuiDocViewer - + An error occurred while generating the preview. An error occurred while generating the preview. - + Copy Copy - + Select All Select All - + Select Word Select Word - + Select Paragraph Select Paragraph @@ -1220,37 +1225,37 @@ GuiItemDetails - + Label Label - + Status Status - + Class Class - + Usage Usage - + Characters Characters - + Words Words - + Paragraphs Paragraphs @@ -1258,27 +1263,27 @@ GuiLipsum - + Insert Placeholder Text Insert Placeholder Text - + Insert Lorem Ipsum Text Insert Lorem Ipsum Text - + Number of paragraphs Number of paragraphs - + Randomise order Randomize order - + Insert Insert @@ -1286,173 +1291,173 @@ GuiMain - + You are running an untested development version of novelWriter. Please be careful when working on a live project and make sure you take regular backups. You are running an untested development version of novelWriter. Please be careful when working on a live project and make sure you take regular backups. - + novelWriter is ready ... novelWriter is ready ... - + Cannot create a new project when another project is open. Cannot create a new project when another project is open. - + A project already exists in that location. Please choose another folder. A project already exists in that location. Please choose another folder. - - New project created ... - New project created ... - - - + Close Project Close Project - + Close the current project? Close the current project? - - + + Changes are saved automatically. Changes are saved automatically. - + Backup Project Backup Project - + Backup the current project? Backup the current project? - + The project was locked by the computer '{0}' ({1} {2}), last active on {3}. The project was locked by the computer '{0}' ({1} {2}), last active on {3}. - + Project Locked Project Locked - + The project is already open by another instance of novelWriter, and is therefore locked. Override lock and continue anyway? The project is already open by another instance of novelWriter, and is therefore locked. Override lock and continue anyway? - + Note: If the program or the computer previously crashed, the lock can safely be overridden. However, overriding it is not recommended if the project is open in another instance of novelWriter. Doing so may corrupt the project. Note: If the program or the computer previously crashed, the lock can safely be overridden. However, overriding it is not recommended if the project is open in another instance of novelWriter. Doing so may corrupt the project. - + The project index is outdated or broken. Rebuilding index. The project index is outdated or broken. Rebuilding index. - + Text files ({0}) Text files ({0}) - + Markdown files ({0}) Markdown files ({0}) - + novelWriter files ({0}) novelWriter files ({0}) - + All files ({0}) All files ({0}) - + Import File Import File - + Could not read file. The file must be an existing text file. Could not read file. The file must be an existing text file. - + Please open a document to import the text file into. Please open a document to import the text file into. - + Import Document Import Document - + Importing the file will overwrite the current content of the document. Do you want to proceed? Importing the file will overwrite the current content of the document. Do you want to proceed? - + Indexing completed in {0} ms Indexing completed in {0} ms - + The project index has been successfully rebuilt. The project index has been successfully rebuilt. - + + Some changes will not be applied until novelWriter has been restarted. + Some changes will not be applied until novelWriter has been restarted. + + + Information Information - + Warning Warning - + Error Error - + This is a bug! This is a bug! - + Internal Error Internal Error - + Exit Exit - + Do you want to exit novelWriter? Do you want to exit novelWriter? - + Could not find the reference for tag '{0}'. It either doesn't exist, or the index is out of date. The index can be updated from the Tools menu, or by pressing {1}. Could not find the reference for tag '{0}'. It either doesn't exist, or the index is out of date. The index can be updated from the Tools menu, or by pressing {1}. @@ -1460,587 +1465,597 @@ GuiMainMenu - + &Project &Project - + New Project New Project - + Open Project Open Project - + Save Project Save Project - + Close Project Close Project - + Project Settings Project Settings - + Project Details Project Details - + Rename Item Rename Item - + Delete Item Delete Item - + Empty Trash Empty Trash - + Exit Exit - + &Document &Document - + Open Document Open Document - + Save Document Save Document - + Close Document Close Document - + View Document View Document - + Close Document View Close Document View - + Show File Details Show File Details - + Import Text from File Import Text from File - + &Edit &Edit - + Undo Undo - + Redo Redo - + Cut Cut - + Copy Copy - + Paste Paste - + Select All Select All - + Select Paragraph Select Paragraph - + &View &View - + Go to Project Tree Go to Project Tree - + Go to Document Editor Go to Document Editor - + Go to Document Viewer Go to Document Viewer - + Go to Outline Go to Outline - + Navigate Backward Navigate Backward - + Navigate Forward Navigate Forward - + Focus Mode Focus Mode - + Full Screen Mode Full Screen Mode - + &Insert &Insert - + Dashes Dashes - + Short Dash Short Dash - + Long Dash Long Dash - + Horizontal Bar Horizontal Bar - + Figure Dash Figure Dash - + Quote Marks Quote Marks - + Left Single Quote Left Single Quote - + Right Single Quote Right Single Quote - + Left Double Quote Left Double Quote - + Right Double Quote Right Double Quote - + Alternative Apostrophe Alternative Apostrophe - + General Punctuation General Punctuation - + Ellipsis Ellipsis - + Prime Prime - + Double Prime Double Prime - + White Spaces White Spaces - + Non-Breaking Space Non-Breaking Space - + Thin Space Thin Space - + Thin Non-Breaking Space Thin Non-Breaking Space - + Other Symbols Other Symbols - + List Bullet List Bullet - + Hyphen Bullet Hyphen Bullet - + Flower Mark Flower Mark - + Per Mille Per Mille - + Degree Symbol Degree Symbol - + Minus Sign Minus Sign - + Times Sign Times Sign - + Division Sign Division Sign - + Tags and References Tags and References - + + Special Comments + Special Comments + + + + Synopsis Comment + Synopsis Comment + + + Page Break and Space Page Break and Space - + Page Break Page Break - + Vertical Space (Single) Vertical Space (Single) - + Vertical Space (Multi) Vertical Space (Multi) - + Placeholder Text Placeholder Text - + &Format &Format - + Emphasis Emphasis - + Strong Emphasis Strong Emphasis - + Strikethrough Strikethrough - + Wrap Double Quotes Wrap Double Quotes - + Wrap Single Quotes Wrap Single Quotes - + Header 1 (Partition) Header 1 (Partition) - + Header 2 (Chapter) Header 2 (Chapter) - + Header 3 (Scene) Header 3 (Scene) - + Header 4 (Section) Header 4 (Section) - + Novel Title Novel Title - + Unnumbered Chapter Unnumbered Chapter - + Align Left Align Left - + Align Centre Align Center - + Align Right Align Right - + Indent Left Indent Left - + Indent Right Indent Right - + Toggle Comment Toggle Comment - + Remove Block Format Remove Block Format - + Convert Single Quotes Convert Single Quotes - + Convert Double Quotes Convert Double Quotes - + Remove In-Paragraph Breaks Remove In-Paragraph Breaks - + &Search &Search - + Find Find - + Replace Replace - + Find Next Find Next - + Find Previous Find Previous - + Replace Next Replace Next - + &Tools &Tools - + Check Spelling Check Spelling - + Re-Run Spell Check Re-Run Spell Check - + Project Word List Project Word List - + Rebuild Index Rebuild Index - + Backup Project Backup Project - + Build Novel Project Build Novel Project - + Writing Statistics Writing Statistics - + Preferences Preferences - + &Help &Help - + About novelWriter About novelWriter - + About Qt5 About Qt5 - + User Manual (Online) User Manual (Online) - + User Manual (PDF) User Manual (PDF) - + Report an Issue (GitHub) Report an Issue (GitHub) - + Ask a Question (GitHub) Ask a Question (GitHub) - + The novelWriter Website The novelWriter Website - + Check for New Release Check for New Release @@ -2048,38 +2063,38 @@ GuiMainStatus - + None None - + Editor Editor - + Project Project - + Session Time Session Time - + Words: {0} ({1}) Words: {0} ({1}) - + Project word count (session change) Project word count (session change) - + Novel word count (session change) Novel word count (session change) @@ -2087,47 +2102,47 @@ GuiNovelToolBar - + Novel Outline Novel Outline - + Refresh Refresh - + Novel Root Novel Root - + Last Column Last Column - + Hidden Hidden - + Point of View Character Point of View Character - + Focus Character Focus Character - + Novel Plot Novel Plot - + More Options More Options @@ -2135,7 +2150,7 @@ GuiNovelTree - + No meta data No meta data @@ -2143,65 +2158,65 @@ GuiOutlineDetails - - - - + + + + Title Title - + Chapter Chapter - + Scene Scene - + Section Section - + Document Document - + Status Status - + Characters Characters - + Words Words - + Paragraphs Paragraphs - + Synopsis Synopsis - + Title Details Title Details - + Reference Tags Reference Tags @@ -2209,7 +2224,7 @@ GuiOutlineHeaderMenu - + Select Columns Select Columns @@ -2217,17 +2232,17 @@ GuiOutlineToolBar - + Outline of Outline of - + Refresh Refresh - + All Novel Folders All Novel Folders @@ -2235,151 +2250,146 @@ GuiPreferences - + Preferences Preferences - + General General - + Projects Projects - + Documents Documents - + Editor Editor - + Highlighting Highlighting - + Automation Automation - + Quotes Quotes - - - Some changes will not be applied until novelWriter has been restarted. - Some changes will not be applied until novelWriter has been restarted. - GuiPreferencesAutomation - + Automatic Features Automatic Features - + Auto-select word under cursor Auto-select word under cursor - + Apply formatting to word under cursor if no selection is made. Apply formatting to word under cursor if no selection is made. - + Auto-replace text as you type Auto-replace text as you type - + Allow the editor to replace symbols as you type. Allow the editor to replace symbols as you type. - + Replace as You Type Replace as You Type - + Auto-replace single quotes Auto-replace single quotes - - + + Try to guess which is an opening or a closing quote. Try to guess which is an opening or a closing quote. - + Auto-replace double quotes Auto-replace double quotes - + Auto-replace dashes Auto-replace dashes - + Double and triple hyphens become short and long dashes. Double and triple hyphens become short and long dashes. - + Auto-replace dots Auto-replace dots - + Three consecutive dots become ellipsis. Three consecutive dots become ellipsis. - + Automatic Padding Automatic Padding - + Insert non-breaking space before Insert non-breaking space before - + Automatically add space before any of these symbols. Automatically add space before any of these symbols. - + Insert non-breaking space after Insert non-breaking space after - + Automatically add space after any of these symbols. Automatically add space after any of these symbols. - + Use thin space instead Use thin space instead - + Inserts a thin space instead of a regular space. Inserts a thin space instead of a regular space. @@ -2387,93 +2397,93 @@ GuiPreferencesDocuments - + Text Style Text Style - + Font family Font family - - - + + + Applies to both document editor and viewer. Applies to both document editor and viewer. - + Font size Font size - + pt pt - + Text Flow Text Flow - + Maximum text width in "Normal Mode" Maximum text width in "Normal Mode" - + Set to 0 to disable this feature. Set to 0 to disable this feature. - - - - + + + + px px - + Maximum text width in "Focus Mode" Maximum text width in "Focus Mode" - + The maximum width cannot be disabled. The maximum width cannot be disabled. - + Hide document footer in "Focus Mode" Hide document footer in "Focus Mode" - + Hide the information bar in the document editor. Hide the information bar in the document editor. - + Justify the text margins Justify the text margins - + Minimum text margin Minimum text margin - + Tab width Tab width - + The width of a tab key press in the editor and viewer. The width of a tab key press in the editor and viewer. @@ -2481,117 +2491,117 @@ GuiPreferencesEditor - + Spell Checking Spell Checking - + None None - + Not installed Not installed - + Spell check language Spell check language - + Available languages are determined by your system. Available languages are determined by your system. - + Big document limit Big document limit - + Full spell checking is disabled above this limit. Full spell checking is disabled above this limit. - + kB kB - + Word Count Word Count - + Word count interval Word count interval - + seconds seconds - + Include project notes in status bar word count Include project notes in status bar word count - + Writing Guides Writing Guides - + Show tabs and spaces Show tabs and spaces - + Show line endings Show line endings - + Scroll Behaviour Scroll Behavior - + Scroll past end of the document Scroll past end of the document - + Set to 0 to disable this feature. Set to 0 to disable this feature. - + lines lines - + Typewriter style scrolling when you type Typewriter style scrolling when you type - + Keeps the cursor at a fixed vertical position. Keeps the cursor at a fixed vertical position. - + Minimum position for Typewriter scrolling Minimum position for Typewriter scrolling - + Percentage of the editor height from the top. Percentage of the editor height from the top. @@ -2599,97 +2609,95 @@ GuiPreferencesGeneral - + Look and Feel Look and Feel - + Main GUI language Main GUI language - - - - - - Requires restart. - Requires restart. + + + + Requires restart to take effect. + Requires restart to take effect. - + Main GUI theme Main GUI theme - - Main icon theme - Main icon theme + + General colour theme and icons. + General color theme and icons. - + Editor theme Editor theme - + Colour theme for the editor and viewer. Color theme for the editor and viewer. - + Font family Font family - + Font size Font size - + pt pt - + GUI Settings GUI Settings - + Emphasise partition and chapter labels Emphasise partition and chapter labels - + Makes them stand out in the project tree. Makes them stand out in the project tree. - + Show full path in document header Show full path in document header - + Add the parent folder names to the header. Add the parent folder names to the header. - + Hide vertical scroll bars in main windows Hide vertical scroll bars in main windows - - + + Scrolling available with mouse wheel and keys only. Scrolling available with mouse wheel and keys only. - + Hide horizontal scroll bars in main windows Hide horizontal scroll bars in main windows @@ -2697,109 +2705,109 @@ GuiPreferencesProjects - + Automatic Save Automatic Save - + Save document interval Save document interval - + How often the document is automatically saved. How often the document is automatically saved. - - + + seconds seconds - + Save project interval Save project interval - + How often the project is automatically saved. How often the project is automatically saved. - + Project Backup Project Backup - + Browse Browse - + Backup storage location Backup storage location - - + + Path: {0} Path: {0} - + Run backup when the project is closed Run backup when the project is closed - + Can be overridden for individual projects in Project Settings. Can be overridden for individual projects in Project Settings. - + Ask before running backup Ask before running backup - + If off, backups will run in the background. If off, backups will run in the background. - + Session Timer Session Timer - + Pause the session timer when not writing Pause the session timer when not writing - + Also pauses when the application window does not have focus. Also pauses when the application window does not have focus. - + Editor inactive time before pausing timer Editor inactive time before pausing timer - + User activity includes typing and changing the content. User activity includes typing and changing the content. - + minutes minutes - + Backup Directory Backup Directory @@ -2807,47 +2815,47 @@ GuiPreferencesQuotes - + Quotation Style Quotation Style - + Single quote open style Single quote open style - + The symbol to use for a leading single quote. The symbol to use for a leading single quote. - + Single quote close style Single quote close style - + The symbol to use for a trailing single quote. The symbol to use for a trailing single quote. - + Double quote open style Double quote open style - + The symbol to use for a leading double quote. The symbol to use for a leading double quote. - + Double quote close style Double quote close style - + The symbol to use for a trailing double quote. The symbol to use for a trailing double quote. @@ -2855,59 +2863,59 @@ GuiPreferencesSyntax - + Quotes & Dialogue Quotes & Dialogue - + Highlight text wrapped in quotes Highlight text wrapped in quotes - - - + + + Applies to the document editor only. Applies to the document editor only. - + Allow open-ended single quotes Allow open-ended single quotes - + Highlight single-quoted line with no closing quote. Highlight single-quoted line with no closing quote. - + Allow open-ended double quotes Allow open-ended double quotes - + Highlight double-quoted line with no closing quote. Highlight double-quoted line with no closing quote. - + Text Emphasis Text Emphasis - + Add highlight colour to emphasised text Add highlight color to emphasised text - + Text Errors Text Errors - + Highlight multiple or trailing spaces Highlight multiple or trailing spaces @@ -2933,72 +2941,72 @@ GuiProjectDetailsContents - + Table of Contents Table of Contents - + Title Title - + Words Words - + Pages Pages - + Page Page - + Progress Progress - + Typical word count for a 5 by 8 inch book page with 11 pt font is 350. Typical word count for a 5 by 8 inch book page with 11 pt font is 350. - + Start counting page numbers from this page. Start counting page numbers from this page. - + Assume a new chapter or partition always start on an odd numbered page. Assume a new chapter or partition always start on an odd numbered page. - + Words per page Words per page - + Count pages from Count pages from - + Clear double pages Clear double pages - + END END - + Untitled Untitled @@ -3016,32 +3024,32 @@ By {0} - + Words Words - + Chapters Chapters - + Scenes Scenes - + Revisions Revisions - + Editing Time Editing Time - + Path Path @@ -3049,58 +3057,58 @@ GuiProjectEditMain - + Project Settings Project Settings - + Project name Project name - + Should be set only once. Should be set only once. - + Novel title Novel title - + Change whenever you want! Change whenever you want! - + Author(s) Author(s) - + One name per line. One name per line. - + Default Default - + Spell check language Spell check language - - + + Overrides main preferences. Overrides main preferences. - + No backup on close No backup on close @@ -3108,27 +3116,27 @@ GuiProjectEditReplace - + Text Replace List for Preview and Export Text Replace List for Preview and Export - + Keyword Keyword - + Replace With Replace With - + Select item to edit Select item to edit - + Save Save @@ -3136,67 +3144,67 @@ GuiProjectEditStatus - + Novel File Status Levels Novel File Status Levels - + Note File Importance Levels Note File Importance Levels - + Label Label - + Usage Usage - + Select item to edit Select item to edit - + Colour Color - + Save Save - + Select Colour Select Color - + New Item New Item - + Cannot delete a status item that is in use. Cannot delete a status item that is in use. - + Not in use Not in use - + Used once Used once - + Used by {0} items Used by {0} items @@ -3204,63 +3212,63 @@ GuiProjectLoad - + Open Project Open Project - + Working Title Working Title - + Words Words - + Last Opened Last Opened - + Recently Opened Projects Recently Opened Projects - + Path Path - + New New - + Remove Remove - + novelWriter Project File ({0}) novelWriter Project File ({0}) - + All files ({0}) All files ({0}) - + Remove Entry Remove Entry - + Remove '{0}' from the recent projects list? The project files will not be deleted. Remove '{0}' from the recent projects list? The project files will not be deleted. @@ -3268,27 +3276,27 @@ GuiProjectSettings - + Project Settings Project Settings - + Settings Settings - + Status Status - + Importance Importance - + Auto-Replace Auto-Replace @@ -3296,52 +3304,52 @@ GuiProjectToolBar - + Project Content Project Content - + Quick Links Quick Links - + Move Up Move Up - + Move Down Move Down - + Add Item Add Item - + Expand All Expand All - + Collapse All Collapse All - + Undo Move Undo Move - + Empty Trash Empty Trash - + More Options More Options @@ -3349,191 +3357,201 @@ GuiProjectTree - + + Active + Active + + + + Inactive + Inactive + + + Did not find anywhere to add the file or folder! Did not find anywhere to add the file or folder! - + Cannot add new files or folders to the Trash folder. Cannot add new files or folders to the Trash folder. - + New Note New Note - + New Chapter New Chapter - + New Scene New Scene - + New Document New Document - + New Folder New Folder - + There is currently no Trash folder in this project. There is currently no Trash folder in this project. - + The Trash folder is already empty. The Trash folder is already empty. - - + + Empty Trash Empty Trash - + Permanently delete {0} file(s) from Trash? Permanently delete {0} file(s) from Trash? - - + + Delete Delete - + Move '{0}' to Trash? Move '{0}' to Trash? - + Root folders can only be deleted when they are empty. Root folders can only be deleted when they are empty. - + Permanently delete '{0}'? Permanently delete '{0}'? - + Open Document Open Document - + View Document View Document - + Change Label Change Label - - Toggle Exported - Toggle Exported + + Toggle Active + Toggle Active - + Set Status to ... Set Status to ... - + Set Importance to ... Set Importance to ... - + Transform Transform - - + + Convert to {0} Convert to {0} - + Merge Child Items into Self Merge Child Items into Self - + Merge Child Items into New Merge Child Items into New - - Combine Documents in Folder - Combine Documents in Folder + + Merge Documents in Folder + Merge Documents in Folder - - Split Document by Header - Split Document by Header + + Split Document by Headers + Split Document by Headers - + Expand All Expand All - + Collapse All Collapse All - + Delete Permanently Delete Permanently - + Move to Trash Move to Trash - + Convert Folder Convert Folder - + Do you want to convert the folder to a {0}? This action cannot be reversed. Do you want to convert the folder to a {0}? This action cannot be reversed. - + No documents selected for merging. No documents selected for merging. - + Merged Merged - - + + Could not write document content. Could not write document content. - + There is nowhere to add item with name '{0}'. There is nowhere to add item with name '{0}'. @@ -3575,67 +3593,67 @@ GuiViewsBar - + Project Project - + Project Tree View Project Tree View - + Novel Novel - + Novel Tree View Novel Tree View - + Outline Outline - + Novel Outline View Novel Outline View - + Build Build - + Build Novel Project Build Novel Project - + Details Details - + Project Details Project Details - + Stats Stats - + Writing Statistics Writing Statistics - + Settings Settings @@ -3643,18 +3661,18 @@ GuiWordList - - + + Project Word List Project Word List - + Cannot add a blank word. Cannot add a blank word. - + The word '{0}' is already in the word list. The word '{0}' is already in the word list. @@ -3692,122 +3710,122 @@ Histogram - + Sum Totals Sum Totals - + Total Time: Total Time: - + Idle Time: Idle Time: - + Filtered Time: Filtered Time: - + Novel Word Count: Novel Word Count: - + Notes Word Count: Notes Word Count: - + Total Word Count: Total Word Count: - + Filters Filters - + Count novel files Count novel files - + Count note files Count note files - + Hide zero word count Hide zero word count - + Hide negative word count Hide negative word count - + Group entries by day Group entries by day - + Show idle time Show idle time - + Word count cap for the histogram Word count cap for the histogram - + Save As Save As - + JSON Data File (.json) JSON Data File (.json) - + CSV Data File (.csv) CSV Data File (.csv) - + JSON Data File JSON Data File - + CSV Data File CSV Data File - + Save Data As Save Data As - + {0} file successfully written to: {0} file successfully written to: - + Failed to write {0} file. Failed to write {0} file. - + Failed to read session log file. Failed to read session log file. @@ -3815,295 +3833,173 @@ NWProject - + Could not delete document file. Could not delete document file. - - - New - New - - - - Note - Note - - - - Draft - Draft - - - - Finished - Finished - - - - Minor - Minor - - - - Major - Major - - - - Main - Main - - - - New Project - New Project - - - - Title Page - Title Page - - - - By - By - - - - - New Chapter - New Chapter - - - - - New Scene - New Scene - - - - Summary of the chapter. - Summary of the chapter. - - - - Summary of the scene. - Summary of the scene. - - - - Chapter {0} - Chapter {0} - - - - - Scene {0} - Scene {0} - - - - Main Plot - Main Plot - - - - Protagonist - Protagonist - - - - Main Location - Main Location - - - - File not found: {0} - File not found: {0} - - - - - Failed to parse project xml. - Failed to parse project xml. - - - - Attempting to open backup project file instead. - Attempting to open backup project file instead. - - - - + Unknown Unknown - + Project file does not appear to be a novelWriterXML file. Project file does not appear to be a novelWriterXML file. - + Unknown or unsupported novelWriter project file format. The project cannot be opened by this version of novelWriter. The file was saved with novelWriter version {0}. Unknown or unsupported novelWriter project file format. The project cannot be opened by this version of novelWriter. The file was saved with novelWriter version {0}. - + + Failed to parse project xml. + Failed to parse project xml. + + + File Version File Version - + The file format of your project is about to be updated. If you proceed, older versions of novelWriter will no longer be able to open this project. Continue? The file format of your project is about to be updated. If you proceed, older versions of novelWriter will no longer be able to open this project. Continue? - + Version Conflict Version Conflict - + This project was saved by a newer version of novelWriter, version {0}. This is version {1}. If you continue to open the project, some attributes and settings may not be preserved, but the overall project should be fine. Continue opening the project? This project was saved by a newer version of novelWriter, version {0}. This is version {1}. If you continue to open the project, some attributes and settings may not be preserved, but the overall project should be fine. Continue opening the project? - - There was an error updating the project. Some data may not have been preserved. - There was an error updating the project. Some data may not have been preserved. - - - + Opened Project: {0} Opened Project: {0} - - Project path not set, cannot save project. - Project path not set, cannot save project. + + There is no project open. + There is no project open. - - + Failed to save project. Failed to save project. - + Saved Project: {0} Saved Project: {0} - + Backing up project ... Backing up project ... - + Cannot backup project because no valid backup path is set. Please set a valid backup location in Preferences. Cannot backup project because no valid backup path is set. Please set a valid backup location in Preferences. - - Cannot backup project because no project name is set. Please set a Working Title in Project Settings. - Cannot backup project because no project name is set. Please set a Working Title in Project Settings. + + Cannot backup project because no project name is set. Please set a Project Name in Project Settings. + Cannot backup project because no project name is set. Please set a Project Name in Project Settings. - + Could not create backup folder. Could not create backup folder. - - Cannot backup project because the backup path is within the project folder to be backed up. Please choose a different backup path in Preferences. - Cannot backup project because the backup path is within the project folder to be backed up. Please choose a different backup path in Preferences. - - - + Backup from {0} Backup from {0} - + Backup archive file written to: {0} Backup archive file written to: {0} - + Could not write backup archive. Could not write backup archive. - + Project backed up to '{0}' Project backed up to '{0}' - - - Failed to create a new example project. - Failed to create a new example project. + + + New + New - - Failed to create a new example project. Could not find the necessary files. They seem to be missing from this installation. - Failed to create a new example project. Could not find the necessary files. They seem to be missing from this installation. + + Note + Note - - Could not create new project folder. - Could not create new project folder. + + Draft + Draft - - New project folder is not empty. Each project requires a dedicated project folder. - New project folder is not empty. Each project requires a dedicated project folder. + + Finished + Finished - - You must set a valid backup path in Preferences to use the automatic project backup feature. - You must set a valid backup path in Preferences to use the automatic project backup feature. + + Minor + Minor - - You must set a valid project name in Project Settings to use the automatic project backup feature. - You must set a valid project name in Project Settings to use the automatic project backup feature. + + Major + Major - + + Main + Main + + + and and - - Could not create folder. - Could not create folder. - - - + Found {0} orphaned file(s) in project folder. Found {0} orphaned file(s) in project folder. - + Recovered Recovered - + [{0}] {1} [{0}] {1} - + Recovered File {0} Recovered File {0} - + One or more orphaned files could not be added back into the project. Make sure at least a Novel root folder exists. One or more orphaned files could not be added back into the project. Make sure at least a Novel root folder exists. @@ -4111,42 +4007,42 @@ ProjWizardCustomPage - + Custom Project Options Custom Project Options - + Select which additional elements to populate the project with. You can skip making chapters and add only scenes by setting the number of chapters to 0. Select which additional elements to populate the project with. You can skip making chapters and add only scenes by setting the number of chapters to 0. - + Add a folder for plot notes Add a folder for plot notes - + Add a folder for character notes Add a folder for character notes - + Add a folder for location notes Add a folder for location notes - + Add example notes to the above Add example notes to the above - + Add chapters to the novel folder Add chapters to the novel folder - + Add scenes to each chapter Add scenes to each chapter @@ -4154,82 +4050,82 @@ ProjWizardFinalPage - + Summary Summary - + Project Name: {0} Project Name: {0} - + Project Path: {0} Project Path: {0} - + Fill the project with a minimal set of items Fill the project with a minimal set of items - + Fill the project with example files Fill the project with example files - + Add a folder for plot notes Add a folder for plot notes - + Add a folder for character notes Add a folder for character notes - + Add a folder for location notes Add a folder for location notes - + Add example notes to the above Add example notes to the above - + Add {0} chapters to the novel folder Add {0} chapters to the novel folder - + Add {0} scenes to each chapter Add {0} scenes to each chapter - + Add {0} scenes Add {0} scenes - + You have selected the following: You have selected the following: - + Press '{0}' to create the new project. Press '{0}' to create the new project. - + Done Done - + Finish Finish @@ -4237,7 +4133,7 @@ ProjWizardFolderPage - + Select Project Folder Select Project Folder @@ -4319,31 +4215,105 @@ ProjWizardPopulatePage - + Populate Project Populate Project - + Choose how to pre-fill the project. Either with a minimal set of starter items, an example project explaining and showing many of the features, or show further custom options on the next page. Choose how to pre-fill the project. Either with a minimal set of starter items, an example project explaining and showing many of the features, or show further custom options on the next page. - + Fill the project with a minimal set of items Fill the project with a minimal set of items - + Fill the project with example files Fill the project with example files - + Show detailed options for filling the project Show detailed options for filling the project + + ProjectBuilder + + + New Project + New Project + + + + New Chapter + New Chapter + + + + New Scene + New Scene + + + + Title Page + Title Page + + + + By + By + + + + Summary of the chapter. + Summary of the chapter. + + + + Summary of the scene. + Summary of the scene. + + + + Chapter {0} + Chapter {0} + + + + + Scene {0} + Scene {0} + + + + Main Plot + Main Plot + + + + Protagonist + Protagonist + + + + Main Location + Main Location + + + + Failed to create a new example project. + Failed to create a new example project. + + + + Failed to create a new example project. Could not find the necessary files. They seem to be missing from this installation. + Failed to create a new example project. Could not find the necessary files. They seem to be missing from this installation. + + QDialogButtonBox @@ -4535,17 +4505,17 @@ Tokenizer - + Synopsis Synopsis - + Document '{0}' is too big ({1} MB). Skipping. Document '{0}' is too big ({1} MB). Skipping. - + ERROR ERROR diff --git a/i18n/nw_nb_NO.ts b/i18n/nw_nb_NO.ts index 8a3a1129..38e16437 100644 --- a/i18n/nw_nb_NO.ts +++ b/i18n/nw_nb_NO.ts @@ -4,72 +4,72 @@ Common - + in the future i fremtiden - + just now nå nettopp - + a minute ago for et minutt siden - + {0} minutes ago for {0} minutter siden - + an hour ago for en time siden - + {0} hours ago for {0} timer siden - + a day ago for en dag siden - + {0} days ago for {0} dager siden - + a week ago for en uke siden - + {0} weeks ago for {0} uker siden - + a month ago for en måned siden - + {0} months ago for {0} måneder siden - + a year ago for et år siden - + {0} years ago for {0} år siden @@ -77,264 +77,264 @@ Constant - - - + + + None Ingen - + Novel Roman - - + + Plot Plott - - + + Characters Karakterer - - + + Locations Lokasjoner - - + + Timeline Tidslinje - - + + Objects Objekter - - + + Entities Enheter - - + + Custom Annet - + Archive Arkiv - + Trash Søppel - - + + Novel Document Romandokument - - + + Project Note Prosjektnotat - + Root Folder Hovedmappe - + Folder Mappe - + Novel Title Page Tittelside - + Novel Chapter Kapittel - + Novel Scene Scene - + Novel Section Seksjon - + Tag Knagg - + Point of View Perspektiv - - + + Focus Fokus - + Title Tittel - + Level Nivå - + Document Dokument - + Line Linje - + Chars Tegn - + Words Ord - + Pars Avsnitt - + POV Persp. - + Synopsis Sammendrag - + Straight single quotation mark Rett, enkelt sitattegn - + Straight double quotation mark Rett, dobbelt sitattegn - + Left single quotation mark Venstre, enkelt sitattegn - + Right single quotation mark Høyre, enkelt sitattegn - + Single low-9 quotation mark Enkelt, lavt-9 sitattegn - + Single high-reversed-9 quotation mark Enkelt, høyt, reversert-9 sitattegn - + Left double quotation mark Venstre, dobbelt sitattegn - + Right double quotation mark Høyre, dobbelt sitattegn - + Double low-9 quotation mark Dobbelt, lavt-9 sitattegn - + Double high-reversed-9 quotation mark Dobbelt, høyt, reversert-9 sitattegn - + Double low-reversed-9 quotation mark Dobbelt, lavt, reversert-9 sitattegn - + Single left-pointing angle quotation mark Enkelt, venstre, angulært sitattegn - + Single right-pointing angle quotation mark Enkelt, høyre, angulært sitattegn - + Double left-pointing angle quotation mark Dobbelt, venstre, angulært sitattegn - + Double right-pointing angle quotation mark Dobbelt, høyre, angulært sitattegn - + Left corner bracket Venstre hjørnevinkel - + Right corner bracket Høyre hjørnevinkel - + Left white corner bracket Venstre, hvit hjørnevinkel - + Right white corner bracket Høyre, hvit hjørnevinkel @@ -342,105 +342,105 @@ GuiAbout - - + + About novelWriter Om novelWriter - + About Om - + Release Utgivelse - - - - - - Licence - Lisens - - - - Website: {0} - Nettside: {0} - - - - Credits - Krediteringer - - - - Developer - Utvikler - - - - Concept - Konsept - - - - i18n - i18n - - - - novelWriter is a markdown-like text editor designed for organising and writing novels. It is written in Python 3 with a Qt5 GUI, using PyQt5. - novelWriter er en markdown-liknende teksteditor laget for å kunne organisere og skrive romaner og noveller. Programmet er skrevet i Python 3 med et brukergrensesnitt i Qt 5 via PyQt5. - - - - novelWriter 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. - novelWriter er gratis programvare: du kan videredistribuere det og/eller modifisere det under vilkårene i GNU General Public License som utgitt av Free Software Foundation, enten versjon 3 av Lisensen, eller (etter eget valg) enhver senere versjon. - - - - novelWriter 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. - novelWriter er distribuert i håp om at det vil være nyttig, men UTEN NOEN GARANTI; uten selv en underforstått garanti vedrørende SALGBARHET eller EGNETHET TIL ET BESTEMT FORMÅL. Se GNU General Public Licence for flere detaljer. - - - - See the Licence tab for the full licence text, or visit the GNU website at {0} for more details. - Se lisens-fanen for fulltekst-versjonen av lisensen (på engelsk), eller besøk GNU sin nettside på {0} for mer informasjon. - - - - Translations - Oversettelser - - - - Theme: {0} - Tema: {0} - - - - - - Author - Ansvarlig - + + Licence + Lisens + + + + Website: {0} + Nettside: {0} + + + + Credits + Krediteringer + + + + Developer + Utvikler + + + + Concept + Konsept + + + + i18n + i18n + + + + novelWriter is a markdown-like text editor designed for organising and writing novels. It is written in Python 3 with a Qt5 GUI, using PyQt5. + novelWriter er en markdown-liknende teksteditor laget for å kunne organisere og skrive romaner og noveller. Programmet er skrevet i Python 3 med et brukergrensesnitt i Qt 5 via PyQt5. + + + + novelWriter 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. + novelWriter er gratis programvare: du kan videredistribuere det og/eller modifisere det under vilkårene i GNU General Public License som utgitt av Free Software Foundation, enten versjon 3 av Lisensen, eller (etter eget valg) enhver senere versjon. + + + + novelWriter 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. + novelWriter er distribuert i håp om at det vil være nyttig, men UTEN NOEN GARANTI; uten selv en underforstått garanti vedrørende SALGBARHET eller EGNETHET TIL ET BESTEMT FORMÅL. Se GNU General Public Licence for flere detaljer. + + + + See the Licence tab for the full licence text, or visit the GNU website at {0} for more details. + Se lisens-fanen for fulltekst-versjonen av lisensen (på engelsk), eller besøk GNU sin nettside på {0} for mer informasjon. + + + + Translations + Oversettelser + + + + Theme: {0} + Tema: {0} + + + + + + Author + Ansvarlig + + + + + Credit Kreditert - + Icons: {0} Ikoner: {0} - + Syntax: {0} Syntaks: {0} @@ -629,8 +629,8 @@ - Ignore export flag - Ignorer 'ta med'-flagg + Include inactive files + Inkluder ikke-aktive filer @@ -773,17 +773,17 @@ PDF - + Save Document As Lagre dokumentet som - + {0} file successfully written to: Lagring av {0} var vellykket, og filen ble skrevet til: - + Failed to write {0} file. {1} Misslykkes i å skrive {0} til. {1} @@ -791,17 +791,17 @@ GuiBuildNovelDocView - + This area will show the content of the document to be exported or printed. Press the "Build Preview" button to generate content. Dette området vil vise innholdet av dokumentet som skal eksporteres. Trykk på knappen merket med "Lag forhåndsvisning" for å oppdatere innholdet. - + Unknown Ukjent - + Build Time: Bygget: @@ -809,32 +809,32 @@ GuiDocEditFooter - + Status Status - + Line: {0} ({1}) Linje: {0} ({1}) - + Words: {0} ({1}) Ord: {0} ({1}) - + Document size is {0} bytes Dokumentet er {0} byte - + Words: {0} selected Ord: {0} valgt - + Character count: {0} Antall tegn: {0} @@ -842,22 +842,22 @@ GuiDocEditHeader - + Edit document label Endre dokumentnavn - + Search document Søk i dokumentet - + Toggle Focus Mode Slå av/på "Fokus-modus" - + Close the document Lukk dokumentet @@ -865,58 +865,58 @@ GuiDocEditSearch - - + + Search Søk - + Replace Erstatt - + Case Sensitive Skill store/små bokstaver - + Whole Words Only Kun hele ord - + RegEx Mode RegEx-modus - + Loop Search Søk rundt - + Search Next File Søk i neste file - + Preserve Case Behold store/små bokstaver - + Close Search Lukk søk - + Find in current document Søk i det åpne dokumentet - + Find and replace in current document Søk og erstatt i det åpne dokumentet @@ -924,117 +924,117 @@ GuiDocEditor - + The document you are trying to open is too big. The document size is {0} MB. The maximum size allowed is {1} MB. Dokumentet du prøver å åpne er for stort. Dokumenter er på {0} MB. Den maksimale størrelsen tillat er {1} MB. - + Opened Document: {0} Åpnet dokument: {0} - + The text you are trying to add is too big. The text size is {0} MB. The maximum size allowed is {1} MB. Teksten du forsøker å legge til er for stor. Teksten er {0} MB. Den maksimale tillatte størrelsen er {1} MB. - + File Changed on Disk Filen er endret på disk - + This document has been changed outside of novelWriter while it was open. Overwrite the file on disk? Dette dokumentet er endret utenfor novelWriter mens det var åpent. Overskrive filen på disken? - + Could not save document. Kunne ikke lagre dokumentet. - + Saved Document: {0} Lagret dokument: {0} - + Spell checking requires the package PyEnchant. It does not appear to be installed. Stavekontroll krever at pakken PyEnchant er installert. Det ser det ikke ut til at den er. - + Spell check complete Stavekontrollen er ferdig - + File Location Filens plassering - + The currently open file is saved in: Det åpne dokumentet er lagret på følgende sted: - + The document has grown too big and you cannot add more text to it. The maximum size of a single novelWriter document is {0} MB. Dokumentet har blitt for stort og du kan ikke legge til mer tekst. Den maksimale tillatte størrelsen for et novelWriter-dokument er {0} MB. - + Follow Tag Følg knagg - + Cut Klipp - + Copy Kopier - + Paste Lim inn - + Select All Velg hele teksten - + Select Word Velg hele ordet - + Select Paragraph Velg hele avsnittet - + Spelling Suggestion(s) Forslag fra stavekontrollen - + No Suggestions Ingen forslag - + Add Word to Dictionary Legg til ord i ordbok - + Please select some text before calling replace quotes. Venligst velg en del av teksten før du velger å erstatte sitattegn. @@ -1065,90 +1065,95 @@ GuiDocSplit - + Split Document Del opp dokument - + Document Headers Dokumentets overskrifter - + Select the maximum level to split into files. Velg hvilket nivå av overskrifter å dele opp til. - + Split on Header Level 1 (Title) Del på overskrifter på nivå 1 (titler) - + Split up to Header Level 2 (Chapter) Del på overskrifter opp til nivå 2 (kapitler) - + Split up to Header Level 3 (Scene) Del på overskrifter opp til nivå 3 (scener) - + Split up to Header Level 4 (Section) Del på overskrifter opp til nivå 4 (seksjoner) - + Split into a new folder Del inn i en ny mappe - + Create document hierarchy Opprett dokumenthierarki + + + Move split document to Trash + Flytt splittet element til papirkurven + GuiDocViewFooter - + Show/hide the references panel Skjul eller vis referanse-panelet - + Activate to freeze the content of the references panel when changing document Aktiver for å fryse innholdet i referanse-panelet ved bytte av vist dokument - + Show comments Vis kommentarer - + Show synopsis comments Vis sammendrag - + References Referanser - + Sticky Hold igjen - + Comments Kommentarer - + Synopsis Sammendrag @@ -1156,22 +1161,22 @@ GuiDocViewHeader - + Go backward Gå bakover - + Go forward Gå fremover - + Reload the document Last dokumentet på nytt - + Close the document Lukk dokumentet @@ -1179,27 +1184,27 @@ GuiDocViewer - + An error occurred while generating the preview. Det har oppstått en feil under genereringen av visningen. - + Copy Kopier - + Select All Velg hele teksten - + Select Word Velg hele ordet - + Select Paragraph Velg hele avsnittet @@ -1220,37 +1225,37 @@ GuiItemDetails - + Label Navn - + Status Status - + Class Klasse - + Usage Formål - + Characters Tegn - + Words Ord - + Paragraphs Avsnitt @@ -1258,27 +1263,27 @@ GuiLipsum - + Insert Placeholder Text Sett inn midlertidig tekst - + Insert Lorem Ipsum Text Sett inn Lorem Ipsum-tekst - + Number of paragraphs Antall avsnitt - + Randomise order Tilfeldig rekkefølge - + Insert Sett inn @@ -1286,173 +1291,173 @@ GuiMain - + You are running an untested development version of novelWriter. Please be careful when working on a live project and make sure you take regular backups. Du kjører nå en utestet versjon av novelWriter. Vær forsiktig om du jobber med et av dine faktiske prosjekter. Husk å ta backup! - + novelWriter is ready ... novelWriter er klar ... - + Cannot create a new project when another project is open. Kan ikke lage et nytt prosjekt mens et annet prosjekt er åpent. - + A project already exists in that location. Please choose another folder. Et prosjekt finnes allerede i den mappen. Vennligst velg et annet sted å lagre prosjektet. - - New project created ... - Et nytt prosjekt har blitt opprettet ... - - - + Close Project Lukk prosjektet - + Close the current project? Ønsker du å lukke dette prosjektet? - - + + Changes are saved automatically. Endringer lagres automatisk. - + Backup Project Sikkerhetskopiering - + Backup the current project? Ønsker du å ta sikkerhetskopi av dette prosjektet? - + The project was locked by the computer '{0}' ({1} {2}), last active on {3}. Prosjektet er låst av datamaskinen {0} ({1} {2}), siste registrerte aktivitet var {3}. - + Project Locked Prosjektlås - + The project is already open by another instance of novelWriter, and is therefore locked. Override lock and continue anyway? Prosjektet er allerede åpent av en annen instans av novelWriter, og er derfor låst. Vil du overstyre denne låsen og fortsette likevel? - + Note: If the program or the computer previously crashed, the lock can safely be overridden. However, overriding it is not recommended if the project is open in another instance of novelWriter. Doing so may corrupt the project. Merk: Hvis programmet eller datamaskinen tidligere krasjet, kan fil-låsen trygt overstyres. Det anbefales imidlertid ikke å overstyre den hvis prosjektet er åpent i en annen instans av novelWriter. Å gjøre det kan skape konflikter i prosjektets filer. - + The project index is outdated or broken. Rebuilding index. Prosjektets indeks er utdatert eller skadet. Bygger indeksen på nytt. - + Text files ({0}) Tekstfiler ({0}) - + Markdown files ({0}) Markdown-filer ({0}) - + novelWriter files ({0}) novelWriter-filer ({0}) - + All files ({0}) Alle filer ({0}) - + Import File Importer fil - + Could not read file. The file must be an existing text file. Kunne ikke lese filen. Filen må eksistere fra før av. - + Please open a document to import the text file into. Vennligst åpne et dokument hvor teksten i filen kan importeres. - + Import Document Importer dokument - + Importing the file will overwrite the current content of the document. Do you want to proceed? Å importere filen vil overskrive all eksisterende tekst i dokumentet. Ønsker du å fortsette? - + Indexing completed in {0} ms Indekseringen tok {0} ms - + The project index has been successfully rebuilt. Prosjektets indeks har blitt bygget på nytt. - + + Some changes will not be applied until novelWriter has been restarted. + Noen endringer vil ikke tas i bruk før neste gang novelWriter startes. + + + Information Informasjon - + Warning Advarsel - + Error Feil - + This is a bug! Dette er en systemfeil! - + Internal Error Intern feil - + Exit Avslutt - + Do you want to exit novelWriter? Ønsker du å avslutte novelWriter? - + Could not find the reference for tag '{0}'. It either doesn't exist, or the index is out of date. The index can be updated from the Tools menu, or by pressing {1}. Kunne ikke finne referansen til knagg {0}. Enten finnes den ikke, eller så er prosjektets indeks ikke oppdatert. Indeksen kan oppdateres fra Verktøy-menyen eller ved å trykke på {1}. @@ -1460,587 +1465,597 @@ GuiMainMenu - + &Project &Prosjekt - + New Project Nytt prosjekt - + Open Project Åpne prosjekt - + Save Project Lagre prosjektet - + Close Project Lukk prosjektet - + Project Settings Prosjektinnstillinger - + Project Details Prosjektdetaljer - + Rename Item Endre navn - + Delete Item Slett enhet - + Empty Trash Tøm søppel - + Exit Avslutt - + &Document &Dokument - + Open Document Åpne dokument - + Save Document Lagre dokumentet - + Close Document Lukk dokumentet - + View Document Vis dokument - + Close Document View Lukk dokumentvisning - + Show File Details Vis filinformasjon - + Import Text from File Importer tekst fra fil - + &Edit &Rediger - + Undo Angre - + Redo Gjenopprett - + Cut Klipp - + Copy Kopier - + Paste Lim inn - + Select All Velg hele teksten - + Select Paragraph Velg hele avsnittet - + &View &Vis - + Go to Project Tree Gå til prosjekt-tre - + Go to Document Editor Gå til dokument-editor - + Go to Document Viewer Gå til visningsvindu - + Go to Outline Gå til disposisjon - + Navigate Backward Navigere bakover - + Navigate Forward Navigere fremover - + Focus Mode Focus-modus - + Full Screen Mode Fullskjerm-modus - + &Insert Sett &inn - + Dashes Bindestreker - + Short Dash Kort bindestrek - + Long Dash Lang bindestrek - + Horizontal Bar Horisontal strek - + Figure Dash Tallstrek - + Quote Marks Sitattegn - + Left Single Quote Venstre, enkelt sitattegn - + Right Single Quote Høyre, enkelt sitattegn - + Left Double Quote Venstre, dobbelt sitattegn - + Right Double Quote Høyre, dobbelt sitattegn - + Alternative Apostrophe Alternativ apostrof - + General Punctuation Generell tegnsetting - + Ellipsis Ellipsis - + Prime Primtegn - + Double Prime Dobbelt primtegn - + White Spaces Mellomrom - + Non-Breaking Space Hardt mellomrom - + Thin Space Kort mellomrom - + Thin Non-Breaking Space Hardt, kort mellomrom - + Other Symbols Andre symboler - + List Bullet Kulepunkt - + Hyphen Bullet Bindestrekpunkt - + Flower Mark Blomsterpunkt - + Per Mille Promille - + Degree Symbol Gradertegn - + Minus Sign Minustegn - + Times Sign Gangetegn - + Division Sign Deletegn - + Tags and References Knagger og referanser - + + Special Comments + Andre kommentartyper + + + + Synopsis Comment + Kommentar med sammendrag + + + Page Break and Space Sideskift og avstand - + Page Break Sideskift - + Vertical Space (Single) Vertikal avstand (enkel) - + Vertical Space (Multi) Vertikal avstand (flere) - + Placeholder Text Midlertidig tekst - + &Format &Formattering - + Emphasis Kursiv - + Strong Emphasis Uthev - + Strikethrough Gjennomstrek - + Wrap Double Quotes Sett i doble sitattegn - + Wrap Single Quotes Sett i enkle sitattegn - + Header 1 (Partition) Overskrift 1 (inndeling) - + Header 2 (Chapter) Overskrift 2 (kapittel) - + Header 3 (Scene) Overskrift 3 (scene) - + Header 4 (Section) Overskrift 4 (seksjon) - + Novel Title Boktittel - + Unnumbered Chapter Unumrert kapittel - + Align Left Venstrejuster - + Align Centre Sentrer - + Align Right Høyrejuster - + Indent Left Innrykk fra venstre - + Indent Right Innrykk fra høyre - + Toggle Comment Veksle kommentar - + Remove Block Format Fjern formattering - + Convert Single Quotes Konverter enkle sitattegn - + Convert Double Quotes Konverter doble sitattegn - + Remove In-Paragraph Breaks Fjern linjeskift i avsnittet - + &Search &Søk - + Find Søk - + Replace Erstatt - + Find Next Finn neste - + Find Previous Finn forrige - + Replace Next Erstatt neste - + &Tools &Verktøy - + Check Spelling Stavekontroll - + Re-Run Spell Check Kjør stavekontroll - + Project Word List Prosjektets ordliste - + Rebuild Index Bygg indeks - + Backup Project Lag sikkerhetskopi av prosjektets mappe - + Build Novel Project Bygg prosjektet - + Writing Statistics Statistikk - + Preferences Innstillinger - + &Help &Hjelp - + About novelWriter Om novelWriter - + About Qt5 Om Qt5 - + User Manual (Online) Brukermanual (på nett) - + User Manual (PDF) Brukermanual (PDF) - + Report an Issue (GitHub) Rapporter en feil (GitHub) - + Ask a Question (GitHub) Still et spørsmål (GitHub) - + The novelWriter Website novelWriters nettside - + Check for New Release Sjekk etter oppdateringer @@ -2048,38 +2063,38 @@ GuiMainStatus - + None Ingen - + Editor Editor - + Project Prosjekt - + Session Time Tid brukt i gjeldende sesjon - + Words: {0} ({1}) Ord: {0} ({1}) - + Project word count (session change) Antall ord i prosjektet (endring i denne sesjonen) - + Novel word count (session change) Antall ord i roman-teksten (endring i denne sesjonen) @@ -2087,47 +2102,47 @@ GuiNovelToolBar - + Novel Outline Disposisjon - + Refresh Oppdatér - + Novel Root Roman-mappe - + Last Column Siste kolonne - + Hidden Skjult - + Point of View Character Synsvinkel-karakter - + Focus Character Fokus-karakter - + Novel Plot Roman-plott - + More Options Flere valg @@ -2135,7 +2150,7 @@ GuiNovelTree - + No meta data Ingen meta-data @@ -2143,65 +2158,65 @@ GuiOutlineDetails - - - - + + + + Title Tittel - + Chapter Kapittel - + Scene Scene - + Section Seksjon - + Document Dokument - + Status Status - + Characters Tegn - + Words Ord - + Paragraphs Avsnitt - + Synopsis Sammendrag - + Title Details Oversikt - + Reference Tags Referanser @@ -2209,7 +2224,7 @@ GuiOutlineHeaderMenu - + Select Columns Velg kolonner @@ -2217,17 +2232,17 @@ GuiOutlineToolBar - + Outline of Disposisjon for - + Refresh Oppdatér - + All Novel Folders Alle roman-mapper @@ -2235,151 +2250,146 @@ GuiPreferences - + Preferences Innstillinger - + General Generelt - + Projects Prosjekt - + Documents Dokument - + Editor Editor - + Highlighting Fremheving - + Automation Automasjon - + Quotes Sitattegn - - - Some changes will not be applied until novelWriter has been restarted. - Noen endringer vil ikke tas i bruk før neste gang novelWriter startes. - GuiPreferencesAutomation - + Automatic Features Automatiske funksjoner - + Auto-select word under cursor Auto-velg ord under markør - + Apply formatting to word under cursor if no selection is made. Hvis ingen tekst er valgt, formatter ordet hvor markøren står. - + Auto-replace text as you type Erstatt mens du skriver - + Allow the editor to replace symbols as you type. La editoren erstatte symboler mens du skriver. - + Replace as You Type Erstatt mens du skriver - + Auto-replace single quotes Erstatt enkle sitattegn - - + + Try to guess which is an opening or a closing quote. Prøv å gjette om det er et åpne- eller lukketegn. - + Auto-replace double quotes Erstatt doble sitattegn - + Auto-replace dashes Erstatt bindestreker - + Double and triple hyphens become short and long dashes. To og tre bindestreker erstattes med kort og lang bindestrek. - + Auto-replace dots Erstatt tre punktum - + Three consecutive dots become ellipsis. Tre punktum på rad erstattes med ellipsis. - + Automatic Padding Automatisk mellomrom - + Insert non-breaking space before Sett inn hardt mellomrom foran - + Automatically add space before any of these symbols. Legg til mellomrom automatisk foran disse tegnene. - + Insert non-breaking space after Sett inn hardt mellomrom etter - + Automatically add space after any of these symbols. Legg til mellomrom automatisk etter disse tegnene. - + Use thin space instead Bruk tynt mellomrom istedet - + Inserts a thin space instead of a regular space. Sett inn et tynt mellomrom istedenfor et vanlig et. @@ -2387,93 +2397,93 @@ GuiPreferencesDocuments - + Text Style Tekststil - + Font family Skriftfamilie - - - + + + Applies to both document editor and viewer. Gjelder både redigerings- og visningsvindu. - + Font size Skriftstørrelse - + pt pt - + Text Flow Tekstflyt - + Maximum text width in "Normal Mode" Maks tekstbredde i "Normal-modus" - + Set to 0 to disable this feature. Sett til 0 for å deaktivere denne funksjonen. - - - - + + + + px px - + Maximum text width in "Focus Mode" Maks tekstbredde i "Fokus-modus" - + The maximum width cannot be disabled. Denne maks-bredden kan ikke deaktiveres. - + Hide document footer in "Focus Mode" Gjem dokumentets bunnlinje i "Fokus-modus" - + Hide the information bar in the document editor. Skjul informasjonslinjen i dokumenteditoren. - + Justify the text margins Juster tekstmarginer - + Minimum text margin Minimum tekstmargin - + Tab width Tabulatorens bredde - + The width of a tab key press in the editor and viewer. Hvor langt tabulatoren hopper i editor og visning. @@ -2481,117 +2491,117 @@ GuiPreferencesEditor - + Spell Checking Stavekontroll - + None Ingen - + Not installed Ikke installert - + Spell check language Språk for stavekontroll - + Available languages are determined by your system. Tilgjengelige språk hentes fra operativystemet ditt. - + Big document limit Grense for store dokumenter - + Full spell checking is disabled above this limit. Automatisk stavekontroll slås av over grensen. - + kB kB - + Word Count Telling av ord - + Word count interval Telle-intervall - + seconds sekunder - + Include project notes in status bar word count Inkluder prosjektnotater i antallet ord i statuslinjen - + Writing Guides Hjelpesymboler - + Show tabs and spaces Synlige tabulatorer og mellomrom - + Show line endings Synlige linjeender - + Scroll Behaviour Rullefelt - + Scroll past end of the document Tillat å rulle forbi slutten av dokumentet - + Set to 0 to disable this feature. Sett til 0 for å deaktivere denne funksjonen. - + lines linjer - + Typewriter style scrolling when you type Skrivemaskin-liknende rulling mens du skriver - + Keeps the cursor at a fixed vertical position. Holder markøren på samme sted vertikalt. - + Minimum position for Typewriter scrolling Minste avstand for skrivemaskin-rulling - + Percentage of the editor height from the top. I prosent fra toppen av editor-vinduet. @@ -2599,97 +2609,95 @@ GuiPreferencesGeneral - + Look and Feel Utseende - + Main GUI language Programspråk - - - - - - Requires restart. - Krever omstart. + + + + Requires restart to take effect. + Krever omstart for å tre i kraft. - + Main GUI theme Fargetema - - Main icon theme - Ikon-tema + + General colour theme and icons. + Generelt fargetema og ikoner. - + Editor theme Syntaksfremheving - + Colour theme for the editor and viewer. Fargetema for editor og visning. - + Font family Skriftfamilie - + Font size Skriftstørrelse - + pt pt - + GUI Settings Brukergrensesnitt - + Emphasise partition and chapter labels Fremhev filnavn for inndeling og kapitler - + Makes them stand out in the project tree. Får dem til å skille seg ut i prosjekttreet. - + Show full path in document header Vis full prosjektbane i dokumenthoder - + Add the parent folder names to the header. Legger til mappene foran dokumentets navn. - + Hide vertical scroll bars in main windows Skjul vertikale rullefelt i hovedvinduer - - + + Scrolling available with mouse wheel and keys only. Rulling kan bare gjøres med mus og tastatur. - + Hide horizontal scroll bars in main windows Skjul horisontale rullefelt i hovedvinduer @@ -2697,109 +2705,109 @@ GuiPreferencesProjects - + Automatic Save Automatisk lagring - + Save document interval Interval for lagring av dokument - + How often the document is automatically saved. Hvor ofte dokumentet lagres automatisk. - - + + seconds sekunder - + Save project interval Interval for lagring av prosjekt - + How often the project is automatically saved. Hvor ofte prosjektet lagres automatisk. - + Project Backup Sikkerhetskopi - + Browse Bla - + Backup storage location Filbane for sikkerhetskopi - - + + Path: {0} Filbane: {0} - + Run backup when the project is closed Lag sikkerhetskopi når prosjektet lukkes - + Can be overridden for individual projects in Project Settings. Kan overstyres fra individuelle prosjektinnstillinger. - + Ask before running backup Spør før sikkerhetskopi tas - + If off, backups will run in the background. Hvis avslått, tas sikkerhetskopi automatisk. - + Session Timer Sesjons-klokke - + Pause the session timer when not writing Sett klokka på pause når du er inaktiv - + Also pauses when the application window does not have focus. Pauses også når du ikke jobber i applikasjonens vindu. - + Editor inactive time before pausing timer Tid uten skriving før klokka settes på pause - + User activity includes typing and changing the content. Dette måler kun endringer i teksteditoren. - + minutes minutter - + Backup Directory Mappe for sikkerhetskopi @@ -2807,47 +2815,47 @@ GuiPreferencesQuotes - + Quotation Style Sitattegn - + Single quote open style Enkelt sitat, venstre side - + The symbol to use for a leading single quote. Symbol for enkelt sitattegn før et sitat. - + Single quote close style Enkelt sitat, høyre side - + The symbol to use for a trailing single quote. Symbol for enkelt sitattegn etter et sitat. - + Double quote open style Dobbelt sitat, venstre side - + The symbol to use for a leading double quote. Symbol for dobbelt sitattegn før et sitat. - + Double quote close style Dobbelt sitat, høyre side - + The symbol to use for a trailing double quote. Symbol for dobbelt sitattegn etter et sitat. @@ -2855,59 +2863,59 @@ GuiPreferencesSyntax - + Quotes & Dialogue Sitattegn & dialog - + Highlight text wrapped in quotes Fremhev tekst mellom sitattegn - - - + + + Applies to the document editor only. Gjelder bare for redigeringsvindu. - + Allow open-ended single quotes Tillat enkle sitattegn som ikke lukkes - + Highlight single-quoted line with no closing quote. Fremhev sitater som ikke er lukket i samme avsnitt. - + Allow open-ended double quotes Tillat doble sitattegn som ikke lukkes - + Highlight double-quoted line with no closing quote. Fremhev sitater som ikke er lukket i samme avsnitt. - + Text Emphasis Fremheving av tekst - + Add highlight colour to emphasised text Fremhev formattert tekst - + Text Errors Feil i tekst - + Highlight multiple or trailing spaces Fremhev flere eller etterfølgende mellomrom @@ -2933,72 +2941,72 @@ GuiProjectDetailsContents - + Table of Contents Innholdsfortegnelse - + Title Tittel - + Words Ord - + Pages Sider - + Page Side - + Progress Fremdrift - + Typical word count for a 5 by 8 inch book page with 11 pt font is 350. Typisk antall ord for en 5 x 8 tommers bokside med 11 pt tekst er 350. - + Start counting page numbers from this page. Begynn sidetall fra denne siden. - + Assume a new chapter or partition always start on an odd numbered page. Beregn at nye kapitler og partisjoner alltid starter på en høyreside. - + Words per page Ord per side - + Count pages from Tell sider fra - + Clear double pages Tøm doble sider - + END SLUTT - + Untitled Uten tittel @@ -3016,32 +3024,32 @@ Av {0} - + Words Ord - + Chapters Kapitler - + Scenes Scener - + Revisions Revisjoner - + Editing Time Redigeringstid - + Path Filbane @@ -3049,58 +3057,58 @@ GuiProjectEditMain - + Project Settings Prosjektinnstillinger - + Project name Prosjektnavn - + Should be set only once. Bør bare settes én gang. - + Novel title Bokens tittel - + Change whenever you want! Kan endres når som helst! - + Author(s) Forfatter(e) - + One name per line. Ett navn per linje. - + Default Ingen valg - + Spell check language Språk for stavekontroll - - + + Overrides main preferences. Overstyrer valg i innstillinger. - + No backup on close Slå av sikkerhetskopi @@ -3108,27 +3116,27 @@ GuiProjectEditReplace - + Text Replace List for Preview and Export Erstatningsliste for forhåndsvisning og eksport - + Keyword Kodeord - + Replace With Erstatt med - + Select item to edit Velg enhet å redigere - + Save Lagre @@ -3136,67 +3144,67 @@ GuiProjectEditStatus - + Novel File Status Levels Statusnivåer i roman-filer - + Note File Importance Levels Viktighetsnivåer i notatfiler - + Label Navn - + Usage Bruk - + Select item to edit Velg enhet å redigere - + Colour Farge - + Save Lagre - + Select Colour Velg farge - + New Item Legg til - + Cannot delete a status item that is in use. Kan ikke slette status som er i bruk. - + Not in use Ikke i bruk - + Used once Brukt ett sted - + Used by {0} items Brukt {0} steder @@ -3204,63 +3212,63 @@ GuiProjectLoad - + Open Project Åpne prosjekt - + Working Title Arbeidstittel - + Words Ord - + Last Opened Sist åpnet - + Recently Opened Projects Tidligere åpnede prosjekter - + Path Filbane - + New Ny - + Remove Fjern - + novelWriter Project File ({0}) novelWriter-prosjektfil ({0}) - + All files ({0}) Alle filer ({0}) - + Remove Entry Fjern linje - + Remove '{0}' from the recent projects list? The project files will not be deleted. Vil du fjerne {0} fra listen over tidligere åpnede prosjekter? Selve prosjektfilene blir ikke slettet. @@ -3268,27 +3276,27 @@ GuiProjectSettings - + Project Settings Prosjektinnstillinger - + Settings Innstillinger - + Status Status - + Importance Viktighet - + Auto-Replace Autoerstatt @@ -3296,52 +3304,52 @@ GuiProjectToolBar - + Project Content Prosjektets innhold - + Quick Links Hurtiglenker - + Move Up Flytt opp - + Move Down Flytt ned - + Add Item Legg til element - + Expand All Utvid alle - + Collapse All Lukk alle - + Undo Move Angre flytting - + Empty Trash Tøm papirkurven - + More Options Flere valg @@ -3349,191 +3357,201 @@ GuiProjectTree - + + Active + Aktiv + + + + Inactive + Inaktiv + + + Did not find anywhere to add the file or folder! Fant ikke noe sted å legge til filen eller mappen! - + Cannot add new files or folders to the Trash folder. Kan ikke legge til nye filer eller mapper i papirkurvmappen. - + New Note Nytt notat - + New Chapter Nytt kapittel - + New Scene Ny scene - + New Document Nytt dokument - + New Folder Ny mappe - + There is currently no Trash folder in this project. Det er for øyeblikket ingen papirkurv i dette prosjektet. - + The Trash folder is already empty. Papirkurven er allerede tom. - - + + Empty Trash Tøm papirkurven - + Permanently delete {0} file(s) from Trash? Vil du slette {0} filer i papirkurven for godt? - - + + Delete Slett - + Move '{0}' to Trash? Vil du flytte filen "{0}" til søpla? - + Root folders can only be deleted when they are empty. Rotmapper kan bare slettes når de er tomme. - + Permanently delete '{0}'? Slette filen "{0}" for godt? - + Open Document Åpne dokument - + View Document Vis dokument - + Change Label Endre navn - - Toggle Exported - Skru av/på eksportert + + Toggle Active + Aktiver/deaktiver - + Set Status to ... Sett status til ... - + Set Importance to ... Sett viktighetsnivå til ... - + Transform Transformer - - + + Convert to {0} Konverter til {0} - + Merge Child Items into Self Lim inn underelementer i dette dokumentet - + Merge Child Items into New Lim inn underelementer i nytt dokument - - Combine Documents in Folder - Kombiner dokumenter i mappen + + Merge Documents in Folder + Slå sammen dokumenter i mappen - - Split Document by Header + + Split Document by Headers Del dokumentet etter overskrift - + Expand All Utvid alle - + Collapse All Lukk alle - + Delete Permanently Slett permanent - + Move to Trash Flytt til papirkurv - + Convert Folder Konverter mappe - + Do you want to convert the folder to a {0}? This action cannot be reversed. Vil du konvertere mappen til et {0}? Denne handlingen kan ikke angres. - + No documents selected for merging. Ingen dokumenter er valgt for sammenslåing. - + Merged Sammenslått - - + + Could not write document content. Kan ikke skrive til dokumentet. - + There is nowhere to add item with name '{0}'. Fant ikke noe sted å legge til enheten med navn {0}'. @@ -3575,67 +3593,67 @@ GuiViewsBar - + Project Prosjekt - + Project Tree View Prosjektoversikt - + Novel Roman - + Novel Tree View Romanoversikt - + Outline Oversikt - + Novel Outline View Disposisjon - + Build Bygge - + Build Novel Project Bygg prosjektet - + Details Detaljer - + Project Details Prosjektdetaljer - + Stats Statistikk - + Writing Statistics Statistikk - + Settings Oppsett @@ -3643,18 +3661,18 @@ GuiWordList - - + + Project Word List Prosjektets ordliste - + Cannot add a blank word. Kan ikke legge til et tomt ord. - + The word '{0}' is already in the word list. Ordet {0} ligger allerede i ordlisten. @@ -3692,122 +3710,122 @@ Histogram - + Sum Totals Totalsummer - + Total Time: Totaltid: - + Idle Time: Inaktiv tid: - + Filtered Time: Filtrert tid: - + Novel Word Count: Ord i roman: - + Notes Word Count: Ord i notater: - + Total Word Count: Ord totalt: - + Filters Filtre - + Count novel files Tell i romanfiler - + Count note files Tell i notatfiler - + Hide zero word count Skjul null-verdier - + Hide negative word count Skjul negative verdier - + Group entries by day Samle rader per dag - + Show idle time Vis inaktiv som tid - + Word count cap for the histogram Maks antall ord for histogram - + Save As Lagre som - + JSON Data File (.json) JSON-format (.json) - + CSV Data File (.csv) CSV-format (.csv) - + JSON Data File JSON-format - + CSV Data File CSV-format - + Save Data As Lagre data som - + {0} file successfully written to: {0}-filen ble skrevet til: - + Failed to write {0} file. Kunne ikke skrive {0}-filen. - + Failed to read session log file. Kunne ikke lese loggfil med skrive-statistikk. @@ -3815,295 +3833,173 @@ NWProject - + Could not delete document file. Kunne ikke slette dokumentets fil. - - - New - Ny - - - - Note - Notat - - - - Draft - Utkast - - - - Finished - Ferdig - - - - Minor - Mindre - - - - Major - Større - - - - Main - Hoved - - - - New Project - Nytt prosjekt - - - - Title Page - Tittelside - - - - By - Av - - - - - New Chapter - Nytt kapittel - - - - - New Scene - Ny scene - - - - Summary of the chapter. - Sammendrag av kapittelet. - - - - Summary of the scene. - Sammendrag av scenen. - - - - Chapter {0} - Kapittel {0} - - - - - Scene {0} - Scene {0} - - - - Main Plot - Hoved-plott - - - - Protagonist - Protagonist - - - - Main Location - Hoved-lokasjon - - - - File not found: {0} - Fant ikke filen: {0} - - - - - Failed to parse project xml. - Kunne ikke lese prosjektets xml-data. - - - - Attempting to open backup project file instead. - Forsøker å åpne prosjektets sekundære prosjektfil istedet. - - - - + Unknown Ukjent - + Project file does not appear to be a novelWriterXML file. Prosjektfilen later ikke til å være en novelWriterXML-fil. - + Unknown or unsupported novelWriter project file format. The project cannot be opened by this version of novelWriter. The file was saved with novelWriter version {0}. Prosjektfilen har et ukjent eller ikke støttet format, og kan ikke åpnes med denne versjonen av novelWriter. Prosjektet ble lagret av novelWriter versjon {0}. - + + Failed to parse project xml. + Kunne ikke lese prosjektets xml-data. + + + File Version Filversjon - + The file format of your project is about to be updated. If you proceed, older versions of novelWriter will no longer be able to open this project. Continue? Filformatet til prosjektet ditt er i ferd med å bli oppdatert. Hvis du fortsetter, vil ikke eldre versjoner av novelWriter lenger kunne åpne dette prosjektet. Fortsette? - + Version Conflict Versjonskonflikt - + This project was saved by a newer version of novelWriter, version {0}. This is version {1}. If you continue to open the project, some attributes and settings may not be preserved, but the overall project should be fine. Continue opening the project? Dette prosjektet ble lagret av en nyere versjon av novelWriter, versjon {0}. Dette er versjon {1}. Hvis du ønsker å fortsette med å åpne prosjektet, kan noen av innstillingene bli borte, men selve prosjektet vil være i orden. Vil du fortsatt åpne prosjektet? - - There was an error updating the project. Some data may not have been preserved. - Det oppsto en feil under oppdateringen av prosjektet. Det er mulig noe data mangler. - - - + Opened Project: {0} Åpnet prosjekt: {0} - - Project path not set, cannot save project. - Prosjektet mangler filbane, og kan ikke lagres. + + There is no project open. + Det er ikke noe prosjekter åpent. - - + Failed to save project. Kunne ikke lagre prosjektet. - + Saved Project: {0} Lagret prosjekt: {0} - + Backing up project ... Lager sikkerhetskopi ... - + Cannot backup project because no valid backup path is set. Please set a valid backup location in Preferences. Kan ikke ta sikkerhetskopi av prosjektet da ingen filbane er satt. Du må først sette en gyldig filbane i Innstillinger. - - Cannot backup project because no project name is set. Please set a Working Title in Project Settings. - Kan ikke ta sikkerhetskopi av prosjektet da ingen arbeidstittel er satt. Du må først sette en arbeidstittel i Prosjektinnstillinger. + + Cannot backup project because no project name is set. Please set a Project Name in Project Settings. + Kan ikke ta sikkerhetskopi av prosjektet da prosjektnavn ikke er satt. Du må først sette et prosjektnavn i Prosjektinnstillinger. - + Could not create backup folder. Kunne ikke lage mappe til sikkerhetskopi. - - Cannot backup project because the backup path is within the project folder to be backed up. Please choose a different backup path in Preferences. - Kan ikke ta sikkerhetskopi av prosjektet da filbanen er inne i prosjektmappen. Du må sette en ny filbane i Innstillinger. - - - + Backup from {0} Sikkerhetskopi fra {0} - + Backup archive file written to: {0} Sikkerhetskopi skrevet til: {0} - + Could not write backup archive. Kunne ikke lage sikkerhetskopi. - + Project backed up to '{0}' Sikkerhetskopi skrevet til '{0}' - - - Failed to create a new example project. - Kunne ikke lage nytt eksempel-prosjekt. + + + New + Ny - - Failed to create a new example project. Could not find the necessary files. They seem to be missing from this installation. - Kunne ikke lage nytt eksempel-prosjekt. Kunne ikke finne de nødvendige filene. De ser ut til å mangle i denne installasjonen. + + Note + Notat - - Could not create new project folder. - Kunne ikke lage ny prosjekt-mappe. + + Draft + Utkast - - New project folder is not empty. Each project requires a dedicated project folder. - Ny prosjektmappe er ikke tom. Hvert prosjekt trenger sin egen mappe. + + Finished + Ferdig - - You must set a valid backup path in Preferences to use the automatic project backup feature. - Du må sette en gyldig filbane i innstillingene for å kunne bruke automatisk sikkerhetskopi. + + Minor + Mindre - - You must set a valid project name in Project Settings to use the automatic project backup feature. - Du må sette en gyldig arbeidstittel i prosjektinnstillingene for å kunne bruke automatisk sikkerhetskopi. + + Major + Større - + + Main + Hoved + + + and og - - Could not create folder. - Kunne ikke opprette mappe. - - - + Found {0} orphaned file(s) in project folder. Fant {0} tapte filer i prosjektmappen. - + Recovered Gjennopprettet - + [{0}] {1} [{0}] {1} - + Recovered File {0} Gjennopprettet fil {0} - + One or more orphaned files could not be added back into the project. Make sure at least a Novel root folder exists. Én eller flere gjennopprettede filer kunne ikke bli lagt til i posjektet. Pass på at "Roman"-mappen i det minste eksisterer. @@ -4111,42 +4007,42 @@ ProjWizardCustomPage - + Custom Project Options Flere alternativer - + Select which additional elements to populate the project with. You can skip making chapters and add only scenes by setting the number of chapters to 0. Velg hvilke ekstra elementer å fylle prosjektet med. Du kan hoppe over å lage kapitler og bare legge til scener ved å sette antallet kapitler til 0. - + Add a folder for plot notes Legg til en mappe for plott-notater - + Add a folder for character notes Legg til en mappe for karakterer - + Add a folder for location notes Legg til en mappe for lokasjoner - + Add example notes to the above Lag eksempelfiler til ovennevnte - + Add chapters to the novel folder Legg til kapitler i romanmappen - + Add scenes to each chapter Legg til scener i hvert kapittel @@ -4154,82 +4050,82 @@ ProjWizardFinalPage - + Summary Sammendrag - + Project Name: {0} Prosjektnavn: {0} - + Project Path: {0} Filbane: {0} - + Fill the project with a minimal set of items Fyll prosjektet med et minimalt innhold - + Fill the project with example files Fyll prosjektet med eksempelfiler - + Add a folder for plot notes Legg til en mappe for plott-notater - + Add a folder for character notes Legg til en mappe for karakterer - + Add a folder for location notes Legg til en mappe for lokasjoner - + Add example notes to the above Lag eksempelfiler til ovennevnte - + Add {0} chapters to the novel folder Legg til {0} kapitler i romanmappen - + Add {0} scenes to each chapter Legg til {0} scener i hvert kapittel - + Add {0} scenes Legg til {0} scener - + You have selected the following: Du har valgt følgende: - + Press '{0}' to create the new project. Trykk '{0}' for å opprette det nye prosjektet. - + Done Ferdig - + Finish Fullfør @@ -4237,7 +4133,7 @@ ProjWizardFolderPage - + Select Project Folder Velg prosjektmappe @@ -4319,31 +4215,105 @@ ProjWizardPopulatePage - + Populate Project Fyll prosjektet - + Choose how to pre-fill the project. Either with a minimal set of starter items, an example project explaining and showing many of the features, or show further custom options on the next page. Velg hvordan du vil forhåndsfylle prosjektet. Du kan velge mellom et minimalt sett med mapper og filer, et eksempel-prosjekt som forklarer og viser hvordan du bruker programmet, eller se flere valg på neste side. - + Fill the project with a minimal set of items Fyll prosjektet med et minimalt innhold - + Fill the project with example files Fyll prosjektet med eksempelfiler - + Show detailed options for filling the project Vis detaljerte valg for å fylle prosjektet + + ProjectBuilder + + + New Project + Nytt prosjekt + + + + New Chapter + Nytt kapittel + + + + New Scene + Ny scene + + + + Title Page + Tittelside + + + + By + Av + + + + Summary of the chapter. + Sammendrag av kapittelet. + + + + Summary of the scene. + Sammendrag av scenen. + + + + Chapter {0} + Kapittel {0} + + + + + Scene {0} + Scene {0} + + + + Main Plot + Hovedplott + + + + Protagonist + Protagonist + + + + Main Location + Hovedlokasjon + + + + Failed to create a new example project. + Kunne ikke lage nytt eksempel-prosjekt. + + + + Failed to create a new example project. Could not find the necessary files. They seem to be missing from this installation. + Kunne ikke lage nytt eksempel-prosjekt. Kunne ikke finne de nødvendige filene. De ser ut til å mangle i denne installasjonen. + + QDialogButtonBox @@ -4535,17 +4505,17 @@ Tokenizer - + Synopsis Sammendrag - + Document '{0}' is too big ({1} MB). Skipping. Dokumentet '{0}' er for stort ({1} MB). Hopper over. - + ERROR FEIL diff --git a/novelwriter/__init__.py b/novelwriter/__init__.py index deff10a4..e2e15757 100644 --- a/novelwriter/__init__.py +++ b/novelwriter/__init__.py @@ -59,9 +59,9 @@ __license__ = "GPLv3" __author__ = "Veronica Berglyd Olsen" __maintainer__ = "Veronica Berglyd Olsen" __email__ = "code@vkbo.net" -__version__ = "2.0-rc1" -__hexversion__ = "0x020000c1" -__date__ = "2022-10-17" +__version__ = "2.0-rc2" +__hexversion__ = "0x020000c2" +__date__ = "2022-11-13" __status__ = "Stable" __domain__ = "novelwriter.io" __url__ = "https://novelwriter.io" diff --git a/novelwriter/assets/text/release_notes.htm b/novelwriter/assets/text/release_notes.htm index b24ac288..5a529b14 100644 --- a/novelwriter/assets/text/release_notes.htm +++ b/novelwriter/assets/text/release_notes.htm @@ -2,8 +2,8 @@ -

Release Notes for 2.0 RC 1

-

Released on 17 October 2022

+

Release Notes for 2.0 RC 2

+

Released on 13 November 2022

This is a release candidate of the next release version, and is intended for testing purposes. Please be careful when using this version on live writing projects, and make sure you take frequent diff --git a/novelwriter/core/index.py b/novelwriter/core/index.py index 249fd19d..bdd49925 100644 --- a/novelwriter/core/index.py +++ b/novelwriter/core/index.py @@ -58,23 +58,23 @@ class NWIndex: The index data is cached in a JSON file between writing sessions. """ - def __init__(self, theProject): + def __init__(self, project): - self.theProject = theProject + self._project = project # Storage and State self._tagsIndex = TagsIndex() - self._itemIndex = ItemIndex(theProject) + self._itemIndex = ItemIndex(project) self._indexBroken = False # TimeStamps - self._indexChange = 0 + self._indexChange = 0.0 self._rootChange = {} return def __repr__(self): - return f"" + return f"" ## # Properties @@ -93,10 +93,22 @@ class NWIndex: """ self._tagsIndex.clear() self._itemIndex.clear() - self._indexChange = 0 + self._indexChange = 0.0 self._rootChange = {} return + def rebuildIndex(self): + """Rebuild the entire index from scratch. + """ + self.clearIndex() + for nwItem in self._project.tree: + if nwItem is not None and nwItem.isFileType(): + tHandle = nwItem.itemHandle + theDoc = self._project.storage.getDocument(tHandle) + self.scanText(tHandle, theDoc.readDocument() or "") + self._indexBroken = False + return + def deleteHandle(self, tHandle): """Delete all entries of a given document handle. """ @@ -113,11 +125,11 @@ class NWIndex: moved from the archive or trash folders back into the active project. """ - if not self.theProject.tree.checkType(tHandle, nwItemType.FILE): + if not self._project.tree.checkType(tHandle, nwItemType.FILE): return False logger.debug("Re-indexing item '%s'", tHandle) - theDoc = self.theProject.storage.getDocument(tHandle) + theDoc = self._project.storage.getDocument(tHandle) self.scanText(tHandle, theDoc.readDocument() or "") return True @@ -125,13 +137,13 @@ class NWIndex: def indexChangedSince(self, checkTime): """Check if the index has changed since a given time. """ - return self._indexChange > checkTime + return self._indexChange > float(checkTime) def rootChangedSince(self, rootHandle, checkTime): """Check if the index has changed since a given time for a given root item. """ - return self._rootChange.get(rootHandle, self._indexChange) > checkTime + return self._rootChange.get(rootHandle, self._indexChange) > float(checkTime) ## # Load and Save Index to/from File @@ -140,7 +152,7 @@ class NWIndex: def loadIndex(self): """Load index from last session from the project meta folder. """ - indexFile = self.theProject.storage.getMetaFile(nwFiles.INDEX_FILE) + indexFile = self._project.storage.getMetaFile(nwFiles.INDEX_FILE) if not isinstance(indexFile, Path): return False @@ -171,12 +183,12 @@ class NWIndex: logger.debug("Checking index") # Check that all files are indexed - for fHandle in self.theProject.projFiles: + for fHandle in self._project.projFiles: if fHandle not in self._itemIndex: logger.warning("Item '%s' is not in the index", fHandle) self.reIndexHandle(fHandle) - self._indexChange = round(time()) + self._indexChange = time() logger.debug("Index loaded in %.3f ms", (time() - tStart)*1000) @@ -186,7 +198,7 @@ class NWIndex: """Save the current index as a json file in the project meta data folder. """ - indexFile = self.theProject.storage.getMetaFile(nwFiles.INDEX_FILE) + indexFile = self._project.storage.getMetaFile(nwFiles.INDEX_FILE) if not isinstance(indexFile, Path): return False @@ -222,7 +234,7 @@ class NWIndex: files before we save them, in which case we already have the text. """ - theItem = self.theProject.tree[tHandle] + theItem = self._project.tree[tHandle] if theItem is None: logger.info("Not indexing unknown item '%s'", tHandle) return False @@ -256,7 +268,7 @@ class NWIndex: self._scanActive(tHandle, theItem, theText, itemTags) # Update timestamps for index changes - nowTime = round(time()) + nowTime = time() self._indexChange = nowTime self._rootChange[theItem.itemRoot] = nowTime @@ -737,8 +749,8 @@ class ItemIndex: IndexHeading object for each header of the text. """ - def __init__(self, theProject): - self.theProject = theProject + def __init__(self, project): + self._project = project self._items = {} return @@ -802,7 +814,7 @@ class ItemIndex: """Iterate over all items and headers in the novel structure for a given root handle, or for all if root handle is None. """ - for tItem in self.theProject.tree: + for tItem in self._project.tree: if tItem is None: continue if tItem.isNoteLayout(): @@ -885,7 +897,7 @@ class ItemIndex: if not isHandle(tHandle): raise ValueError("itemIndex keys must be handles") - nwItem = self.theProject.tree[tHandle] + nwItem = self._project.tree[tHandle] if nwItem is not None: tItem = IndexItem(tHandle, nwItem) tItem.unpackData(tData) diff --git a/novelwriter/core/project.py b/novelwriter/core/project.py index 7f01f632..bb26ff5e 100644 --- a/novelwriter/core/project.py +++ b/novelwriter/core/project.py @@ -369,8 +369,11 @@ class NWProject(QObject): self._scanProjectFolder() self._index.loadIndex() - self.updateWordCounts() + if xmlReader.state == XMLReadState.WAS_LEGACY: + # Often, the index needs to be rebuilt when updating format + self._index.rebuildIndex() + self.updateWordCounts() self._projOpened = time() self._projAltered = False @@ -482,8 +485,8 @@ class NWProject(QObject): return False archName = baseDir / self.tr( - "Backup from {0}.zip" - ).format(formatTimeStamp(time(), fileSafe=True)) + "Backup from {0}" + ).format(formatTimeStamp(time(), fileSafe=True) + ".zip") if self._storage.zipIt(archName, compression=2): if doNotify: self.mainGui.makeAlert(self.tr( diff --git a/novelwriter/core/tree.py b/novelwriter/core/tree.py index 9d499aaf..1f9960de 100644 --- a/novelwriter/core/tree.py +++ b/novelwriter/core/tree.py @@ -331,20 +331,15 @@ class NWTree: def setOrder(self, newOrder): """Reorders the tree based on a list of items. """ - tmpOrder = [] - - # Add all known elements to a new temp list - for tHandle in newOrder: - if tHandle in self._projTree: - tmpOrder.append(tHandle) - else: - logger.error("Handle '%s' in new tree order is not in project tree", tHandle) - - # Do a reverse lookup to check for items that will be lost - # This is mainly for debugging purposes - for tHandle in self._treeOrder: - if tHandle not in tmpOrder: - logger.warning("Handle '%s' in old tree order is not in new tree order", tHandle) + tmpOrder = [tHandle for tHandle in newOrder if tHandle in self._projTree] + if not (len(tmpOrder) == len(newOrder) == len(self._treeOrder)): + # Something is wrong, so let's debug it + for tHandle in newOrder: + if tHandle not in self._projTree: + logger.error("Handle '%s' in new tree order is not in old order", tHandle) + for tHandle in self._treeOrder: + if tHandle not in tmpOrder: + logger.warning("Handle '%s' in old tree order is not in new order", tHandle) # Save the temp list self._treeOrder = tmpOrder diff --git a/novelwriter/guimain.py b/novelwriter/guimain.py index 20f7ce2d..56ba564f 100644 --- a/novelwriter/guimain.py +++ b/novelwriter/guimain.py @@ -833,17 +833,8 @@ class GuiMain(QMainWindow): tStart = time() self.projView.saveProjectTasks() - self.theProject.index.clearIndex() - - for tItem in self.theProject.tree: - if tItem is None: # pragma: no cover - continue # This is a bug trap - - logger.debug("Indexing '%s'", tItem.itemName) - if self.theProject.index.reIndexHandle(tItem.itemHandle): - # Update Word Counts - self.projView.propagateCount(tItem.itemHandle, tItem.wordCount, countChildren=True) - self.projView.setTreeItemValues(tItem.itemHandle) + self.theProject.index.rebuildIndex() + self.projView.populateTree() tEnd = time() self.setStatus( diff --git a/sample/nwProject.nwx b/sample/nwProject.nwx index de890f9b..f3f151bc 100644 --- a/sample/nwProject.nwx +++ b/sample/nwProject.nwx @@ -1,6 +1,6 @@ - - + + Sample Project Sample Project Jane Smith diff --git a/tests/test_core/test_core_index.py b/tests/test_core/test_core_index.py index 82bf53c8..6d85dfb0 100644 --- a/tests/test_core/test_core_index.py +++ b/tests/test_core/test_core_index.py @@ -90,7 +90,7 @@ def testCoreIndex_LoadSave(monkeypatch, prjLipsum, mockGUI, tstPaths): assert theIndex._tagsIndex._tags == {} assert theIndex._itemIndex._items == {} - # No folder for sloading + # No folder for loading with monkeypatch.context() as mp: mp.setattr("novelwriter.core.storage.NWStorage.getMetaFile", lambda *a: None) assert theIndex.loadIndex() is False @@ -108,6 +108,13 @@ def testCoreIndex_LoadSave(monkeypatch, prjLipsum, mockGUI, tstPaths): assert str(theIndex._tagsIndex.packData()) == tagIndex assert str(theIndex._itemIndex.packData()) == itemsIndex + # Rebuild index + theIndex.clearIndex() + theIndex.rebuildIndex() + + assert str(theIndex._tagsIndex.packData()) == tagIndex + assert str(theIndex._itemIndex.packData()) == itemsIndex + # Check File copyfile(projFile, testFile) assert cmpFiles(testFile, compFile) diff --git a/tests/test_core/test_core_project.py b/tests/test_core/test_core_project.py index d2931fd8..1f3dc73e 100644 --- a/tests/test_core/test_core_project.py +++ b/tests/test_core/test_core_project.py @@ -230,7 +230,7 @@ def testCoreProject_Open(monkeypatch, caplog, mockGUI, fncPath, mockRnd): assert "The file format of your project is about to be" in mockGUI.lastQuestion[1] mockGUI.askResponse = True - # Won't convert legacy file + # Won't open project from newer version with monkeypatch.context() as mp: mp.setattr(ProjectXMLReader, "hexVersion", property(lambda *a: 0x99999999)) mockGUI.askResponse = False @@ -245,6 +245,18 @@ def testCoreProject_Open(monkeypatch, caplog, mockGUI, fncPath, mockRnd): assert theProject.closeProject() + # Trigger an index rebuild + with monkeypatch.context() as mp: + mp.setattr(ProjectXMLReader, "state", property(lambda *a: XMLReadState.WAS_LEGACY)) + mp.setattr("novelwriter.core.index.NWIndex.loadIndex", lambda *a: True) + mockGUI.askResponse = True + theProject.index._indexBroken = True + assert theProject.openProject(fncPath) is True + assert "The file format of your project is about to be" in mockGUI.lastQuestion[1] + assert theProject.index._indexBroken is False + + assert theProject.closeProject() + # END Test testCoreProject_Open diff --git a/tests/test_core/test_core_projectxml.py b/tests/test_core/test_core_projectxml.py index b9dce90c..65fd23b9 100644 --- a/tests/test_core/test_core_projectxml.py +++ b/tests/test_core/test_core_projectxml.py @@ -38,6 +38,13 @@ class MockProject: pass +@pytest.fixture(scope="function", autouse=True) +def mockVersion(monkeypatch): + monkeypatch.setattr("novelwriter.__version__", "2.0-rc1") + monkeypatch.setattr("novelwriter.__hexversion__", "0x020000c1") + return + + @pytest.mark.core def testCoreProjectXML_ReadCurrent(monkeypatch, tstPaths, fncPath): """Test reading the current XML file format. diff --git a/tests/test_core/test_core_tree.py b/tests/test_core/test_core_tree.py index 9c3d0961..731e11aa 100644 --- a/tests/test_core/test_core_tree.py +++ b/tests/test_core/test_core_tree.py @@ -24,6 +24,7 @@ import random from pathlib import Path +from mock import causeOSError from tools import readFile from novelwriter.enum import nwItemClass, nwItemType, nwItemLayout @@ -230,6 +231,36 @@ def testCoreTree_BuildTree(mockGUI, mockItems): # END Test testCoreTree_BuildTree +@pytest.mark.core +def testCoreTree_PackUnpack(mockGUI, mockItems): + """Test packing and unpacking data. + """ + theProject = NWProject(mockGUI) + theTree = NWTree(theProject) + + aHandles = [] + for tHandle, pHandle, nwItem in mockItems: + aHandles.append(tHandle) + theTree.append(tHandle, pHandle, nwItem) + theTree.updateItemData(tHandle) + + assert len(theTree) == len(mockItems) + + # Pack + tree = theTree.pack() + for i, (tHandle, pHandle, nwItem) in enumerate(mockItems): + assert tree[i]["itemAttr"]["handle"] == tHandle + + # Unpack + theTree.clear() + assert len(theTree) == 0 + assert theTree.handles() == [] + assert theTree.unpack(tree) is True + assert theTree.handles() == aHandles + +# END Test testCoreTree_PackUnpack + + @pytest.mark.core def testCoreTree_Methods(mockGUI, mockItems): """Test various class methods. @@ -272,6 +303,13 @@ def testCoreTree_Methods(mockGUI, mockItems): assert theTree.findRoot(nwItemClass.NOVEL) == "a000000000001" assert theTree.findRoot(nwItemClass.CHARACTER) == "a000000000004" + # Iter roots + roots = list(theTree.iterRoots(None)) + assert roots[0][0] == "a000000000001" + assert roots[1][0] == "a000000000002" + assert roots[2][0] == "a000000000003" + assert roots[3][0] == "a000000000004" + # Add a fake item to root and check that it can handle it theTree._treeRoots["0000000000000"] = NWItem(theProject) assert theTree.findRoot(nwItemClass.WORLD) is None @@ -363,7 +401,7 @@ def testCoreTree_Stats(mockGUI, mockItems): @pytest.mark.core -def testCoreTree_Reorder(mockGUI, mockItems): +def testCoreTree_Reorder(caplog, mockGUI, mockItems): """Test changing tree order. """ theProject = NWProject(mockGUI) @@ -384,12 +422,16 @@ def testCoreTree_Reorder(mockGUI, mockItems): theTree.setOrder(bHandle) assert theTree.handles() == bHandle + caplog.clear() theTree.setOrder(bHandle + ["stuff"]) assert theTree.handles() == bHandle + assert "Handle 'stuff' in new tree order is not in old order" in caplog.text + caplog.clear() theTree._treeOrder.append("stuff") theTree.setOrder(bHandle) assert theTree.handles() == bHandle + assert "Handle 'stuff' in old tree order is not in new order" in caplog.text # END Test testCoreTree_Reorder @@ -421,6 +463,11 @@ def testCoreTree_ToCFile(monkeypatch, mockGUI, mockItems, tmpPath): theProject._storage._runtimePath = None assert theTree.writeToCFile() is False + theProject._storage._runtimePath = tmpPath + with monkeypatch.context() as mp: + mp.setattr("builtins.open", causeOSError) + assert theTree.writeToCFile() is False + theProject._storage._runtimePath = tmpPath assert theTree.writeToCFile() is True