Commit 1f57b948 authored by Aarni Koskela's avatar Aarni Koskela
Browse files

Move localization to its own script block and load it first

parent 999a03e4
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ def list_localizations(dirname):
        localizations[fn] = file.path


def localization_js(current_localization_name):
def localization_js(current_localization_name: str) -> str:
    fn = localizations.get(current_localization_name, None)
    data = {}
    if fn is not None:
@@ -34,4 +34,4 @@ def localization_js(current_localization_name):
            print(f"Error loading localization from {fn}:", file=sys.stderr)
            print(traceback.format_exc(), file=sys.stderr)

    return f"var localization = {json.dumps(data)}\n"
    return f"window.localization = {json.dumps(data)}"
+6 −6
Original line number Diff line number Diff line
@@ -1771,12 +1771,11 @@ def webpath(fn):


def javascript_html():
    script_js = os.path.join(script_path, "script.js")
    head = f'<script type="text/javascript" src="{webpath(script_js)}"></script>\n'
    # Ensure localization is in `window` before scripts
    head = f'<script type="text/javascript">{localization.localization_js(shared.opts.localization)}</script>\n'

    inline = f"{localization.localization_js(shared.opts.localization)};"
    if cmd_opts.theme is not None:
        inline += f"set_theme('{cmd_opts.theme}');"
    script_js = os.path.join(script_path, "script.js")
    head += f'<script type="text/javascript" src="{webpath(script_js)}"></script>\n'

    for script in modules.scripts.list_scripts("javascript", ".js"):
        head += f'<script type="text/javascript" src="{webpath(script.path)}"></script>\n'
@@ -1784,7 +1783,8 @@ def javascript_html():
    for script in modules.scripts.list_scripts("javascript", ".mjs"):
        head += f'<script type="module" src="{webpath(script.path)}"></script>\n'

    head += f'<script type="text/javascript">{inline}</script>\n'
    if cmd_opts.theme:
        head += f'<script type="text/javascript">set_theme(\"{cmd_opts.theme}\");</script>\n'

    return head