Redo the translation system (steal from tabi)
This commit is contained in:
@ -19,21 +19,27 @@
|
||||
<img id="qrcode" class="no-hover pixels" alt="QR code to a Mastodon post" src="https://api.qrserver.com/v1/create-qr-code/?data=https://{{ host }}/@{{ username }}/{{ id }}&format=gif" />
|
||||
{% endif %}
|
||||
|
||||
<h2>{{ trans(key="comments", lang=lang) }}</h2>
|
||||
<p>{{ trans(key="comments_description", lang=lang) }}</p>
|
||||
<h2>
|
||||
{{ macros_translate::translate(key="comments", default="Comments", language_strings=language_strings) }}
|
||||
</h2>
|
||||
<p>
|
||||
{{ macros_translate::translate(key="comments_description", default="You can comment on this blog post by publicly replying to this post using a Mastodon or other ActivityPub/Fediverse account. Known non-private replies are displayed below.", language_strings=language_strings) }}
|
||||
</p>
|
||||
|
||||
<div class="dialog-buttons">
|
||||
<a id="load-comments" class="inline-button" onclick="loadComments()" onkeypress="loadComments()" tabindex="0">
|
||||
{{ trans(key="load_comments", lang=lang) }}
|
||||
{{ macros_translate::translate(key="load_comments", default="Load Comments", language_strings=language_strings) }}
|
||||
</a>
|
||||
<a class="inline-button colored external" href="https://{{ host }}/@{{ username }}/{{ id }}">
|
||||
{{ trans(key="open_post", lang=lang) }}
|
||||
{{ macros_translate::translate(key="open_post", default="Open Post", language_strings=language_strings) }}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id="comments-wrapper">
|
||||
<noscript>
|
||||
<p>{{ trans(key="comments_noscript", lang=lang) }}</p>
|
||||
<p>
|
||||
{{ macros_translate::translate(key="comments_noscript", default="Loading comments relies on JavaScript. Try enabling JavaScript and reloading, or visit the original post on Mastodon.", language_strings=language_strings) }}
|
||||
</p>
|
||||
</noscript>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
@ -72,7 +78,7 @@
|
||||
|
||||
function loadComments() {
|
||||
let commentsWrapper = document.getElementById("comments-wrapper");
|
||||
document.getElementById("load-comments").innerHTML = "{{ trans(key='comments_loading', lang=lang) }}…";
|
||||
document.getElementById("load-comments").innerHTML = "{{ macros_translate::translate(key='comments_loading', default='Loading', language_strings=language_strings) }}…";
|
||||
fetch("https://{{ host }}/api/v1/statuses/{{ id }}/context")
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
@ -147,7 +153,7 @@
|
||||
avatar.setAttribute("rel", "external nofollow");
|
||||
avatar.setAttribute(
|
||||
"title",
|
||||
`{{ trans(key="view_profile", lang=lang) }} @${status.account.username}@${instance}`
|
||||
`{{ macros_translate::translate(key="view_profile", default="View profile at", language_strings=language_strings) }} @${status.account.username}@${instance}`
|
||||
);
|
||||
avatar.appendChild(avatarPicture);
|
||||
|
||||
@ -175,7 +181,7 @@
|
||||
let permalink = document.createElement("a");
|
||||
permalink.setAttribute("href", status.url);
|
||||
permalink.setAttribute("itemprop", "url");
|
||||
permalink.setAttribute("title", `{{ trans(key="view_comment", lang=lang) }} ${instance}`);
|
||||
permalink.setAttribute("title", `{{ macros_translate::translate(key="view_comment", default="View comment at", language_strings=language_strings) }} ${instance}`);
|
||||
permalink.setAttribute("rel", "external nofollow");
|
||||
permalink.textContent = new Date(
|
||||
status.created_at
|
||||
@ -197,7 +203,7 @@
|
||||
let boosts = document.createElement("a");
|
||||
boosts.className = "boosts";
|
||||
boosts.setAttribute("href", `${status.url}/reblogs`);
|
||||
boosts.setAttribute("title", `{{ trans(key="boosts_from", lang=lang) }} ${instance}`);
|
||||
boosts.setAttribute("title", `{{ macros_translate::translate(key="boosts_from", default="Boosts from", language_strings=language_strings) }} ${instance}`);
|
||||
|
||||
let boostsIcon = document.createElement("i");
|
||||
boostsIcon.className = "icon";
|
||||
@ -208,7 +214,7 @@
|
||||
let faves = document.createElement("a");
|
||||
faves.className = "faves";
|
||||
faves.setAttribute("href", `${status.url}/favourites`);
|
||||
faves.setAttribute("title", `{{ trans(key="faves_from", lang=lang) }} ${instance}`);
|
||||
faves.setAttribute("title", `{{ macros_translate::translate(key="faves_from", default="Favorites from", language_strings=language_strings) }} ${instance}`);
|
||||
|
||||
let favesIcon = document.createElement("i");
|
||||
favesIcon.className = "icon";
|
||||
@ -233,13 +239,13 @@
|
||||
avatar.classList.add("op");
|
||||
avatar.setAttribute(
|
||||
"title",
|
||||
"{{ trans(key="blog_post_author", lang=lang) }}: " + avatar.getAttribute("title")
|
||||
"{{ macros_translate::translate(key='blog_post_author', default='Blog post author', language_strings=language_strings) }}: " + avatar.getAttribute("title")
|
||||
);
|
||||
|
||||
instanceBadge.classList.add("op");
|
||||
instanceBadge.setAttribute(
|
||||
"title",
|
||||
"{{ trans(key="blog_post_author", lang=lang) }}: " + instanceBadge.getAttribute("title")
|
||||
"{{ macros_translate::translate(key="blog_post_author", default="Blog post author", language_strings=language_strings) }}: " + instanceBadge.getAttribute("title")
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
let span = document.createElement("span");
|
||||
icon.classList.add("icon");
|
||||
span.classList.add("hidden");
|
||||
span.innerHTML = "{{ trans(key='copy_code', lang=lang) }}";
|
||||
span.innerHTML = "{{ macros_translate::translate(key='copy_code', default='Copy code', language_strings=language_strings) }}";
|
||||
button.appendChild(icon);
|
||||
button.appendChild(span);
|
||||
container.appendChild(button);
|
||||
|
@ -9,26 +9,26 @@
|
||||
<nav>
|
||||
<ul>
|
||||
{% for link in config.extra.footer.links %}
|
||||
{% if current_lang == config.default_language %}
|
||||
{% set title = link.name %}
|
||||
{% else %}
|
||||
{% set language_key = 'name_' ~ current_lang %}
|
||||
{% set title = link[language_key] %}
|
||||
{% endif %}
|
||||
{%- if link.url is matching('https?://') %}
|
||||
<li>
|
||||
<a href="{{ link.url }}">
|
||||
{{ title }}
|
||||
</a>
|
||||
</li>
|
||||
{%- else %}
|
||||
<li>
|
||||
<a href="{{ get_url(path=link.url, lang=lang)}}">
|
||||
{{ title }}
|
||||
</a>
|
||||
</li>
|
||||
{%- endif %}
|
||||
{% endfor %}
|
||||
{%- if link.url is matching('https?://') %}
|
||||
<li>
|
||||
<a href="{{ link.url }}"
|
||||
{% if current_url | default(value='/') | trim_end_matches(pat='/') | safe == link.url | trim_end_matches(pat='/') | safe %}
|
||||
class="active"
|
||||
{% endif %}>
|
||||
{{ macros_translate::translate(key=link.name, default=link.name, language_strings=language_strings) }}
|
||||
</a>
|
||||
</li>
|
||||
{%- else %}
|
||||
<li>
|
||||
<a href="{{ get_url(path=link.url, lang=lang)}}"
|
||||
{% if current_url | default(value='/') | trim_end_matches(pat='/') | safe == get_url(path=link.url, lang=lang) | trim_end_matches(pat='/') | safe %}
|
||||
class="active"
|
||||
{% endif %}>
|
||||
{{ macros_translate::translate(key=link.name, default=link.name, language_strings=language_strings) }}
|
||||
</a>
|
||||
</li>
|
||||
{%- endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</nav>
|
||||
{% endif %}
|
||||
@ -42,7 +42,7 @@
|
||||
{% if config.extra.source_url and config.extra.footer.show_source %}
|
||||
<p>
|
||||
<a href="{{ config.extra.source_url }}">
|
||||
{{ trans(key='footer_source', lang=lang) }}
|
||||
{{ macros_translate::translate(key="footer_source", default="Table of Contents", language_strings=language_strings) }}
|
||||
</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
@ -50,7 +50,7 @@
|
||||
{% if config.extra.footer.show_powered_by %}
|
||||
<p>
|
||||
<small>
|
||||
{{ trans(key="footer_powered_by", lang=lang) }} <a class="link" href="https://www.getzola.org">Zola</a> {{ trans(key="footer_powered_by_and", lang=lang) }} <a class="link" href="https://daudix.codeberg.page/duckquill">Duckquill</a>
|
||||
{{ macros_translate::translate(key="footer_powered_by", default="Powered by", language_strings=language_strings) }} <a class="link" href="https://www.getzola.org">Zola</a> {{ macros_translate::translate(key="footer_powered_by_and", default="and", language_strings=language_strings) }} <a class="link" href="https://daudix.codeberg.page/duckquill">Duckquill</a>
|
||||
</small>
|
||||
</p>
|
||||
{% endif %}
|
||||
|
@ -6,16 +6,29 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="{{ config.extra.primary_color }}" />
|
||||
<link rel="canonical" href="{{ current_url | default(value='/') | safe }}" />
|
||||
<title>{% block title %}{% include "partials/title.html" %}{% endblock %}</title>
|
||||
<link rel="stylesheet" type="text/css" href="{{ get_url(path='style.css') }}" />
|
||||
<link rel="stylesheet" type="text/css" href="{{ get_url(path='syntax-theme-dark.css') }}" media="(prefers-color-scheme: dark)" />
|
||||
<link rel="stylesheet" type="text/css" href="{{ get_url(path='syntax-theme-light.css') }}" media="(prefers-color-scheme: light)" />
|
||||
<title>{% include "partials/title.html" %}</title>
|
||||
<link rel="stylesheet" href="{{ get_url(path='syntax-theme-dark.css') }}" media="(prefers-color-scheme: dark)" />
|
||||
<link rel="stylesheet" href="{{ get_url(path='syntax-theme-light.css') }}" media="(prefers-color-scheme: light)" />
|
||||
|
||||
{% if config.extra.stylesheets %}
|
||||
{% for stylesheet in config.extra.stylesheets %}
|
||||
<link rel="stylesheet" type="text/css" href="{{ get_url(path=stylesheet) }}" />
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{# Define array of CSS files to load. main.css is always loaded. #}
|
||||
{% set stylesheets = [ "style.css" ] %}
|
||||
|
||||
{# Load extra CSS files from config.toml #}
|
||||
{% if config.extra.stylesheets -%}
|
||||
{% set stylesheets = stylesheets | concat(with=config.extra.stylesheets) %}
|
||||
{% endif %}
|
||||
|
||||
{# Load extra CSS files from page metadata #}
|
||||
{% if page.extra.stylesheets %}
|
||||
{% set stylesheets = stylesheets | concat(with=page.extra.stylesheets) %}
|
||||
{% elif section.extra.stylesheets %}
|
||||
{% set stylesheets = stylesheets | concat(with=section.extra.stylesheets) %}
|
||||
{% endif %}
|
||||
|
||||
{# Load all stylesheets #}
|
||||
{%- for stylesheet in stylesheets %}
|
||||
<link rel="stylesheet" href="{{ get_url(path=stylesheet) | safe }}" />
|
||||
{%- endfor %}
|
||||
|
||||
<style type="text/css">
|
||||
:root {
|
||||
|
44
templates/partials/language_switcher.html
Normal file
44
templates/partials/language_switcher.html
Normal file
@ -0,0 +1,44 @@
|
||||
<li id="dropdown">
|
||||
<details>
|
||||
<summary>
|
||||
<i class="icon"></i>
|
||||
<span class="hidden">
|
||||
{{ macros_translate::translate(key="language", default="Language", language_strings=language_strings) }}
|
||||
</span>
|
||||
</summary>
|
||||
<ul>
|
||||
{%- for lcode, ldetails in config.languages -%}
|
||||
{#- Skip the current language to avoid linking to the current page -#}
|
||||
{%- if lang == lcode -%}
|
||||
{%- continue -%}
|
||||
{%- endif -%}
|
||||
{#- Dynamically load the language strings for each language -#}
|
||||
{%- set other_language_strings = load_data(path="i18n/" ~ lcode ~ ".toml", required=false) -%}
|
||||
{%- if not other_language_strings -%}
|
||||
{%- set other_language_strings = load_data(path="themes/tabi/i18n/" ~ lcode ~ ".toml", required=false) -%}
|
||||
{%- endif -%}
|
||||
{#- Use the loaded language strings to get the language name -#}
|
||||
{% set language_name = macros_translate::translate(key="language_name", default=lcode,
|
||||
language_strings=other_language_strings) %}
|
||||
{#- Check if the language code matches the default language -#}
|
||||
{%- if lcode == config.default_language -%}
|
||||
{#- If it does, link to the root path (no language code in URL) -#}
|
||||
<li>
|
||||
<a lang="{{ lcode }}" href="{{ current_url | replace(from='/' ~ lang ~ '/', to = '/') }}">{{ language_name }}</a>
|
||||
</li>
|
||||
{#- Check if the current language is the default language -#}
|
||||
{#- If it is, append the language code to the base URL -#}
|
||||
{%- elif lang == config.default_language -%}
|
||||
<li>
|
||||
<a lang="{{ lcode }}" href="{{ config.base_url }}/{{ lcode }}{{ current_path | default(value="/") | safe }}">{{ language_name }}</a>
|
||||
</li>
|
||||
{%- else -%}
|
||||
{#- If it's not, replace the current language code in the URL with the new one -#}
|
||||
<li>
|
||||
<a lang="{{ lcode }}" href="{{ current_url | replace(from='/' ~ lang ~ '/', to='/' ~ lcode ~ '/') }}">{{ language_name }}</a>
|
||||
</li>
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
</details>
|
||||
</li>
|
@ -1,13 +1,9 @@
|
||||
{% set current_lang = config.default_language %}
|
||||
{% if page %}
|
||||
{% set current_lang = page.lang %}
|
||||
{% elif section %}
|
||||
{%- set current_lang = section.lang %}
|
||||
{% endif %}
|
||||
{% if config.extra.nav.links %}
|
||||
<header id="site-nav">
|
||||
<nav>
|
||||
<a href="#main" id="main-content" tabindex="0">{{ trans(key="skip_to_content", lang=lang) }}</a>
|
||||
<a href="#main" id="main-content" tabindex="0">
|
||||
{{ macros_translate::translate(key="skip_to_content", default="Skip to main content", language_strings=language_strings) }}
|
||||
</a>
|
||||
<ul>
|
||||
<li id="home">
|
||||
<a href="{{ get_url(path="/", lang=lang) }}"
|
||||
@ -18,19 +14,13 @@
|
||||
</a>
|
||||
</li>
|
||||
{% for link in config.extra.nav.links %}
|
||||
{% if current_lang == config.default_language %}
|
||||
{% set title = link.name %}
|
||||
{% else %}
|
||||
{% set language_key = 'name_' ~ current_lang %}
|
||||
{% set title = link[language_key] %}
|
||||
{% endif %}
|
||||
{%- if link.url is matching('https?://') %}
|
||||
<li>
|
||||
<a href="{{ link.url }}"
|
||||
{% if current_url | default(value='/') | trim_end_matches(pat='/') | safe == link.url | trim_end_matches(pat='/') | safe %}
|
||||
class="active"
|
||||
{% endif %}>
|
||||
{{ title }}
|
||||
{{ macros_translate::translate(key=link.name, default=link.name, language_strings=language_strings) }}
|
||||
</a>
|
||||
</li>
|
||||
{%- else %}
|
||||
@ -39,33 +29,21 @@
|
||||
{% if current_url | default(value='/') | trim_end_matches(pat='/') | safe == get_url(path=link.url, lang=lang) | trim_end_matches(pat='/') | safe %}
|
||||
class="active"
|
||||
{% endif %}>
|
||||
{{ title }}
|
||||
{{ macros_translate::translate(key=link.name, default=link.name, language_strings=language_strings) }}
|
||||
</a>
|
||||
</li>
|
||||
{%- endif %}
|
||||
{% endfor %}
|
||||
{% if config.extra.nav.langs %}
|
||||
<li id="dropdown">
|
||||
<details>
|
||||
<summary>
|
||||
<i class="icon"></i>
|
||||
<span class="hidden">{{ trans(key="language", lang=lang) }}</span>
|
||||
</summary>
|
||||
<ul>
|
||||
{% for language in config.extra.nav.langs %}
|
||||
<li>
|
||||
<a href="{{ get_url(path="/", lang=language.code) }}">{{ language.name }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</details>
|
||||
</li>
|
||||
{% if config.languages | length > 0 %}
|
||||
{% include "partials/language_switcher.html" %}
|
||||
{% endif %}
|
||||
{% if config.generate_feed and config.extra.nav.show_feed %}
|
||||
<li id="feed">
|
||||
<a href="{{ get_url(path=config.feed_filename) }}">
|
||||
<i class="icon"></i>
|
||||
<span class="hidden">{{ trans(key="feed", lang=lang) }}</span>
|
||||
<span class="hidden">
|
||||
{{ macros_translate::translate(key="feed", default="Feed", language_strings=language_strings) }}
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
Reference in New Issue
Block a user