Adding more internationalization support

This commit is contained in:
Jocelyn Badgley (Twipped) 2021-08-11 11:23:59 -07:00
parent 84133bd212
commit 59e4380906
10 changed files with 115 additions and 78 deletions

View File

@ -12,7 +12,7 @@ const slugify = require('./lib/slugify');
const { stripHtml } = require('string-strip-html'); const { stripHtml } = require('string-strip-html');
const markdownIt = require('markdown-it'); const markdownIt = require('markdown-it');
const i18n = require('../lang');
const markdownEngines = { const markdownEngines = {
@ -144,6 +144,7 @@ class Injectables {
this.prod = prod; this.prod = prod;
this.revManifest = revManifest; this.revManifest = revManifest;
this.injections = {}; this.injections = {};
this.languages = {};
} }
_parsePath (tpath, local, type) { _parsePath (tpath, local, type) {
@ -182,6 +183,7 @@ class Injectables {
icon: this.icon(), icon: this.icon(),
prod: this.production(), prod: this.production(),
rev: this.rev(), rev: this.rev(),
lang: this.lang(),
}; };
} }
@ -268,4 +270,12 @@ class Injectables {
}; };
} }
lang () {
return function (key, ...args) {
const { resolve: rval } = args.pop();
const lang = rval('@root.this.page.lang').split('-')[0];
return i18n(lang, key, ...args);
};
}
} }

View File

