From 5a8e8b2221b506fef01911e2d92eb317b2ca05ce Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Thu, 10 Nov 2022 17:58:13 +0100
Subject: [PATCH 1/9] Release 2.0 RC 2
---
CHANGELOG.md | 85 +++++++++++++++++++++++
novelwriter/__init__.py | 6 +-
novelwriter/assets/text/release_notes.htm | 4 +-
sample/nwProject.nwx | 4 +-
4 files changed, 92 insertions(+), 7 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8f15afd2..4b2fe932 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,90 @@
# 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. Issue #1189.
+ PR #1221.
+* 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/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/sample/nwProject.nwx b/sample/nwProject.nwx
index de890f9b..f3f151bc 100644
--- a/sample/nwProject.nwx
+++ b/sample/nwProject.nwx
@@ -1,6 +1,6 @@
-
-
+
+ Sample ProjectSample ProjectJane Smith
From b03b723d2509e2368f5207a9f23825f219045f1d Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Thu, 10 Nov 2022 18:01:13 +0100
Subject: [PATCH 2/9] Update i18n file
---
i18n/nw_base.ts | 1876 +++++++++++++++++++++++------------------------
1 file changed, 923 insertions(+), 953 deletions(-)
diff --git a/i18n/nw_base.ts b/i18n/nw_base.ts
index 58a4c7e2..2e7eff51 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}.zip
-
- 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
From dbfda1e6805cd99591762be4dfeded7a703c91ae Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Thu, 10 Nov 2022 18:17:51 +0100
Subject: [PATCH 3/9] Update Norwegian and US English
---
i18n/nw_base.ts | 2 +-
i18n/nw_en_US.ts | 1900 +++++++++++++++++------------------
i18n/nw_nb_NO.ts | 1898 +++++++++++++++++-----------------
novelwriter/core/project.py | 4 +-
4 files changed, 1872 insertions(+), 1932 deletions(-)
diff --git a/i18n/nw_base.ts b/i18n/nw_base.ts
index 2e7eff51..d4241a2b 100644
--- a/i18n/nw_base.ts
+++ b/i18n/nw_base.ts
@@ -3919,7 +3919,7 @@
- Backup from {0}.zip
+ Backup from {0}
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 futurein the future
-
+ just nowjust now
-
+ a minute agoa minute ago
-
+ {0} minutes ago{0} minutes ago
-
+ an hour agoan hour ago
-
+ {0} hours ago{0} hours ago
-
+ a day agoa day ago
-
+ {0} days ago{0} days ago
-
+ a week agoa week ago
-
+ {0} weeks ago{0} weeks ago
-
+ a month agoa month ago
-
+ {0} months ago{0} months ago
-
+ a year agoa year ago
-
+ {0} years ago{0} years ago
@@ -77,264 +77,264 @@
Constant
-
-
-
+
+
+ NoneNone
-
+ NovelNovel
-
-
+
+ PlotPlot
-
-
+
+ CharactersCharacters
-
-
+
+ LocationsLocations
-
-
+
+ TimelineTimeline
-
-
+
+ ObjectsObjects
-
-
+
+ EntitiesEntities
-
-
+
+ CustomCustom
-
+ ArchiveArchive
-
+ TrashTrash
-
-
+
+ Novel DocumentNovel Document
-
-
+
+ Project NoteProject Note
-
+ Root FolderRoot Folder
-
+ FolderFolder
-
+ Novel Title PageNovel Title Page
-
+ Novel ChapterNovel Chapter
-
+ Novel SceneNovel Scene
-
+ Novel SectionNovel Section
-
+ TagTag
-
+ Point of ViewPoint of View
-
-
+
+ FocusFocus
-
+ TitleTitle
-
+ LevelLevel
-
+ DocumentDocument
-
+ LineLine
-
+ CharsChars
-
+ WordsWords
-
+ ParsPars
-
+ POVPOV
-
+ SynopsisSynopsis
-
+ Straight single quotation markStraight single quotation mark
-
+ Straight double quotation markStraight double quotation mark
-
+ Left single quotation markLeft single quotation mark
-
+ Right single quotation markRight single quotation mark
-
+ Single low-9 quotation markSingle low-9 quotation mark
-
+ Single high-reversed-9 quotation markSingle high-reversed-9 quotation mark
-
+ Left double quotation markLeft double quotation mark
-
+ Right double quotation markRight double quotation mark
-
+ Double low-9 quotation markDouble low-9 quotation mark
-
+ Double high-reversed-9 quotation markDouble high-reversed-9 quotation mark
-
+ Double low-reversed-9 quotation markDouble low-reversed-9 quotation mark
-
+ Single left-pointing angle quotation markSingle left-pointing angle quotation mark
-
+ Single right-pointing angle quotation markSingle right-pointing angle quotation mark
-
+ Double left-pointing angle quotation markDouble left-pointing angle quotation mark
-
+ Double right-pointing angle quotation markDouble right-pointing angle quotation mark
-
+ Left corner bracketLeft corner bracket
-
+ Right corner bracketRight corner bracket
-
+ Left white corner bracketLeft white corner bracket
-
+ Right white corner bracketRight white corner bracket
@@ -342,105 +342,105 @@
GuiAbout
-
-
+
+ About novelWriterAbout novelWriter
-
+ AboutAbout
-
+ ReleaseRelease
-
-
-
-
-
- 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
+
+
+
+
+ CreditCredit
-
+ 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 AsSave 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.
-
+ UnknownUnknown
-
+ Build Time:Build Time:
@@ -809,32 +809,32 @@
GuiDocEditFooter
-
+ StatusStatus
-
+ Line: {0} ({1})Line: {0} ({1})
-
+ Words: {0} ({1})Words: {0} ({1})
-
+ Document size is {0} bytesDocument size is {0} bytes
-
+ Words: {0} selectedWords: {0} selected
-
+ Character count: {0}Character count: {0}
@@ -842,22 +842,22 @@
GuiDocEditHeader
-
+ Edit document labelEdit document label
-
+ Search documentSearch document
-
+ Toggle Focus ModeToggle Focus Mode
-
+ Close the documentClose the document
@@ -865,58 +865,58 @@
GuiDocEditSearch
-
-
+
+ SearchSearch
-
+ ReplaceReplace
-
+ Case SensitiveCase Sensitive
-
+ Whole Words OnlyWhole Words Only
-
+ RegEx ModeRegEx Mode
-
+ Loop SearchLoop Search
-
+ Search Next FileSearch Next File
-
+ Preserve CasePreserve Case
-
+ Close SearchClose Search
-
+ Find in current documentFind in current document
-
+ Find and replace in current documentFind 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 DiskFile 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 completeSpell check complete
-
+ File LocationFile 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 TagFollow Tag
-
+ CutCut
-
+ CopyCopy
-
+ PastePaste
-
+ Select AllSelect All
-
+ Select WordSelect Word
-
+ Select ParagraphSelect Paragraph
-
+ Spelling Suggestion(s)Spelling Suggestion(s)
-
+ No SuggestionsNo Suggestions
-
+ Add Word to DictionaryAdd 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 DocumentSplit Document
-
+ Document HeadersDocument 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 folderSplit into a new folder
-
+ Create document hierarchyCreate document hierarchy
+
+
+ Move split document to Trash
+ Move split document to Trash
+ GuiDocViewFooter
-
+ Show/hide the references panelShow/hide the references panel
-
+ Activate to freeze the content of the references panel when changing documentActivate to freeze the content of the references panel when changing document
-
+ Show commentsShow comments
-
+ Show synopsis commentsShow synopsis comments
-
+ ReferencesReferences
-
+ StickySticky
-
+ CommentsComments
-
+ SynopsisSynopsis
@@ -1156,22 +1161,22 @@
GuiDocViewHeader
-
+ Go backwardGo backward
-
+ Go forwardGo forward
-
+ Reload the documentReload the document
-
+ Close the documentClose the document
@@ -1179,27 +1184,27 @@
GuiDocViewer
-
+ An error occurred while generating the preview.An error occurred while generating the preview.
-
+ CopyCopy
-
+ Select AllSelect All
-
+ Select WordSelect Word
-
+ Select ParagraphSelect Paragraph
@@ -1220,37 +1225,37 @@
GuiItemDetails
-
+ LabelLabel
-
+ StatusStatus
-
+ ClassClass
-
+ UsageUsage
-
+ CharactersCharacters
-
+ WordsWords
-
+ ParagraphsParagraphs
@@ -1258,27 +1263,27 @@
GuiLipsum
-
+ Insert Placeholder TextInsert Placeholder Text
-
+ Insert Lorem Ipsum TextInsert Lorem Ipsum Text
-
+ Number of paragraphsNumber of paragraphs
-
+ Randomise orderRandomize order
-
+ InsertInsert
@@ -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 ProjectClose Project
-
+ Close the current project?Close the current project?
-
-
+
+ Changes are saved automatically.Changes are saved automatically.
-
+ Backup ProjectBackup 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 LockedProject 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 FileImport 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 DocumentImport 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} msIndexing 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.
+
+
+ InformationInformation
-
+ WarningWarning
-
+ ErrorError
-
+ This is a bug!This is a bug!
-
+ Internal ErrorInternal Error
-
+ ExitExit
-
+ 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 ProjectNew Project
-
+ Open ProjectOpen Project
-
+ Save ProjectSave Project
-
+ Close ProjectClose Project
-
+ Project SettingsProject Settings
-
+ Project DetailsProject Details
-
+ Rename ItemRename Item
-
+ Delete ItemDelete Item
-
+ Empty TrashEmpty Trash
-
+ ExitExit
-
+ &Document&Document
-
+ Open DocumentOpen Document
-
+ Save DocumentSave Document
-
+ Close DocumentClose Document
-
+ View DocumentView Document
-
+ Close Document ViewClose Document View
-
+ Show File DetailsShow File Details
-
+ Import Text from FileImport Text from File
-
+ &Edit&Edit
-
+ UndoUndo
-
+ RedoRedo
-
+ CutCut
-
+ CopyCopy
-
+ PastePaste
-
+ Select AllSelect All
-
+ Select ParagraphSelect Paragraph
-
+ &View&View
-
+ Go to Project TreeGo to Project Tree
-
+ Go to Document EditorGo to Document Editor
-
+ Go to Document ViewerGo to Document Viewer
-
+ Go to OutlineGo to Outline
-
+ Navigate BackwardNavigate Backward
-
+ Navigate ForwardNavigate Forward
-
+ Focus ModeFocus Mode
-
+ Full Screen ModeFull Screen Mode
-
+ &Insert&Insert
-
+ DashesDashes
-
+ Short DashShort Dash
-
+ Long DashLong Dash
-
+ Horizontal BarHorizontal Bar
-
+ Figure DashFigure Dash
-
+ Quote MarksQuote Marks
-
+ Left Single QuoteLeft Single Quote
-
+ Right Single QuoteRight Single Quote
-
+ Left Double QuoteLeft Double Quote
-
+ Right Double QuoteRight Double Quote
-
+ Alternative ApostropheAlternative Apostrophe
-
+ General PunctuationGeneral Punctuation
-
+ EllipsisEllipsis
-
+ PrimePrime
-
+ Double PrimeDouble Prime
-
+ White SpacesWhite Spaces
-
+ Non-Breaking SpaceNon-Breaking Space
-
+ Thin SpaceThin Space
-
+ Thin Non-Breaking SpaceThin Non-Breaking Space
-
+ Other SymbolsOther Symbols
-
+ List BulletList Bullet
-
+ Hyphen BulletHyphen Bullet
-
+ Flower MarkFlower Mark
-
+ Per MillePer Mille
-
+ Degree SymbolDegree Symbol
-
+ Minus SignMinus Sign
-
+ Times SignTimes Sign
-
+ Division SignDivision Sign
-
+ Tags and ReferencesTags and References
-
+
+ Special Comments
+ Special Comments
+
+
+
+ Synopsis Comment
+ Synopsis Comment
+
+
+ Page Break and SpacePage Break and Space
-
+ Page BreakPage Break
-
+ Vertical Space (Single)Vertical Space (Single)
-
+ Vertical Space (Multi)Vertical Space (Multi)
-
+ Placeholder TextPlaceholder Text
-
+ &Format&Format
-
+ EmphasisEmphasis
-
+ Strong EmphasisStrong Emphasis
-
+ StrikethroughStrikethrough
-
+ Wrap Double QuotesWrap Double Quotes
-
+ Wrap Single QuotesWrap 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 TitleNovel Title
-
+ Unnumbered ChapterUnnumbered Chapter
-
+ Align LeftAlign Left
-
+ Align CentreAlign Center
-
+ Align RightAlign Right
-
+ Indent LeftIndent Left
-
+ Indent RightIndent Right
-
+ Toggle CommentToggle Comment
-
+ Remove Block FormatRemove Block Format
-
+ Convert Single QuotesConvert Single Quotes
-
+ Convert Double QuotesConvert Double Quotes
-
+ Remove In-Paragraph BreaksRemove In-Paragraph Breaks
-
+ &Search&Search
-
+ FindFind
-
+ ReplaceReplace
-
+ Find NextFind Next
-
+ Find PreviousFind Previous
-
+ Replace NextReplace Next
-
+ &Tools&Tools
-
+ Check SpellingCheck Spelling
-
+ Re-Run Spell CheckRe-Run Spell Check
-
+ Project Word ListProject Word List
-
+ Rebuild IndexRebuild Index
-
+ Backup ProjectBackup Project
-
+ Build Novel ProjectBuild Novel Project
-
+ Writing StatisticsWriting Statistics
-
+ PreferencesPreferences
-
+ &Help&Help
-
+ About novelWriterAbout novelWriter
-
+ About Qt5About 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 WebsiteThe novelWriter Website
-
+ Check for New ReleaseCheck for New Release
@@ -2048,38 +2063,38 @@
GuiMainStatus
-
+ NoneNone
-
+ EditorEditor
-
+ ProjectProject
-
+ Session TimeSession 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 OutlineNovel Outline
-
+ RefreshRefresh
-
+ Novel RootNovel Root
-
+ Last ColumnLast Column
-
+ HiddenHidden
-
+ Point of View CharacterPoint of View Character
-
+ Focus CharacterFocus Character
-
+ Novel PlotNovel Plot
-
+ More OptionsMore Options
@@ -2135,7 +2150,7 @@
GuiNovelTree
-
+ No meta dataNo meta data
@@ -2143,65 +2158,65 @@
GuiOutlineDetails
-
-
-
-
+
+
+
+ TitleTitle
-
+ ChapterChapter
-
+ SceneScene
-
+ SectionSection
-
+ DocumentDocument
-
+ StatusStatus
-
+ CharactersCharacters
-
+ WordsWords
-
+ ParagraphsParagraphs
-
+ SynopsisSynopsis
-
+ Title DetailsTitle Details
-
+ Reference TagsReference Tags
@@ -2209,7 +2224,7 @@
GuiOutlineHeaderMenu
-
+ Select ColumnsSelect Columns
@@ -2217,17 +2232,17 @@
GuiOutlineToolBar
-
+ Outline ofOutline of
-
+ RefreshRefresh
-
+ All Novel FoldersAll Novel Folders
@@ -2235,151 +2250,146 @@
GuiPreferences
-
+ PreferencesPreferences
-
+ GeneralGeneral
-
+ ProjectsProjects
-
+ DocumentsDocuments
-
+ EditorEditor
-
+ HighlightingHighlighting
-
+ AutomationAutomation
-
+ QuotesQuotes
-
-
- Some changes will not be applied until novelWriter has been restarted.
- Some changes will not be applied until novelWriter has been restarted.
- GuiPreferencesAutomation
-
+ Automatic FeaturesAutomatic Features
-
+ Auto-select word under cursorAuto-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 typeAuto-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 TypeReplace as You Type
-
+ Auto-replace single quotesAuto-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 quotesAuto-replace double quotes
-
+ Auto-replace dashesAuto-replace dashes
-
+ Double and triple hyphens become short and long dashes.Double and triple hyphens become short and long dashes.
-
+ Auto-replace dotsAuto-replace dots
-
+ Three consecutive dots become ellipsis.Three consecutive dots become ellipsis.
-
+ Automatic PaddingAutomatic Padding
-
+ Insert non-breaking space beforeInsert non-breaking space before
-
+ Automatically add space before any of these symbols.Automatically add space before any of these symbols.
-
+ Insert non-breaking space afterInsert non-breaking space after
-
+ Automatically add space after any of these symbols.Automatically add space after any of these symbols.
-
+ Use thin space insteadUse 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 StyleText Style
-
+ Font familyFont family
-
-
-
+
+
+ Applies to both document editor and viewer.Applies to both document editor and viewer.
-
+ Font sizeFont size
-
+ ptpt
-
+ Text FlowText 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.
-
-
-
-
+
+
+
+ pxpx
-
+ 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 marginsJustify the text margins
-
+ Minimum text marginMinimum text margin
-
+ Tab widthTab 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 CheckingSpell Checking
-
+ NoneNone
-
+ Not installedNot installed
-
+ Spell check languageSpell check language
-
+ Available languages are determined by your system.Available languages are determined by your system.
-
+ Big document limitBig document limit
-
+ Full spell checking is disabled above this limit.Full spell checking is disabled above this limit.
-
+ kBkB
-
+ Word CountWord Count
-
+ Word count intervalWord count interval
-
+ secondsseconds
-
+ Include project notes in status bar word countInclude project notes in status bar word count
-
+ Writing GuidesWriting Guides
-
+ Show tabs and spacesShow tabs and spaces
-
+ Show line endingsShow line endings
-
+ Scroll BehaviourScroll Behavior
-
+ Scroll past end of the documentScroll past end of the document
-
+ Set to 0 to disable this feature.Set to 0 to disable this feature.
-
+ lineslines
-
+ Typewriter style scrolling when you typeTypewriter 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 scrollingMinimum 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 FeelLook and Feel
-
+ Main GUI languageMain GUI language
-
-
-
-
-
- Requires restart.
- Requires restart.
+
+
+
+ Requires restart to take effect.
+ Requires restart to take effect.
-
+ Main GUI themeMain GUI theme
-
- Main icon theme
- Main icon theme
+
+ General colour theme and icons.
+ General color theme and icons.
-
+ Editor themeEditor theme
-
+ Colour theme for the editor and viewer.Color theme for the editor and viewer.
-
+ Font familyFont family
-
+ Font sizeFont size
-
+ ptpt
-
+ GUI SettingsGUI Settings
-
+ Emphasise partition and chapter labelsEmphasise 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 headerShow 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 windowsHide 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 windowsHide horizontal scroll bars in main windows
@@ -2697,109 +2705,109 @@
GuiPreferencesProjects
-
+ Automatic SaveAutomatic Save
-
+ Save document intervalSave document interval
-
+ How often the document is automatically saved.How often the document is automatically saved.
-
-
+
+ secondsseconds
-
+ Save project intervalSave project interval
-
+ How often the project is automatically saved.How often the project is automatically saved.
-
+ Project BackupProject Backup
-
+ BrowseBrowse
-
+ Backup storage locationBackup storage location
-
-
+
+ Path: {0}Path: {0}
-
+ Run backup when the project is closedRun 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 backupAsk before running backup
-
+ If off, backups will run in the background.If off, backups will run in the background.
-
+ Session TimerSession Timer
-
+ Pause the session timer when not writingPause 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 timerEditor inactive time before pausing timer
-
+ User activity includes typing and changing the content.User activity includes typing and changing the content.
-
+ minutesminutes
-
+ Backup DirectoryBackup Directory
@@ -2807,47 +2815,47 @@
GuiPreferencesQuotes
-
+ Quotation StyleQuotation Style
-
+ Single quote open styleSingle quote open style
-
+ The symbol to use for a leading single quote.The symbol to use for a leading single quote.
-
+ Single quote close styleSingle quote close style
-
+ The symbol to use for a trailing single quote.The symbol to use for a trailing single quote.
-
+ Double quote open styleDouble quote open style
-
+ The symbol to use for a leading double quote.The symbol to use for a leading double quote.
-
+ Double quote close styleDouble 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 & DialogueQuotes & Dialogue
-
+ Highlight text wrapped in quotesHighlight text wrapped in quotes
-
-
-
+
+
+ Applies to the document editor only.Applies to the document editor only.
-
+ Allow open-ended single quotesAllow open-ended single quotes
-
+ Highlight single-quoted line with no closing quote.Highlight single-quoted line with no closing quote.
-
+ Allow open-ended double quotesAllow open-ended double quotes
-
+ Highlight double-quoted line with no closing quote.Highlight double-quoted line with no closing quote.
-
+ Text EmphasisText Emphasis
-
+ Add highlight colour to emphasised textAdd highlight color to emphasised text
-
+ Text ErrorsText Errors
-
+ Highlight multiple or trailing spacesHighlight multiple or trailing spaces
@@ -2933,72 +2941,72 @@
GuiProjectDetailsContents
-
+ Table of ContentsTable of Contents
-
+ TitleTitle
-
+ WordsWords
-
+ PagesPages
-
+ PagePage
-
+ ProgressProgress
-
+ 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 pageWords per page
-
+ Count pages fromCount pages from
-
+ Clear double pagesClear double pages
-
+ ENDEND
-
+ UntitledUntitled
@@ -3016,32 +3024,32 @@
By {0}
-
+ WordsWords
-
+ ChaptersChapters
-
+ ScenesScenes
-
+ RevisionsRevisions
-
+ Editing TimeEditing Time
-
+ PathPath
@@ -3049,58 +3057,58 @@
GuiProjectEditMain
-
+ Project SettingsProject Settings
-
+ Project nameProject name
-
+ Should be set only once.Should be set only once.
-
+ Novel titleNovel title
-
+ Change whenever you want!Change whenever you want!
-
+ Author(s)Author(s)
-
+ One name per line.One name per line.
-
+ DefaultDefault
-
+ Spell check languageSpell check language
-
-
+
+ Overrides main preferences.Overrides main preferences.
-
+ No backup on closeNo backup on close
@@ -3108,27 +3116,27 @@
GuiProjectEditReplace
-
+ Text Replace List for Preview and ExportText Replace List for Preview and Export
-
+ KeywordKeyword
-
+ Replace WithReplace With
-
+ Select item to editSelect item to edit
-
+ SaveSave
@@ -3136,67 +3144,67 @@
GuiProjectEditStatus
-
+ Novel File Status LevelsNovel File Status Levels
-
+ Note File Importance LevelsNote File Importance Levels
-
+ LabelLabel
-
+ UsageUsage
-
+ Select item to editSelect item to edit
-
+ ColourColor
-
+ SaveSave
-
+ Select ColourSelect Color
-
+ New ItemNew Item
-
+ Cannot delete a status item that is in use.Cannot delete a status item that is in use.
-
+ Not in useNot in use
-
+ Used onceUsed once
-
+ Used by {0} itemsUsed by {0} items
@@ -3204,63 +3212,63 @@
GuiProjectLoad
-
+ Open ProjectOpen Project
-
+ Working TitleWorking Title
-
+ WordsWords
-
+ Last OpenedLast Opened
-
+ Recently Opened ProjectsRecently Opened Projects
-
+ PathPath
-
+ NewNew
-
+ RemoveRemove
-
+ novelWriter Project File ({0})novelWriter Project File ({0})
-
+ All files ({0})All files ({0})
-
+ Remove EntryRemove 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 SettingsProject Settings
-
+ SettingsSettings
-
+ StatusStatus
-
+ ImportanceImportance
-
+ Auto-ReplaceAuto-Replace
@@ -3296,52 +3304,52 @@
GuiProjectToolBar
-
+ Project ContentProject Content
-
+ Quick LinksQuick Links
-
+ Move UpMove Up
-
+ Move DownMove Down
-
+ Add ItemAdd Item
-
+ Expand AllExpand All
-
+ Collapse AllCollapse All
-
+ Undo MoveUndo Move
-
+ Empty TrashEmpty Trash
-
+ More OptionsMore 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 NoteNew Note
-
+ New ChapterNew Chapter
-
+ New SceneNew Scene
-
+ New DocumentNew Document
-
+ New FolderNew 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 TrashEmpty Trash
-
+ Permanently delete {0} file(s) from Trash?Permanently delete {0} file(s) from Trash?
-
-
+
+ DeleteDelete
-
+ 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 DocumentOpen Document
-
+ View DocumentView Document
-
+ Change LabelChange Label
-
- Toggle Exported
- Toggle Exported
+
+ Toggle Active
+ Toggle Active
-
+ Set Status to ...Set Status to ...
-
+ Set Importance to ...Set Importance to ...
-
+ TransformTransform
-
-
+
+ Convert to {0}Convert to {0}
-
+ Merge Child Items into SelfMerge Child Items into Self
-
+ Merge Child Items into NewMerge 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 AllExpand All
-
+ Collapse AllCollapse All
-
+ Delete PermanentlyDelete Permanently
-
+ Move to TrashMove to Trash
-
+ Convert FolderConvert 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.
-
+ MergedMerged
-
-
+
+ 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
-
+ ProjectProject
-
+ Project Tree ViewProject Tree View
-
+ NovelNovel
-
+ Novel Tree ViewNovel Tree View
-
+ OutlineOutline
-
+ Novel Outline ViewNovel Outline View
-
+ BuildBuild
-
+ Build Novel ProjectBuild Novel Project
-
+ DetailsDetails
-
+ Project DetailsProject Details
-
+ StatsStats
-
+ Writing StatisticsWriting Statistics
-
+ SettingsSettings
@@ -3643,18 +3661,18 @@
GuiWordList
-
-
+
+ Project Word ListProject 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 TotalsSum 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:
-
+ FiltersFilters
-
+ Count novel filesCount novel files
-
+ Count note filesCount note files
-
+ Hide zero word countHide zero word count
-
+ Hide negative word countHide negative word count
-
+ Group entries by dayGroup entries by day
-
+ Show idle timeShow idle time
-
+ Word count cap for the histogramWord count cap for the histogram
-
+ Save AsSave As
-
+ JSON Data File (.json)JSON Data File (.json)
-
+ CSV Data File (.csv)CSV Data File (.csv)
-
+ JSON Data FileJSON Data File
-
+ CSV Data FileCSV Data File
-
+ Save Data AsSave 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.
-
-
-
-
+ UnknownUnknown
-
+ 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 VersionFile 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 ConflictVersion 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
+
+
+ andand
-
- Could not create folder.
- Could not create folder.
-
-
-
+ Found {0} orphaned file(s) in project folder.Found {0} orphaned file(s) in project folder.
-
+ RecoveredRecovered
-
+ [{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 OptionsCustom 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 notesAdd a folder for plot notes
-
+ Add a folder for character notesAdd a folder for character notes
-
+ Add a folder for location notesAdd a folder for location notes
-
+ Add example notes to the aboveAdd example notes to the above
-
+ Add chapters to the novel folderAdd chapters to the novel folder
-
+ Add scenes to each chapterAdd scenes to each chapter
@@ -4154,82 +4050,82 @@
ProjWizardFinalPage
-
+ SummarySummary
-
+ Project Name: {0}Project Name: {0}
-
+ Project Path: {0}Project Path: {0}
-
+ Fill the project with a minimal set of itemsFill the project with a minimal set of items
-
+ Fill the project with example filesFill the project with example files
-
+ Add a folder for plot notesAdd a folder for plot notes
-
+ Add a folder for character notesAdd a folder for character notes
-
+ Add a folder for location notesAdd a folder for location notes
-
+ Add example notes to the aboveAdd example notes to the above
-
+ Add {0} chapters to the novel folderAdd {0} chapters to the novel folder
-
+ Add {0} scenes to each chapterAdd {0} scenes to each chapter
-
+ Add {0} scenesAdd {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.
-
+ DoneDone
-
+ FinishFinish
@@ -4237,7 +4133,7 @@
ProjWizardFolderPage
-
+ Select Project FolderSelect Project Folder
@@ -4319,31 +4215,105 @@
ProjWizardPopulatePage
-
+ Populate ProjectPopulate 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 itemsFill the project with a minimal set of items
-
+ Fill the project with example filesFill the project with example files
-
+ Show detailed options for filling the projectShow 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
-
+ SynopsisSynopsis
-
+ Document '{0}' is too big ({1} MB). Skipping.Document '{0}' is too big ({1} MB). Skipping.
-
+ ERRORERROR
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 futurei fremtiden
-
+ just nownå nettopp
-
+ a minute agofor et minutt siden
-
+ {0} minutes agofor {0} minutter siden
-
+ an hour agofor en time siden
-
+ {0} hours agofor {0} timer siden
-
+ a day agofor en dag siden
-
+ {0} days agofor {0} dager siden
-
+ a week agofor en uke siden
-
+ {0} weeks agofor {0} uker siden
-
+ a month agofor en måned siden
-
+ {0} months agofor {0} måneder siden
-
+ a year agofor et år siden
-
+ {0} years agofor {0} år siden
@@ -77,264 +77,264 @@
Constant
-
-
-
+
+
+ NoneIngen
-
+ NovelRoman
-
-
+
+ PlotPlott
-
-
+
+ CharactersKarakterer
-
-
+
+ LocationsLokasjoner
-
-
+
+ TimelineTidslinje
-
-
+
+ ObjectsObjekter
-
-
+
+ EntitiesEnheter
-
-
+
+ CustomAnnet
-
+ ArchiveArkiv
-
+ TrashSøppel
-
-
+
+ Novel DocumentRomandokument
-
-
+
+ Project NoteProsjektnotat
-
+ Root FolderHovedmappe
-
+ FolderMappe
-
+ Novel Title PageTittelside
-
+ Novel ChapterKapittel
-
+ Novel SceneScene
-
+ Novel SectionSeksjon
-
+ TagKnagg
-
+ Point of ViewPerspektiv
-
-
+
+ FocusFokus
-
+ TitleTittel
-
+ LevelNivå
-
+ DocumentDokument
-
+ LineLinje
-
+ CharsTegn
-
+ WordsOrd
-
+ ParsAvsnitt
-
+ POVPersp.
-
+ SynopsisSammendrag
-
+ Straight single quotation markRett, enkelt sitattegn
-
+ Straight double quotation markRett, dobbelt sitattegn
-
+ Left single quotation markVenstre, enkelt sitattegn
-
+ Right single quotation markHøyre, enkelt sitattegn
-
+ Single low-9 quotation markEnkelt, lavt-9 sitattegn
-
+ Single high-reversed-9 quotation markEnkelt, høyt, reversert-9 sitattegn
-
+ Left double quotation markVenstre, dobbelt sitattegn
-
+ Right double quotation markHøyre, dobbelt sitattegn
-
+ Double low-9 quotation markDobbelt, lavt-9 sitattegn
-
+ Double high-reversed-9 quotation markDobbelt, høyt, reversert-9 sitattegn
-
+ Double low-reversed-9 quotation markDobbelt, lavt, reversert-9 sitattegn
-
+ Single left-pointing angle quotation markEnkelt, venstre, angulært sitattegn
-
+ Single right-pointing angle quotation markEnkelt, høyre, angulært sitattegn
-
+ Double left-pointing angle quotation markDobbelt, venstre, angulært sitattegn
-
+ Double right-pointing angle quotation markDobbelt, høyre, angulært sitattegn
-
+ Left corner bracketVenstre hjørnevinkel
-
+ Right corner bracketHøyre hjørnevinkel
-
+ Left white corner bracketVenstre, hvit hjørnevinkel
-
+ Right white corner bracketHøyre, hvit hjørnevinkel
@@ -342,105 +342,105 @@
GuiAbout
-
-
+
+ About novelWriterOm novelWriter
-
+ AboutOm
-
+ ReleaseUtgivelse
-
-
-
-
-
- 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
+
+
+
+
+ CreditKreditert
-
+ 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 AsLagre 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.
-
+ UnknownUkjent
-
+ Build Time:Bygget:
@@ -809,32 +809,32 @@
GuiDocEditFooter
-
+ StatusStatus
-
+ Line: {0} ({1})Linje: {0} ({1})
-
+ Words: {0} ({1})Ord: {0} ({1})
-
+ Document size is {0} bytesDokumentet er {0} byte
-
+ Words: {0} selectedOrd: {0} valgt
-
+ Character count: {0}Antall tegn: {0}
@@ -842,22 +842,22 @@
GuiDocEditHeader
-
+ Edit document labelEndre dokumentnavn
-
+ Search documentSøk i dokumentet
-
+ Toggle Focus ModeSlå av/på "Fokus-modus"
-
+ Close the documentLukk dokumentet
@@ -865,58 +865,58 @@
GuiDocEditSearch
-
-
+
+ SearchSøk
-
+ ReplaceErstatt
-
+ Case SensitiveSkill store/små bokstaver
-
+ Whole Words OnlyKun hele ord
-
+ RegEx ModeRegEx-modus
-
+ Loop SearchSøk rundt
-
+ Search Next FileSøk i neste file
-
+ Preserve CaseBehold store/små bokstaver
-
+ Close SearchLukk søk
-
+ Find in current documentSøk i det åpne dokumentet
-
+ Find and replace in current documentSø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 DiskFilen 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 completeStavekontrollen er ferdig
-
+ File LocationFilens 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 TagFølg knagg
-
+ CutKlipp
-
+ CopyKopier
-
+ PasteLim inn
-
+ Select AllVelg hele teksten
-
+ Select WordVelg hele ordet
-
+ Select ParagraphVelg hele avsnittet
-
+ Spelling Suggestion(s)Forslag fra stavekontrollen
-
+ No SuggestionsIngen forslag
-
+ Add Word to DictionaryLegg 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 DocumentDel opp dokument
-
+ Document HeadersDokumentets 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 folderDel inn i en ny mappe
-
+ Create document hierarchyOpprett dokumenthierarki
+
+
+ Move split document to Trash
+ Flytt splittet element til papirkurven
+ GuiDocViewFooter
-
+ Show/hide the references panelSkjul eller vis referanse-panelet
-
+ Activate to freeze the content of the references panel when changing documentAktiver for å fryse innholdet i referanse-panelet ved bytte av vist dokument
-
+ Show commentsVis kommentarer
-
+ Show synopsis commentsVis sammendrag
-
+ ReferencesReferanser
-
+ StickyHold igjen
-
+ CommentsKommentarer
-
+ SynopsisSammendrag
@@ -1156,22 +1161,22 @@
GuiDocViewHeader
-
+ Go backwardGå bakover
-
+ Go forwardGå fremover
-
+ Reload the documentLast dokumentet på nytt
-
+ Close the documentLukk dokumentet
@@ -1179,27 +1184,27 @@
GuiDocViewer
-
+ An error occurred while generating the preview.Det har oppstått en feil under genereringen av visningen.
-
+ CopyKopier
-
+ Select AllVelg hele teksten
-
+ Select WordVelg hele ordet
-
+ Select ParagraphVelg hele avsnittet
@@ -1220,37 +1225,37 @@
GuiItemDetails
-
+ LabelNavn
-
+ StatusStatus
-
+ ClassKlasse
-
+ UsageFormål
-
+ CharactersTegn
-
+ WordsOrd
-
+ ParagraphsAvsnitt
@@ -1258,27 +1263,27 @@
GuiLipsum
-
+ Insert Placeholder TextSett inn midlertidig tekst
-
+ Insert Lorem Ipsum TextSett inn Lorem Ipsum-tekst
-
+ Number of paragraphsAntall avsnitt
-
+ Randomise orderTilfeldig rekkefølge
-
+ InsertSett 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 ProjectLukk prosjektet
-
+ Close the current project?Ønsker du å lukke dette prosjektet?
-
-
+
+ Changes are saved automatically.Endringer lagres automatisk.
-
+ Backup ProjectSikkerhetskopiering
-
+ 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 LockedProsjektlå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 FileImporter 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 DocumentImporter 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} msIndekseringen 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.
+
+
+ InformationInformasjon
-
+ WarningAdvarsel
-
+ ErrorFeil
-
+ This is a bug!Dette er en systemfeil!
-
+ Internal ErrorIntern feil
-
+ ExitAvslutt
-
+ 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 ProjectNytt prosjekt
-
+ Open ProjectÅpne prosjekt
-
+ Save ProjectLagre prosjektet
-
+ Close ProjectLukk prosjektet
-
+ Project SettingsProsjektinnstillinger
-
+ Project DetailsProsjektdetaljer
-
+ Rename ItemEndre navn
-
+ Delete ItemSlett enhet
-
+ Empty TrashTøm søppel
-
+ ExitAvslutt
-
+ &Document&Dokument
-
+ Open DocumentÅpne dokument
-
+ Save DocumentLagre dokumentet
-
+ Close DocumentLukk dokumentet
-
+ View DocumentVis dokument
-
+ Close Document ViewLukk dokumentvisning
-
+ Show File DetailsVis filinformasjon
-
+ Import Text from FileImporter tekst fra fil
-
+ &Edit&Rediger
-
+ UndoAngre
-
+ RedoGjenopprett
-
+ CutKlipp
-
+ CopyKopier
-
+ PasteLim inn
-
+ Select AllVelg hele teksten
-
+ Select ParagraphVelg hele avsnittet
-
+ &View&Vis
-
+ Go to Project TreeGå til prosjekt-tre
-
+ Go to Document EditorGå til dokument-editor
-
+ Go to Document ViewerGå til visningsvindu
-
+ Go to OutlineGå til disposisjon
-
+ Navigate BackwardNavigere bakover
-
+ Navigate ForwardNavigere fremover
-
+ Focus ModeFocus-modus
-
+ Full Screen ModeFullskjerm-modus
-
+ &InsertSett &inn
-
+ DashesBindestreker
-
+ Short DashKort bindestrek
-
+ Long DashLang bindestrek
-
+ Horizontal BarHorisontal strek
-
+ Figure DashTallstrek
-
+ Quote MarksSitattegn
-
+ Left Single QuoteVenstre, enkelt sitattegn
-
+ Right Single QuoteHøyre, enkelt sitattegn
-
+ Left Double QuoteVenstre, dobbelt sitattegn
-
+ Right Double QuoteHøyre, dobbelt sitattegn
-
+ Alternative ApostropheAlternativ apostrof
-
+ General PunctuationGenerell tegnsetting
-
+ EllipsisEllipsis
-
+ PrimePrimtegn
-
+ Double PrimeDobbelt primtegn
-
+ White SpacesMellomrom
-
+ Non-Breaking SpaceHardt mellomrom
-
+ Thin SpaceKort mellomrom
-
+ Thin Non-Breaking SpaceHardt, kort mellomrom
-
+ Other SymbolsAndre symboler
-
+ List BulletKulepunkt
-
+ Hyphen BulletBindestrekpunkt
-
+ Flower MarkBlomsterpunkt
-
+ Per MillePromille
-
+ Degree SymbolGradertegn
-
+ Minus SignMinustegn
-
+ Times SignGangetegn
-
+ Division SignDeletegn
-
+ Tags and ReferencesKnagger og referanser
-
+
+ Special Comments
+ Andre kommentartyper
+
+
+
+ Synopsis Comment
+ Kommentar med sammendrag
+
+
+ Page Break and SpaceSideskift og avstand
-
+ Page BreakSideskift
-
+ Vertical Space (Single)Vertikal avstand (enkel)
-
+ Vertical Space (Multi)Vertikal avstand (flere)
-
+ Placeholder TextMidlertidig tekst
-
+ &Format&Formattering
-
+ EmphasisKursiv
-
+ Strong EmphasisUthev
-
+ StrikethroughGjennomstrek
-
+ Wrap Double QuotesSett i doble sitattegn
-
+ Wrap Single QuotesSett 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 TitleBoktittel
-
+ Unnumbered ChapterUnumrert kapittel
-
+ Align LeftVenstrejuster
-
+ Align CentreSentrer
-
+ Align RightHøyrejuster
-
+ Indent LeftInnrykk fra venstre
-
+ Indent RightInnrykk fra høyre
-
+ Toggle CommentVeksle kommentar
-
+ Remove Block FormatFjern formattering
-
+ Convert Single QuotesKonverter enkle sitattegn
-
+ Convert Double QuotesKonverter doble sitattegn
-
+ Remove In-Paragraph BreaksFjern linjeskift i avsnittet
-
+ &Search&Søk
-
+ FindSøk
-
+ ReplaceErstatt
-
+ Find NextFinn neste
-
+ Find PreviousFinn forrige
-
+ Replace NextErstatt neste
-
+ &Tools&Verktøy
-
+ Check SpellingStavekontroll
-
+ Re-Run Spell CheckKjør stavekontroll
-
+ Project Word ListProsjektets ordliste
-
+ Rebuild IndexBygg indeks
-
+ Backup ProjectLag sikkerhetskopi av prosjektets mappe
-
+ Build Novel ProjectBygg prosjektet
-
+ Writing StatisticsStatistikk
-
+ PreferencesInnstillinger
-
+ &Help&Hjelp
-
+ About novelWriterOm novelWriter
-
+ About Qt5Om 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 WebsitenovelWriters nettside
-
+ Check for New ReleaseSjekk etter oppdateringer
@@ -2048,38 +2063,38 @@
GuiMainStatus
-
+ NoneIngen
-
+ EditorEditor
-
+ ProjectProsjekt
-
+ Session TimeTid 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 OutlineDisposisjon
-
+ RefreshOppdatér
-
+ Novel RootRoman-mappe
-
+ Last ColumnSiste kolonne
-
+ HiddenSkjult
-
+ Point of View CharacterSynsvinkel-karakter
-
+ Focus CharacterFokus-karakter
-
+ Novel PlotRoman-plott
-
+ More OptionsFlere valg
@@ -2135,7 +2150,7 @@
GuiNovelTree
-
+ No meta dataIngen meta-data
@@ -2143,65 +2158,65 @@
GuiOutlineDetails
-
-
-
-
+
+
+
+ TitleTittel
-
+ ChapterKapittel
-
+ SceneScene
-
+ SectionSeksjon
-
+ DocumentDokument
-
+ StatusStatus
-
+ CharactersTegn
-
+ WordsOrd
-
+ ParagraphsAvsnitt
-
+ SynopsisSammendrag
-
+ Title DetailsOversikt
-
+ Reference TagsReferanser
@@ -2209,7 +2224,7 @@
GuiOutlineHeaderMenu
-
+ Select ColumnsVelg kolonner
@@ -2217,17 +2232,17 @@
GuiOutlineToolBar
-
+ Outline ofDisposisjon for
-
+ RefreshOppdatér
-
+ All Novel FoldersAlle roman-mapper
@@ -2235,151 +2250,146 @@
GuiPreferences
-
+ PreferencesInnstillinger
-
+ GeneralGenerelt
-
+ ProjectsProsjekt
-
+ DocumentsDokument
-
+ EditorEditor
-
+ HighlightingFremheving
-
+ AutomationAutomasjon
-
+ QuotesSitattegn
-
-
- 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 FeaturesAutomatiske funksjoner
-
+ Auto-select word under cursorAuto-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 typeErstatt mens du skriver
-
+ Allow the editor to replace symbols as you type.La editoren erstatte symboler mens du skriver.
-
+ Replace as You TypeErstatt mens du skriver
-
+ Auto-replace single quotesErstatt 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 quotesErstatt doble sitattegn
-
+ Auto-replace dashesErstatt bindestreker
-
+ Double and triple hyphens become short and long dashes.To og tre bindestreker erstattes med kort og lang bindestrek.
-
+ Auto-replace dotsErstatt tre punktum
-
+ Three consecutive dots become ellipsis.Tre punktum på rad erstattes med ellipsis.
-
+ Automatic PaddingAutomatisk mellomrom
-
+ Insert non-breaking space beforeSett inn hardt mellomrom foran
-
+ Automatically add space before any of these symbols.Legg til mellomrom automatisk foran disse tegnene.
-
+ Insert non-breaking space afterSett inn hardt mellomrom etter
-
+ Automatically add space after any of these symbols.Legg til mellomrom automatisk etter disse tegnene.
-
+ Use thin space insteadBruk 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 StyleTekststil
-
+ Font familySkriftfamilie
-
-
-
+
+
+ Applies to both document editor and viewer.Gjelder både redigerings- og visningsvindu.
-
+ Font sizeSkriftstørrelse
-
+ ptpt
-
+ Text FlowTekstflyt
-
+ 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.
-
-
-
-
+
+
+
+ pxpx
-
+ 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 marginsJuster tekstmarginer
-
+ Minimum text marginMinimum tekstmargin
-
+ Tab widthTabulatorens 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 CheckingStavekontroll
-
+ NoneIngen
-
+ Not installedIkke installert
-
+ Spell check languageSpråk for stavekontroll
-
+ Available languages are determined by your system.Tilgjengelige språk hentes fra operativystemet ditt.
-
+ Big document limitGrense for store dokumenter
-
+ Full spell checking is disabled above this limit.Automatisk stavekontroll slås av over grensen.
-
+ kBkB
-
+ Word CountTelling av ord
-
+ Word count intervalTelle-intervall
-
+ secondssekunder
-
+ Include project notes in status bar word countInkluder prosjektnotater i antallet ord i statuslinjen
-
+ Writing GuidesHjelpesymboler
-
+ Show tabs and spacesSynlige tabulatorer og mellomrom
-
+ Show line endingsSynlige linjeender
-
+ Scroll BehaviourRullefelt
-
+ Scroll past end of the documentTillat å rulle forbi slutten av dokumentet
-
+ Set to 0 to disable this feature.Sett til 0 for å deaktivere denne funksjonen.
-
+ lineslinjer
-
+ Typewriter style scrolling when you typeSkrivemaskin-liknende rulling mens du skriver
-
+ Keeps the cursor at a fixed vertical position.Holder markøren på samme sted vertikalt.
-
+ Minimum position for Typewriter scrollingMinste 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 FeelUtseende
-
+ Main GUI languageProgramspråk
-
-
-
-
-
- Requires restart.
- Krever omstart.
+
+
+
+ Requires restart to take effect.
+ Krever omstart for å tre i kraft.
-
+ Main GUI themeFargetema
-
- Main icon theme
- Ikon-tema
+
+ General colour theme and icons.
+ Generelt fargetema og ikoner.
-
+ Editor themeSyntaksfremheving
-
+ Colour theme for the editor and viewer.Fargetema for editor og visning.
-
+ Font familySkriftfamilie
-
+ Font sizeSkriftstørrelse
-
+ ptpt
-
+ GUI SettingsBrukergrensesnitt
-
+ Emphasise partition and chapter labelsFremhev 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 headerVis full prosjektbane i dokumenthoder
-
+ Add the parent folder names to the header.Legger til mappene foran dokumentets navn.
-
+ Hide vertical scroll bars in main windowsSkjul 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 windowsSkjul horisontale rullefelt i hovedvinduer
@@ -2697,109 +2705,109 @@
GuiPreferencesProjects
-
+ Automatic SaveAutomatisk lagring
-
+ Save document intervalInterval for lagring av dokument
-
+ How often the document is automatically saved.Hvor ofte dokumentet lagres automatisk.
-
-
+
+ secondssekunder
-
+ Save project intervalInterval for lagring av prosjekt
-
+ How often the project is automatically saved.Hvor ofte prosjektet lagres automatisk.
-
+ Project BackupSikkerhetskopi
-
+ BrowseBla
-
+ Backup storage locationFilbane for sikkerhetskopi
-
-
+
+ Path: {0}Filbane: {0}
-
+ Run backup when the project is closedLag sikkerhetskopi når prosjektet lukkes
-
+ Can be overridden for individual projects in Project Settings.Kan overstyres fra individuelle prosjektinnstillinger.
-
+ Ask before running backupSpør før sikkerhetskopi tas
-
+ If off, backups will run in the background.Hvis avslått, tas sikkerhetskopi automatisk.
-
+ Session TimerSesjons-klokke
-
+ Pause the session timer when not writingSett 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 timerTid uten skriving før klokka settes på pause
-
+ User activity includes typing and changing the content.Dette måler kun endringer i teksteditoren.
-
+ minutesminutter
-
+ Backup DirectoryMappe for sikkerhetskopi
@@ -2807,47 +2815,47 @@
GuiPreferencesQuotes
-
+ Quotation StyleSitattegn
-
+ Single quote open styleEnkelt sitat, venstre side
-
+ The symbol to use for a leading single quote.Symbol for enkelt sitattegn før et sitat.
-
+ Single quote close styleEnkelt sitat, høyre side
-
+ The symbol to use for a trailing single quote.Symbol for enkelt sitattegn etter et sitat.
-
+ Double quote open styleDobbelt sitat, venstre side
-
+ The symbol to use for a leading double quote.Symbol for dobbelt sitattegn før et sitat.
-
+ Double quote close styleDobbelt 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 & DialogueSitattegn & dialog
-
+ Highlight text wrapped in quotesFremhev tekst mellom sitattegn
-
-
-
+
+
+ Applies to the document editor only.Gjelder bare for redigeringsvindu.
-
+ Allow open-ended single quotesTillat 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 quotesTillat doble sitattegn som ikke lukkes
-
+ Highlight double-quoted line with no closing quote.Fremhev sitater som ikke er lukket i samme avsnitt.
-
+ Text EmphasisFremheving av tekst
-
+ Add highlight colour to emphasised textFremhev formattert tekst
-
+ Text ErrorsFeil i tekst
-
+ Highlight multiple or trailing spacesFremhev flere eller etterfølgende mellomrom
@@ -2933,72 +2941,72 @@
GuiProjectDetailsContents
-
+ Table of ContentsInnholdsfortegnelse
-
+ TitleTittel
-
+ WordsOrd
-
+ PagesSider
-
+ PageSide
-
+ ProgressFremdrift
-
+ 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 pageOrd per side
-
+ Count pages fromTell sider fra
-
+ Clear double pagesTøm doble sider
-
+ ENDSLUTT
-
+ UntitledUten tittel
@@ -3016,32 +3024,32 @@
Av {0}
-
+ WordsOrd
-
+ ChaptersKapitler
-
+ ScenesScener
-
+ RevisionsRevisjoner
-
+ Editing TimeRedigeringstid
-
+ PathFilbane
@@ -3049,58 +3057,58 @@
GuiProjectEditMain
-
+ Project SettingsProsjektinnstillinger
-
+ Project nameProsjektnavn
-
+ Should be set only once.Bør bare settes én gang.
-
+ Novel titleBokens tittel
-
+ Change whenever you want!Kan endres når som helst!
-
+ Author(s)Forfatter(e)
-
+ One name per line.Ett navn per linje.
-
+ DefaultIngen valg
-
+ Spell check languageSpråk for stavekontroll
-
-
+
+ Overrides main preferences.Overstyrer valg i innstillinger.
-
+ No backup on closeSlå av sikkerhetskopi
@@ -3108,27 +3116,27 @@
GuiProjectEditReplace
-
+ Text Replace List for Preview and ExportErstatningsliste for forhåndsvisning og eksport
-
+ KeywordKodeord
-
+ Replace WithErstatt med
-
+ Select item to editVelg enhet å redigere
-
+ SaveLagre
@@ -3136,67 +3144,67 @@
GuiProjectEditStatus
-
+ Novel File Status LevelsStatusnivåer i roman-filer
-
+ Note File Importance LevelsViktighetsnivåer i notatfiler
-
+ LabelNavn
-
+ UsageBruk
-
+ Select item to editVelg enhet å redigere
-
+ ColourFarge
-
+ SaveLagre
-
+ Select ColourVelg farge
-
+ New ItemLegg til
-
+ Cannot delete a status item that is in use.Kan ikke slette status som er i bruk.
-
+ Not in useIkke i bruk
-
+ Used onceBrukt ett sted
-
+ Used by {0} itemsBrukt {0} steder
@@ -3204,63 +3212,63 @@
GuiProjectLoad
-
+ Open ProjectÅpne prosjekt
-
+ Working TitleArbeidstittel
-
+ WordsOrd
-
+ Last OpenedSist åpnet
-
+ Recently Opened ProjectsTidligere åpnede prosjekter
-
+ PathFilbane
-
+ NewNy
-
+ RemoveFjern
-
+ novelWriter Project File ({0})novelWriter-prosjektfil ({0})
-
+ All files ({0})Alle filer ({0})
-
+ Remove EntryFjern 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 SettingsProsjektinnstillinger
-
+ SettingsInnstillinger
-
+ StatusStatus
-
+ ImportanceViktighet
-
+ Auto-ReplaceAutoerstatt
@@ -3296,52 +3304,52 @@
GuiProjectToolBar
-
+ Project ContentProsjektets innhold
-
+ Quick LinksHurtiglenker
-
+ Move UpFlytt opp
-
+ Move DownFlytt ned
-
+ Add ItemLegg til element
-
+ Expand AllUtvid alle
-
+ Collapse AllLukk alle
-
+ Undo MoveAngre flytting
-
+ Empty TrashTøm papirkurven
-
+ More OptionsFlere 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 NoteNytt notat
-
+ New ChapterNytt kapittel
-
+ New SceneNy scene
-
+ New DocumentNytt dokument
-
+ New FolderNy 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 TrashTøm papirkurven
-
+ Permanently delete {0} file(s) from Trash?Vil du slette {0} filer i papirkurven for godt?
-
-
+
+ DeleteSlett
-
+ 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 DocumentVis dokument
-
+ Change LabelEndre navn
-
- Toggle Exported
- Skru av/på eksportert
+
+ Toggle Active
+ Aktiver/deaktiver
-
+ Set Status to ...Sett status til ...
-
+ Set Importance to ...Sett viktighetsnivå til ...
-
+ TransformTransformer
-
-
+
+ Convert to {0}Konverter til {0}
-
+ Merge Child Items into SelfLim inn underelementer i dette dokumentet
-
+ Merge Child Items into NewLim 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 HeadersDel dokumentet etter overskrift
-
+ Expand AllUtvid alle
-
+ Collapse AllLukk alle
-
+ Delete PermanentlySlett permanent
-
+ Move to TrashFlytt til papirkurv
-
+ Convert FolderKonverter 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.
-
+ MergedSammenslå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
-
+ ProjectProsjekt
-
+ Project Tree ViewProsjektoversikt
-
+ NovelRoman
-
+ Novel Tree ViewRomanoversikt
-
+ OutlineOversikt
-
+ Novel Outline ViewDisposisjon
-
+ BuildBygge
-
+ Build Novel ProjectBygg prosjektet
-
+ DetailsDetaljer
-
+ Project DetailsProsjektdetaljer
-
+ StatsStatistikk
-
+ Writing StatisticsStatistikk
-
+ SettingsOppsett
@@ -3643,18 +3661,18 @@
GuiWordList
-
-
+
+ Project Word ListProsjektets 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 TotalsTotalsummer
-
+ 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:
-
+ FiltersFiltre
-
+ Count novel filesTell i romanfiler
-
+ Count note filesTell i notatfiler
-
+ Hide zero word countSkjul null-verdier
-
+ Hide negative word countSkjul negative verdier
-
+ Group entries by daySamle rader per dag
-
+ Show idle timeVis inaktiv som tid
-
+ Word count cap for the histogramMaks antall ord for histogram
-
+ Save AsLagre som
-
+ JSON Data File (.json)JSON-format (.json)
-
+ CSV Data File (.csv)CSV-format (.csv)
-
+ JSON Data FileJSON-format
-
+ CSV Data FileCSV-format
-
+ Save Data AsLagre 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.
-
-
-
-
+ UnknownUkjent
-
+ 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 VersionFilversjon
-
+ 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 ConflictVersjonskonflikt
-
+ 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
+
+
+ andog
-
- Could not create folder.
- Kunne ikke opprette mappe.
-
-
-
+ Found {0} orphaned file(s) in project folder.Fant {0} tapte filer i prosjektmappen.
-
+ RecoveredGjennopprettet
-
+ [{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 OptionsFlere 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 notesLegg til en mappe for plott-notater
-
+ Add a folder for character notesLegg til en mappe for karakterer
-
+ Add a folder for location notesLegg til en mappe for lokasjoner
-
+ Add example notes to the aboveLag eksempelfiler til ovennevnte
-
+ Add chapters to the novel folderLegg til kapitler i romanmappen
-
+ Add scenes to each chapterLegg til scener i hvert kapittel
@@ -4154,82 +4050,82 @@
ProjWizardFinalPage
-
+ SummarySammendrag
-
+ Project Name: {0}Prosjektnavn: {0}
-
+ Project Path: {0}Filbane: {0}
-
+ Fill the project with a minimal set of itemsFyll prosjektet med et minimalt innhold
-
+ Fill the project with example filesFyll prosjektet med eksempelfiler
-
+ Add a folder for plot notesLegg til en mappe for plott-notater
-
+ Add a folder for character notesLegg til en mappe for karakterer
-
+ Add a folder for location notesLegg til en mappe for lokasjoner
-
+ Add example notes to the aboveLag eksempelfiler til ovennevnte
-
+ Add {0} chapters to the novel folderLegg til {0} kapitler i romanmappen
-
+ Add {0} scenes to each chapterLegg til {0} scener i hvert kapittel
-
+ Add {0} scenesLegg 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.
-
+ DoneFerdig
-
+ FinishFullfør
@@ -4237,7 +4133,7 @@
ProjWizardFolderPage
-
+ Select Project FolderVelg prosjektmappe
@@ -4319,31 +4215,105 @@
ProjWizardPopulatePage
-
+ Populate ProjectFyll 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 itemsFyll prosjektet med et minimalt innhold
-
+ Fill the project with example filesFyll prosjektet med eksempelfiler
-
+ Show detailed options for filling the projectVis 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
-
+ SynopsisSammendrag
-
+ Document '{0}' is too big ({1} MB). Skipping.Dokumentet '{0}' er for stort ({1} MB). Hopper over.
-
+ ERRORFEIL
diff --git a/novelwriter/core/project.py b/novelwriter/core/project.py
index 7f01f632..cdcb83d0 100644
--- a/novelwriter/core/project.py
+++ b/novelwriter/core/project.py
@@ -482,8 +482,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(
From 402cb09bb6ec24153513f30a8e7d953c0616afb9 Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Thu, 10 Nov 2022 18:26:08 +0100
Subject: [PATCH 4/9] Fix tests of XML files and version number
---
tests/test_core/test_core_projectxml.py | 26 ++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/tests/test_core/test_core_projectxml.py b/tests/test_core/test_core_projectxml.py
index b9dce90c..a742b026 100644
--- a/tests/test_core/test_core_projectxml.py
+++ b/tests/test_core/test_core_projectxml.py
@@ -26,7 +26,7 @@ from shutil import copyfile
from datetime import datetime
from mock import causeOSError
-from tools import cmpFiles, writeFile
+from tools import XML_IGNORE, cmpFiles, writeFile
from novelwriter.core.item import NWItem
from novelwriter.core.projectxml import ProjectXMLReader, ProjectXMLWriter, XMLReadState
@@ -203,7 +203,7 @@ def testCoreProjectXML_ReadCurrent(monkeypatch, tstPaths, fncPath):
compFile = tstPaths.refDir / "projectXML_ReadCurrent.json"
with open(dumpFile, mode="w", encoding="utf-8") as dump:
json.dump(content, dump, indent=2)
- assert cmpFiles(dumpFile, compFile)
+ assert cmpFiles(dumpFile, compFile, ignoreStart=XML_IGNORE)
packedContent = []
mockProject = MockProject()
@@ -232,7 +232,7 @@ def testCoreProjectXML_ReadCurrent(monkeypatch, tstPaths, fncPath):
assert xmlWriter.write(data, packedContent, timeStamp, 1000) is True
assert xmlWriter.write(data, packedContent, timeStamp, 1000) is True
copyfile(outFile, tstFile)
- assert cmpFiles(tstFile, refFile)
+ assert cmpFiles(tstFile, refFile, ignoreStart=XML_IGNORE)
# END Test testCoreProjectXML_ReadCurrent
@@ -329,7 +329,7 @@ def testCoreProjectXML_ReadLegacy10(tstPaths, fncPath, mockRnd):
compFile = tstPaths.refDir / "projectXML_ReadLegacy10.json"
with open(dumpFile, mode="w", encoding="utf-8") as dump:
json.dump(content, dump, indent=2)
- assert cmpFiles(dumpFile, compFile)
+ assert cmpFiles(dumpFile, compFile, ignoreStart=XML_IGNORE)
packedContent = []
mockProject = MockProject()
@@ -374,7 +374,7 @@ def testCoreProjectXML_ReadLegacy10(tstPaths, fncPath, mockRnd):
testFile = tstPaths.outDir / "projectXML_ReadLegacy10.nwx"
compFile = tstPaths.refDir / "projectXML_ReadLegacy10.nwx"
copyfile(outFile, testFile)
- assert cmpFiles(testFile, compFile)
+ assert cmpFiles(testFile, compFile, ignoreStart=XML_IGNORE)
# END Test testCoreProjectXML_ReadLegacy10
@@ -471,7 +471,7 @@ def testCoreProjectXML_ReadLegacy11(tstPaths, fncPath, mockRnd):
compFile = tstPaths.refDir / "projectXML_ReadLegacy11.json"
with open(dumpFile, mode="w", encoding="utf-8") as dump:
json.dump(content, dump, indent=2)
- assert cmpFiles(dumpFile, compFile)
+ assert cmpFiles(dumpFile, compFile, ignoreStart=XML_IGNORE)
packedContent = []
mockProject = MockProject()
@@ -516,7 +516,7 @@ def testCoreProjectXML_ReadLegacy11(tstPaths, fncPath, mockRnd):
testFile = tstPaths.outDir / "projectXML_ReadLegacy11.nwx"
compFile = tstPaths.refDir / "projectXML_ReadLegacy11.nwx"
copyfile(outFile, testFile)
- assert cmpFiles(testFile, compFile)
+ assert cmpFiles(testFile, compFile, ignoreStart=XML_IGNORE)
# END Test testCoreProjectXML_ReadLegacy11
@@ -613,7 +613,7 @@ def testCoreProjectXML_ReadLegacy12(tstPaths, fncPath, mockRnd):
compFile = tstPaths.refDir / "projectXML_ReadLegacy12.json"
with open(dumpFile, mode="w", encoding="utf-8") as dump:
json.dump(content, dump, indent=2)
- assert cmpFiles(dumpFile, compFile)
+ assert cmpFiles(dumpFile, compFile, ignoreStart=XML_IGNORE)
packedContent = []
mockProject = MockProject()
@@ -661,7 +661,7 @@ def testCoreProjectXML_ReadLegacy12(tstPaths, fncPath, mockRnd):
testFile = tstPaths.outDir / "projectXML_ReadLegacy12.nwx"
compFile = tstPaths.refDir / "projectXML_ReadLegacy12.nwx"
copyfile(outFile, testFile)
- assert cmpFiles(testFile, compFile)
+ assert cmpFiles(testFile, compFile, ignoreStart=XML_IGNORE)
# END Test testCoreProjectXML_ReadLegacy12
@@ -758,7 +758,7 @@ def testCoreProjectXML_ReadLegacy13(tstPaths, fncPath, mockRnd):
compFile = tstPaths.refDir / "projectXML_ReadLegacy13.json"
with open(dumpFile, mode="w", encoding="utf-8") as dump:
json.dump(content, dump, indent=2)
- assert cmpFiles(dumpFile, compFile)
+ assert cmpFiles(dumpFile, compFile, ignoreStart=XML_IGNORE)
packedContent = []
mockProject = MockProject()
@@ -806,7 +806,7 @@ def testCoreProjectXML_ReadLegacy13(tstPaths, fncPath, mockRnd):
testFile = tstPaths.outDir / "projectXML_ReadLegacy13.nwx"
compFile = tstPaths.refDir / "projectXML_ReadLegacy13.nwx"
copyfile(outFile, testFile)
- assert cmpFiles(testFile, compFile)
+ assert cmpFiles(testFile, compFile, ignoreStart=XML_IGNORE)
# END Test testCoreProjectXML_ReadLegacy13
@@ -903,7 +903,7 @@ def testCoreProjectXML_ReadLegacy14(tstPaths, fncPath, mockRnd):
compFile = tstPaths.refDir / "projectXML_ReadLegacy14.json"
with open(dumpFile, mode="w", encoding="utf-8") as dump:
json.dump(content, dump, indent=2)
- assert cmpFiles(dumpFile, compFile)
+ assert cmpFiles(dumpFile, compFile, ignoreStart=XML_IGNORE)
packedContent = []
mockProject = MockProject()
@@ -953,6 +953,6 @@ def testCoreProjectXML_ReadLegacy14(tstPaths, fncPath, mockRnd):
testFile = tstPaths.outDir / "projectXML_ReadLegacy14.nwx"
compFile = tstPaths.refDir / "projectXML_ReadLegacy14.nwx"
copyfile(outFile, testFile)
- assert cmpFiles(testFile, compFile)
+ assert cmpFiles(testFile, compFile, ignoreStart=XML_IGNORE)
# END Test testCoreProjectXML_ReadLegacy14
From 495209cd1a6f5149f4210e4b8b505610d7c3a9ea Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Fri, 11 Nov 2022 12:16:03 +0100
Subject: [PATCH 5/9] Fix tests of XML files and version number (again)
---
tests/test_core/test_core_projectxml.py | 33 +++++++++++++++----------
1 file changed, 20 insertions(+), 13 deletions(-)
diff --git a/tests/test_core/test_core_projectxml.py b/tests/test_core/test_core_projectxml.py
index a742b026..65fd23b9 100644
--- a/tests/test_core/test_core_projectxml.py
+++ b/tests/test_core/test_core_projectxml.py
@@ -26,7 +26,7 @@ from shutil import copyfile
from datetime import datetime
from mock import causeOSError
-from tools import XML_IGNORE, cmpFiles, writeFile
+from tools import cmpFiles, writeFile
from novelwriter.core.item import NWItem
from novelwriter.core.projectxml import ProjectXMLReader, ProjectXMLWriter, XMLReadState
@@ -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.
@@ -203,7 +210,7 @@ def testCoreProjectXML_ReadCurrent(monkeypatch, tstPaths, fncPath):
compFile = tstPaths.refDir / "projectXML_ReadCurrent.json"
with open(dumpFile, mode="w", encoding="utf-8") as dump:
json.dump(content, dump, indent=2)
- assert cmpFiles(dumpFile, compFile, ignoreStart=XML_IGNORE)
+ assert cmpFiles(dumpFile, compFile)
packedContent = []
mockProject = MockProject()
@@ -232,7 +239,7 @@ def testCoreProjectXML_ReadCurrent(monkeypatch, tstPaths, fncPath):
assert xmlWriter.write(data, packedContent, timeStamp, 1000) is True
assert xmlWriter.write(data, packedContent, timeStamp, 1000) is True
copyfile(outFile, tstFile)
- assert cmpFiles(tstFile, refFile, ignoreStart=XML_IGNORE)
+ assert cmpFiles(tstFile, refFile)
# END Test testCoreProjectXML_ReadCurrent
@@ -329,7 +336,7 @@ def testCoreProjectXML_ReadLegacy10(tstPaths, fncPath, mockRnd):
compFile = tstPaths.refDir / "projectXML_ReadLegacy10.json"
with open(dumpFile, mode="w", encoding="utf-8") as dump:
json.dump(content, dump, indent=2)
- assert cmpFiles(dumpFile, compFile, ignoreStart=XML_IGNORE)
+ assert cmpFiles(dumpFile, compFile)
packedContent = []
mockProject = MockProject()
@@ -374,7 +381,7 @@ def testCoreProjectXML_ReadLegacy10(tstPaths, fncPath, mockRnd):
testFile = tstPaths.outDir / "projectXML_ReadLegacy10.nwx"
compFile = tstPaths.refDir / "projectXML_ReadLegacy10.nwx"
copyfile(outFile, testFile)
- assert cmpFiles(testFile, compFile, ignoreStart=XML_IGNORE)
+ assert cmpFiles(testFile, compFile)
# END Test testCoreProjectXML_ReadLegacy10
@@ -471,7 +478,7 @@ def testCoreProjectXML_ReadLegacy11(tstPaths, fncPath, mockRnd):
compFile = tstPaths.refDir / "projectXML_ReadLegacy11.json"
with open(dumpFile, mode="w", encoding="utf-8") as dump:
json.dump(content, dump, indent=2)
- assert cmpFiles(dumpFile, compFile, ignoreStart=XML_IGNORE)
+ assert cmpFiles(dumpFile, compFile)
packedContent = []
mockProject = MockProject()
@@ -516,7 +523,7 @@ def testCoreProjectXML_ReadLegacy11(tstPaths, fncPath, mockRnd):
testFile = tstPaths.outDir / "projectXML_ReadLegacy11.nwx"
compFile = tstPaths.refDir / "projectXML_ReadLegacy11.nwx"
copyfile(outFile, testFile)
- assert cmpFiles(testFile, compFile, ignoreStart=XML_IGNORE)
+ assert cmpFiles(testFile, compFile)
# END Test testCoreProjectXML_ReadLegacy11
@@ -613,7 +620,7 @@ def testCoreProjectXML_ReadLegacy12(tstPaths, fncPath, mockRnd):
compFile = tstPaths.refDir / "projectXML_ReadLegacy12.json"
with open(dumpFile, mode="w", encoding="utf-8") as dump:
json.dump(content, dump, indent=2)
- assert cmpFiles(dumpFile, compFile, ignoreStart=XML_IGNORE)
+ assert cmpFiles(dumpFile, compFile)
packedContent = []
mockProject = MockProject()
@@ -661,7 +668,7 @@ def testCoreProjectXML_ReadLegacy12(tstPaths, fncPath, mockRnd):
testFile = tstPaths.outDir / "projectXML_ReadLegacy12.nwx"
compFile = tstPaths.refDir / "projectXML_ReadLegacy12.nwx"
copyfile(outFile, testFile)
- assert cmpFiles(testFile, compFile, ignoreStart=XML_IGNORE)
+ assert cmpFiles(testFile, compFile)
# END Test testCoreProjectXML_ReadLegacy12
@@ -758,7 +765,7 @@ def testCoreProjectXML_ReadLegacy13(tstPaths, fncPath, mockRnd):
compFile = tstPaths.refDir / "projectXML_ReadLegacy13.json"
with open(dumpFile, mode="w", encoding="utf-8") as dump:
json.dump(content, dump, indent=2)
- assert cmpFiles(dumpFile, compFile, ignoreStart=XML_IGNORE)
+ assert cmpFiles(dumpFile, compFile)
packedContent = []
mockProject = MockProject()
@@ -806,7 +813,7 @@ def testCoreProjectXML_ReadLegacy13(tstPaths, fncPath, mockRnd):
testFile = tstPaths.outDir / "projectXML_ReadLegacy13.nwx"
compFile = tstPaths.refDir / "projectXML_ReadLegacy13.nwx"
copyfile(outFile, testFile)
- assert cmpFiles(testFile, compFile, ignoreStart=XML_IGNORE)
+ assert cmpFiles(testFile, compFile)
# END Test testCoreProjectXML_ReadLegacy13
@@ -903,7 +910,7 @@ def testCoreProjectXML_ReadLegacy14(tstPaths, fncPath, mockRnd):
compFile = tstPaths.refDir / "projectXML_ReadLegacy14.json"
with open(dumpFile, mode="w", encoding="utf-8") as dump:
json.dump(content, dump, indent=2)
- assert cmpFiles(dumpFile, compFile, ignoreStart=XML_IGNORE)
+ assert cmpFiles(dumpFile, compFile)
packedContent = []
mockProject = MockProject()
@@ -953,6 +960,6 @@ def testCoreProjectXML_ReadLegacy14(tstPaths, fncPath, mockRnd):
testFile = tstPaths.outDir / "projectXML_ReadLegacy14.nwx"
compFile = tstPaths.refDir / "projectXML_ReadLegacy14.nwx"
copyfile(outFile, testFile)
- assert cmpFiles(testFile, compFile, ignoreStart=XML_IGNORE)
+ assert cmpFiles(testFile, compFile)
# END Test testCoreProjectXML_ReadLegacy14
From 36cf5c1d7601a642ff1e396c9cd5c739f26cc812 Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Fri, 11 Nov 2022 17:24:04 +0100
Subject: [PATCH 6/9] Merge new changes and update changelog
---
CHANGELOG.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4b2fe932..33ab1d95 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -71,8 +71,9 @@ opened, a request to update the file format will show up.
* 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. Issue #1189.
- PR #1221.
+ 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.
From a1213f1e84fba2d0f591a82b0624996548cb17af Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sat, 12 Nov 2022 13:08:55 +0100
Subject: [PATCH 7/9] Rename class project variable
---
novelwriter/core/index.py | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/novelwriter/core/index.py b/novelwriter/core/index.py
index 249fd19d..c48dbb58 100644
--- a/novelwriter/core/index.py
+++ b/novelwriter/core/index.py
@@ -58,13 +58,13 @@ 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
@@ -74,7 +74,7 @@ class NWIndex:
return
def __repr__(self):
- return f""
+ return f""
##
# Properties
@@ -113,11 +113,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
@@ -140,7 +140,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,7 +171,7 @@ 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)
@@ -186,7 +186,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 +222,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
@@ -737,8 +737,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 +802,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 +885,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)
From 74d71f24ca16ba1dd34d684a49ff90116aa7f935 Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sat, 12 Nov 2022 18:22:30 +0100
Subject: [PATCH 8/9] Improve the setOrder method in the NWTree class, and
improve tests
---
novelwriter/core/tree.py | 23 ++++++---------
tests/test_core/test_core_tree.py | 49 ++++++++++++++++++++++++++++++-
2 files changed, 57 insertions(+), 15 deletions(-)
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/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
From e7ce13f6473e2d0dcbdc3f680f402384d65b330a Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sat, 12 Nov 2022 18:23:13 +0100
Subject: [PATCH 9/9] Rebuild index when opdating project (#1235)
---
novelwriter/core/index.py | 24 ++++++++++++++++++------
novelwriter/core/project.py | 5 ++++-
novelwriter/guimain.py | 13 ++-----------
tests/test_core/test_core_index.py | 9 ++++++++-
tests/test_core/test_core_project.py | 14 +++++++++++++-
5 files changed, 45 insertions(+), 20 deletions(-)
diff --git a/novelwriter/core/index.py b/novelwriter/core/index.py
index c48dbb58..bdd49925 100644
--- a/novelwriter/core/index.py
+++ b/novelwriter/core/index.py
@@ -68,7 +68,7 @@ class NWIndex:
self._indexBroken = False
# TimeStamps
- self._indexChange = 0
+ self._indexChange = 0.0
self._rootChange = {}
return
@@ -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.
"""
@@ -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
@@ -176,7 +188,7 @@ class NWIndex:
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)
@@ -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
diff --git a/novelwriter/core/project.py b/novelwriter/core/project.py
index cdcb83d0..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
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/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