mirror of
https://github.com/MCV-Software/TWBlue.git
synced 2024-11-22 03:08:09 -06:00
Rebuilt documentation generators
This commit is contained in:
parent
ed80558273
commit
ab44ce6fcb
@ -1,28 +1,27 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from codecs import open
|
||||
""" This script converts the hold documentation (saved in markdown files) in a python file with a list of strings to translate it using gettext."""
|
||||
|
||||
def prepare_documentation_in_file(fileSource, fileDest):
|
||||
""" This takes documentation written in a markdown file and put all the contents in a python file, to create a translatable documentation.
|
||||
@fileSource str: A markdown(.md) file.
|
||||
@fileDest str: A file where this will put the new strings"""
|
||||
""" This takes documentation written in a markdown file and put all the contents in a python file, to create a translatable documentation.
|
||||
@fileSource str: A markdown(.md) file.
|
||||
@fileDest str: A file where this will put the new strings"""
|
||||
|
||||
f1 = open(fileSource, "r", encoding="utf-8")
|
||||
f2 = open(fileDest, "w", encoding="utf-8")
|
||||
lns = f1.readlines()
|
||||
f2.write("# -*- coding: utf-8 -*-\n")
|
||||
f2.write("documentation = [\n")
|
||||
for i in lns:
|
||||
if "\n" == i:
|
||||
newvar = "\"\","
|
||||
elif "\n" == i[-1]:
|
||||
newvar = "\"\"\"%s\"\"\",\n" % (i[:-1])
|
||||
else:
|
||||
newvar = "\"\"\"%s\"\"\",\n" % (i)
|
||||
f2.write(newvar)
|
||||
f1.close()
|
||||
f2.write("]")
|
||||
f2.close()
|
||||
f1 = open(fileSource, "r", encoding="utf-8")
|
||||
f2 = open(fileDest, "w", encoding="utf-8")
|
||||
lns = f1.readlines()
|
||||
f2.write("# -*- coding: utf-8 -*-\n")
|
||||
f2.write("documentation = [\n")
|
||||
for i in lns:
|
||||
if "\n" == i:
|
||||
newvar = "\"\",\n"
|
||||
elif "\n" == i[-1]:
|
||||
newvar = "_(\"\"\"%s\"\"\"),\n" % (i[:-1])
|
||||
else:
|
||||
newvar = "_(\"\"\"%s\"\"\"),\n" % (i)
|
||||
f2.write(newvar)
|
||||
f1.close()
|
||||
f2.write("]")
|
||||
f2.close()
|
||||
|
||||
|
||||
prepare_documentation_in_file("manual.md", "strings.py")
|
||||
|
120
doc/generator.py
120
doc/generator.py
@ -5,63 +5,83 @@ import locale
|
||||
import paths
|
||||
import markdown
|
||||
import shutil
|
||||
from codecs import open as _open
|
||||
from importlib import reload
|
||||
|
||||
def get_translation_function(name, language):
|
||||
if language == "en":
|
||||
return gettext.NullTranslations()
|
||||
translation_function = gettext.translation(name, os.path.join(paths.app_path(), "locales"), languages=[language])
|
||||
return translation_function
|
||||
# Languages already translated or translating the documentation.
|
||||
documentation_languages = ["en", "es", "fr", "de", "it", "gl", "ja", "ru", "ro", "eu", "ca", "da", "sr"]
|
||||
|
||||
# the list of supported language codes of TW Blue
|
||||
languages = ["en", "es", "fr", "de", "it", "gl", "ja", "ru", "ro", "eu", "ca", "da", "sr"]
|
||||
|
||||
def generate_document(language, document_type="documentation"):
|
||||
if document_type == "documentation":
|
||||
translation_file = "twblue-documentation"
|
||||
translation_function = get_translation_function(translation_file, language)
|
||||
markdown_file = markdown.markdown("\n".join([translation_function.gettext(s[:-1]) if s != "\n" else s for s in strings.documentation[1:]]), extensions=["markdown.extensions.toc"])
|
||||
title = translation_function.gettext(strings.documentation[0][:-1])
|
||||
filename = "manual.html"
|
||||
elif document_type == "changelog":
|
||||
translation_file = "twblue-changelog"
|
||||
translation_function = get_translation_function(translation_file, language)
|
||||
markdown_file = markdown.markdown("\n".join([translation_function.gettext(s[:-1]) if s != "\n" else s for s in changelog.documentation[1:]]), extensions=["markdown.extensions.toc"])
|
||||
title = translation_function.gettext(changelog.documentation[0][:-1])
|
||||
filename = "changelog.html"
|
||||
first_html_block = """<!doctype html>
|
||||
<html lang="%s">
|
||||
<head>
|
||||
<title>%s</title>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<header><h1>%s</h1></header>
|
||||
""" % (language, title, title)
|
||||
first_html_block = first_html_block+ markdown_file
|
||||
first_html_block = first_html_block + "\n</body>\n</html>"
|
||||
if not os.path.exists(os.path.join("documentation", language)):
|
||||
os.mkdir(os.path.join("documentation", language))
|
||||
mdfile = _open(os.path.join("documentation", language, filename), "w", encoding="utf-8")
|
||||
mdfile.write(first_html_block)
|
||||
mdfile.close()
|
||||
# Changelog translated languages.
|
||||
changelog_languages = ["en", "ca", "de", "es", "eu", "fr", "gl", "ja", "ro", "ru", "sr"]
|
||||
|
||||
# this function will help us to have both strings.py and changelog.py without issues by installing a global dummy translation function.
|
||||
def install_null_translation(name):
|
||||
_ = gettext.NullTranslations()
|
||||
_.install()
|
||||
return
|
||||
|
||||
def get_translations(name):
|
||||
""" Create translation instances for every language of the translated document. """
|
||||
translations = {}
|
||||
if "documentation" in name:
|
||||
langs = documentation_languages
|
||||
else:
|
||||
langs = changelog_languages
|
||||
for l in langs:
|
||||
if l != "en":
|
||||
_ = gettext.translation(name, os.path.join(paths.app_path(), "locales"), languages=[l])
|
||||
translations[l] = _
|
||||
else:
|
||||
_ = gettext.NullTranslations()
|
||||
translations[l] = _
|
||||
return translations
|
||||
|
||||
def generate_document(lang, lang_name, document_type="documentation"):
|
||||
""" Generates a document by using the provided lang object, which should be a translation, and lang_name, which should be the two letter code representing the language. """
|
||||
if document_type == "documentation":
|
||||
translation_file = "twblue-documentation"
|
||||
markdown_file = markdown.markdown("\n".join([lang.gettext(s) if s != "" else s for s in strings.documentation[1:]]), extensions=["markdown.extensions.toc"])
|
||||
title = lang.gettext(strings.documentation[0])
|
||||
filename = "manual.html"
|
||||
elif document_type == "changelog":
|
||||
translation_file = "twblue-changelog"
|
||||
markdown_file = markdown.markdown("\n".join([lang.gettext(s) if s != "" else s for s in changelog.documentation[1:]]), extensions=["markdown.extensions.toc"])
|
||||
title = lang.gettext(changelog.documentation[0])
|
||||
filename = "changelog.html"
|
||||
first_html_block = """<!doctype html>
|
||||
<html lang="%s">
|
||||
<head>
|
||||
<title>%s</title>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<header><h1>%s</h1></header>
|
||||
""" % (lang_name, title, title)
|
||||
first_html_block = first_html_block+ markdown_file
|
||||
first_html_block = first_html_block + "\n</body>\n</html>"
|
||||
if not os.path.exists(os.path.join("documentation", lang_name)):
|
||||
os.mkdir(os.path.join("documentation", lang_name))
|
||||
mdfile = open(os.path.join("documentation", lang_name, filename), "w", encoding="utf-8")
|
||||
mdfile.write(first_html_block)
|
||||
mdfile.close()
|
||||
|
||||
def create_documentation():
|
||||
print("Creating documentation in the supported languages...\n")
|
||||
if not os.path.exists("documentation"):
|
||||
os.mkdir("documentation")
|
||||
if os.path.exists(os.path.join("documentation", "license.txt")) == False:
|
||||
shutil.copy(os.path.join("..", "license.txt"), os.path.join("documentation", "license.txt"))
|
||||
for i in languages:
|
||||
print("Creating documentation for: %s" % (i,))
|
||||
try:
|
||||
generate_document(i)
|
||||
generate_document(i, "changelog")
|
||||
except:
|
||||
continue
|
||||
print("Done")
|
||||
changelog_translations = get_translations("twblue-changelog")
|
||||
documentation_translations = get_translations("twblue-documentation")
|
||||
print("Creating documentation in the supported languages...\n")
|
||||
if not os.path.exists("documentation"):
|
||||
os.mkdir("documentation")
|
||||
if os.path.exists(os.path.join("documentation", "license.txt")) == False:
|
||||
shutil.copy(os.path.join("..", "license.txt"), os.path.join("documentation", "license.txt"))
|
||||
for i in documentation_languages:
|
||||
print("Creating documentation for: %s" % (i,))
|
||||
generate_document(lang_name=i, lang=documentation_translations.get(i))
|
||||
for i in changelog_languages:
|
||||
print("Creating changelog for: %s" % (i,))
|
||||
generate_document(lang_name=i, lang=changelog_translations.get(i), document_type="changelog")
|
||||
print("Done")
|
||||
|
||||
install_null_translation("twblue-documentation")
|
||||
import strings
|
||||
import changelog
|
||||
create_documentation()
|
Loading…
Reference in New Issue
Block a user