Add docs i18n build script
This commit is contained in:
+2
-1
@@ -22,8 +22,9 @@ i18n/*.qph
|
|||||||
|
|
||||||
# Documentation
|
# Documentation
|
||||||
/docs/build/
|
/docs/build/
|
||||||
|
/docs/source/locales/**/*.mo
|
||||||
/novelwriter/assets/help/
|
/novelwriter/assets/help/
|
||||||
/novelwriter/assets/manual.pdf
|
/novelwriter/assets/manual*.pdf
|
||||||
*.qch
|
*.qch
|
||||||
*.qhc
|
*.qhc
|
||||||
.~lock.*
|
.~lock.*
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# French translation authors, one name per line
|
||||||
|
Karduin
|
||||||
Binary file not shown.
@@ -213,6 +213,12 @@ if __name__ == "__main__":
|
|||||||
cmdUpdateDocsPo.add_argument("lang", nargs="+")
|
cmdUpdateDocsPo.add_argument("lang", nargs="+")
|
||||||
cmdUpdateDocsPo.set_defaults(func=utils.assets.updateDocsTranslationSources)
|
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
|
# Build Manual
|
||||||
cmdBuildManual = parsers.add_parser(
|
cmdBuildManual = parsers.add_parser(
|
||||||
"manual", help="Build the help documentation as a PDF (requires LaTeX)."
|
"manual", help="Build the help documentation as a PDF (requires LaTeX)."
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import zipfile
|
import zipfile
|
||||||
@@ -284,6 +285,39 @@ def updateDocsTranslationSources(args: argparse.Namespace) -> None:
|
|||||||
return
|
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:
|
def cleanBuiltAssets(args: argparse.Namespace | None = None) -> None:
|
||||||
"""Remove assets built by this script."""
|
"""Remove assets built by this script."""
|
||||||
print("")
|
print("")
|
||||||
|
|||||||
Reference in New Issue
Block a user