@ -5,6 +5,7 @@ const { map, uniq } = require('lodash');
const { resolve, ROOT, TYPE } = require('./resolve'); const { resolve, ROOT, TYPE } = require('./resolve');
const { siteInfo } = require(resolve('package.json')); const { siteInfo } = require(resolve('package.json'));
const { minify } = require('html-minifier-terser'); const { minify } = require('html-minifier-terser');
const i18n = require('../lang');
const MINIFY_CONFIG = { const MINIFY_CONFIG = {
conservativeCollapse: true, conservativeCollapse: true,
@ -73,17 +74,18 @@ function siblings (posts) {
} }
function pageState (page, posts) { function pageState (page, posts) {
const lang = page.meta.lang || siteInfo.lang || 'en';
return { return {
...page, ...page,
meta: { ...page.meta, ...page }, meta: { ...page.meta, ...page },
page: { page: {
domain: siteInfo.domain, domain: siteInfo.domain,
lang: page.meta.lang || siteInfo.lang || "", lang,
date: page.meta.date || "", date: page.meta.date || '',
title: page.meta.title title: page.meta.title
? (page.meta.title + (page.meta.subtitle ? ', ' + page.meta.subtitle : '') + ' :: ' + siteInfo.title) ? (page.meta.title + (page.meta.subtitle ? ', ' + page.meta.subtitle : '') + ' :: ' + i18n(lang, 'SITE_TITLE'))
: siteInfo.title, : i18n(lang, 'SITE_TITLE'),
description: page.meta.description || siteInfo.description, description: page.meta.description || i18n('SITE_DESCRIPTION'),
}, },
site: siteInfo, site: siteInfo,
local: { local: {

11
lang/en.js Normal file
View File

@ -0,0 +1,11 @@
module.exports = exports = {
SITE_TITLE: 'That\'s Gender Dysphoria, FYI',
SITE_DESCRIPTION: 'A resource for those questioning their gender, already on a gender journey, or simply wanting to learn more about what it is to be transgender.',
HEADER_TITLE: 'That\'s Gender Dysphoria, <abbr title="For Your Information">FYI</abbr>',
PATREON_FOOTER_BODY: 'This site is made possible thanks to contributions from the community. If you have found this site invaluable, please consider <a href="https://www.patreon.com/curvyandtrans">making a pledge on patreon</a> or a <a href="https://ko-fi.com/curvyandtrans">donation via Ko-fi</a>.',
PATREON_FOOTER_THANKS: 'Special thanks to the following patreon supporters:',
FOOTER_COPYRIGHT: 'Site text, website code and original graphics are <a href="https://creativecommons.org/licenses/by-nc-sa/2.0/">licensed CC BY-NC-SA.</a>',
};

8
lang/es.js Normal file
View File

@ -0,0 +1,8 @@
module.exports = exports = {
SITE_TITLE: 'Eso es Disforia de Género, PSI',
HEADER_TITLE: 'Eso es Disforia de Género, <abbr title="Para Su Información">PSI</abbr>',
};

12
lang/index.js Normal file
View File

@ -0,0 +1,12 @@
const languages = {
en: require('./en'),
es: require('./es'),
};
module.exports = exports = function (lang, key, ...args) {
var entry = languages[lang] && languages[lang][key];
if (!entry) entry = languages.en[key];
if (typeof entry === 'function') return entry(...args);
return entry || key;
};

View File

@ -12,7 +12,7 @@
"siteInfo": { "siteInfo": {
"title": "That's Gender Dysphoria, FYI", "title": "That's Gender Dysphoria, FYI",
"domain": "genderdysphoria.fyi", "domain": "genderdysphoria.fyi",
"lang": "en-US", "lang": "en",
"siteUrl": "https://genderdysphoria.fyi", "siteUrl": "https://genderdysphoria.fyi",
"description": "A resource for those questioning their gender, already on a gender journey, or simply wanting to learn more about what it is to be transgender.", "description": "A resource for those questioning their gender, already on a gender journey, or simply wanting to learn more about what it is to be transgender.",
"creator": "TwippingVanilla", "creator": "TwippingVanilla",

View File

@ -1,27 +1,28 @@
<div class="dropdown-menu" aria-labelledby="nav-gdb"> <a href="/gdb/" class="top-nav-item dropdown-toggle" id="nav-gdb" data-toggle="dropdown" data-flip="false" aria-haspopup="true" aria-expanded="false">The Gender Dysphoria Bible</a>
<a href="/gdb/printable" class="{{#is meta.url '/gdb/printable' }}active {{/is}}dropdown-item">View All</a> <div class="dropdown-menu" aria-labelledby="nav-gdb">
<a href="/gdb.pdf" class="dropdown-item">Download PDF {{icon 'pdf' size="1em" style="vertical-align:middle;margin-bottom:3px;"}} </a> <a href="/gdb/printable" class="{{#is meta.url '/gdb/printable' }}active {{/is}}dropdown-item">View All</a>
<hr class="dropdown-divider"> <a href="/gdb.pdf" class="dropdown-item">Download PDF {{icon 'pdf' size="1em" style="vertical-align:middle;margin-bottom:3px;"}} </a>
<a href="/gdb/" class="{{#is meta.url '/gdb/index' '/' }}active {{/is}}dropdown-item">Introduction</a> <hr class="dropdown-divider">
<a href="/gdb/what-is-gender" class="{{#is meta.url '/gdb/what-is-gender' }}active {{/is}}dropdown-item">What is Gender?</a> <a href="/gdb/" class="{{#is meta.url '/gdb/index' '/' }}active {{/is}}dropdown-item">Introduction</a>
<a href="/gdb/history" class="{{#is meta.url '/gdb/history' }}active {{/is}}dropdown-item">The History of Gender Dysphoria</a> <a href="/gdb/what-is-gender" class="{{#is meta.url '/gdb/what-is-gender' }}active {{/is}}dropdown-item">What is Gender?</a>
<a href="/gdb/euphoria" class="{{#is meta.url '/gdb/euphoria' }}active {{/is}}dropdown-item">Gender Euphoria</a> <a href="/gdb/history" class="{{#is meta.url '/gdb/history' }}active {{/is}}dropdown-item">The History of Gender Dysphoria</a>
<a href="/gdb/physical-dysphoria" class="{{#is meta.url '/gdb/physical-dysphoria' }}active {{/is}}dropdown-item">Physical Dysphoria</a> <a href="/gdb/euphoria" class="{{#is meta.url '/gdb/euphoria' }}active {{/is}}dropdown-item">Gender Euphoria</a>
<a href="/gdb/biochemical-dysphoria" class="{{#is meta.url '/gdb/biochemical-dysphoria' }}active {{/is}}dropdown-item">Biochemical Dysphoria</a> <a href="/gdb/physical-dysphoria" class="{{#is meta.url '/gdb/physical-dysphoria' }}active {{/is}}dropdown-item">Physical Dysphoria</a>
<a href="/gdb/social-dysphoria" class="{{#is meta.url '/gdb/social-dysphoria' }}active {{/is}}dropdown-item">Social Dysphoria</a> <a href="/gdb/biochemical-dysphoria" class="{{#is meta.url '/gdb/biochemical-dysphoria' }}active {{/is}}dropdown-item">Biochemical Dysphoria</a>
<a href="/gdb/societal-dysphoria" class="{{#is meta.url '/gdb/societal-dysphoria' }}active {{/is}}dropdown-item">Societal Dysphoria</a> <a href="/gdb/social-dysphoria" class="{{#is meta.url '/gdb/social-dysphoria' }}active {{/is}}dropdown-item">Social Dysphoria</a>
<a href="/gdb/sexual-dysphoria" class="{{#is meta.url '/gdb/sexual-dysphoria' }}active {{/is}}dropdown-item">Sexual Dysphoria</a> <a href="/gdb/societal-dysphoria" class="{{#is meta.url '/gdb/societal-dysphoria' }}active {{/is}}dropdown-item">Societal Dysphoria</a>
<a href="/gdb/presentational-dysphoria" class="{{#is meta.url '/gdb/presentational-dysphoria'}}active {{/is}}dropdown-item">Presentational Dysphoria</a> <a href="/gdb/sexual-dysphoria" class="{{#is meta.url '/gdb/sexual-dysphoria' }}active {{/is}}dropdown-item">Sexual Dysphoria</a>
<a href="/gdb/existential-dysphoria" class="{{#is meta.url '/gdb/existential-dysphoria' }}active {{/is}}dropdown-item">Existential Dysphoria</a> <a href="/gdb/presentational-dysphoria" class="{{#is meta.url '/gdb/presentational-dysphoria'}}active {{/is}}dropdown-item">Presentational Dysphoria</a>
<a href="/gdb/managed-dysphoria" class="{{#is meta.url '/gdb/managed-dysphoria' }}active {{/is}}dropdown-item">Managed Dysphoria</a> <a href="/gdb/existential-dysphoria" class="{{#is meta.url '/gdb/existential-dysphoria' }}active {{/is}}dropdown-item">Existential Dysphoria</a>
<a href="/gdb/impostor-syndrome" class="{{#is meta.url '/gdb/impostor-syndrome' }}active {{/is}}dropdown-item">Impostor Syndrome</a> <a href="/gdb/managed-dysphoria" class="{{#is meta.url '/gdb/managed-dysphoria' }}active {{/is}}dropdown-item">Managed Dysphoria</a>
<a href="/gdb/diagnoses" class="{{#is meta.url '/gdb/diagnoses' }}active {{/is}}dropdown-item">Clinical Diagnoses</a> <a href="/gdb/impostor-syndrome" class="{{#is meta.url '/gdb/impostor-syndrome' }}active {{/is}}dropdown-item">Impostor Syndrome</a>
<a href="/gdb/treatment" class="{{#is meta.url '/gdb/treatment' }}active {{/is}}dropdown-item">Treating Gender Dysphoria</a> <a href="/gdb/diagnoses" class="{{#is meta.url '/gdb/diagnoses' }}active {{/is}}dropdown-item">Clinical Diagnoses</a>
<a href="/gdb/causes" class="{{#is meta.url '/gdb/causes' }}active {{/is}}dropdown-item">Causes of Gender Dysphoria</a> <a href="/gdb/treatment" class="{{#is meta.url '/gdb/treatment' }}active {{/is}}dropdown-item">Treating Gender Dysphoria</a>
<a href="/gdb/chromosomes" class="{{#is meta.url '/gdb/chromosomes' }}active {{/is}}dropdown-item">Chromosomes</a> <a href="/gdb/causes" class="{{#is meta.url '/gdb/causes' }}active {{/is}}dropdown-item">Causes of Gender Dysphoria</a>
<a href="/gdb/hormones" class="{{#is meta.url '/gdb/hormones' }}active {{/is}}dropdown-item">How Hormones Work</a> <a href="/gdb/chromosomes" class="{{#is meta.url '/gdb/chromosomes' }}active {{/is}}dropdown-item">Chromosomes</a>
<a href="/gdb/second-puberty-masc" class="{{#is meta.url '/gdb/second-puberty-masc' }}active {{/is}}dropdown-item">Androgenic Second Puberty 101</a> <a href="/gdb/hormones" class="{{#is meta.url '/gdb/hormones' }}active {{/is}}dropdown-item">How Hormones Work</a>
<a href="/gdb/second-puberty-fem" class="{{#is meta.url '/gdb/second-puberty-fem' }}active {{/is}}dropdown-item">Estrogenic Second Puberty 101</a> <a href="/gdb/second-puberty-masc" class="{{#is meta.url '/gdb/second-puberty-masc' }}active {{/is}}dropdown-item">Androgenic Second Puberty 101</a>
<a href="/gdb/conclusion" class="{{#is meta.url '/gdb/conclusion' }}active {{/is}}dropdown-item">Conclusion</a> <a href="/gdb/second-puberty-fem" class="{{#is meta.url '/gdb/second-puberty-fem' }}active {{/is}}dropdown-item">Estrogenic Second Puberty 101</a>
</div> <a href="/gdb/conclusion" class="{{#is meta.url '/gdb/conclusion' }}active {{/is}}dropdown-item">Conclusion</a>
</div>

View File

@ -1,27 +1,28 @@
<div class="dropdown-menu" aria-labelledby="nav-gdb"> <a href="/gdb/" class="top-nav-item dropdown-toggle" id="nav-gdb" data-toggle="dropdown" data-flip="false" aria-haspopup="true" aria-expanded="false">La Biblia de la Disforia de Género</a>
<a href="/gdb/es/imprimible" class="{{#is meta.url '/gdb/es/imprimible' }}active {{/is}}dropdown-item">Ver Todo</a> <div class="dropdown-menu" aria-labelledby="nav-gdb">
<!-- <a href="/gdb.es.pdf" class="dropdown-item">Descargar PDF {{icon 'pdf' size="1em" style="vertical-align:middle;margin-bottom:3px;"}} </a> --> <a href="/gdb/es/imprimible" class="{{#is meta.url '/gdb/es/imprimible' }}active {{/is}}dropdown-item">Ver Todo</a>
<hr class="dropdown-divider"> <!-- <a href="/gdb.es.pdf" class="dropdown-item">Descargar PDF {{icon 'pdf' size="1em" style="vertical-align:middle;margin-bottom:3px;"}} </a> -->
<a href="/gdb/es/" class="{{#is meta.url '/gdb/es/index' '/' }}active {{/is}}dropdown-item">Introducción</a> <hr class="dropdown-divider">
<a href="/gdb/es/que-es-el-genero" class="{{#is meta.url '/gdb/es/que-es-el-genero' }}active {{/is}}dropdown-item">¿Qué es el Género?</a> <a href="/gdb/es/" class="{{#is meta.url '/gdb/es/index' '/' }}active {{/is}}dropdown-item">Introducción</a>
<a href="/gdb/es/historia" class="{{#is meta.url '/gdb/es/historia' }}active {{/is}}dropdown-item">La Historia de la Disforia de Género</a> <a href="/gdb/es/que-es-el-genero" class="{{#is meta.url '/gdb/es/que-es-el-genero' }}active {{/is}}dropdown-item">¿Qué es el Género?</a>
<a href="/gdb/es/euforia" class="{{#is meta.url '/gdb/es/euforia' }}active {{/is}}dropdown-item">Euforia de Género</a> <a href="/gdb/es/historia" class="{{#is meta.url '/gdb/es/historia' }}active {{/is}}dropdown-item">La Historia de la Disforia de Género</a>
<a href="/gdb/es/disforia-fisica" class="{{#is meta.url '/gdb/es/disforia-fisica' }}active {{/is}}dropdown-item">Disforia de Género Física</a> <a href="/gdb/es/euforia" class="{{#is meta.url '/gdb/es/euforia' }}active {{/is}}dropdown-item">Euforia de Género</a>
<a href="/gdb/es/disforia-bioquimica" class="{{#is meta.url '/gdb/es/disforia-bioquimica' }}active {{/is}}dropdown-item">Disforia Bioquímica</a> <a href="/gdb/es/disforia-fisica" class="{{#is meta.url '/gdb/es/disforia-fisica' }}active {{/is}}dropdown-item">Disforia de Género Física</a>
<a href="/gdb/es/disforia-social" class="{{#is meta.url '/gdb/es/disforia-social' }}active {{/is}}dropdown-item">Disforia Social</a> <a href="/gdb/es/disforia-bioquimica" class="{{#is meta.url '/gdb/es/disforia-bioquimica' }}active {{/is}}dropdown-item">Disforia Bioquímica</a>
<a href="/gdb/es/disforia-societal" class="{{#is meta.url '/gdb/es/disforia-societal' }}active {{/is}}dropdown-item">Disforia Societal</a> <a href="/gdb/es/disforia-social" class="{{#is meta.url '/gdb/es/disforia-social' }}active {{/is}}dropdown-item">Disforia Social</a>
<a href="/gdb/es/disforia-sexual" class="{{#is meta.url '/gdb/es/disforia-sexual' }}active {{/is}}dropdown-item">Disforia Sexual</a> <a href="/gdb/es/disforia-societal" class="{{#is meta.url '/gdb/es/disforia-societal' }}active {{/is}}dropdown-item">Disforia Societal</a>
<a href="/gdb/es/disforia-de-presentacion" class="{{#is meta.url '/gdb/es/disforia-de-presentacion'}}active {{/is}}dropdown-item">Disforia de Presentación</a> <a href="/gdb/es/disforia-sexual" class="{{#is meta.url '/gdb/es/disforia-sexual' }}active {{/is}}dropdown-item">Disforia Sexual</a>
<a href="/gdb/es/disforia-historica" class="{{#is meta.url '/gdb/es/disforia-historica' }}active {{/is}}dropdown-item">Disforia Histórica</a> <a href="/gdb/es/disforia-de-presentacion" class="{{#is meta.url '/gdb/es/disforia-de-presentacion'}}active {{/is}}dropdown-item">Disforia de Presentación</a>
<a href="/gdb/es/disforia-gestionada" class="{{#is meta.url '/gdb/es/disforia-gestionada' }}active {{/is}}dropdown-item">Disforia Gestionada</a> <a href="/gdb/es/disforia-historica" class="{{#is meta.url '/gdb/es/disforia-historica' }}active {{/is}}dropdown-item">Disforia Histórica</a>
<a href="/gdb/es/sindrome-del-impostor" class="{{#is meta.url '/gdb/es/sindrome-del-impostor' }}active {{/is}}dropdown-item">Síndrome del Impostor</a> <a href="/gdb/es/disforia-gestionada" class="{{#is meta.url '/gdb/es/disforia-gestionada' }}active {{/is}}dropdown-item">Disforia Gestionada</a>
<a href="/gdb/es/diagnosticos" class="{{#is meta.url '/gdb/es/diagnosticos' }}active {{/is}}dropdown-item">Clinical Diagnoses</a> <a href="/gdb/es/sindrome-del-impostor" class="{{#is meta.url '/gdb/es/sindrome-del-impostor' }}active {{/is}}dropdown-item">Síndrome del Impostor</a>
<a href="/gdb/es/tratamiento" class="{{#is meta.url '/gdb/es/tratamiento' }}active {{/is}}dropdown-item">Treating Gender Dysphoria</a> <a href="/gdb/es/diagnosticos" class="{{#is meta.url '/gdb/es/diagnosticos' }}active {{/is}}dropdown-item">Clinical Diagnoses</a>
<a href="/gdb/es/causas" class="{{#is meta.url '/gdb/es/causas' }}active {{/is}}dropdown-item">Causes of Gender Dysphoria</a> <a href="/gdb/es/tratamiento" class="{{#is meta.url '/gdb/es/tratamiento' }}active {{/is}}dropdown-item">Treating Gender Dysphoria</a>
<a href="/gdb/es/cromosomas" class="{{#is meta.url '/gdb/es/cromosomas' }}active {{/is}}dropdown-item">Cromosomas</a> <a href="/gdb/es/causas" class="{{#is meta.url '/gdb/es/causas' }}active {{/is}}dropdown-item">Causes of Gender Dysphoria</a>
<a href="/gdb/es/hormonas" class="{{#is meta.url '/gdb/es/hormonas' }}active {{/is}}dropdown-item">Cómo Funcionan las Hormonas</a> <a href="/gdb/es/cromosomas" class="{{#is meta.url '/gdb/es/cromosomas' }}active {{/is}}dropdown-item">Cromosomas</a>
<a href="/gdb/es/segunda-pubertad-masc" class="{{#is meta.url '/gdb/es/segunda-pubertad-masc' }}active {{/is}}dropdown-item">Intro. Segunda Pubertad Androgénica</a> <a href="/gdb/es/hormonas" class="{{#is meta.url '/gdb/es/hormonas' }}active {{/is}}dropdown-item">Cómo Funcionan las Hormonas</a>
<a href="/gdb/es/segunda-pubertad-fem" class="{{#is meta.url '/gdb/es/segunda-pubertad-fem' }}active {{/is}}dropdown-item">Intro. Segunda Pubertad Estrogénica</a> <a href="/gdb/es/segunda-pubertad-masc" class="{{#is meta.url '/gdb/es/segunda-pubertad-masc' }}active {{/is}}dropdown-item">Intro. Segunda Pubertad Androgénica</a>
<a href="/gdb/es/conclusion" class="{{#is meta.url '/gdb/es/conclusion' }}active {{/is}}dropdown-item">Conclusión</a> <a href="/gdb/es/segunda-pubertad-fem" class="{{#is meta.url '/gdb/es/segunda-pubertad-fem' }}active {{/is}}dropdown-item">Intro. Segunda Pubertad Estrogénica</a>
</div> <a href="/gdb/es/conclusion" class="{{#is meta.url '/gdb/es/conclusion' }}active {{/is}}dropdown-item">Conclusión</a>
</div>

View File

@ -1,5 +1,6 @@
{{#is page.lang "es"}} {{#is page.lang "es"}}
<a href="/gdb/" class="top-nav-item dropdown-toggle" id="nav-gdb" data-toggle="dropdown" data-flip="false" aria-haspopup="true" aria-expanded="false">La Biblia de la Disforia de Género</a>{{import '/public/_gdb-es-menu'}} {{import '/public/_gdb-es-menu'}}
{{else}} {{else}}
<a href="/gdb/" class="top-nav-item dropdown-toggle" id="nav-gdb" data-toggle="dropdown" data-flip="false" aria-haspopup="true" aria-expanded="false">The Gender Dysphoria Bible</a>{{import '/public/_gdb-en-menu'}} {{import '/public/_gdb-en-menu'}}
{{/is}} {{/is}}

View File

@ -59,22 +59,16 @@
<div class="root"> <div class="root">
<header> <header>
<nav> <nav>
{{#is page.lang "es"}} <a href="/" class="top-brand">{{{lang 'HEADER_TITLE'}}}</a>
<a href="/gdb/es/" class="top-brand">Eso es Disforia de Género, <abbr title="Para Su Información">PSI</abbr></a>
{{else}}
<a href="/" class="top-brand">That's Gender Dysphoria, <abbr title="For Your Information">FYI</abbr></a>
{{/is}}
<div class="top-nav"> <div class="top-nav">
<ul class="top-nav-inner"> <ul class="top-nav-inner">
<li>{{import '/public/_gdb-menu'}}</li> <li>{{import '/public/_gdb-menu'}}</li>
<li><a href="/tweets/" class="top-nav-item" title="Trans Twitter Topics"><img src="/images/transtwitter.png" width="24" height="24" alt=""></a></li> <li><a href="/tweets/" class="top-nav-item" title="{{{lang 'Trans Twitter Topics'}}}"><img src="/images/transtwitter.png" width="24" height="24" alt=""></a></li>
<li class="disposable"><a href="https://github.com/GenderDysphoria/GenderDysphoria.fyi/issues" class="top-nav-item">{{icon 'brands/github'}}</a></li> <li class="disposable"><a href="https://github.com/GenderDysphoria/GenderDysphoria.fyi" class="top-nav-item">{{icon 'brands/github'}}</a></li>
<li class="disposable"><a href="https://patreon.com/curvyandtrans" class="top-nav-item" title="Patreon">{{icon 'brands/patreon'}}</a></li> <li class="disposable"><a href="https://patreon.com/curvyandtrans" class="top-nav-item" title="Patreon">{{icon 'brands/patreon'}}</a></li>
<li class="disposable"><a href="https://ko-fi.com/curvyandtrans" class="top-nav-item" title="Ko-Fi">{{icon 'brands/ko-fi'}}</a></li> <li class="disposable"><a href="https://ko-fi.com/curvyandtrans" class="top-nav-item" title="Ko-Fi">{{icon 'brands/ko-fi'}}</a></li>
</ul> </ul>
</div> </div>
</nav> </nav>
</header> </header>
@ -84,11 +78,8 @@
</div> </div>
<footer> <footer>
<div class="patreon-support"> <div class="patreon-support">
<strong> <strong>{{{lang 'PATREON_FOOTER_BODY'}}}</strong>
This site is made possible thanks to contributions from the community. <p>{{{lang 'PATREON_FOOTER_THANKS'}}}</p>
If you have found this site invaluable, please consider <a href="https://www.patreon.com/curvyandtrans">making a pledge on patreon</a> or a <a href="https://ko-fi.com/curvyandtrans">donation via Ko-fi</a>.
</strong>
<p>Special thanks to the following patreon supporters:</p>
<ul> <ul>
<li>Julia Hocken</li> <li>Julia Hocken</li>
<li>Amanda B</li> <li>Amanda B</li>
@ -113,8 +104,8 @@
</ul> </ul>
<hr> <hr>
</div> </div>
<p class="copyright">Site text, website code and original graphics are <a href="https://creativecommons.org/licenses/by-nc-sa/2.0/">licensed CC BY-NC-SA.</a><span class="cc-by-nc-sa">{{icon 'symbols/cc'}}{{icon 'symbols/cc-by'}}{{icon 'symbols/cc-nc'}}{{icon 'symbols/cc-sa'}}</span><br>&copy; {{date "yyyy"}} <a href="https://curvyandtrans.com">Jocelyn Badgley</a> and Other Contributors </p> <p class="copyright">{{{lang 'FOOTER_COPYRIGHT'}}}<span class="cc-by-nc-sa">{{icon 'symbols/cc'}}{{icon 'symbols/cc-by'}}{{icon 'symbols/cc-nc'}}{{icon 'symbols/cc-sa'}}</span><br>&copy; {{date "yyyy"}} <a href="https://curvyandtrans.com">Jocelyn Badgley</a> {{lang 'and Other Contributors'}}</p>
<p class="foot-nav"><a href="/privacy.html">Privacy Policy</a></p> <p class="foot-nav"><a href="/privacy.html">{{lang 'Privacy Policy'}}</a></p>
</footer> </footer>
</div> </div>