2014-11-07 16:28:27 -06:00
# -*- coding: utf-8 -*-
2019-08-13 17:39:05 -05:00
import gettext
2014-11-07 16:28:27 -06:00
import os
2019-08-13 17:39:05 -05:00
import locale
import paths
import markdown
2018-09-18 12:31:02 -05:00
import shutil
2019-08-13 17:39:05 -05:00
from importlib import reload
2021-11-01 17:18:49 -06:00
# Languages already translated or translating the documentation.
documentation_languages = [ "en" , "es" , "fr" , "de" , "it" , "gl" , "ja" , "ru" , "ro" , "eu" , "ca" , "da" , "sr" ]
2014-11-07 16:28:27 -06:00
2021-11-01 17:18:49 -06:00
# 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" :
2023-02-06 22:12:16 -06:00
try :
_ = gettext . translation ( name , os . path . join ( paths . app_path (), "locales" ), languages = [ l ])
translations [ l ] = _
print ( l , name )
except FileNotFoundError :
_ = gettext . NullTranslations ()
translations [ l ] = _
2021-11-01 17:18:49 -06:00
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 ()
2014-11-07 16:28:27 -06:00
def create_documentation ():
2021-11-01 17:18:49 -06:00
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" )
2014-11-07 16:28:27 -06:00
2021-11-01 17:18:49 -06:00
install_null_translation ( "twblue-documentation" )
2019-08-13 17:39:05 -05:00
import strings
import changelog
2014-11-07 16:28:27 -06:00
create_documentation ()