Add docs i18n build script

This commit is contained in:
Veronica Berglyd Olsen
2025-02-03 00:24:27 +01:00
parent b0169067be
commit 85af7d7f03
5 changed files with 44 additions and 1 deletions
+2 -1
View File
@@ -22,8 +22,9 @@ i18n/*.qph
# Documentation
/docs/build/
/docs/source/locales/**/*.mo
/novelwriter/assets/help/
/novelwriter/assets/manual.pdf
/novelwriter/assets/manual*.pdf
*.qch
*.qhc
.~lock.*
+2
View File
@@ -0,0 +1,2 @@
# French translation authors, one name per line
Karduin
Binary file not shown.
+6
View File
@@ -213,6 +213,12 @@ if __name__ == "__main__":
cmdUpdateDocsPo.add_argument("lang", nargs="+")
cmdUpdateDocsPo.set_defaults(func=utils.assets.updateDocsTranslationSources)
# Build Docs i18n Files
cmdBuildU18nDocs = parsers.add_parser(
"docs-lrelease", help="Build the translated PDF manual files."
)
cmdBuildU18nDocs.set_defaults(func=utils.assets.buildDocsTranslationAssets)
# Build Manual
cmdBuildManual = parsers.add_parser(
"manual", help="Build the help documentation as a PDF (requires LaTeX)."
+34
View File
@@ -21,6 +21,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
from __future__ import annotations
import argparse
import os
import subprocess
import sys
import zipfile
@@ -284,6 +285,39 @@ def updateDocsTranslationSources(args: argparse.Namespace) -> None:
return
def buildDocsTranslationAssets(args: argparse.Namespace | None = None) -> None:
"""Build the documentation i18n PDF files."""
print("")
print("Building Docs Manuals")
print("=====================")
print("")
docsDir = ROOT_DIR / "docs"
locsDir = ROOT_DIR / "docs" / "source" / "locales"
pdfFile = ROOT_DIR / "docs" / "build" / "latex" / "manual.pdf"
locsDir.mkdir(exist_ok=True)
build = [i.stem for i in locsDir.iterdir() if i.is_dir()]
for code in build:
data = (locsDir / f"authors_{code}.conf").read_text(encoding="utf-8")
authors = [x for x in data.splitlines() if x and not x.startswith("#")]
env = os.environ.copy()
env["SPHINX_I18N_AUTHORS"] = ", ".join(authors)
exCode = subprocess.call(
f"make -e SPHINXOPTS=\"-D language='{code}'\" clean latexpdf",
cwd=docsDir, env=env, shell=True
)
if exCode == 0:
print("")
pdfFile.rename(ROOT_DIR / "novelwriter" / "assets" / f"manual_{code}.pdf")
else:
raise Exception(f"Build returned error code {exCode}")
print("")
return
def cleanBuiltAssets(args: argparse.Namespace | None = None) -> None:
"""Remove assets built by this script."""
print("")