diff --git a/changelog.md b/changelog.md
index 40dd769..12822e7 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,4 +1,4 @@
-# Changelog
+Changelog
## News in this version
diff --git a/doc/generator.py b/doc/generator.py
index 1f4341c..024bd0e 100644
--- a/doc/generator.py
+++ b/doc/generator.py
@@ -4,59 +4,82 @@ import os
import locale
import markdown
import shutil
-from codecs import open as _open
from importlib import reload
-def change_language(name, language):
- global _
- os.environ["lang"] = language
- _ = gettext.install(name, os.path.join(os.getcwd(), "locales"))
+# Languages already translated or translating the documentation.
+documentation_languages = ["ru", "en", "es"]
-languages = ["en", "ru"]
+# Changelog translated languages.
+changelog_languages = ["ru", "en", "es"]
-def generate_document(language, document_type="documentation"):
- translation_file = "socializer-documentation"
- change_language(translation_file, language)
- if document_type == "documentation":
- reload(strings)
- markdown_file = markdown.markdown("\n".join(strings.documentation[1:]), extensions=["markdown.extensions.toc"])
- title = strings.documentation[0][1:]
- filename = "manual.html"
- elif document_type == "changelog":
- reload(changelog)
- markdown_file = markdown.markdown("\n".join(changelog.documentation[1:]), extensions=["markdown.extensions.toc"])
- title = changelog.documentation[0][1:]
- filename = "changelog.html"
- first_html_block = """
-
-
- %s
-
-
-
-
- """ % (language, title, title)
- first_html_block = first_html_block+ markdown_file
- first_html_block = first_html_block + "\n\n"
- 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()
+# 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(os.getcwd(), "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 = "socializer-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 = "socializer-documentation"
+ 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 = """
+
+
+ %s
+
+
+
+
+ """ % (lang_name, title, title)
+ first_html_block = first_html_block+ markdown_file
+ first_html_block = first_html_block + "\n\n"
+ 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,))
- generate_document(i)
- generate_document(i, "changelog")
- print("Done")
+ changelog_translations = get_translations("socializer-documentation")
+ documentation_translations = get_translations("socializer-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")
-change_language("socializer-documentation", "en")
+install_null_translation("twblue-documentation")
import strings
import changelog
create_documentation()
\ No newline at end of file
diff --git a/doc/manual.md b/doc/manual.md
index 07a1fe7..ccf9f8d 100644
--- a/doc/manual.md
+++ b/doc/manual.md
@@ -1,4 +1,4 @@
-# Socializer's manual
+Socializer's manual
## Introduction