diff options
| author | Jieiku | 2023-09-26 18:46:53 -0700 |
|---|---|---|
| committer | Jieiku | 2023-09-26 18:46:53 -0700 |
| commit | f5d32f6032ea172d0f1076b1fa04c96c9205285b (patch) | |
| tree | cb87b51826639c73a9f2055b011445819329263a /templates | |
| parent | 0e3727b97a6297ac9cdbbf3753a301c182e356d6 (diff) | |
| download | abridge-f5d32f6032ea172d0f1076b1fa04c96c9205285b.tar.gz abridge-f5d32f6032ea172d0f1076b1fa04c96c9205285b.tar.bz2 abridge-f5d32f6032ea172d0f1076b1fa04c96c9205285b.zip | |
i18n translation system refactor
Diffstat (limited to 'templates')
| -rw-r--r-- | templates/404.html | 5 | ||||
| -rw-r--r-- | templates/base.html | 26 | ||||
| -rw-r--r-- | templates/categories/list.html | 2 | ||||
| -rw-r--r-- | templates/index.html | 2 | ||||
| -rw-r--r-- | templates/macros/macros.html | 41 | ||||
| -rw-r--r-- | templates/page.html | 20 | ||||
| -rw-r--r-- | templates/tags/list.html | 2 |
7 files changed, 60 insertions, 38 deletions
diff --git a/templates/404.html b/templates/404.html index 07f32b3..fee5607 100644 --- a/templates/404.html +++ b/templates/404.html @@ -26,7 +26,10 @@ {# Iterate through each language and display the localised 404 message #} {%- for lcode, language in config.languages -%} {%- if lcode != config.default_language -%} - <p>{{ trans(key="404_not_found", lang=lcode) }}. {% if config.build_search_index %}{{ trans(key="404_try_search", lang=lcode) }}{% endif %} <a href="{{ config.base_url }}/{{ lcode }}/{%- if uglyurls %}index.html{%- endif %}">{{ trans(key="404_go_home", lang=lcode) }}</a>.</p> + {%- set i18n_404 = load_data(path="i18n/" ~ lcode ~ '.toml', required=false) -%} + {%- if not i18n_404 -%}{%- set i18n_404 = load_data(path="themes/abridge/i18n/" ~ lcode ~ ".toml", required=false) -%}{%- endif %} + + <p>{{ macros::translate(key="404_not_found", default="404_not_found", i18n=i18n_404) }}{{ macros::translate(key="full_stop", default=".", i18n=i18n_404) }} {% if config.build_search_index %}{{ macros::translate(key="404_try_search", default="Try searching or", i18n=i18n_404) }}{% endif %} <a href="{{ config.base_url }}/{{ lcode }}/{%- if uglyurls %}index.html{%- endif %}">{{ macros::translate(key="404_go_home", default="go to homepage", i18n=i18n_404) }}</a>{{ macros::translate(key="full_stop", default=".", i18n=i18n_404) }}</p> {%- endif -%} {%- endfor -%} </div> diff --git a/templates/base.html b/templates/base.html index b1172a9..72a5204 100644 --- a/templates/base.html +++ b/templates/base.html @@ -1,5 +1,9 @@ {%- import 'macros/seo.html' as macros_seo %} {%- import "macros/macros.html" as macros %} +{# Load current language i18n data from .toml files in user's '/i18n' folder, use theme as fallback. #} +{%- set i18n = load_data(path="i18n/" ~ lang ~ '.toml', required=false) -%} +{%- if not i18n -%}{%- set i18n = load_data(path="themes/abridge/i18n/" ~ lang ~ ".toml", required=false) -%}{%- endif %} + {%- set uglyurls = config.extra.uglyurls | default(value=false) -%} {%- if config.extra.offline %}{% set uglyurls = true %}{% endif %} <!DOCTYPE html> @@ -52,7 +56,7 @@ {%- if config.extra.menu %} {%- for i in config.extra.menu -%} <li><a{%- if i.size %} class="{{ i.size }}"{% endif %} href="{%- if i.url is matching("^http[s]?://") %}{{ i.url }}{%- else -%}{{ get_url(path=i.url, lang=lang, trailing_slash=i.slash) }}{%- if i.slash and uglyurls %}index.html{%- endif %}{%- endif %}"{% if i.blank %} target="_blank"{% endif %}> - {%- if lang != config.default_language %} {{ trans(key=i.name | safe, lang=lang) }} {% else %} {{ i.name | safe }} {% endif -%} + {%- if lang != config.default_language %} {{ macros::translate(key=i.name|safe, default=i.name|safe, i18n=i18n) }} {% else %} {{ i.name | safe }} {% endif -%} </a></li> {%- endfor -%} {%- endif -%} @@ -61,13 +65,17 @@ <li><div class="dropdown"><i class="svgs world" type="reset"></i> {%- if current_url %} <div class="dropdown-content"> - <span>{%- if lang != config.default_language %}{{ trans(key="flag" | safe, lang=lang) }}{% else %}{{ config.extra.flag.en }}{% endif %}</span> - {%- for lcode,flag in config.extra.flag -%} + <span>{{ macros::translate(key="language_name", default="lang_name", i18n=i18n) }}</span> + {%- for lcode,language in config.languages -%} + {%- set i18n_menu = load_data(path="i18n/" ~ lcode ~ '.toml', required=false) -%} + {%- if not i18n_menu -%}{%- set i18n_menu = load_data(path="themes/abridge/i18n/" ~ lcode ~ ".toml", required=false) -%}{%- endif %} {%- if lang != lcode -%} {%- if lcode == config.default_language -%} - <a href="{{ current_url | replace(from=current_path | truncate(length=4, end=""), to="/") | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ flag }}</a> + <a href="{{ current_url | replace(from='/' ~ lang ~ '/', to = '/') | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ macros::translate(key="language_name", default="language_name", i18n=i18n_menu) }}</a> + {%- elif lang == config.default_language -%} + <a href="{{ current_url | replace(from=config.base_url, to=config.base_url ~ "/" ~ lcode) | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ macros::translate(key="language_name", default="language_name", i18n=i18n_menu) }}</a> {%- else -%} - <a href="{{ current_url | replace(from=config.base_url, to=config.base_url ~ "/" ~ lcode) | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ flag }}</a> + <a href="{{ current_url | replace(from='/' ~ lang ~ '/', to = '/' ~ lcode ~ '/') | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ macros::translate(key="language_name", default="language_name", i18n=i18n_menu) }}</a> {%- endif -%} {%- endif -%} {%- endfor -%} @@ -90,7 +98,7 @@ <div> <form autocomplete=off class="js" name="goSearch" id="searchbox"> <div class="searchd"> - <input id="searchinput" type="text" placeholder="{%- if lang != config.default_language %}{{ trans(key="Search" | safe, lang=lang) }}{% else %}Search{% endif %}" title="Search"{% if config.extra.search_library %}{% if config.extra.search_library == "stork" %} data-stork="stork" {% endif %}{% endif %} /> + <input id="searchinput" type="text" placeholder="{{ macros::translate(key="Search", default="Search", i18n=i18n) }}" title="Search"{% if config.extra.search_library %}{% if config.extra.search_library == "stork" %} data-stork="stork" {% endif %}{% endif %} /> <button type="submit" title="Search" class="{%- if icon_search -%}{{ icon_search }}{%- else -%}si{%- endif -%}">{%- if not icon_search -%}⌕{%- endif -%}</button> </div> <div class="results"><div id="suggestions"{% if config.extra.search_library %}{% if config.extra.search_library == "stork" %} data-stork="stork-output" {% endif %}{% endif %}></div></div> @@ -130,7 +138,7 @@ {%- if config.extra.copyright_override -%} {%- if lang != config.default_language %} - {%- set copyright_string = trans(key="copyright_override", lang=lang) | replace(from="$CURRENT_YEAR", to=current_year) | replace(from="$SITE_TITLE", to=config.title) %} + {%- set copyright_string = macros::translate(key='copyright_override', default='© $CURRENT_YEAR $SITE_TITLE', i18n=i18n) | replace(from="$CURRENT_YEAR", to=current_year) | replace(from="$SITE_TITLE", to=config.title) %} {% else %} {%- set copyright_string = config.extra.copyright_override | replace(from="$CURRENT_YEAR", to=current_year) | replace(from="$SITE_TITLE", to=config.title) %} {% endif -%} @@ -149,7 +157,7 @@ {%- else %} {%- set furl=get_url(path=i.url, trailing_slash=i.slash) %} {%- endif %} - <a{%- if config.extra.footer_size %} class="{{ config.extra.footer_size }}"{% endif %} href="{{ furl | safe }}{%- if i.slash and uglyurls %}index.html{%- endif %}"{% if i.blank %} target="_blank"{% endif %}>{% if lang != config.default_language %} {{ trans(key=i.name | safe, lang=lang) }} {% else %} {{ i.name | safe }} {% endif %}</a> + <a{%- if config.extra.footer_size %} class="{{ config.extra.footer_size }}"{% endif %} href="{{ furl | safe }}{%- if i.slash and uglyurls %}index.html{%- endif %}"{% if i.blank %} target="_blank"{% endif %}>{% if lang != config.default_language %} {{ macros::translate(key=i.name|safe, default=i.name|safe, i18n=i18n) }} {% else %} {{ i.name | safe }} {% endif %}</a> {%- endfor %} </nav> {%- endif %} @@ -157,7 +165,7 @@ {%- if config.extra.footer_credit_override %} {{ config.extra.footer_credit_override | safe }} {%- else %} - <p{%- if config.extra.footer_size %} class="{{ config.extra.footer_size }}"{% endif %}>{% if lang != config.default_language -%} {{ trans(key="Powered_by" | safe, lang=lang) }} {% else -%} Powered by {% endif %}<a href="https://www.getzola.org/" target="_blank">Zola</a> {%- if lang != config.default_language %} {{ trans(key="and" | safe, lang=lang) }} {% else %} and {% endif -%} <a href="https://github.com/jieiku/abridge/" target="_blank">Abridge</a></p> + <p{%- if config.extra.footer_size %} class="{{ config.extra.footer_size }}"{% endif %}>{{ macros::translate(key="Powered_by", default="Powered by", i18n=i18n) }} <a href="https://www.getzola.org/" target="_blank">Zola</a> {{ macros::translate(key="and", default="and", i18n=i18n) }} <a href="https://github.com/jieiku/abridge/" target="_blank">Abridge</a></p> {%- endif %} {%- endif %} </div> diff --git a/templates/categories/list.html b/templates/categories/list.html index 641fcc4..506613c 100644 --- a/templates/categories/list.html +++ b/templates/categories/list.html @@ -20,7 +20,7 @@ {%- block content %} <div> <div class="c"> - <h1>{{ terms | length }} {%- if lang != config.default_language %} {{ trans(key="Categories" | safe, lang=lang) }} {% else %} Categories {% endif %}</h1> + <h1>{{ terms | length }} {{ macros::translate(key="Categories", default="Categories", i18n=i18n) }} </h1> <p>{% for term in terms %} [<a href="#{{ term.name }}">{{ term.name }}</a>]<sup>{{ term.pages | length }}</sup> {% endfor %}</p> </div> {%- for term in terms %} diff --git a/templates/index.html b/templates/index.html index d7091de..c2ced13 100644 --- a/templates/index.html +++ b/templates/index.html @@ -82,7 +82,7 @@ This Template can also be used directly for the index eg: example.com/ or as the {%- endif %} <div class="sblock"> <div class="blockdiv sticky"> - <span class="b s150">{%- if lang != config.default_language %}{{ trans(key="Recent_Posts" | safe, lang=lang) }}{% else %}Recent Posts{% endif %}</span> + <span class="b s150">{{ macros::translate(key="Recent", default="Recent", i18n=i18n) }}</span> {%- set recent_items=config.extra.recent_items | default(value=9) -%} {%- for page in section_item.pages | slice(end=recent_items) %} {{- macros::page_listing(page=page, config=config) }} diff --git a/templates/macros/macros.html b/templates/macros/macros.html index d5ea391..d0ce1a0 100644 --- a/templates/macros/macros.html +++ b/templates/macros/macros.html @@ -1,3 +1,7 @@ +{%- macro translate(key, i18n="", default="") %} +{{- i18n[key] | default(value=default) | safe -}} +{%- endmacro %} + {%- macro page_listing(page, config) %} {%- set uglyurls = config.extra.uglyurls | default(value=false) -%} {%- if config.extra.offline %}{% set uglyurls = true %}{% endif %} @@ -7,6 +11,15 @@ {%- endmacro page_listing %} +{%- macro series_link(inner, page) %} + {%- set uglyurls = config.extra.uglyurls | default(value=false) -%} + {%- if inner.content == page.content %} + <li><a href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}"><b>{{ inner.title }}</b></a></li> + {% else %} + <li><a href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ inner.title }}</a></li> + {%- endif %} +{%- endmacro %} + {%- macro title_post(page, config) %} {%- set uglyurls = config.extra.uglyurls | default(value=false) -%} @@ -17,6 +30,10 @@ {%- macro meta_post(page, config) %} +{# Load current language i18n data from .toml files in user's '/i18n' folder, use theme as fallback. #} +{%- set i18n = load_data(path="i18n/" ~ lang ~ '.toml', required=false) -%} +{%- if not i18n -%}{%- set i18n = load_data(path="themes/abridge/i18n/" ~ lang ~ ".toml", required=false) -%}{%- endif %} + {%- set uglyurls = config.extra.uglyurls | default(value=false) -%} {%- if config.extra.offline %}{% set uglyurls = true %}{% endif %} <span{%- if config.extra.meta_post.size %} class="{{ config.extra.meta_post.size }}"{% endif %}> @@ -55,7 +72,7 @@ {%- if config.extra.meta_post.date %} {%- if config.extra.icon_date %}<i class="{{ config.extra.icon_date }}"></i> {% endif %} {%- if config.extra.date_locale %} {%- if lang != config.default_language -%} - {%- set lang_locale = trans(key="date_locale" | safe, lang=lang) -%} + {%- set lang_locale = macros::translate(key='date_locale', default='en_US', i18n=i18n) -%} {%- else -%} {%- set lang_locale = config.extra.date_locale -%} {%- endif -%} @@ -67,10 +84,10 @@ {#- Updated #} {%- if config.extra.meta_post.updated and page.updated %} {%- if config.extra.icon_date %}<i class="{{ config.extra.icon_date }}"></i> {% endif -%} - {%- if lang != config.default_language %} {{ trans(key="Updated" | safe, lang=lang) }}{% else %} Updated{% endif %}: + {{ macros::translate(key="Updated", default="Updated", i18n=i18n) }}: {%- if config.extra.date_locale %} {%- if lang != config.default_language -%} - {%- set lang_locale = trans(key="date_locale" | safe, lang=lang) -%} + {%- set lang_locale = macros::translate(key='date_locale', default='en_US', i18n=i18n) -%} {%- else -%} {%- set lang_locale = config.extra.date_locale -%} {%- endif %} {{ page.updated | date(format="%B %d, %Y", locale=lang_locale) }} @@ -97,6 +114,9 @@ {%- macro meta_index(page, config) %} +{# Load current language i18n data from .toml files in user's '/i18n' folder, use theme as fallback. #} +{%- set i18n = load_data(path="i18n/" ~ lang ~ '.toml', required=false) -%} +{%- if not i18n -%}{%- set i18n = load_data(path="themes/abridge/i18n/" ~ lang ~ ".toml", required=false) -%}{%- endif %} {%- set uglyurls = config.extra.uglyurls | default(value=false) -%} {%- if config.extra.offline %}{% set uglyurls = true %}{% endif %} <span{%- if config.extra.meta_index.size %} class="{{ config.extra.meta_index.size }}"{% endif %}> @@ -135,7 +155,7 @@ {%- if config.extra.meta_index.date %} {%- if config.extra.icon_date %}<i class="{{ config.extra.icon_date }}"></i> {% endif %} {%- if config.extra.date_locale %} {%- if lang != config.default_language -%} - {%- set lang_locale = trans(key="date_locale" | safe, lang=lang) -%} + {%- set lang_locale = macros::translate(key='date_locale', default='en_US', i18n=i18n) -%} {%- else -%} {%- set lang_locale = config.extra.date_locale -%} {%- endif -%} @@ -147,10 +167,10 @@ {#- Updated #} {%- if config.extra.meta_index.updated and page.updated %} {%- if config.extra.icon_date %}<i class="{{ config.extra.icon_date }}"></i> {% endif -%} - {%- if lang != config.default_language %} {{ trans(key="Updated" | safe, lang=lang) }}{% else %} Updated{% endif %}: + {{ macros::translate(key="Updated", default="Updated", i18n=i18n) }}: {%- if config.extra.date_locale %} {%- if lang != config.default_language -%} - {%- set lang_locale = trans(key="date_locale" | safe, lang=lang) -%} + {%- set lang_locale = macros::translate(key='date_locale', default='en_US', i18n=i18n) -%} {%- else -%} {%- set lang_locale = config.extra.date_locale -%} {%- endif %} {{ page.updated | date(format="%B %d, %Y", locale=lang_locale) }} @@ -297,12 +317,3 @@ </nav> {%- endif %} {%- endmacro %} - -{%- macro series_link(inner, page) %} - {%- set uglyurls = config.extra.uglyurls | default(value=false) -%} - {%- if inner.content == page.content %} - <li><a href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}"><b>{{ inner.title }}</b></a></li> - {% else %} - <li><a href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ inner.title }}</a></li> - {%- endif %} -{%- endmacro %}
\ No newline at end of file diff --git a/templates/page.html b/templates/page.html index d7abe0b..f5ca311 100644 --- a/templates/page.html +++ b/templates/page.html @@ -47,13 +47,13 @@ {# In Page Series Navigation #} {%- if config.extra.series | default(value=true) %} - {%- if page.extra.section %} + {%- if page.extra.series %} - {%- set tag = get_taxonomy_term(kind="tags", term=page.extra.section, lang=lang) %} + {%- set tag = get_taxonomy_term(kind="tags", term=page.extra.series, lang=lang) %} {%- set page_num = tag.page_count | as_str %} {%- if lang != config.default_language %} - {%- set parts_string = trans(key="Series_parts", lang=lang) | replace(from="$NUMBER_OF_PARTS", to=page_num) %} + {%- set parts_string = macros::translate(key='Series_parts', default='Series', i18n=i18n) | replace(from="$NUMBER_OF_PARTS", to=page_num) %} {% else %} {%- set parts_string = config.extra.Series_parts | default(value="Series") | replace(from="$NUMBER_OF_PARTS", to=page_num) %} {% endif -%} @@ -102,15 +102,15 @@ {%- if toc %} <div class="sblock"> - {%- if page.extra.section %} - {%- set num_extra_pages = config.extra.section_items | default(value=5) %} + {%- if page.extra.series %} + {%- set num_extra_pages = config.extra.series_items | default(value=9) %} <div class="blockdiv"> <a class="b s150" href="{{ tag.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ parts_string }}</a> <ol> {%- if tag.page_count > num_extra_pages and num_extra_pages > 0 %} - {%- set sorted_array = tag.pages | sort(attribute="date") %} + {%- set sorted_array = tag.pages | sort(attribute="date") %} {%- set num_pages = tag.page_count %} - + {# Shows the first page #} {{ macros::series_link(inner=sorted_array.0, page=page) }} @@ -132,7 +132,7 @@ {%- else %} {%- set num = 1 %} {%- endif %} - + {# Shows two pages before current page #} {%- for inner in sorted_array | slice(start=num, end=current_section_index) %} <li><a href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ inner.title }}</a></li> @@ -164,7 +164,7 @@ {%- endfor %} </div> {%- endif %} - + {%- set last = num_pages - 1%} {{ macros::series_link(inner=sorted_array[last], page=page) }} @@ -179,7 +179,7 @@ {%- endif %} <div class="blockdiv sticky"> - <a class="b s150" href="#">{%- if lang != config.default_language %}{{ trans(key="Index" | safe, lang=lang) }}{% else %}Index{% endif %}</a> + <a class="b s150" href="#">{{ macros::translate(key="Index", default="Index", i18n=i18n) }}</a> {%- for h in toc %} <div> <a href="#{{h.id | safe}}">{{ h.title }}</a> diff --git a/templates/tags/list.html b/templates/tags/list.html index 4f53a58..8ed7b5c 100644 --- a/templates/tags/list.html +++ b/templates/tags/list.html @@ -20,7 +20,7 @@ {%- block content %} <div> <div class="c"> - <h1>{{ terms | length }} {%- if lang != config.default_language %} {{ trans(key="Tags" | safe, lang=lang) }} {% else %} Tags {% endif %}</h1> + <h1>{{ terms | length }} {{ macros::translate(key="Tags", default="Tags", i18n=i18n) }} </h1> <p>{% for term in terms %} #<a href="#{{ term.name }}">{{ term.name }}</a><sup>{{ term.pages | length }}</sup> {% endfor %}</p> </div> {%- for term in terms %} |
