Add support for external translation tools (#968)

* Make some minor translation fixes
* Remove crowdin file and add import function for crowdin zip file
* Rename fallback project lang file to en_GB
* Update all i18n files from crowdin exports
* Fix tests
* Update docs
This commit is contained in:
Veronica Berglyd Olsen
2022-01-18 19:17:20 +01:00
committed by GitHub
parent 537bf921d2
commit 25038e6cbb
29 changed files with 23239 additions and 23300 deletions
+1 -2
View File
@@ -9,8 +9,7 @@ The following contributions are welcome:
* Bugfixes for new or existing bugs. Please also report new bugs in the issue tracker even if you * Bugfixes for new or existing bugs. Please also report new bugs in the issue tracker even if you
also provide a fix. It makes it easier to keep track of what has been fixed and when. also provide a fix. It makes it easier to keep track of what has been fixed and when.
* New translations. You can read more about contributing translations * Translations via the [crowdin project page](https://crowdin.com/project/novelwriter).
[here](https://github.com/vkbo/novelWriter/blob/main/i18n/README.md).
* Improvements to the documentation. Particularly if the documentation is unclear. Please don't * Improvements to the documentation. Particularly if the documentation is unclear. Please don't
make any larger changes to the documentation without discussing if with the maintainer first. make any larger changes to the documentation without discussing if with the maintainer first.
* Adaptations, installation or packaging features targeting specific operating systems. * Adaptations, installation or packaging features targeting specific operating systems.
+6 -2
View File
@@ -9,6 +9,7 @@
[![release](https://img.shields.io/github/v/release/vkbo/novelwriter)](https://github.com/vkbo/novelWriter/releases) [![release](https://img.shields.io/github/v/release/vkbo/novelwriter)](https://github.com/vkbo/novelWriter/releases)
[![pypi](https://img.shields.io/pypi/v/novelwriter)](https://pypi.org/project/novelWriter) [![pypi](https://img.shields.io/pypi/v/novelwriter)](https://pypi.org/project/novelWriter)
[![python](https://img.shields.io/pypi/pyversions/novelwriter)](https://pypi.org/project/novelWriter) [![python](https://img.shields.io/pypi/pyversions/novelwriter)](https://pypi.org/project/novelWriter)
[![Crowdin](https://badges.crowdin.net/novelwriter/localized.svg)](https://crowdin.com/project/novelwriter)
<img align="left" style="margin: 0 16px 4px 0;" src="https://raw.githubusercontent.com/vkbo/novelWriter/main/setup/novelwriter.png"> <img align="left" style="margin: 0 16px 4px 0;" src="https://raw.githubusercontent.com/vkbo/novelWriter/main/setup/novelwriter.png">
@@ -67,8 +68,11 @@ also be appreciated, but please make an issue or a discussion topic first. Befor
code, please also read the full code, please also read the full
[Contributing Guide](https://github.com/vkbo/novelWriter/blob/main/CONTRIBUTING.md). [Contributing Guide](https://github.com/vkbo/novelWriter/blob/main/CONTRIBUTING.md).
New translations are always welcome. Please read the additional ### Translations
[instructions](https://github.com/vkbo/novelWriter/blob/main/i18n/README.md) for further details.
New translations are always welcome. This project uses crowdin to maintain translations, and you
can contribute translations at the [crowdin project page](https://crowdin.com/project/novelwriter).
See also the [Translations of novelWriter](https://github.com/vkbo/novelWriter/issues/93).
## Key Features ## Key Features
-5
View File
@@ -1,5 +0,0 @@
files:
- source: /i18n/nw_base.ts
translation: /i18n/nw_%locale_with_underscore%.ts
- source: /novelwriter/assets/i18n/project_en.json
translation: /novelwriter/assets/i18n/project_%locale_with_underscore%.json
-116
View File
@@ -1,116 +0,0 @@
# novelWriter Internationalisation (i18n)
Here you will find instructions for translating novelWriter to a new language or updating the
translations for an already existing supported language.
There are two areas relevant to localisation:
* The Qt5 GUI translation files, which consists of `nw_XX.ts` files. This is the bulk of the
translation work.
* The `project_XX.json` files. See [Project Localisation](#project-localisation) below.
**Important:**
When making a new translation, or updating an existing one, only commit the `nw_XX.ts` (and
`project_XX.json`) files you have made changes to. The `qtlupdate` command mentioned below may
modify all `nw_XX.ts` slightly, but please _don't_ commit those changes to the pull request.
## Qt5 GUI Localisation
You will need the translation tool Qt 5 Linguist on your system.
For Ubuntu/Debian, run:
```bash
sudo apt install qttools5-dev-tools
```
See also [Qt Linguist Manual: Translators](https://doc.qt.io/qt-5/linguist-translators.html).
### Workflow
Here's an overview of the localisation workflow:
1. First, create a new branch off of `main`, and there, generate a new `nw_XX.ts` translation file.
1. Load the translation file in Qt Linguist. Translate and save your changes.
1. Generate the `nw_XX.qm` file.
1. Run the application and verify your changes. Iterate from step 2.
1. Once finished, commit your changes and submit your pull request.
When you want to translate new changes, again create a new branch off of `main` and re-generate the
translation file. Continue from step 2.
### Generate an Updated Translation File
The `i18n` folder at the root of the repository contains the `nw_XX.ts` translation files.
Whether to add a new language to the translation framework, or to update the file against the
current source code, you must first run the `qtlupdate` command:
```bash
python3 setup.py qtlupdate i18n/nw_XX.ts
```
The file name must be in the correct format. All translation files must be located in the `i18n`
folder, start with `nw_` and end with `.ts`. In between goes the language code. It must be a valid
ISO language code, otherwise novelWriter will not accept the file.
For instance, the French translation uses the language code `fr`, so its translation file will be
`nw_fr.ts`
**Note:** If you run the `qtlupdate` command without a file name, it will update translation files
for all languages.
### Edit the Translation File in Qt Linguist
The `i18n/nw_XX.ts` file can be edited with the Qt Linguist application provided by Qt 5. This is
by far easier than manually editing the `.ts` file.
Please select "English" and "United Kingdom" as the _source_ language if prompted by Qt Linguist.
### Verify Your Translation
The application does not use `.ts` files directly. The `novelwriter/assets/i18n/nw_XX.qm` files are
the actual files used to translate the GUI into another language other than the default British
English. These files are not generated by default, but they can be built with:
```bash
python3 setup.py qtlrelease
```
You can now test the translation in novelWriter. The Preferences dialog should list the newly added
language, so go ahead and select it.
**Note:** Please do not submit the `.qm` files to the repository. Only the `.ts` file you just
added in the `i18n` folder is needed.
### Missing QtBase Translations
The default Qt dialogs also have translations, for instance for standard buttons like "Yes", "No",
"Ok", "Cancel", etc. Generally, these translation files are installed with the Qt libraries on your
system, and novelWriter will collect those translations from there. However, these translations are
missing for many languages.
As a starting point, there is no need to translate any entries in the `.ts` files that are under
elements starting with the letter "Q", like "QPlatformTheme", "QWizard", etc. If these turn up in
English in novelWriter after activating a translation, it means they are probably missing in the Qt
library, and you may also need to translate these.
These additional translation entries are generated from a file named `i18n/qtbase.py`, which is not
a file that novelWriter uses. It is there only to generate these additional entries for the `.ts`
files.
## Project Localisation
Projects can have a different language setting than the GUI itself. The files with format
`project_XX.json` in `novelwriter/assets/i18n` are simple translation maps for text that goes into
the exported documents generated by the Build Novel Project tool.
The files are loaded based on the language setting in the Build Novel Project tool. At the present
time, no other parts of the application use these files. Since these are used as replacement
lookups, they are maintained as plain JSON files. The main usage is to generate chapter headers as
number words.
Adding new translations for these files is easy. Just copy the `project_en.json` file, rename it to
the appropriate language coded filename, and open it in a text editor. Please use the underscore as
separator if a language needs to be localised to a specific country under a language. The importer
will for instance look for `en_US` first, then use `en` if it is not found. If there are no
matching files, the project falls back to using English.
+32 -40
View File
@@ -801,7 +801,7 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="1354" /> <location filename="../novelwriter/tools/build.py" line="1354" />
<source>&lt;b&gt;Build Time:&lt;/b&gt; {0}</source> <source>Build Time:</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
</context> </context>
@@ -984,7 +984,7 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="480" /> <location filename="../novelwriter/gui/doceditor.py" line="480" />
<source>This document has been changed outside of novelWriter while it was open. Overvrite the file on disk?</source> <source>This document has been changed outside of novelWriter while it was open. Overwrite the file on disk?</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
@@ -5029,103 +5029,95 @@
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
</context> </context>
<context>
<name>QGuiApplication</name>
<message>
<location filename="qtbase.py" line="32" />
<source>Translate this string to the string 'LTR' in left-to-right languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout.</source>
<translation type="unfinished" />
</message>
</context>
<context> <context>
<name>QPlatformTheme</name> <name>QPlatformTheme</name>
<message> <message>
<location filename="qtbase.py" line="40" /> <location filename="qtbase.py" line="32" />
<source>OK</source> <source>OK</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="41" /> <location filename="qtbase.py" line="33" />
<source>Save</source> <source>Save</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="42" /> <location filename="qtbase.py" line="34" />
<source>Save All</source> <source>Save All</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="43" /> <location filename="qtbase.py" line="35" />
<source>Open</source> <source>Open</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="44" /> <location filename="qtbase.py" line="36" />
<source>&amp;Yes</source> <source>&amp;Yes</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="45" /> <location filename="qtbase.py" line="37" />
<source>Yes to &amp;All</source> <source>Yes to &amp;All</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="46" /> <location filename="qtbase.py" line="38" />
<source>&amp;No</source> <source>&amp;No</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="47" /> <location filename="qtbase.py" line="39" />
<source>N&amp;o to All</source> <source>N&amp;o to All</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="48" /> <location filename="qtbase.py" line="40" />
<source>Abort</source> <source>Abort</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="49" /> <location filename="qtbase.py" line="41" />
<source>Retry</source> <source>Retry</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="50" /> <location filename="qtbase.py" line="42" />
<source>Ignore</source> <source>Ignore</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="51" /> <location filename="qtbase.py" line="43" />
<source>Close</source> <source>Close</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="52" /> <location filename="qtbase.py" line="44" />
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="53" /> <location filename="qtbase.py" line="45" />
<source>Discard</source> <source>Discard</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="54" /> <location filename="qtbase.py" line="46" />
<source>Help</source> <source>Help</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="55" /> <location filename="qtbase.py" line="47" />
<source>Apply</source> <source>Apply</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="56" /> <location filename="qtbase.py" line="48" />
<source>Reset</source> <source>Reset</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="57" /> <location filename="qtbase.py" line="49" />
<source>Restore Defaults</source> <source>Restore Defaults</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
@@ -5133,58 +5125,58 @@
<context> <context>
<name>QWizard</name> <name>QWizard</name>
<message> <message>
<location filename="qtbase.py" line="62" /> <location filename="qtbase.py" line="54" />
<source>Go Back</source> <source>Go Back</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="63" /> <location filename="qtbase.py" line="55" />
<source>&lt; &amp;Back</source> <source>&lt; &amp;Back</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="64" /> <location filename="qtbase.py" line="56" />
<source>Continue</source> <source>Continue</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="65" /> <location filename="qtbase.py" line="57" />
<source>&amp;Next</source> <source>&amp;Next</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="66" /> <location filename="qtbase.py" line="58" />
<source>&amp;Next &gt;</source> <source>&amp;Next &gt;</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="67" /> <location filename="qtbase.py" line="59" />
<source>Commit</source> <source>Commit</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="68" /> <location filename="qtbase.py" line="60" />
<source>Done</source> <source>Done</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="69" /> <location filename="qtbase.py" line="61" />
<source>&amp;Finish</source> <source>&amp;Finish</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="71" /> <location filename="qtbase.py" line="63" />
<location filename="qtbase.py" line="70" /> <location filename="qtbase.py" line="62" />
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="72" /> <location filename="qtbase.py" line="64" />
<source>Help</source> <source>Help</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
<message> <message>
<location filename="qtbase.py" line="73" /> <location filename="qtbase.py" line="65" />
<source>&amp;Help</source> <source>&amp;Help</source>
<translation type="unfinished" /> <translation type="unfinished" />
</message> </message>
+1084 -1092
View File
File diff suppressed because it is too large Load Diff
+165 -199
View File
@@ -121,7 +121,6 @@
<message> <message>
<location filename="../novelwriter/constants.py" line="139"/> <location filename="../novelwriter/constants.py" line="139"/>
<source>Entity</source> <source>Entity</source>
<translatorcomment>Plural should work best here</translatorcomment>
<translation>Entidades</translation> <translation>Entidades</translation>
</message> </message>
<message> <message>
@@ -221,19 +220,16 @@
<message> <message>
<location filename="../novelwriter/constants.py" line="189"/> <location filename="../novelwriter/constants.py" line="189"/>
<source>Chars</source> <source>Chars</source>
<translatorcomment>Abbreviated so it fits the column heading.</translatorcomment>
<translation>Caract.</translation> <translation>Caract.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/constants.py" line="190"/> <location filename="../novelwriter/constants.py" line="190"/>
<source>Words</source> <source>Words</source>
<translatorcomment>Abbreviated so it fits the column heading.</translatorcomment>
<translation>Palab.</translation> <translation>Palab.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/constants.py" line="191"/> <location filename="../novelwriter/constants.py" line="191"/>
<source>Pars</source> <source>Pars</source>
<translatorcomment>Abbreviated so it fits the column heading.</translatorcomment>
<translation>Párraf.</translation> <translation>Párraf.</translation>
</message> </message>
<message> <message>
@@ -324,25 +320,21 @@
<message> <message>
<location filename="../novelwriter/constants.py" line="230"/> <location filename="../novelwriter/constants.py" line="230"/>
<source>Left corner bracket</source> <source>Left corner bracket</source>
<translatorcomment>Según https://unicode-table.com/es/300C/</translatorcomment>
<translation>Soporte de la esquina izquierda</translation> <translation>Soporte de la esquina izquierda</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/constants.py" line="231"/> <location filename="../novelwriter/constants.py" line="231"/>
<source>Right corner bracket</source> <source>Right corner bracket</source>
<translatorcomment>Según https://unicode-table.com/es/300D/ pero manteniendo la consistencia</translatorcomment>
<translation>Soporte de la esquina derecha</translation> <translation>Soporte de la esquina derecha</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/constants.py" line="232"/> <location filename="../novelwriter/constants.py" line="232"/>
<source>Left white corner bracket</source> <source>Left white corner bracket</source>
<translatorcomment>Según https://unicode-table.com/es/300E/</translatorcomment>
<translation>Soporte de esquina blanco izquierdo</translation> <translation>Soporte de esquina blanco izquierdo</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/constants.py" line="233"/> <location filename="../novelwriter/constants.py" line="233"/>
<source>Right white corner bracket</source> <source>Right white corner bracket</source>
<translatorcomment>Según https://unicode-table.com/es/300F/</translatorcomment>
<translation>Soporte de equina blanco derecho</translation> <translation>Soporte de equina blanco derecho</translation>
</message> </message>
</context> </context>
@@ -405,13 +397,11 @@
<message> <message>
<location filename="../novelwriter/dialogs/about.py" line="162"/> <location filename="../novelwriter/dialogs/about.py" line="162"/>
<source>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.</source> <source>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.</source>
<translatorcomment>FSF does not support translations of the GPL. See https://www.gnu.org/licenses/translations.html</translatorcomment>
<translation>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.</translation> <translation>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.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/about.py" line="168"/> <location filename="../novelwriter/dialogs/about.py" line="168"/>
<source>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.</source> <source>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.</source>
<translatorcomment>FSF does not support translations of the GPL. See https://www.gnu.org/licenses/translations.html</translatorcomment>
<translation>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.</translation> <translation>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.</translation>
</message> </message>
<message> <message>
@@ -508,8 +498,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="116"/> <location filename="../novelwriter/tools/build.py" line="116"/>
<source>Leave blank to skip this heading, or set to a static text, like for instance &apos;{0}&apos;, to make a separator. The separator will be centred automatically and only appear between sections of the same type.</source> <source>Leave blank to skip this heading, or set to a static text, like for instance '{0}', to make a separator. The separator will be centred automatically and only appear between sections of the same type.</source>
<translation>Deje en blanco para omitir este encabezado, o componga un texto estático, por ejemplo &apos;{0}&apos;, para crear un separador. El separador quedará centrado automáticamente y solamente aparecerá entre secciones del mismo tipo.</translation> <translation type="unfinished">Leave blank to skip this heading, or set to a static text, like for instance '{0}', to make a separator. The separator will be centred automatically and only appear between sections of the same type.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="167"/> <location filename="../novelwriter/tools/build.py" line="167"/>
@@ -613,18 +603,18 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="346"/> <location filename="../novelwriter/tools/build.py" line="346"/>
<source>Include files with layouts other than &apos;Note&apos;.</source> <source>Include files with layouts other than 'Note'.</source>
<translation>Incluir archivos con otros esquemas aparte de &apos;Nota&apos;.</translation> <translation type="unfinished">Include files with layouts other than 'Note'.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="352"/> <location filename="../novelwriter/tools/build.py" line="352"/>
<source>Include files with layout &apos;Note&apos;.</source> <source>Include files with layout 'Note'.</source>
<translation>Incluir archivos con el esquema &apos;Nota&apos;.</translation> <translation type="unfinished">Include files with layout 'Note'.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="358"/> <location filename="../novelwriter/tools/build.py" line="358"/>
<source>Ignore the &apos;Include when building project&apos; setting and include all files in the output.</source> <source>Ignore the 'Include when building project' setting and include all files in the output.</source>
<translation>Omite la opción &apos;Incluir al compilar el proyecto&apos; e incluye todos los archivos en el resultado.</translation> <translation type="unfinished">Ignore the 'Include when building project' setting and include all files in the output.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="366"/> <location filename="../novelwriter/tools/build.py" line="366"/>
@@ -801,8 +791,8 @@
<name>GuiBuildNovelDocView</name> <name>GuiBuildNovelDocView</name>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="1200"/> <location filename="../novelwriter/tools/build.py" line="1200"/>
<source>This area will show the content of the document to be exported or printed. Press the &quot;Build Preview&quot; button to generate content.</source> <source>This area will show the content of the document to be exported or printed. Press the "Build Preview" button to generate content.</source>
<translation>Este área mostrará el contenido del documento a ser exportado o impreso. Presione el botón &quot;Vista Previa de la Novela&quot; para generar el contenido.</translation> <translation type="unfinished">This area will show the content of the document to be exported or printed. Press the "Build Preview" button to generate content.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="1352"/> <location filename="../novelwriter/tools/build.py" line="1352"/>
@@ -811,8 +801,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="1354"/> <location filename="../novelwriter/tools/build.py" line="1354"/>
<source>&lt;b&gt;Build Time:&lt;/b&gt; {0}</source> <source>Build Time:</source>
<translation>&lt;b&gt;Momento de compilación:&lt;/b&gt; {0}</translation> <translation type="unfinished">Build Time:</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -994,9 +984,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="480"/> <location filename="../novelwriter/gui/doceditor.py" line="480"/>
<source>This document has been changed outside of novelWriter while it was open. Overvrite the file on disk?</source> <source>This document has been changed outside of novelWriter while it was open. Overwrite the file on disk?</source>
<translatorcomment>Typo in original string: &quot;Overvrite&quot;</translatorcomment> <translation type="unfinished">This document has been changed outside of novelWriter while it was open. Overwrite the file on disk?</translation>
<translation>Este documento ha cambiado por fuera de novelWriter estando abierto. ¿Sobreescribir en el disco?</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="490"/> <location filename="../novelwriter/gui/doceditor.py" line="490"/>
@@ -1011,7 +1000,6 @@
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="704"/> <location filename="../novelwriter/gui/doceditor.py" line="704"/>
<source>Spell checking requires the package PyEnchant. It does not appear to be installed.</source> <source>Spell checking requires the package PyEnchant. It does not appear to be installed.</source>
<translatorcomment>La negación modifica al verbo haber. En la traducción literal pareciera que en cambio modificase al verbo parecer, pero no es así.</translatorcomment>
<translation>Para la corrección ortográfica se requiere del paquete PyEnchant. Parece que no se haya instalado.</translation> <translation>Para la corrección ortográfica se requiere del paquete PyEnchant. Parece que no se haya instalado.</translation>
</message> </message>
<message> <message>
@@ -1037,7 +1025,6 @@
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="1105"/> <location filename="../novelwriter/gui/doceditor.py" line="1105"/>
<source>Follow Tag</source> <source>Follow Tag</source>
<translatorcomment>Es un comando de menú contextual.</translatorcomment>
<translation>Continuar a Etiqueta</translation> <translation>Continuar a Etiqueta</translation>
</message> </message>
<message> <message>
@@ -1298,8 +1285,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/docviewer.py" line="249"/> <location filename="../novelwriter/gui/docviewer.py" line="249"/>
<source>Could not find the reference for tag &apos;{0}&apos;. It either doesn&apos;t exist, or the index is out of date. The index can be updated from the Tools menu, or by pressing {1}.</source> <source>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}.</source>
<translation>No se pudo encontrar la referencia para la etiqueta &apos;{0}&apos;. O bien no existe, o el índice se ha desactualizado. Se puede actualizar el índice desde el menú Herramientas, o presionando {1}.</translation> <translation type="unfinished">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}.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/docviewer.py" line="439"/> <location filename="../novelwriter/gui/docviewer.py" line="439"/>
@@ -1327,7 +1314,6 @@
<message> <message>
<location filename="../novelwriter/gui/itemdetails.py" line="71"/> <location filename="../novelwriter/gui/itemdetails.py" line="71"/>
<source>Label</source> <source>Label</source>
<translatorcomment>&quot;Label&quot; and &quot;Tag&quot; are used ambiguously in Spanish, which makes their translation especially hard</translatorcomment>
<translation>Rótulo</translation> <translation>Rótulo</translation>
</message> </message>
<message> <message>
@@ -1386,7 +1372,6 @@
<message> <message>
<location filename="../novelwriter/dialogs/itemeditor.py" line="137"/> <location filename="../novelwriter/dialogs/itemeditor.py" line="137"/>
<source>Layout</source> <source>Layout</source>
<translatorcomment>Nota: Mantener la consistencia de &quot;layout&quot; a &quot;esquema&quot; a lo largo de la localización.</translatorcomment>
<translation>Esquema</translation> <translation>Esquema</translation>
</message> </message>
</context> </context>
@@ -1425,7 +1410,6 @@
<message> <message>
<location filename="../novelwriter/guimain.py" line="201"/> <location filename="../novelwriter/guimain.py" line="201"/>
<source>Outline</source> <source>Outline</source>
<translatorcomment>Corresponde al nombre de la vista de estadísticas por documento.</translatorcomment>
<translation>Estructura</translation> <translation>Estructura</translation>
</message> </message>
<message> <message>
@@ -1481,8 +1465,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/guimain.py" line="483"/> <location filename="../novelwriter/guimain.py" line="483"/>
<source>The project was locked by the computer &apos;{0}&apos; ({1} {2}), last active on {3}.</source> <source>The project was locked by the computer '{0}' ({1} {2}), last active on {3}.</source>
<translation>El proyecto se bloqueó por la computadora &apos;{0}&apos; ({1} {2}), activo por última vez el {3}.</translation> <translation type="unfinished">The project was locked by the computer '{0}' ({1} {2}), last active on {3}.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/guimain.py" line="498"/> <location filename="../novelwriter/guimain.py" line="498"/>
@@ -1552,8 +1536,8 @@
<message> <message>
<location filename="../novelwriter/guimain.py" line="904"/> <location filename="../novelwriter/guimain.py" line="904"/>
<location filename="../novelwriter/guimain.py" line="902"/> <location filename="../novelwriter/guimain.py" line="902"/>
<source>Indexing: &apos;{0}&apos;</source> <source>Indexing: '{0}'</source>
<translation>Indexando: &apos;{0}&apos;</translation> <translation type="unfinished">Indexing: '{0}'</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/guimain.py" line="904"/> <location filename="../novelwriter/guimain.py" line="904"/>
@@ -1621,7 +1605,6 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="158"/> <location filename="../novelwriter/gui/mainmenu.py" line="158"/>
<source>Create new project</source> <source>Create new project</source>
<translatorcomment>Suggestion of tone: Instead of only expanding the action text, menu status tips could describe the latent action, e.g.: &quot;Creates a new proyect&quot;</translatorcomment>
<translation>Crea un nuevo proyecto</translation> <translation>Crea un nuevo proyecto</translation>
</message> </message>
<message> <message>
@@ -1857,7 +1840,6 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="324"/> <location filename="../novelwriter/gui/mainmenu.py" line="324"/>
<source>View document as HTML</source> <source>View document as HTML</source>
<translatorcomment>This explanation obscures meaning more than it explains it to the user</translatorcomment>
<translation>Abre la vista previa HTML del documento</translation> <translation>Abre la vista previa HTML del documento</translation>
</message> </message>
<message> <message>
@@ -2522,8 +2504,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="866"/> <location filename="../novelwriter/gui/mainmenu.py" line="866"/>
<source>Increase the text block&apos;s left margin</source> <source>Increase the text block's left margin</source>
<translation>Aumenta el margen izquierdo del bloque de texto</translation> <translation type="unfinished">Increase the text block's left margin</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="872"/> <location filename="../novelwriter/gui/mainmenu.py" line="872"/>
@@ -2532,8 +2514,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="873"/> <location filename="../novelwriter/gui/mainmenu.py" line="873"/>
<source>Increase the text block&apos;s right margin</source> <source>Increase the text block's right margin</source>
<translation>Aumenta el margen derecho del bloque de texto</translation> <translation type="unfinished">Increase the text block's right margin</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="882"/> <location filename="../novelwriter/gui/mainmenu.py" line="882"/>
@@ -2672,8 +2654,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="1002"/> <location filename="../novelwriter/gui/mainmenu.py" line="1002"/>
<source>Edit the project&apos;s word list</source> <source>Edit the project's word list</source>
<translation>Edita la lista de palabras del proyecto</translation> <translation type="unfinished">Edit the project's word list</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="1010"/> <location filename="../novelwriter/gui/mainmenu.py" line="1010"/>
@@ -2868,7 +2850,6 @@
<message> <message>
<location filename="../novelwriter/gui/noveltree.py" line="68"/> <location filename="../novelwriter/gui/noveltree.py" line="68"/>
<source>Words</source> <source>Words</source>
<translatorcomment>Abbreviation because of (lack of) column space</translatorcomment>
<translation>Palab.</translation> <translation>Palab.</translation>
</message> </message>
<message> <message>
@@ -3099,7 +3080,6 @@
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="1044"/> <location filename="../novelwriter/dialogs/preferences.py" line="1044"/>
<source>Automatically add space before any of these symbols.</source> <source>Automatically add space before any of these symbols.</source>
<translatorcomment>Is this a comma-separated list?</translatorcomment>
<translation>Añade un espacio automáticamente delante de un símbolo de esta lista.</translation> <translation>Añade un espacio automáticamente delante de un símbolo de esta lista.</translation>
</message> </message>
<message> <message>
@@ -3162,13 +3142,13 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="545"/> <location filename="../novelwriter/dialogs/preferences.py" line="545"/>
<source>Maximum text width in &quot;Normal Mode&quot;</source> <source>Maximum text width in "Normal Mode"</source>
<translation>Anchura máxima del texto en &quot;Modo Normal&quot;</translation> <translation type="unfinished">Maximum text width in "Normal Mode"</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="547"/> <location filename="../novelwriter/dialogs/preferences.py" line="547"/>
<source>Set to 0 to disable this feature.</source> <source>Set to 0 to disable this feature.</source>
<translation type="unfinished"></translation> <translation type="unfinished">Set to 0 to disable this feature.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="605"/> <location filename="../novelwriter/dialogs/preferences.py" line="605"/>
@@ -3180,18 +3160,18 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="558"/> <location filename="../novelwriter/dialogs/preferences.py" line="558"/>
<source>Maximum text width in &quot;Focus Mode&quot;</source> <source>Maximum text width in "Focus Mode"</source>
<translation>Anchura máxima del texto en &quot;Modo Enfocado&quot;</translation> <translation type="unfinished">Maximum text width in "Focus Mode"</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="560"/> <location filename="../novelwriter/dialogs/preferences.py" line="560"/>
<source>The maximum width cannot be disabled.</source> <source>The maximum width cannot be disabled.</source>
<translation type="unfinished"></translation> <translation type="unfinished">The maximum width cannot be disabled.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="568"/> <location filename="../novelwriter/dialogs/preferences.py" line="568"/>
<source>Hide document footer in &quot;Focus Mode&quot;</source> <source>Hide document footer in "Focus Mode"</source>
<translation>Esconder el pie del documento en &quot;Modo Enfocado&quot;</translation> <translation type="unfinished">Hide document footer in "Focus Mode"</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="570"/> <location filename="../novelwriter/dialogs/preferences.py" line="570"/>
@@ -3216,7 +3196,7 @@
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="591"/> <location filename="../novelwriter/dialogs/preferences.py" line="591"/>
<source>The minimum margin around the text in the editor and viewer.</source> <source>The minimum margin around the text in the editor and viewer.</source>
<translation type="unfinished"></translation> <translation type="unfinished">The minimum margin around the text in the editor and viewer.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="602"/> <location filename="../novelwriter/dialogs/preferences.py" line="602"/>
@@ -3339,12 +3319,12 @@
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="772"/> <location filename="../novelwriter/dialogs/preferences.py" line="772"/>
<source>Set to 0 to disable this feature.</source> <source>Set to 0 to disable this feature.</source>
<translation type="unfinished"></translation> <translation type="unfinished">Set to 0 to disable this feature.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="773"/> <location filename="../novelwriter/dialogs/preferences.py" line="773"/>
<source>lines</source> <source>lines</source>
<translation type="unfinished"></translation> <translation type="unfinished">lines</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="780"/> <location filename="../novelwriter/dialogs/preferences.py" line="780"/>
@@ -3880,7 +3860,6 @@
<message> <message>
<location filename="../novelwriter/dialogs/projsettings.py" line="219"/> <location filename="../novelwriter/dialogs/projsettings.py" line="219"/>
<source>Spell check language</source> <source>Spell check language</source>
<translatorcomment>This label is short on line length</translatorcomment>
<translation>Idioma a comprobar la ortografía</translation> <translation>Idioma a comprobar la ortografía</translation>
</message> </message>
<message> <message>
@@ -3892,7 +3871,6 @@
<message> <message>
<location filename="../novelwriter/dialogs/projsettings.py" line="233"/> <location filename="../novelwriter/dialogs/projsettings.py" line="233"/>
<source>No backup on close</source> <source>No backup on close</source>
<translatorcomment>This label is short on line length</translatorcomment>
<translation>No respaldar el proyecto al cerrar</translation> <translation>No respaldar el proyecto al cerrar</translation>
</message> </message>
</context> </context>
@@ -4077,8 +4055,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projload.py" line="230"/> <location filename="../novelwriter/dialogs/projload.py" line="230"/>
<source>Remove &apos;{0}&apos; from the recent projects list? The project files will not be deleted.</source> <source>Remove '{0}' from the recent projects list? The project files will not be deleted.</source>
<translation>¿Quitar &apos;{0}&apos; de la lista de proyectos recientes? No se eliminarán los archivos del proyecto.</translation> <translation type="unfinished">Remove '{0}' from the recent projects list? The project files will not be deleted.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -4119,7 +4097,6 @@
<message> <message>
<location filename="../novelwriter/gui/projtree.py" line="89"/> <location filename="../novelwriter/gui/projtree.py" line="89"/>
<source>Words</source> <source>Words</source>
<translatorcomment>Abbreviated so it fits the column heading.</translatorcomment>
<translation>Palab.</translation> <translation>Palab.</translation>
</message> </message>
<message> <message>
@@ -4206,8 +4183,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/projtree.py" line="504"/> <location filename="../novelwriter/gui/projtree.py" line="504"/>
<source>Permanently delete file &apos;{0}&apos;?</source> <source>Permanently delete file '{0}'?</source>
<translation>¿Eliminar el archivo &apos;{0}&apos; permanentemente?</translation> <translation type="unfinished">Permanently delete file '{0}'?</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/projtree.py" line="524"/> <location filename="../novelwriter/gui/projtree.py" line="524"/>
@@ -4216,8 +4193,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/projtree.py" line="538"/> <location filename="../novelwriter/gui/projtree.py" line="538"/>
<source>Move file &apos;{0}&apos; to Trash?</source> <source>Move file '{0}' to Trash?</source>
<translation>¿Mover el archivo &apos;{0}&apos; a la Papelera?</translation> <translation type="unfinished">Move file '{0}' to Trash?</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/projtree.py" line="569"/> <location filename="../novelwriter/gui/projtree.py" line="569"/>
@@ -4237,8 +4214,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/projtree.py" line="978"/> <location filename="../novelwriter/gui/projtree.py" line="978"/>
<source>There is nowhere to add item with name &apos;{0}&apos;.</source> <source>There is nowhere to add item with name '{0}'.</source>
<translation>No hay donde añadir el ítem de nombre &apos;{0}&apos;.</translation> <translation type="unfinished">There is nowhere to add item with name '{0}'.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -4353,8 +4330,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/wordlist.py" line="132"/> <location filename="../novelwriter/dialogs/wordlist.py" line="132"/>
<source>The word &apos;{0}&apos; is already in the word list.</source> <source>The word '{0}' is already in the word list.</source>
<translation>La palabra &apos;{0}&apos; ya existe en la lista de palabras.</translation> <translation type="unfinished">The word '{0}' is already in the word list.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -4663,9 +4640,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/core/project.py" line="504"/> <location filename="../novelwriter/core/project.py" line="504"/>
<source>The format of your project will now be updated. You may also have to make a few minor changes to your title page and unnumbered chapters. Please check the &apos;Project Format Changes &gt; File Format 1.3&apos; section of the documentation for more information. It is available from the Help menu.</source> <source>The format of your project will now be updated. You may also have to make a few minor changes to your title page and unnumbered chapters. Please check the 'Project Format Changes &gt; File Format 1.3' section of the documentation for more information. It is available from the Help menu.</source>
<translatorcomment>Until a translated version of the documentation is available, it is best to keep the reference in English, otherwise the user will lack the ability to access it even (and particularly) if they don&apos;t speak the language.</translatorcomment> <translation type="unfinished">The format of your project will now be updated. You may also have to make a few minor changes to your title page and unnumbered chapters. Please check the 'Project Format Changes &gt; File Format 1.3' section of the documentation for more information. It is available from the Help menu.</translation>
<translation>Se actualizará el formato de su proyecto. Es posible que deba hacer leves cambios a los títulos de página y a los capítulos sin numerar. Para más información, por favor verifique la sección &apos;Project Format Changes &gt; File Format 1.3&apos; de la documentación (en idioma inglés). Está disponible a través del menú de Ayuda.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/core/project.py" line="518"/> <location filename="../novelwriter/core/project.py" line="518"/>
@@ -4675,7 +4651,6 @@
<message> <message>
<location filename="../novelwriter/core/project.py" line="519"/> <location filename="../novelwriter/core/project.py" line="519"/>
<source>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?</source> <source>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?</source>
<translatorcomment>Suggestion: &quot;Current version is {1}.&quot;</translatorcomment>
<translation>Este proyecto se ha guardado en una versión nueva de novelWriter, la versión {0}. Ésta es la versión {1}. Si procede a abrir el proyecto, algunos atributos y opciones no serán preservadas, pero en general el proyecto no presentará problemas. ¿Continuar abriendo el proyecto?</translation> <translation>Este proyecto se ha guardado en una versión nueva de novelWriter, la versión {0}. Ésta es la versión {1}. Si procede a abrir el proyecto, algunos atributos y opciones no serán preservadas, pero en general el proyecto no presentará problemas. ¿Continuar abriendo el proyecto?</translation>
</message> </message>
<message> <message>
@@ -4746,8 +4721,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/core/project.py" line="857"/> <location filename="../novelwriter/core/project.py" line="857"/>
<source>Project backed up to &apos;{0}&apos;</source> <source>Project backed up to '{0}'</source>
<translation>Se ha respaldado el proyecto a &apos;{0}&apos;</translation> <translation type="unfinished">Project backed up to '{0}'</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/core/project.py" line="907"/> <location filename="../novelwriter/core/project.py" line="907"/>
@@ -4851,8 +4826,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/projwizard.py" line="298"/> <location filename="../novelwriter/tools/projwizard.py" line="298"/>
<source>Select which additional root folders to make, and how to populate the Novel folder. If you don&apos;t want to add chapters or scenes, set the values to 0. You can add scenes without chapters.</source> <source>Select which additional root folders to make, and how to populate the Novel folder. If you don't want to add chapters or scenes, set the values to 0. You can add scenes without chapters.</source>
<translation>Escoja qué carpetas raíz han de crearse, y cómo ha de poblarse la carpeta Novela. Si no desea añadir capítulos o escenas, establezca su valor a 0. Se permite añadir escenas sin capítulos.</translation> <translation type="unfinished">Select which additional root folders to make, and how to populate the Novel folder. If you don't want to add chapters or scenes, set the values to 0. You can add scenes without chapters.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/projwizard.py" line="308"/> <location filename="../novelwriter/tools/projwizard.py" line="308"/>
@@ -4867,7 +4842,6 @@
<location filename="../novelwriter/tools/projwizard.py" line="315"/> <location filename="../novelwriter/tools/projwizard.py" line="315"/>
<location filename="../novelwriter/tools/projwizard.py" line="312"/> <location filename="../novelwriter/tools/projwizard.py" line="312"/>
<source>{0} folder</source> <source>{0} folder</source>
<translatorcomment>{0} inicia una oración en el original.</translatorcomment>
<translation>Carpeta de {0}</translation> <translation>Carpeta de {0}</translation>
</message> </message>
<message> <message>
@@ -4905,8 +4879,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/projwizard.py" line="420"/> <location filename="../novelwriter/tools/projwizard.py" line="420"/>
<source>Press &apos;{0}&apos; to create the new project.</source> <source>Press '{0}' to create the new project.</source>
<translation>Presione &apos;{0}&apos; para crear el proyecto nuevo.</translation> <translation type="unfinished">Press '{0}' to create the new project.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/projwizard.py" line="421"/> <location filename="../novelwriter/tools/projwizard.py" line="421"/>
@@ -5024,7 +4998,7 @@
<message> <message>
<location filename="qtbase.py" line="18"/> <location filename="qtbase.py" line="18"/>
<source>OK</source> <source>OK</source>
<translation type="unfinished"></translation> <translation type="unfinished">OK</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -5032,187 +5006,179 @@
<message> <message>
<location filename="qtbase.py" line="23"/> <location filename="qtbase.py" line="23"/>
<source>&amp;OK</source> <source>&amp;OK</source>
<translation type="unfinished"></translation> <translation type="unfinished">&amp;OK</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="24"/> <location filename="qtbase.py" line="24"/>
<source>&amp;Save</source> <source>&amp;Save</source>
<translation type="unfinished">&amp;Guardar</translation> <translation>&amp;Guardar</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="25"/> <location filename="qtbase.py" line="25"/>
<source>&amp;Cancel</source> <source>&amp;Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished">&amp;Cancel</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="26"/> <location filename="qtbase.py" line="26"/>
<source>&amp;Close</source> <source>&amp;Close</source>
<translation type="unfinished"></translation> <translation type="unfinished">&amp;Close</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="27"/> <location filename="qtbase.py" line="27"/>
<source>Close without Saving</source> <source>Close without Saving</source>
<translation type="unfinished"></translation> <translation type="unfinished">Close without Saving</translation>
</message>
</context>
<context>
<name>QGuiApplication</name>
<message>
<location filename="qtbase.py" line="32"/>
<source>Translate this string to the string &apos;LTR&apos; in left-to-right languages or to &apos;RTL&apos; in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout.</source>
<translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>
<name>QPlatformTheme</name> <name>QPlatformTheme</name>
<message> <message>
<location filename="qtbase.py" line="40"/> <location filename="qtbase.py" line="32"/>
<source>OK</source> <source>OK</source>
<translation type="unfinished"></translation> <translation type="unfinished">OK</translation>
</message>
<message>
<location filename="qtbase.py" line="33"/>
<source>Save</source>
<translation>Guardar</translation>
</message>
<message>
<location filename="qtbase.py" line="34"/>
<source>Save All</source>
<translation type="unfinished">Save All</translation>
</message>
<message>
<location filename="qtbase.py" line="35"/>
<source>Open</source>
<translation type="unfinished">Open</translation>
</message>
<message>
<location filename="qtbase.py" line="36"/>
<source>&amp;Yes</source>
<translation type="unfinished">&amp;Yes</translation>
</message>
<message>
<location filename="qtbase.py" line="37"/>
<source>Yes to &amp;All</source>
<translation type="unfinished">Yes to &amp;All</translation>
</message>
<message>
<location filename="qtbase.py" line="38"/>
<source>&amp;No</source>
<translation type="unfinished">&amp;No</translation>
</message>
<message>
<location filename="qtbase.py" line="39"/>
<source>N&amp;o to All</source>
<translation type="unfinished">N&amp;o to All</translation>
</message>
<message>
<location filename="qtbase.py" line="40"/>
<source>Abort</source>
<translation type="unfinished">Abort</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="41"/> <location filename="qtbase.py" line="41"/>
<source>Save</source> <source>Retry</source>
<translation type="unfinished">Guardar</translation> <translation type="unfinished">Retry</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="42"/> <location filename="qtbase.py" line="42"/>
<source>Save All</source> <source>Ignore</source>
<translation type="unfinished"></translation> <translation type="unfinished">Ignore</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="43"/> <location filename="qtbase.py" line="43"/>
<source>Open</source> <source>Close</source>
<translation type="unfinished"></translation> <translation>Cerrar</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="44"/> <location filename="qtbase.py" line="44"/>
<source>&amp;Yes</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished">Cancel</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="45"/> <location filename="qtbase.py" line="45"/>
<source>Yes to &amp;All</source> <source>Discard</source>
<translation type="unfinished"></translation> <translation type="unfinished">Discard</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="46"/> <location filename="qtbase.py" line="46"/>
<source>&amp;No</source> <source>Help</source>
<translation type="unfinished"></translation> <translation type="unfinished">Help</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="47"/> <location filename="qtbase.py" line="47"/>
<source>N&amp;o to All</source> <source>Apply</source>
<translation type="unfinished"></translation> <translation type="unfinished">Apply</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="48"/> <location filename="qtbase.py" line="48"/>
<source>Abort</source> <source>Reset</source>
<translation type="unfinished"></translation> <translation type="unfinished">Reset</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="49"/> <location filename="qtbase.py" line="49"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtbase.py" line="50"/>
<source>Ignore</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtbase.py" line="51"/>
<source>Close</source>
<translation type="unfinished">Cerrar</translation>
</message>
<message>
<location filename="qtbase.py" line="52"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtbase.py" line="53"/>
<source>Discard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtbase.py" line="54"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtbase.py" line="55"/>
<source>Apply</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtbase.py" line="56"/>
<source>Reset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtbase.py" line="57"/>
<source>Restore Defaults</source> <source>Restore Defaults</source>
<translation type="unfinished"></translation> <translation type="unfinished">Restore Defaults</translation>
</message> </message>
</context> </context>
<context> <context>
<name>QWizard</name> <name>QWizard</name>
<message> <message>
<location filename="qtbase.py" line="62"/> <location filename="qtbase.py" line="54"/>
<source>Go Back</source> <source>Go Back</source>
<translation type="unfinished"></translation> <translation type="unfinished">Go Back</translation>
</message>
<message>
<location filename="qtbase.py" line="55"/>
<source>&lt; &amp;Back</source>
<translation type="unfinished">&lt; &amp;Back</translation>
</message>
<message>
<location filename="qtbase.py" line="56"/>
<source>Continue</source>
<translation type="unfinished">Continue</translation>
</message>
<message>
<location filename="qtbase.py" line="57"/>
<source>&amp;Next</source>
<translation type="unfinished">&amp;Next</translation>
</message>
<message>
<location filename="qtbase.py" line="58"/>
<source>&amp;Next &gt;</source>
<translation type="unfinished">&amp;Next &gt;</translation>
</message>
<message>
<location filename="qtbase.py" line="59"/>
<source>Commit</source>
<translation type="unfinished">Commit</translation>
</message>
<message>
<location filename="qtbase.py" line="60"/>
<source>Done</source>
<translation type="unfinished">Done</translation>
</message>
<message>
<location filename="qtbase.py" line="61"/>
<source>&amp;Finish</source>
<translation type="unfinished">&amp;Finish</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="63"/> <location filename="qtbase.py" line="63"/>
<source>&lt; &amp;Back</source> <location filename="qtbase.py" line="62"/>
<translation type="unfinished"></translation> <source>Cancel</source>
<translation type="unfinished">Cancel</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="64"/> <location filename="qtbase.py" line="64"/>
<source>Continue</source> <source>Help</source>
<translation type="unfinished"></translation> <translation type="unfinished">Help</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="65"/> <location filename="qtbase.py" line="65"/>
<source>&amp;Next</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtbase.py" line="66"/>
<source>&amp;Next &gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtbase.py" line="67"/>
<source>Commit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtbase.py" line="68"/>
<source>Done</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtbase.py" line="69"/>
<source>&amp;Finish</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtbase.py" line="71"/>
<location filename="qtbase.py" line="70"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtbase.py" line="72"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtbase.py" line="73"/>
<source>&amp;Help</source> <source>&amp;Help</source>
<translation type="unfinished">&amp;Ayuda</translation> <translation>&amp;Ayuda</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -5224,8 +5190,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/core/tokenizer.py" line="316"/> <location filename="../novelwriter/core/tokenizer.py" line="316"/>
<source>Document &apos;{0}&apos; is too big ({1} MB). Skipping.</source> <source>Document '{0}' is too big ({1} MB). Skipping.</source>
<translation>El documento &apos;{0}&apos; es demasiado grande ({1} MB). Omitiéndolo.</translation> <translation type="unfinished">Document '{0}' is too big ({1} MB). Skipping.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/core/tokenizer.py" line="319"/> <location filename="../novelwriter/core/tokenizer.py" line="319"/>
-5210
View File
File diff suppressed because it is too large Load Diff
+5202
View File
File diff suppressed because it is too large Load Diff
+133 -141
View File
@@ -387,7 +387,7 @@
<message> <message>
<location filename="../novelwriter/dialogs/about.py" line="156"/> <location filename="../novelwriter/dialogs/about.py" line="156"/>
<source>i18n</source> <source>i18n</source>
<translation></translation> <translation type="unfinished">i18n</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/about.py" line="158"/> <location filename="../novelwriter/dialogs/about.py" line="158"/>
@@ -498,8 +498,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="116"/> <location filename="../novelwriter/tools/build.py" line="116"/>
<source>Leave blank to skip this heading, or set to a static text, like for instance &apos;{0}&apos;, to make a separator. The separator will be centred automatically and only appear between sections of the same type.</source> <source>Leave blank to skip this heading, or set to a static text, like for instance '{0}', to make a separator. The separator will be centred automatically and only appear between sections of the same type.</source>
<translation>La feltet stå tomt for å hoppe over overskriften, eller sett til en statisk tekst, slik som for eksempel &apos;{0}&apos;, for å lage en separator. Separatoren vil bli sentrert automatisk, og bare satt inn mellom scener av samme type.</translation> <translation type="unfinished">Leave blank to skip this heading, or set to a static text, like for instance '{0}', to make a separator. The separator will be centred automatically and only appear between sections of the same type.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="167"/> <location filename="../novelwriter/tools/build.py" line="167"/>
@@ -603,18 +603,18 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="346"/> <location filename="../novelwriter/tools/build.py" line="346"/>
<source>Include files with layouts other than &apos;Note&apos;.</source> <source>Include files with layouts other than 'Note'.</source>
<translation>Inkluder filer som ikke er notater.</translation> <translation type="unfinished">Include files with layouts other than 'Note'.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="352"/> <location filename="../novelwriter/tools/build.py" line="352"/>
<source>Include files with layout &apos;Note&apos;.</source> <source>Include files with layout 'Note'.</source>
<translation>Inkluder filer som er notater.</translation> <translation type="unfinished">Include files with layout 'Note'.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="358"/> <location filename="../novelwriter/tools/build.py" line="358"/>
<source>Ignore the &apos;Include when building project&apos; setting and include all files in the output.</source> <source>Ignore the 'Include when building project' setting and include all files in the output.</source>
<translation>Ignorer &apos;ta med ved eksport&apos;-instilling og ta med alle filer i resultatet.</translation> <translation type="unfinished">Ignore the 'Include when building project' setting and include all files in the output.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="366"/> <location filename="../novelwriter/tools/build.py" line="366"/>
@@ -674,42 +674,42 @@
<message> <message>
<location filename="../novelwriter/tools/build.py" line="441"/> <location filename="../novelwriter/tools/build.py" line="441"/>
<source>Open Document (.odt)</source> <source>Open Document (.odt)</source>
<translation></translation> <translation type="unfinished">Open Document (.odt)</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="445"/> <location filename="../novelwriter/tools/build.py" line="445"/>
<source>Flat Open Document (.fodt)</source> <source>Flat Open Document (.fodt)</source>
<translation></translation> <translation type="unfinished">Flat Open Document (.fodt)</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="449"/> <location filename="../novelwriter/tools/build.py" line="449"/>
<source>novelWriter HTML (.htm)</source> <source>novelWriter HTML (.htm)</source>
<translation></translation> <translation type="unfinished">novelWriter HTML (.htm)</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="453"/> <location filename="../novelwriter/tools/build.py" line="453"/>
<source>novelWriter Markdown (.nwd)</source> <source>novelWriter Markdown (.nwd)</source>
<translation></translation> <translation type="unfinished">novelWriter Markdown (.nwd)</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="457"/> <location filename="../novelwriter/tools/build.py" line="457"/>
<source>Standard Markdown (.md)</source> <source>Standard Markdown (.md)</source>
<translation></translation> <translation type="unfinished">Standard Markdown (.md)</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="461"/> <location filename="../novelwriter/tools/build.py" line="461"/>
<source>GitHub Markdown (.md)</source> <source>GitHub Markdown (.md)</source>
<translation></translation> <translation type="unfinished">GitHub Markdown (.md)</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="465"/> <location filename="../novelwriter/tools/build.py" line="465"/>
<source>JSON + novelWriter HTML (.json)</source> <source>JSON + novelWriter HTML (.json)</source>
<translation></translation> <translation type="unfinished">JSON + novelWriter HTML (.json)</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="469"/> <location filename="../novelwriter/tools/build.py" line="469"/>
<source>JSON + novelWriter Markdown (.json)</source> <source>JSON + novelWriter Markdown (.json)</source>
<translation></translation> <translation type="unfinished">JSON + novelWriter Markdown (.json)</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="473"/> <location filename="../novelwriter/tools/build.py" line="473"/>
@@ -729,12 +729,12 @@
<message> <message>
<location filename="../novelwriter/tools/build.py" line="809"/> <location filename="../novelwriter/tools/build.py" line="809"/>
<source>Open Document</source> <source>Open Document</source>
<translation></translation> <translation type="unfinished">Open Document</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="813"/> <location filename="../novelwriter/tools/build.py" line="813"/>
<source>Flat Open Document</source> <source>Flat Open Document</source>
<translation></translation> <translation type="unfinished">Flat Open Document</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="817"/> <location filename="../novelwriter/tools/build.py" line="817"/>
@@ -744,32 +744,32 @@
<message> <message>
<location filename="../novelwriter/tools/build.py" line="821"/> <location filename="../novelwriter/tools/build.py" line="821"/>
<source>novelWriter Markdown</source> <source>novelWriter Markdown</source>
<translation></translation> <translation type="unfinished">novelWriter Markdown</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="825"/> <location filename="../novelwriter/tools/build.py" line="825"/>
<source>Standard Markdown</source> <source>Standard Markdown</source>
<translation></translation> <translation type="unfinished">Standard Markdown</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="829"/> <location filename="../novelwriter/tools/build.py" line="829"/>
<source>GitHub Markdown</source> <source>GitHub Markdown</source>
<translation></translation> <translation type="unfinished">GitHub Markdown</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="833"/> <location filename="../novelwriter/tools/build.py" line="833"/>
<source>JSON + novelWriter HTML</source> <source>JSON + novelWriter HTML</source>
<translation></translation> <translation type="unfinished">JSON + novelWriter HTML</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="837"/> <location filename="../novelwriter/tools/build.py" line="837"/>
<source>JSON + novelWriter Markdown</source> <source>JSON + novelWriter Markdown</source>
<translation></translation> <translation type="unfinished">JSON + novelWriter Markdown</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="841"/> <location filename="../novelwriter/tools/build.py" line="841"/>
<source>PDF</source> <source>PDF</source>
<translation></translation> <translation type="unfinished">PDF</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="857"/> <location filename="../novelwriter/tools/build.py" line="857"/>
@@ -791,8 +791,8 @@
<name>GuiBuildNovelDocView</name> <name>GuiBuildNovelDocView</name>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="1200"/> <location filename="../novelwriter/tools/build.py" line="1200"/>
<source>This area will show the content of the document to be exported or printed. Press the &quot;Build Preview&quot; button to generate content.</source> <source>This area will show the content of the document to be exported or printed. Press the "Build Preview" button to generate content.</source>
<translation>Dette området vil vise innholdet av dokumentet som skal eksporteres. Trykk knappen merket med &quot;Lag forhåndsvisning&quot; for å oppdatere innholdet.</translation> <translation type="unfinished">This area will show the content of the document to be exported or printed. Press the "Build Preview" button to generate content.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="1352"/> <location filename="../novelwriter/tools/build.py" line="1352"/>
@@ -801,8 +801,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/build.py" line="1354"/> <location filename="../novelwriter/tools/build.py" line="1354"/>
<source>&lt;b&gt;Build Time:&lt;/b&gt; {0}</source> <source>Build Time:</source>
<translation>&lt;b&gt;Generert den:&lt;/b&gt; {0}</translation> <translation type="unfinished">Build Time:</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -830,12 +830,12 @@
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3009"/> <location filename="../novelwriter/gui/doceditor.py" line="3009"/>
<source>Words: {0} selected</source> <source>Words: {0} selected</source>
<translation type="unfinished"></translation> <translation type="unfinished">Words: {0} selected</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="3012"/> <location filename="../novelwriter/gui/doceditor.py" line="3012"/>
<source>Character count: {0}</source> <source>Character count: {0}</source>
<translation type="unfinished"></translation> <translation type="unfinished">Character count: {0}</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -980,12 +980,12 @@
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="479"/> <location filename="../novelwriter/gui/doceditor.py" line="479"/>
<source>File Changed on Disk</source> <source>File Changed on Disk</source>
<translation type="unfinished"></translation> <translation type="unfinished">File Changed on Disk</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="480"/> <location filename="../novelwriter/gui/doceditor.py" line="480"/>
<source>This document has been changed outside of novelWriter while it was open. Overvrite the file on disk?</source> <source>This document has been changed outside of novelWriter while it was open. Overwrite the file on disk?</source>
<translation type="unfinished"></translation> <translation type="unfinished">This document has been changed outside of novelWriter while it was open. Overwrite the file on disk?</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/doceditor.py" line="490"/> <location filename="../novelwriter/gui/doceditor.py" line="490"/>
@@ -1285,8 +1285,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/docviewer.py" line="249"/> <location filename="../novelwriter/gui/docviewer.py" line="249"/>
<source>Could not find the reference for tag &apos;{0}&apos;. It either doesn&apos;t exist, or the index is out of date. The index can be updated from the Tools menu, or by pressing {1}.</source> <source>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}.</source>
<translation>Kunne ikke finne referansen til knagg &apos;{0}&apos;. Enten finnes den ikke, eller er prosjektets indeks ikke oppdatert. Indeksen kan oppdateres fra Verktøy-menyen eller ved å trykke {1}.</translation> <translation type="unfinished">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}.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/docviewer.py" line="439"/> <location filename="../novelwriter/gui/docviewer.py" line="439"/>
@@ -1465,8 +1465,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/guimain.py" line="483"/> <location filename="../novelwriter/guimain.py" line="483"/>
<source>The project was locked by the computer &apos;{0}&apos; ({1} {2}), last active on {3}.</source> <source>The project was locked by the computer '{0}' ({1} {2}), last active on {3}.</source>
<translation>Prosjektet er låst av datamaskinen &apos;{0}&apos; ({1} {2}), siste registrerte aktivitet var {3}.</translation> <translation type="unfinished">The project was locked by the computer '{0}' ({1} {2}), last active on {3}.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/guimain.py" line="498"/> <location filename="../novelwriter/guimain.py" line="498"/>
@@ -1481,7 +1481,7 @@
<message> <message>
<location filename="../novelwriter/guimain.py" line="505"/> <location filename="../novelwriter/guimain.py" line="505"/>
<source>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.</source> <source>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.</source>
<translation type="unfinished"></translation> <translation type="unfinished">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.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/guimain.py" line="548"/> <location filename="../novelwriter/guimain.py" line="548"/>
@@ -1536,8 +1536,8 @@
<message> <message>
<location filename="../novelwriter/guimain.py" line="904"/> <location filename="../novelwriter/guimain.py" line="904"/>
<location filename="../novelwriter/guimain.py" line="902"/> <location filename="../novelwriter/guimain.py" line="902"/>
<source>Indexing: &apos;{0}&apos;</source> <source>Indexing: '{0}'</source>
<translation>Indekserer: &apos;{0}&apos;</translation> <translation type="unfinished">Indexing: '{0}'</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/guimain.py" line="904"/> <location filename="../novelwriter/guimain.py" line="904"/>
@@ -2415,7 +2415,7 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="796"/> <location filename="../novelwriter/gui/mainmenu.py" line="796"/>
<source>Set the text block format to Header 1 (Partition)</source> <source>Set the text block format to Header 1 (Partition)</source>
<translation type="unfinished"></translation> <translation type="unfinished">Set the text block format to Header 1 (Partition)</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="802"/> <location filename="../novelwriter/gui/mainmenu.py" line="802"/>
@@ -2425,7 +2425,7 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="803"/> <location filename="../novelwriter/gui/mainmenu.py" line="803"/>
<source>Set the text block format to Header 2 (Chapter)</source> <source>Set the text block format to Header 2 (Chapter)</source>
<translation type="unfinished"></translation> <translation type="unfinished">Set the text block format to Header 2 (Chapter)</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="809"/> <location filename="../novelwriter/gui/mainmenu.py" line="809"/>
@@ -2435,7 +2435,7 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="810"/> <location filename="../novelwriter/gui/mainmenu.py" line="810"/>
<source>Set the text block format to Header 3 (Scene)</source> <source>Set the text block format to Header 3 (Scene)</source>
<translation type="unfinished"></translation> <translation type="unfinished">Set the text block format to Header 3 (Scene)</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="816"/> <location filename="../novelwriter/gui/mainmenu.py" line="816"/>
@@ -2445,7 +2445,7 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="817"/> <location filename="../novelwriter/gui/mainmenu.py" line="817"/>
<source>Set the text block format to Header 4 (Section)</source> <source>Set the text block format to Header 4 (Section)</source>
<translation type="unfinished"></translation> <translation type="unfinished">Set the text block format to Header 4 (Section)</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="826"/> <location filename="../novelwriter/gui/mainmenu.py" line="826"/>
@@ -2455,7 +2455,7 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="827"/> <location filename="../novelwriter/gui/mainmenu.py" line="827"/>
<source>Set the text block format to Novel Title</source> <source>Set the text block format to Novel Title</source>
<translation type="unfinished"></translation> <translation type="unfinished">Set the text block format to Novel Title</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="832"/> <location filename="../novelwriter/gui/mainmenu.py" line="832"/>
@@ -2465,7 +2465,7 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="833"/> <location filename="../novelwriter/gui/mainmenu.py" line="833"/>
<source>Set the text block format to Unnumbered Chapter</source> <source>Set the text block format to Unnumbered Chapter</source>
<translation type="unfinished"></translation> <translation type="unfinished">Set the text block format to Unnumbered Chapter</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="841"/> <location filename="../novelwriter/gui/mainmenu.py" line="841"/>
@@ -2475,7 +2475,7 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="842"/> <location filename="../novelwriter/gui/mainmenu.py" line="842"/>
<source>Left-align the text block</source> <source>Left-align the text block</source>
<translation type="unfinished"></translation> <translation type="unfinished">Left-align the text block</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="848"/> <location filename="../novelwriter/gui/mainmenu.py" line="848"/>
@@ -2485,7 +2485,7 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="849"/> <location filename="../novelwriter/gui/mainmenu.py" line="849"/>
<source>Centre the text block</source> <source>Centre the text block</source>
<translation type="unfinished"></translation> <translation type="unfinished">Centre the text block</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="855"/> <location filename="../novelwriter/gui/mainmenu.py" line="855"/>
@@ -2495,7 +2495,7 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="856"/> <location filename="../novelwriter/gui/mainmenu.py" line="856"/>
<source>Right-align the text block</source> <source>Right-align the text block</source>
<translation type="unfinished"></translation> <translation type="unfinished">Right-align the text block</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="865"/> <location filename="../novelwriter/gui/mainmenu.py" line="865"/>
@@ -2504,8 +2504,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="866"/> <location filename="../novelwriter/gui/mainmenu.py" line="866"/>
<source>Increase the text block&apos;s left margin</source> <source>Increase the text block's left margin</source>
<translation type="unfinished"></translation> <translation type="unfinished">Increase the text block's left margin</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="872"/> <location filename="../novelwriter/gui/mainmenu.py" line="872"/>
@@ -2514,8 +2514,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="873"/> <location filename="../novelwriter/gui/mainmenu.py" line="873"/>
<source>Increase the text block&apos;s right margin</source> <source>Increase the text block's right margin</source>
<translation type="unfinished"></translation> <translation type="unfinished">Increase the text block's right margin</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="882"/> <location filename="../novelwriter/gui/mainmenu.py" line="882"/>
@@ -2525,7 +2525,7 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="883"/> <location filename="../novelwriter/gui/mainmenu.py" line="883"/>
<source>Change the text block format to comment</source> <source>Change the text block format to comment</source>
<translation type="unfinished"></translation> <translation type="unfinished">Change the text block format to comment</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="889"/> <location filename="../novelwriter/gui/mainmenu.py" line="889"/>
@@ -2535,7 +2535,7 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="890"/> <location filename="../novelwriter/gui/mainmenu.py" line="890"/>
<source>Strip text block format</source> <source>Strip text block format</source>
<translation type="unfinished"></translation> <translation type="unfinished">Strip text block format</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="899"/> <location filename="../novelwriter/gui/mainmenu.py" line="899"/>
@@ -2545,7 +2545,7 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="901"/> <location filename="../novelwriter/gui/mainmenu.py" line="901"/>
<source>Replace all straight single quotes in the selected text</source> <source>Replace all straight single quotes in the selected text</source>
<translation type="unfinished"></translation> <translation type="unfinished">Replace all straight single quotes in the selected text</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="907"/> <location filename="../novelwriter/gui/mainmenu.py" line="907"/>
@@ -2555,7 +2555,7 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="909"/> <location filename="../novelwriter/gui/mainmenu.py" line="909"/>
<source>Replace all straight double quotes in the selected text</source> <source>Replace all straight double quotes in the selected text</source>
<translation type="unfinished"></translation> <translation type="unfinished">Replace all straight double quotes in the selected text</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="915"/> <location filename="../novelwriter/gui/mainmenu.py" line="915"/>
@@ -2565,7 +2565,7 @@
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="917"/> <location filename="../novelwriter/gui/mainmenu.py" line="917"/>
<source>Remove all line breaks within paragraphs in the selected text</source> <source>Remove all line breaks within paragraphs in the selected text</source>
<translation type="unfinished"></translation> <translation type="unfinished">Remove all line breaks within paragraphs in the selected text</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="928"/> <location filename="../novelwriter/gui/mainmenu.py" line="928"/>
@@ -2654,8 +2654,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="1002"/> <location filename="../novelwriter/gui/mainmenu.py" line="1002"/>
<source>Edit the project&apos;s word list</source> <source>Edit the project's word list</source>
<translation>Vis eller endre prosjektets ordliste</translation> <translation type="unfinished">Edit the project's word list</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/mainmenu.py" line="1010"/> <location filename="../novelwriter/gui/mainmenu.py" line="1010"/>
@@ -3133,7 +3133,7 @@
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="531"/> <location filename="../novelwriter/dialogs/preferences.py" line="531"/>
<source>pt</source> <source>pt</source>
<translation></translation> <translation type="unfinished">pt</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="536"/> <location filename="../novelwriter/dialogs/preferences.py" line="536"/>
@@ -3142,13 +3142,13 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="545"/> <location filename="../novelwriter/dialogs/preferences.py" line="545"/>
<source>Maximum text width in &quot;Normal Mode&quot;</source> <source>Maximum text width in "Normal Mode"</source>
<translation>Maks tekstbredde i &quot;Normal-modues&quot;</translation> <translation type="unfinished">Maximum text width in "Normal Mode"</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="547"/> <location filename="../novelwriter/dialogs/preferences.py" line="547"/>
<source>Set to 0 to disable this feature.</source> <source>Set to 0 to disable this feature.</source>
<translation type="unfinished"></translation> <translation type="unfinished">Set to 0 to disable this feature.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="605"/> <location filename="../novelwriter/dialogs/preferences.py" line="605"/>
@@ -3156,22 +3156,22 @@
<location filename="../novelwriter/dialogs/preferences.py" line="561"/> <location filename="../novelwriter/dialogs/preferences.py" line="561"/>
<location filename="../novelwriter/dialogs/preferences.py" line="548"/> <location filename="../novelwriter/dialogs/preferences.py" line="548"/>
<source>px</source> <source>px</source>
<translation></translation> <translation type="unfinished">px</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="558"/> <location filename="../novelwriter/dialogs/preferences.py" line="558"/>
<source>Maximum text width in &quot;Focus Mode&quot;</source> <source>Maximum text width in "Focus Mode"</source>
<translation>Maks tekstbredde i &quot;Fokus-modues&quot;</translation> <translation type="unfinished">Maximum text width in "Focus Mode"</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="560"/> <location filename="../novelwriter/dialogs/preferences.py" line="560"/>
<source>The maximum width cannot be disabled.</source> <source>The maximum width cannot be disabled.</source>
<translation type="unfinished"></translation> <translation type="unfinished">The maximum width cannot be disabled.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="568"/> <location filename="../novelwriter/dialogs/preferences.py" line="568"/>
<source>Hide document footer in &quot;Focus Mode&quot;</source> <source>Hide document footer in "Focus Mode"</source>
<translation>Gjem dokumentets bunnlinje i &quot;Fokus-modus&quot;</translation> <translation type="unfinished">Hide document footer in "Focus Mode"</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="570"/> <location filename="../novelwriter/dialogs/preferences.py" line="570"/>
@@ -3196,7 +3196,7 @@
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="591"/> <location filename="../novelwriter/dialogs/preferences.py" line="591"/>
<source>The minimum margin around the text in the editor and viewer.</source> <source>The minimum margin around the text in the editor and viewer.</source>
<translation type="unfinished"></translation> <translation type="unfinished">The minimum margin around the text in the editor and viewer.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="602"/> <location filename="../novelwriter/dialogs/preferences.py" line="602"/>
@@ -3249,7 +3249,7 @@
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="707"/> <location filename="../novelwriter/dialogs/preferences.py" line="707"/>
<source>kB</source> <source>kB</source>
<translation></translation> <translation type="unfinished">kB</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="712"/> <location filename="../novelwriter/dialogs/preferences.py" line="712"/>
@@ -3319,12 +3319,12 @@
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="772"/> <location filename="../novelwriter/dialogs/preferences.py" line="772"/>
<source>Set to 0 to disable this feature.</source> <source>Set to 0 to disable this feature.</source>
<translation type="unfinished"></translation> <translation type="unfinished">Set to 0 to disable this feature.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="773"/> <location filename="../novelwriter/dialogs/preferences.py" line="773"/>
<source>lines</source> <source>lines</source>
<translation type="unfinished"></translation> <translation type="unfinished">lines</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="780"/> <location filename="../novelwriter/dialogs/preferences.py" line="780"/>
@@ -3391,7 +3391,7 @@
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="231"/> <location filename="../novelwriter/dialogs/preferences.py" line="231"/>
<source>pt</source> <source>pt</source>
<translation></translation> <translation type="unfinished">pt</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/preferences.py" line="236"/> <location filename="../novelwriter/dialogs/preferences.py" line="236"/>
@@ -3909,7 +3909,7 @@
<message> <message>
<location filename="../novelwriter/dialogs/projsettings.py" line="553"/> <location filename="../novelwriter/dialogs/projsettings.py" line="553"/>
<source>Save</source> <source>Save</source>
<translation type="unfinished">Lagre</translation> <translation>Lagre</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projsettings.py" line="554"/> <location filename="../novelwriter/dialogs/projsettings.py" line="554"/>
@@ -4055,8 +4055,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/projload.py" line="230"/> <location filename="../novelwriter/dialogs/projload.py" line="230"/>
<source>Remove &apos;{0}&apos; from the recent projects list? The project files will not be deleted.</source> <source>Remove '{0}' from the recent projects list? The project files will not be deleted.</source>
<translation>Vil du fjerne &apos;{0}&apos; fra listen over tidligere åpnede prosjekter? Selve prosjektfilene blir ikke slettet.</translation> <translation type="unfinished">Remove '{0}' from the recent projects list? The project files will not be deleted.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -4183,8 +4183,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/projtree.py" line="504"/> <location filename="../novelwriter/gui/projtree.py" line="504"/>
<source>Permanently delete file &apos;{0}&apos;?</source> <source>Permanently delete file '{0}'?</source>
<translation>Slette filen &apos;{0}&apos; for godt?</translation> <translation type="unfinished">Permanently delete file '{0}'?</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/projtree.py" line="524"/> <location filename="../novelwriter/gui/projtree.py" line="524"/>
@@ -4193,8 +4193,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/projtree.py" line="538"/> <location filename="../novelwriter/gui/projtree.py" line="538"/>
<source>Move file &apos;{0}&apos; to Trash?</source> <source>Move file '{0}' to Trash?</source>
<translation>Vil du flytte filen &apos;{0}&apos; til søpla?</translation> <translation type="unfinished">Move file '{0}' to Trash?</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/projtree.py" line="569"/> <location filename="../novelwriter/gui/projtree.py" line="569"/>
@@ -4214,8 +4214,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/gui/projtree.py" line="978"/> <location filename="../novelwriter/gui/projtree.py" line="978"/>
<source>There is nowhere to add item with name &apos;{0}&apos;.</source> <source>There is nowhere to add item with name '{0}'.</source>
<translation>Fant ikke noe sted å legge til enheten med navn &apos;{0}&apos;.</translation> <translation type="unfinished">There is nowhere to add item with name '{0}'.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -4330,8 +4330,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/dialogs/wordlist.py" line="132"/> <location filename="../novelwriter/dialogs/wordlist.py" line="132"/>
<source>The word &apos;{0}&apos; is already in the word list.</source> <source>The word '{0}' is already in the word list.</source>
<translation>Ordet &apos;{0}&apos; ligger allerede i ordlisten.</translation> <translation type="unfinished">The word '{0}' is already in the word list.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -4364,7 +4364,7 @@
<message> <message>
<location filename="../novelwriter/tools/writingstats.py" line="105"/> <location filename="../novelwriter/tools/writingstats.py" line="105"/>
<source>Histogram</source> <source>Histogram</source>
<translation></translation> <translation type="unfinished">Histogram</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/writingstats.py" line="133"/> <location filename="../novelwriter/tools/writingstats.py" line="133"/>
@@ -4636,12 +4636,12 @@
<message> <message>
<location filename="../novelwriter/core/project.py" line="493"/> <location filename="../novelwriter/core/project.py" line="493"/>
<source>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?</source> <source>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?</source>
<translation type="unfinished"></translation> <translation type="unfinished">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?</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/core/project.py" line="504"/> <location filename="../novelwriter/core/project.py" line="504"/>
<source>The format of your project will now be updated. You may also have to make a few minor changes to your title page and unnumbered chapters. Please check the &apos;Project Format Changes &gt; File Format 1.3&apos; section of the documentation for more information. It is available from the Help menu.</source> <source>The format of your project will now be updated. You may also have to make a few minor changes to your title page and unnumbered chapters. Please check the 'Project Format Changes &gt; File Format 1.3' section of the documentation for more information. It is available from the Help menu.</source>
<translation>Filformatet til dette prosjektet vil bli oppdatert. Du regne med å måtte gjøre noen mindre endringer tittelsiden og eventuelle unumrerte kapitler. Venligst se &apos;Project Format Changes &gt; File Format 1.3&apos; i brukermanualen for mer informasjon. Denne er tilgjengelig fra Hjelp-menyen.</translation> <translation type="unfinished">The format of your project will now be updated. You may also have to make a few minor changes to your title page and unnumbered chapters. Please check the 'Project Format Changes &gt; File Format 1.3' section of the documentation for more information. It is available from the Help menu.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/core/project.py" line="518"/> <location filename="../novelwriter/core/project.py" line="518"/>
@@ -4721,8 +4721,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/core/project.py" line="857"/> <location filename="../novelwriter/core/project.py" line="857"/>
<source>Project backed up to &apos;{0}&apos;</source> <source>Project backed up to '{0}'</source>
<translation>Sikkerhetskopi skrevet til &apos;{0}&apos;</translation> <translation type="unfinished">Project backed up to '{0}'</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/core/project.py" line="907"/> <location filename="../novelwriter/core/project.py" line="907"/>
@@ -4778,7 +4778,7 @@
<message> <message>
<location filename="../novelwriter/core/project.py" line="1421"/> <location filename="../novelwriter/core/project.py" line="1421"/>
<source>[{0}] {1}</source> <source>[{0}] {1}</source>
<translation></translation> <translation type="unfinished">[{0}] {1}</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/core/project.py" line="1426"/> <location filename="../novelwriter/core/project.py" line="1426"/>
@@ -4826,8 +4826,8 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/projwizard.py" line="298"/> <location filename="../novelwriter/tools/projwizard.py" line="298"/>
<source>Select which additional root folders to make, and how to populate the Novel folder. If you don&apos;t want to add chapters or scenes, set the values to 0. You can add scenes without chapters.</source> <source>Select which additional root folders to make, and how to populate the Novel folder. If you don't want to add chapters or scenes, set the values to 0. You can add scenes without chapters.</source>
<translation>Velg hvilke mapper du ønsker i prosjektet, og hvordan du ønsker å fylle hovedmappen for boken. Hvis du ikke ønsker å legge til kapitler og scener, sett verdiene til 0. Du kan også legge til scener uten å legge til kapitler.</translation> <translation type="unfinished">Select which additional root folders to make, and how to populate the Novel folder. If you don't want to add chapters or scenes, set the values to 0. You can add scenes without chapters.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/projwizard.py" line="308"/> <location filename="../novelwriter/tools/projwizard.py" line="308"/>
@@ -4879,18 +4879,18 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/projwizard.py" line="420"/> <location filename="../novelwriter/tools/projwizard.py" line="420"/>
<source>Press &apos;{0}&apos; to create the new project.</source> <source>Press '{0}' to create the new project.</source>
<translation>Trykk &apos;{0}&apos; for å opprette det nye prosjektet.</translation> <translation type="unfinished">Press '{0}' to create the new project.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/projwizard.py" line="421"/> <location filename="../novelwriter/tools/projwizard.py" line="421"/>
<source>Done</source> <source>Done</source>
<translation></translation> <translation type="unfinished">Done</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/tools/projwizard.py" line="421"/> <location filename="../novelwriter/tools/projwizard.py" line="421"/>
<source>Finish</source> <source>Finish</source>
<translation></translation> <translation type="unfinished">Finish</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -5029,103 +5029,95 @@
<translation>Lukk uten å lagre</translation> <translation>Lukk uten å lagre</translation>
</message> </message>
</context> </context>
<context>
<name>QGuiApplication</name>
<message>
<location filename="qtbase.py" line="32"/>
<source>Translate this string to the string &apos;LTR&apos; in left-to-right languages or to &apos;RTL&apos; in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>QPlatformTheme</name> <name>QPlatformTheme</name>
<message> <message>
<location filename="qtbase.py" line="40"/> <location filename="qtbase.py" line="32"/>
<source>OK</source> <source>OK</source>
<translation>OK</translation> <translation>OK</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="41"/> <location filename="qtbase.py" line="33"/>
<source>Save</source> <source>Save</source>
<translation>Lagre</translation> <translation>Lagre</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="42"/> <location filename="qtbase.py" line="34"/>
<source>Save All</source> <source>Save All</source>
<translation>Lagre alle</translation> <translation>Lagre alle</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="43"/> <location filename="qtbase.py" line="35"/>
<source>Open</source> <source>Open</source>
<translation>Åpne</translation> <translation>Åpne</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="44"/> <location filename="qtbase.py" line="36"/>
<source>&amp;Yes</source> <source>&amp;Yes</source>
<translation>&amp;Ja</translation> <translation>&amp;Ja</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="45"/> <location filename="qtbase.py" line="37"/>
<source>Yes to &amp;All</source> <source>Yes to &amp;All</source>
<translation>Ja til &amp;alle</translation> <translation>Ja til &amp;alle</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="46"/> <location filename="qtbase.py" line="38"/>
<source>&amp;No</source> <source>&amp;No</source>
<translation>&amp;Nei</translation> <translation>&amp;Nei</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="47"/> <location filename="qtbase.py" line="39"/>
<source>N&amp;o to All</source> <source>N&amp;o to All</source>
<translation>N&amp;ei til alle</translation> <translation>N&amp;ei til alle</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="48"/> <location filename="qtbase.py" line="40"/>
<source>Abort</source> <source>Abort</source>
<translation>Avbryt</translation> <translation>Avbryt</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="49"/> <location filename="qtbase.py" line="41"/>
<source>Retry</source> <source>Retry</source>
<translation>Prøv igjen</translation> <translation>Prøv igjen</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="50"/> <location filename="qtbase.py" line="42"/>
<source>Ignore</source> <source>Ignore</source>
<translation>Ignorer</translation> <translation>Ignorer</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="51"/> <location filename="qtbase.py" line="43"/>
<source>Close</source> <source>Close</source>
<translation>Lukk</translation> <translation>Lukk</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="52"/> <location filename="qtbase.py" line="44"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Avbryt</translation> <translation>Avbryt</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="53"/> <location filename="qtbase.py" line="45"/>
<source>Discard</source> <source>Discard</source>
<translation>Forkast</translation> <translation>Forkast</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="54"/> <location filename="qtbase.py" line="46"/>
<source>Help</source> <source>Help</source>
<translation>Hjelp</translation> <translation>Hjelp</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="55"/> <location filename="qtbase.py" line="47"/>
<source>Apply</source> <source>Apply</source>
<translation>Anvend</translation> <translation>Anvend</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="56"/> <location filename="qtbase.py" line="48"/>
<source>Reset</source> <source>Reset</source>
<translation>Nullstill</translation> <translation>Nullstill</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="57"/> <location filename="qtbase.py" line="49"/>
<source>Restore Defaults</source> <source>Restore Defaults</source>
<translation>Gjennopprett standard</translation> <translation>Gjennopprett standard</translation>
</message> </message>
@@ -5133,58 +5125,58 @@
<context> <context>
<name>QWizard</name> <name>QWizard</name>
<message> <message>
<location filename="qtbase.py" line="62"/> <location filename="qtbase.py" line="54"/>
<source>Go Back</source> <source>Go Back</source>
<translation> tilbake</translation> <translation> tilbake</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="63"/> <location filename="qtbase.py" line="55"/>
<source>&lt; &amp;Back</source> <source>&lt; &amp;Back</source>
<translation>&lt; &amp;Tilbake</translation> <translation>&lt; &amp;Tilbake</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="64"/> <location filename="qtbase.py" line="56"/>
<source>Continue</source> <source>Continue</source>
<translation>Fortsett</translation> <translation>Fortsett</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="65"/> <location filename="qtbase.py" line="57"/>
<source>&amp;Next</source> <source>&amp;Next</source>
<translation>&amp;Neste</translation> <translation>&amp;Neste</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="66"/> <location filename="qtbase.py" line="58"/>
<source>&amp;Next &gt;</source> <source>&amp;Next &gt;</source>
<translation>&amp;Neste &gt;</translation> <translation>&amp;Neste &gt;</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="67"/> <location filename="qtbase.py" line="59"/>
<source>Commit</source> <source>Commit</source>
<translation>Gjennomfør</translation> <translation>Gjennomfør</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="68"/> <location filename="qtbase.py" line="60"/>
<source>Done</source> <source>Done</source>
<translation>Ferdig</translation> <translation>Ferdig</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="69"/> <location filename="qtbase.py" line="61"/>
<source>&amp;Finish</source> <source>&amp;Finish</source>
<translation>&amp;Fullfør</translation> <translation>&amp;Fullfør</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="71"/> <location filename="qtbase.py" line="63"/>
<location filename="qtbase.py" line="70"/> <location filename="qtbase.py" line="62"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Avbryt</translation> <translation>Avbryt</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="72"/> <location filename="qtbase.py" line="64"/>
<source>Help</source> <source>Help</source>
<translation>Hjelp</translation> <translation>Hjelp</translation>
</message> </message>
<message> <message>
<location filename="qtbase.py" line="73"/> <location filename="qtbase.py" line="65"/>
<source>&amp;Help</source> <source>&amp;Help</source>
<translation>&amp;Hjelp</translation> <translation>&amp;Hjelp</translation>
</message> </message>
@@ -5198,13 +5190,13 @@
</message> </message>
<message> <message>
<location filename="../novelwriter/core/tokenizer.py" line="316"/> <location filename="../novelwriter/core/tokenizer.py" line="316"/>
<source>Document &apos;{0}&apos; is too big ({1} MB). Skipping.</source> <source>Document '{0}' is too big ({1} MB). Skipping.</source>
<translation>Dokumentet &apos;{0}&apos; er for stort ({1} MB). Hopper over.</translation> <translation type="unfinished">Document '{0}' is too big ({1} MB). Skipping.</translation>
</message> </message>
<message> <message>
<location filename="../novelwriter/core/tokenizer.py" line="319"/> <location filename="../novelwriter/core/tokenizer.py" line="319"/>
<source>ERROR</source> <source>ERROR</source>
<translation></translation> <translation type="unfinished">ERROR</translation>
</message> </message>
</context> </context>
</TS> </TS>
-5210
View File
File diff suppressed because it is too large Load Diff
+5202
View File
File diff suppressed because it is too large Load Diff
+176 -184
View File
File diff suppressed because it is too large Load Diff
-8
View File
@@ -26,14 +26,6 @@ QT_TRANSLATE_NOOP("QGnomeTheme", "&Cancel")
QT_TRANSLATE_NOOP("QGnomeTheme", "&Close") QT_TRANSLATE_NOOP("QGnomeTheme", "&Close")
QT_TRANSLATE_NOOP("QGnomeTheme", "Close without Saving") QT_TRANSLATE_NOOP("QGnomeTheme", "Close without Saving")
# QGuiApplication
# ===============
QT_TRANSLATE_NOOP("QGuiApplication", (
"Translate this string to the string 'LTR' in left-to-right languages or to "
"'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout."
))
# QPlatformTheme # QPlatformTheme
# ============== # ==============
+105
View File
@@ -0,0 +1,105 @@
{
"Synopsis": "Synopsis",
"Comment": "Comment",
"Notes": "Notes",
"0": "Zero",
"1": "One",
"2": "Two",
"3": "Three",
"4": "Four",
"5": "Five",
"6": "Six",
"7": "Seven",
"8": "Eight",
"9": "Nine",
"10": "Ten",
"11": "Eleven",
"12": "Twelve",
"13": "Thirteen",
"14": "Fourteen",
"15": "Fifteen",
"16": "Sixteen",
"17": "Seventeen",
"18": "Eighteen",
"19": "Nineteen",
"20": "Twenty",
"21": "Twenty-One",
"22": "Twenty-Two",
"23": "Twenty-Three",
"24": "Twenty-Four",
"25": "Twenty-Five",
"26": "Twenty-Six",
"27": "Twenty-Seven",
"28": "Twenty-Eight",
"29": "Twenty-Nine",
"30": "Thirty",
"31": "Thirty-One",
"32": "Thirty-Two",
"33": "Thirty-Three",
"34": "Thirty-Four",
"35": "Thirty-Five",
"36": "Thirty-Six",
"37": "Thirty-Seven",
"38": "Thirty-Eight",
"39": "Thirty-Nine",
"40": "Forty",
"41": "Forty-One",
"42": "Forty-Two",
"43": "Forty-Three",
"44": "Forty-Four",
"45": "Forty-Five",
"46": "Forty-Six",
"47": "Forty-Seven",
"48": "Forty-Eight",
"49": "Forty-Nine",
"50": "Fifty",
"51": "Fifty-One",
"52": "Fifty-Two",
"53": "Fifty-Three",
"54": "Fifty-Four",
"55": "Fifty-Five",
"56": "Fifty-Six",
"57": "Fifty-Seven",
"58": "Fifty-Eight",
"59": "Fifty-Nine",
"60": "Sixty",
"61": "Sixty-One",
"62": "Sixty-Two",
"63": "Sixty-Three",
"64": "Sixty-Four",
"65": "Sixty-Five",
"66": "Sixty-Six",
"67": "Sixty-Seven",
"68": "Sixty-Eight",
"69": "Sixty-Nine",
"70": "Seventy",
"71": "Seventy-One",
"72": "Seventy-Two",
"73": "Seventy-Three",
"74": "Seventy-Four",
"75": "Seventy-Five",
"76": "Seventy-Six",
"77": "Seventy-Seven",
"78": "Seventy-Eight",
"79": "Seventy-Nine",
"80": "Eighty",
"81": "Eighty-One",
"82": "Eighty-Two",
"83": "Eighty-Three",
"84": "Eighty-Four",
"85": "Eighty-Five",
"86": "Eighty-Six",
"87": "Eighty-Seven",
"88": "Eighty-Eight",
"89": "Eighty-Nine",
"90": "Ninety",
"91": "Ninety-One",
"92": "Ninety-Two",
"93": "Ninety-Three",
"94": "Ninety-Four",
"95": "Ninety-Five",
"96": "Ninety-Six",
"97": "Ninety-Seven",
"98": "Ninety-Eight",
"99": "Ninety-Nine"
}
+2 -2
View File
@@ -396,7 +396,7 @@ class Config:
elif lngSet == self.LANG_PROJ: elif lngSet == self.LANG_PROJ:
fPre = "project_" fPre = "project_"
fExt = ".json" fExt = ".json"
langList = {"en": "English"} langList = {"en_GB": QLocale("en_GB").nativeLanguageName().title()}
else: else:
return [] return []
@@ -407,7 +407,7 @@ class Config:
continue continue
qmLang = qmFile[len(fPre):-len(fExt)] qmLang = qmFile[len(fPre):-len(fExt)]
qmName = QLocale(qmLang).nativeLanguageName().title() qmName = QLocale(qmLang).nativeLanguageName().title()
if qmLang and qmName and qmLang != "en": if qmLang and qmName and qmLang != "en_GB":
langList[qmLang] = qmName langList[qmLang] = qmName
return sorted(langList.items(), key=lambda x: x[0]) return sorted(langList.items(), key=lambda x: x[0])
+5 -11
View File
@@ -1242,20 +1242,14 @@ class NWProject():
self.langData = {} self.langData = {}
return False return False
lngShort = self.projLang.split("_")[0] langFile = os.path.join(self.mainConf.nwLangPath, "project_%s.json" % self.projLang)
loadFile = os.path.join(self.mainConf.nwLangPath, "project_en.json") if not os.path.isfile(langFile):
chkFile1 = os.path.join(self.mainConf.nwLangPath, "project_%s.json" % self.projLang) langFile = os.path.join(self.mainConf.nwLangPath, "project_en_GB.json")
chkFile2 = os.path.join(self.mainConf.nwLangPath, "project_%s.json" % lngShort)
if os.path.isfile(chkFile1):
loadFile = chkFile1
elif os.path.isfile(chkFile2):
loadFile = chkFile2
try: try:
with open(loadFile, mode="r", encoding="utf-8") as inFile: with open(langFile, mode="r", encoding="utf-8") as inFile:
self.langData = json.load(inFile) self.langData = json.load(inFile)
logger.debug("Loaded project language file: %s", os.path.basename(loadFile)) logger.debug("Loaded project language file: %s", os.path.basename(langFile))
except Exception: except Exception:
logger.error("Failed to project language file") logger.error("Failed to project language file")
+1 -1
View File
@@ -479,7 +479,7 @@ class GuiDocEditor(QTextEdit):
self.tr("File Changed on Disk"), self.tr("File Changed on Disk"),
self.tr( self.tr(
"This document has been changed outside of novelWriter " "This document has been changed outside of novelWriter "
"while it was open. Overvrite the file on disk?" "while it was open. Overwrite the file on disk?"
) )
) )
if msgYes: if msgYes:
+1 -1
View File
@@ -1351,7 +1351,7 @@ class GuiBuildNovelDocView(QTextBrowser):
else: else:
strBuildTime = self.tr("Unknown") strBuildTime = self.tr("Unknown")
self.theTitle.setText(self.tr("<b>Build Time:</b> {0}").format(strBuildTime)) self.theTitle.setText("%s %s" % (self.tr("Build Time:"), strBuildTime))
return return
+5 -5
View File
@@ -1,17 +1,17 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="1.6-beta1" hexVersion="0x010600b1" fileVersion="1.3" timeStamp="2022-01-18 09:44:14"> <novelWriterXML appVersion="1.6-beta1" hexVersion="0x010600b1" fileVersion="1.3" timeStamp="2022-01-18 18:48:36">
<project> <project>
<name>Sample Project</name> <name>Sample Project</name>
<title>Sample Project</title> <title>Sample Project</title>
<author>Jane Smith</author> <author>Jane Smith</author>
<author>Jay Doh</author> <author>Jay Doh</author>
<saveCount>1276</saveCount> <saveCount>1283</saveCount>
<autoCount>198</autoCount> <autoCount>199</autoCount>
<editTime>63357</editTime> <editTime>63909</editTime>
</project> </project>
<settings> <settings>
<doBackup>False</doBackup> <doBackup>False</doBackup>
<language>en</language> <language>en_GB</language>
<spellCheck>True</spellCheck> <spellCheck>True</spellCheck>
<spellLang>None</spellLang> <spellLang>None</spellLang>
<autoOutline>True</autoOutline> <autoOutline>True</autoOutline>
+48
View File
@@ -27,6 +27,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
import os import os
import sys import sys
import shutil import shutil
import zipfile
import datetime import datetime
import subprocess import subprocess
import email.utils import email.utils
@@ -435,6 +436,47 @@ def buildSampleZip():
# Python Packaging # Python Packaging
# =============================================================================================== # # =============================================================================================== #
##
# Import Translations (import-i18n)
##
def importI18nUpdates(sysArgs):
"""Import new translation files from a zip file.
"""
print("")
print("Import Updated Translations")
print("===========================")
print("")
fileName = None
if len(sysArgs) >= 2:
if os.path.isfile(sysArgs[1]):
fileName = sysArgs[1]
if fileName is None:
print("File not found ...")
sys.exit(1)
projPath = os.path.join("novelwriter", "assets", "i18n")
mainPath = "i18n"
print("Loading file: %s" % fileName)
with zipfile.ZipFile(fileName) as zipObj:
for archFile in zipObj.namelist():
if archFile.startswith("nw_") and archFile.endswith(".ts"):
zipObj.extract(archFile, mainPath)
print("Extracted: %s > %s" % (archFile, os.path.join(mainPath, archFile)))
elif archFile.startswith("project_") and archFile.endswith(".json"):
zipObj.extract(archFile, projPath)
print("Extracted: %s > %s" % (archFile, os.path.join(projPath, archFile)))
else:
print("Skipped: %s" % archFile)
print("")
return
## ##
# Make Minimal Package (minimal-zip) # Make Minimal Package (minimal-zip)
## ##
@@ -1514,6 +1556,7 @@ if __name__ == "__main__":
"", "",
"Python Packaging:", "Python Packaging:",
"", "",
" import-i18n Import updated i18n files from a zip file.",
" minimal-zip Creates a minimal zip file of the core application without", " minimal-zip Creates a minimal zip file of the core application without",
" all the other source files. Defaults to tailor the zip file", " all the other source files. Defaults to tailor the zip file",
" for the current OS, but accepts a target OS flag to build", " for the current OS, but accepts a target OS flag to build",
@@ -1597,6 +1640,11 @@ if __name__ == "__main__":
# Python Packaging # Python Packaging
# ================ # ================
if "import-i18n" in sys.argv:
sys.argv.remove("import-i18n")
importI18nUpdates(sys.argv)
sys.exit(0) # Don't continue execution
if "minimal-zip" in sys.argv: if "minimal-zip" in sys.argv:
sys.argv.remove("minimal-zip") sys.argv.remove("minimal-zip")
makeMinimalPackage(targetOS) makeMinimalPackage(targetOS)
+1 -1
View File
@@ -10,7 +10,7 @@
</project> </project>
<settings> <settings>
<doBackup>False</doBackup> <doBackup>False</doBackup>
<language>en</language> <language>en_GB</language>
<spellCheck>False</spellCheck> <spellCheck>False</spellCheck>
<spellLang>None</spellLang> <spellLang>None</spellLang>
<autoOutline>True</autoOutline> <autoOutline>True</autoOutline>
+1 -1
View File
@@ -11,7 +11,7 @@
</project> </project>
<settings> <settings>
<doBackup>True</doBackup> <doBackup>True</doBackup>
<language>en</language> <language>en_GB</language>
<spellCheck>False</spellCheck> <spellCheck>False</spellCheck>
<spellLang>None</spellLang> <spellLang>None</spellLang>
<autoOutline>True</autoOutline> <autoOutline>True</autoOutline>
+1 -1
View File
@@ -243,7 +243,7 @@ def testBaseConfig_Init(monkeypatch, tmpDir, fncDir, outDir, refDir, filesDir):
theList = tstConf.listLanguages(tstConf.LANG_NW) theList = tstConf.listLanguages(tstConf.LANG_NW)
assert theList == [("en_GB", "British English")] assert theList == [("en_GB", "British English")]
theList = tstConf.listLanguages(tstConf.LANG_PROJ) theList = tstConf.listLanguages(tstConf.LANG_PROJ)
assert theList == [("en", "English")] assert theList == [("en_GB", "British English")]
theList = tstConf.listLanguages(None) theList = tstConf.listLanguages(None)
assert theList == [] assert theList == []