From c7bfb1b21ed0ec3fc7d6b1fe3b682807a14e2dd1 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Thu, 9 Nov 2023 18:44:08 +0100 Subject: [PATCH] Change to always use project language for generating documents --- novelwriter/core/docbuild.py | 6 +----- novelwriter/core/tohtml.py | 16 ++++----------- novelwriter/core/tokenizer.py | 3 --- novelwriter/dialogs/projsettings.py | 32 +++++++++++++++++++++++------ novelwriter/tools/manussettings.py | 14 ------------- 5 files changed, 31 insertions(+), 40 deletions(-) diff --git a/novelwriter/core/docbuild.py b/novelwriter/core/docbuild.py index 8c4b4ca5..75906d9a 100644 --- a/novelwriter/core/docbuild.py +++ b/novelwriter/core/docbuild.py @@ -248,13 +248,9 @@ class NWBuildDocument: def _setupBuild(self, bldObj: Tokenizer) -> dict: """Configure the build object.""" # Get Settings - buildLang = self._build.getStr("format.buildLang") textFont = self._build.getStr("format.textFont") textSize = self._build.getInt("format.textSize") - # The language lookup dict is reloaded if needed - self._project.setProjectLang(buildLang) - fontFamily = textFont or CONFIG.textFont bldFont = QFont(fontFamily, textSize) fontInfo = QFontInfo(bldFont) @@ -287,7 +283,7 @@ class NWBuildDocument: if isinstance(bldObj, ToOdt): bldObj.setColourHeaders(self._build.getBool("odt.addColours")) - bldObj.setLanguage(buildLang) + bldObj.setLanguage(self._project.data.language) scale = nwLabels.UNIT_SCALE.get(self._build.getStr("format.pageUnit"), 1.0) pW, pH = nwLabels.PAPER_SIZE.get(self._build.getStr("format.pageSize"), (-1.0, -1.0)) diff --git a/novelwriter/core/tohtml.py b/novelwriter/core/tohtml.py index 2dd1eed9..ac73418d 100644 --- a/novelwriter/core/tohtml.py +++ b/novelwriter/core/tohtml.py @@ -31,7 +31,7 @@ from pathlib import Path from novelwriter import CONFIG from novelwriter.common import formatTimeStamp -from novelwriter.constants import nwHeadFmt, nwKeyWords, nwLabels, nwHtmlUnicode, trConst +from novelwriter.constants import nwHeadFmt, nwKeyWords, nwLabels, nwHtmlUnicode from novelwriter.core.project import NWProject from novelwriter.core.tokenizer import Tokenizer, stripEscape @@ -456,12 +456,8 @@ class ToHtml(Tokenizer): def _formatSynopsis(self, text: str) -> str: """Apply HTML formatting to synopsis.""" - if self._genMode == self.M_PREVIEW: - sSynop = self._trSynopsis - return f"
{sSynop}: {text}
\n" - else: - sSynop = self._localLookup("Synopsis") - return f"{sSynop}: {text}
\n" + sSynop = self._localLookup("Synopsis") + return f"{sSynop}: {text}
\n" def _formatComments(self, text: str) -> str: """Apply HTML formatting to comments.""" @@ -477,11 +473,7 @@ class ToHtml(Tokenizer): if not valid or not bits or bits[0] not in nwLabels.KEY_NAME: return "" - if self._genMode == self.M_PREVIEW: - result = f" " - else: - result = f" " - + result = f" " if len(bits) > 1: if bits[0] == nwKeyWords.TAG_KEY: result += f"{bits[1]}" diff --git a/novelwriter/core/tokenizer.py b/novelwriter/core/tokenizer.py index 63518ca7..4f4a8378 100644 --- a/novelwriter/core/tokenizer.py +++ b/novelwriter/core/tokenizer.py @@ -167,9 +167,6 @@ class Tokenizer(ABC): self._localLookup = self._project.localLookup self.tr = partial(QCoreApplication.translate, "Tokenizer") - # Cached Translations - self._trSynopsis = self.tr("Synopsis") - # Format RegEx self._rxMarkdown = [ (QRegularExpression(nwRegEx.FMT_EI), [0, self.FMT_I_B, 0, self.FMT_I_E]), diff --git a/novelwriter/dialogs/projsettings.py b/novelwriter/dialogs/projsettings.py index 337c823a..4accfed0 100644 --- a/novelwriter/dialogs/projsettings.py +++ b/novelwriter/dialogs/projsettings.py @@ -107,10 +107,11 @@ class GuiProjectSettings(NPagedDialog): @pyqtSlot() def _doSave(self) -> None: """Save settings and close dialog.""" - project = SHARED.project + project = SHARED.project projName = self.tabMain.editName.text() bookTitle = self.tabMain.editTitle.text() bookAuthor = self.tabMain.editAuthor.text() + projLang = self.tabMain.projLang.currentData() spellLang = self.tabMain.spellLang.currentData() doBackup = not self.tabMain.doBackup.isChecked() @@ -119,6 +120,7 @@ class GuiProjectSettings(NPagedDialog): project.data.setAuthor(bookAuthor) project.data.setDoBackup(doBackup) project.data.setSpellLang(spellLang) + project.setProjectLang(projLang) if self.tabStatus.colChanged: newList, delList = self.tabStatus.getNewList() @@ -228,24 +230,42 @@ class GuiProjectEditMain(QWidget): self.tr("Change whenever you want!") ) + self.projLang = QComboBox(self) + self.projLang.setMaximumWidth(xW) + if CONFIG.hasEnchant: + for tag, language in CONFIG.listLanguages(CONFIG.LANG_PROJ): + self.projLang.addItem(language, tag) + self.mainForm.addRow( + self.tr("Project language"), + self.projLang, + self.tr("Used when building the manuscript.") + ) + + langIdx = 0 + if pData.language is not None: + langIdx = self.projLang.findData(pData.language) + if langIdx == -1: + langIdx = self.projLang.findData("en_GB") + if langIdx != -1: + self.projLang.setCurrentIndex(langIdx) + self.spellLang = QComboBox(self) self.spellLang.setMaximumWidth(xW) self.spellLang.addItem(self.tr("Default"), "None") if CONFIG.hasEnchant: for tag, language in SHARED.spelling.listDictionaries(): self.spellLang.addItem(language, tag) - self.mainForm.addRow( self.tr("Spell check language"), self.spellLang, self.tr("Overrides main preferences.") ) - spellIdx = 0 + langIdx = 0 if pData.spellLang is not None: - spellIdx = self.spellLang.findData(pData.spellLang) - if spellIdx != -1: - self.spellLang.setCurrentIndex(spellIdx) + langIdx = self.spellLang.findData(pData.spellLang) + if langIdx != -1: + self.spellLang.setCurrentIndex(langIdx) self.doBackup = NSwitch(self) self.doBackup.setChecked(not pData.doBackup) diff --git a/novelwriter/tools/manussettings.py b/novelwriter/tools/manussettings.py index cfa1b038..95235424 100644 --- a/novelwriter/tools/manussettings.py +++ b/novelwriter/tools/manussettings.py @@ -974,15 +974,6 @@ class _FormatTab(QWidget): self.formFormat = NConfigLayout() self.formFormat.addGroupLabel(self._build.getLabel("format.grpFormat")) - # Build Language - self.buildLang = QComboBox() - langauges = CONFIG.listLanguages(CONFIG.LANG_PROJ) - self.buildLang.addItem("[%s]" % self.tr("Not Set"), "None") - for langID, langName in langauges: - self.buildLang.addItem(langName, langID) - - self.formFormat.addRow(self._build.getLabel("format.buildLang"), self.buildLang) - # Font Family self.textFont = QLineEdit() self.textFont.setReadOnly(True) @@ -1103,10 +1094,6 @@ class _FormatTab(QWidget): def loadContent(self) -> None: """Populate the widgets.""" - langIdx = self.buildLang.findData(self._build.getStr("format.buildLang")) - if langIdx != -1: - self.buildLang.setCurrentIndex(langIdx) - textFont = self._build.getStr("format.textFont") if not textFont: textFont = str(CONFIG.textFont) @@ -1146,7 +1133,6 @@ class _FormatTab(QWidget): def saveContent(self) -> None: """Save choices back into build object.""" - self._build.setValue("format.buildLang", str(self.buildLang.currentData())) self._build.setValue("format.textFont", self.textFont.text()) self._build.setValue("format.textSize", self.textSize.value()) self._build.setValue("format.lineHeight", self.lineHeight.value())