Merge pull request #136 from PretendoNetwork/feature-locale-stuff

Feature locale stuff
This commit is contained in:
ash
2022-08-13 22:27:39 +02:00
committed by GitHub
29 changed files with 262 additions and 541 deletions

View File

@@ -68,25 +68,6 @@
}
]
},
"showcase": {
"title": "What we make",
"text": "Our project has many components. Here are some of them.",
"cards": [
{
"title": "Game servers",
"caption": "Bringing back your favorite games and content using custom servers."
},
{
"title": "Juxtaposition",
"caption": "A re-imagining of Miiverse, as if it were made in the modern era."
},
{
"title": "Cemu support",
"caption": "Play your favorite Wii U titles even without a console!"
}
]
},
"credits": {
"title": "الفريق",
"text": "قابل الفريق وراء المشروع",
@@ -195,25 +176,6 @@
}
]
},
"discordJoin": {
"title": "Stay up to date",
"text": "Join our Discord server to get the latest updates on the project.",
"widget": {
"text": "Get realtime updates to our progress",
"button": "Join the server"
}
},
"footer": {
"socials": "Socials",
"usefulLinks": "Useful links",
"widget": {
"captions": [
"Want to keep updated?",
"Join our Discord server!"
],
"button": "Join now!"
}
},
"progressPage": {
"title": "تقدمنا",
"description": "تحقق من تقدم المشروع والأهداف! (يتم تحديثه كل ساعة أو نحو ذلك ، ولا يعكس جميع أهداف المشروع أو تقدمه)"
@@ -222,37 +184,10 @@
"title": "البلوج",
"description": "آخر التحديثات في أجزاء مكثفة. إذا كنت ترغب في رؤية المزيد من التحديثات المتكررة ، ففكر في دعمنا على <a href=\"https://www.patreon.com/PretendoNetwork\" target=\"_blank\"> Patreon </a>. "
},
"account": {
"accountLevel": [
"Standard",
"Tester",
"Moderator",
"Developer"
],
"banned": "Banned"
},
"localizationPage": {
"title": "!لنترجم",
"description": "الصق رابطا إلي لغة الزيسون يمكن الوصول إليها بشكل عام لاختبارها على موقع الويب",
"instructions": "اظهر خطوات الترجمة",
"fileInput": "ملف للتجربة",
"filePlaceholder": "https://a.link.to/the_file.json",
"button": "Test file"
},
"docs": {
"missingInLocale": "This page is unavailable in your locale. Please check the English version below.",
"quickLinks": {
"header": "Quick links",
"links": [
{
"header": "Install Pretendo",
"caption": "View the setup instructions"
},
{
"header": "Got an error?",
"caption": "Search for it here"
}
]
}
"fileInput": "ملف للتجربة"
}
}

View File

@@ -4,9 +4,7 @@
"faq": "FAQ",
"docs": "Docs",
"credits": "Mitwirkende",
"progress": "Fortschritt",
"blog": "Blog",
"account": "Account"
"progress": "Fortschritt"
},
"hero": {
"subtitle": "Spiel-Server",
@@ -222,38 +220,5 @@
"blogPage": {
"title": "Blog",
"description": "Die letzten Updates in Kurzform. Wenn du Updates häufiger einsehen möchtest, unterstütze uns doch bei <a href=\"https://www.patreon.com/PretendoNetwork\" target=\"_blank\">Patreon</a>."
},
"account": {
"accountLevel": [
"Standard",
"Tester",
"Moderator",
"Developer"
],
"banned": "Banned"
},
"localizationPage": {
"title": "Let's localize",
"description": "Paste a link to a publicly accessible JSON locale to test it on the website",
"instructions": "View localization instructions",
"fileInput": "File to test",
"filePlaceholder": "https://a.link.to/the_file.json",
"button": "Test file"
},
"docs": {
"missingInLocale": "This page is unavailable in your locale. Please check the English version below.",
"quickLinks": {
"header": "Quick links",
"links": [
{
"header": "Install Pretendo",
"caption": "View the setup instructions"
},
{
"header": "Got an error?",
"caption": "Search for it here"
}
]
}
}
}

View File

@@ -6,7 +6,11 @@
"credits": "Credits",
"progress": "Progress",
"blog": "Blog",
"account": "Account"
"account": "Account",
"accountWidget": {
"settings": "Settings",
"logout": "Logout"
}
},
"hero": {
"subtitle": "Game servers",
@@ -25,10 +29,7 @@
},
"progress": {
"title": "Progress",
"paragraphs": [
"Currently, we are working on Miiverse, along with our account servers and its integration with the services.",
"For 3DS, we are also working on Mario Kart 7, with a desire to continue working on other games when possible."
]
"githubRepo": "Github repository"
},
"faq": {
"title": "Frequently Asked Questions",
@@ -221,9 +222,57 @@
},
"blogPage": {
"title": "Blog",
"description": "The latest updates in condensed chunks. If you want to see more frequent updates, consider supporting us on <a href=\"https://www.patreon.com/PretendoNetwork\" target=\"_blank\">Patreon</a>."
"description": "The latest updates in condensed chunks. If you want to see more frequent updates, consider supporting us on <a href=\"https://www.patreon.com/PretendoNetwork\" target=\"_blank\">Patreon</a>.",
"published": "Published by",
"publishedOn": "on"
},
"account": {
"loginForm": {
"login": "Login",
"register": "Register",
"detailsPrompt": "Enter your account details below",
"username": "Username",
"password": "Password",
"confirmPassword": "Confirm password",
"email": "Email",
"miiName": "Mii name",
"forgotPassword": "Forgot your password?",
"registerPrompt": "Don't have an account?",
"loginPrompt": "Already have an account?"
},
"settings": {
"downloadFiles": "Download account files",
"downloadFilesDescription": "(will not work on Nintendo Network)",
"upgrade": "Upgrade account",
"settingCards": {
"profile": "Profile",
"nickname": "Nickname",
"birthDate": "Birth date",
"gender": "Gender",
"country": "Country/region",
"timezone": "Timezone",
"serverEnv": "Server environment",
"production": "Production",
"beta": "Beta",
"upgradePrompt": "Beta servers are exclusive to beta testers.<br>To become a beta tester, upgrade to a higher account tier.",
"hasAccessPrompt": "Your current tier gives you beta server access. Cool!",
"signInSecurity": "Sign in and security",
"email": "Email",
"password": "Password",
"passwordResetNotice": "After changing your password, you will be signed out from all devices.",
"signInHistory": "Sign in history",
"fullSignInHistory": "View full sign in history",
"otherSettings": "Other settings",
"discord": "Discord",
"connectedToDiscord": "Connected to Discord as",
"removeDiscord": "Remove Discord account",
"noDiscordLinked": "No Discord account linked.",
"linkDiscord": "Link Discord account",
"newsletter": "Newsletter",
"newsletterPrompt": "Receive project updates via email (you can opt-out at any time)",
"passwordPrompt": "Enter your PNID password to download Cemu files"
}
},
"accountLevel": [
"Standard",
"Tester",
@@ -232,6 +281,23 @@
],
"banned": "Banned"
},
"upgrade": {
"title": "Upgrade",
"description": "Reaching the monthly goal will make Pretendo a full time job, providing better quality updates at a faster rate.",
"month": "month",
"tierSelectPrompt": "Select a tier",
"unsub": "Unsubscribe",
"unsubPrompt": "Are you sure you want to unsubscribe from <span>tiername</span>? You will lose access to the perks associated with that tier.",
"unsubConfirm": "Unsubscribe",
"changeTier": "Change tier",
"changeTierPrompt": "Are you sure you want to unsubscribe from <span class='oldtier'>oldtiername</span> and subscribe to <span class='newtier'>newtiername</span>?",
"changeTierConfirm": "Change tier",
"back": "Back"
},
"donation": {
"progress": "<span>$${totd}</span> of <span>$${goald}</span>/month, <span>${perc}%</span> of the monthly goal.",
"upgradePush": "To become a subscriber and gain access to cool perks, visit the <a href=\"/account/upgrade\">upgrade page</a>."
},
"localizationPage": {
"title": "Let's localize",
"description": "Paste a link to a publicly accessible JSON locale to test it on the website",
@@ -255,5 +321,9 @@
}
]
}
},
"modals": {
"cancel": "Cancel",
"confirm": "Confirm"
}
}

View File

@@ -223,15 +223,6 @@
"title": "Blog",
"description": "Las últimas actualizaciones en pequeñas cantidades. Si quieres ver actualizaciones más frecuentes, considera apoyarnos en <a href=\"https://www.patreon.com/PretendoNetwork\" target=\"_blank\">Patreon</a>."
},
"account": {
"accountLevel": [
"Standard",
"Tester",
"Moderator",
"Developer"
],
"banned": "Banned"
},
"localizationPage": {
"title": "Vamos a localizar",
"description": "Pega un enlace a una localización JSON accesible pulicamente para probarla en el sitio",

View File

@@ -225,15 +225,6 @@
"title": "Blog",
"description": "Les dernières mises à jour en blocs condensés. Si vous souhaitez voir des mises à jour plus fréquentes, envisagez de nous soutenir sur <a href=\"https://www.patreon.com/PretendoNetwork\" target=\"_blank\">Patreon</a>."
},
"account": {
"accountLevel": [
"Standard",
"Tester",
"Moderator",
"Developer"
],
"banned": "Banned"
},
"localizationPage": {
"title": "Localisons",
"description": "Collez un lien vers un paramètre régional JSON accessible au public pour le tester sur le site Web",

View File

@@ -223,15 +223,6 @@
"title": "ブログ(英語)",
"description": "最新のアップデートをまとめてお届けします。もっと多くのアップデートを貰いたい方は、<a href=\"https://www.patreon.com/PretendoNetwork\" target=\"_blank\">Patreon</a>での寄付をご検討ください。"
},
"account": {
"accountLevel": [
"Standard",
"Tester",
"Moderator",
"Developer"
],
"banned": "Banned"
},
"localizationPage": {
"title": "レッツローカライズ",
"description": "公開されているJSONへのリンクを貼り付けてこのサイトに試してみて下さい",

View File

@@ -223,15 +223,6 @@
"title": "블로그",
"description": "내용이 압축된 최신 업데이트입니다. 만약 더 많은 업데이트를 원하신다면, <a href=\"https://www.patreon.com/PretendoNetwork\" target=\"_blank\">Patreon</a>에 기부하는 것을 검토해 주세요."
},
"account": {
"accountLevel": [
"Standard",
"Tester",
"Moderator",
"Developer"
],
"banned": "Banned"
},
"localizationPage": {
"title": "같이 번역해 주세요!",
"description": "액세스 가능한 JSON의 링크를 붙여넣어서, 웹사이트에서 테스트해 보세요!",

View File

@@ -223,15 +223,6 @@
"title": "Blogg",
"description": "De nyeste oppdateringen er i kondensert biter. Hvis du har lyst til å se mer hyppig oppdateringen, tenk om å støtte oss på <a href=\"https://www.patreon.com/PretendoNetwork\" target=\"_blank\">Patreon</a>."
},
"account": {
"accountLevel": [
"Standard",
"Tester",
"Moderator",
"Developer"
],
"banned": "Banned"
},
"localizationPage": {
"title": "La oss lokalisere",
"description": "Lim inn en lenke til en offentlig JSON lokal til å teste det på nettsiden",

View File

@@ -4,9 +4,7 @@
"faq": "FAQ",
"docs": "Docs",
"credits": "Credits",
"progress": "Vooruitgang",
"blog": "Blog",
"account": "Account"
"progress": "Vooruitgang"
},
"hero": {
"subtitle": "Game servers",
@@ -68,25 +66,6 @@
}
]
},
"showcase": {
"title": "What we make",
"text": "Our project has many components. Here are some of them.",
"cards": [
{
"title": "Game servers",
"caption": "Bringing back your favorite games and content using custom servers."
},
{
"title": "Juxtaposition",
"caption": "A re-imagining of Miiverse, as if it were made in the modern era."
},
{
"title": "Cemu support",
"caption": "Play your favorite Wii U titles even without a console!"
}
]
},
"credits": {
"title": "Het team",
"text": "Ontmoet het team achter het project",
@@ -196,25 +175,6 @@
}
]
},
"discordJoin": {
"title": "Stay up to date",
"text": "Join our Discord server to get the latest updates on the project.",
"widget": {
"text": "Get realtime updates to our progress",
"button": "Join the server"
}
},
"footer": {
"socials": "Socials",
"usefulLinks": "Useful links",
"widget": {
"captions": [
"Want to keep updated?",
"Join our Discord server!"
],
"button": "Join now!"
}
},
"progressPage": {
"title": "Onze vooruitgang",
"description": "Zie hier onze vooruitgang! (Wordt elk uur ververst, geeft niet ALLE vooruitgang en doelen weer)"
@@ -223,15 +183,6 @@
"title": "Blog",
"description": "De meest recente samenvattingen. Als je vaker nieuws wil, overweeg ons op <a href=\"https://www.patreon.com/PretendoNetwork\" target=\"_blank\">Patreon</a> te ondersteunen."
},
"account": {
"accountLevel": [
"Standard",
"Tester",
"Moderator",
"Developer"
],
"banned": "Banned"
},
"localizationPage": {
"title": "Laten we meer talen toe voegen!",
"description": "Voeg hier een link in voor een openbaar JSON bestand om het op de site te testen.",
@@ -239,21 +190,5 @@
"fileInput": "Bestand om te testen",
"filePlaceholder": "https://een.link.naar/het_bestand.json",
"button": "Test bestand"
},
"docs": {
"missingInLocale": "This page is unavailable in your locale. Please check the English version below.",
"quickLinks": {
"header": "Quick links",
"links": [
{
"header": "Install Pretendo",
"caption": "View the setup instructions"
},
{
"header": "Got an error?",
"caption": "Search for it here"
}
]
}
}
}

View File

@@ -222,15 +222,6 @@
"title": "Blog",
"description": "Najnowsze informacje w krótkich tekstach. Jeśli chcesz otrzymywać częstsze aktualizacje, pomyśl nad wsparciem nas na <a href=\"https://www.patreon.com/PretendoNetwork\" target=\"_blank\">Patreon</a>."
},
"account": {
"accountLevel": [
"Standard",
"Tester",
"Moderator",
"Developer"
],
"banned": "Banned"
},
"localizationPage": {
"title": "Tłumaczmy",
"description": "Wklej link do publicznego pliku JSON, aby przetestować go na stronie",

View File

@@ -223,15 +223,6 @@
"title": "Blog",
"description": "As atualizações mais recentes em postagens condensadas. Se você quiser ver atualizações com mais frequência, considere nos ajudar no <a href=\"https://www.patreon.com/PretendoNetwork\" target=\"_blank\">Patreon</a>."
},
"account": {
"accountLevel": [
"Standard",
"Tester",
"Moderator",
"Developer"
],
"banned": "Banned"
},
"localizationPage": {
"title": "Vamos traduzir",
"description": "Cole um link para um arquivo JSON acessível publicamente para testá-lo no site",
@@ -239,21 +230,5 @@
"fileInput": "Arquivo para testar",
"filePlaceholder": "https://a.link.to/the_file.json",
"button": "Testar aqui"
},
"docs": {
"missingInLocale": "This page is unavailable in your locale. Please check the English version below.",
"quickLinks": {
"header": "Quick links",
"links": [
{
"header": "Install Pretendo",
"caption": "View the setup instructions"
},
{
"header": "Got an error?",
"caption": "Search for it here"
}
]
}
}
}

View File

@@ -4,9 +4,7 @@
"faq": "FAQ",
"docs": "Docs",
"credits": "Mulțumiri",
"progress": "Progres",
"blog": "Blog",
"account": "Account"
"progress": "Progres"
},
"hero": {
"subtitle": "Servere de Jocuri",
@@ -223,15 +221,6 @@
"title": "Blog",
"description": "Ultimele actualizări în bucăți condensate. Dacă vrei să vezi mai multe actualizări, consideră să ne susții pe <a href=\"https://www.patreon.com/PretendoNetwork\" target=\"_blank\">Patreon</a>."
},
"account": {
"accountLevel": [
"Standard",
"Tester",
"Moderator",
"Developer"
],
"banned": "Banned"
},
"localizationPage": {
"title": "Hai să localizăm",
"description": "Inserați un link către un JSON public pentru a testa traducerea pe site",
@@ -239,21 +228,5 @@
"fileInput": "Fișier de testare",
"filePlaceholder": "https://a.link.to/the_file.json",
"button": "Testează fișier"
},
"docs": {
"missingInLocale": "This page is unavailable in your locale. Please check the English version below.",
"quickLinks": {
"header": "Quick links",
"links": [
{
"header": "Install Pretendo",
"caption": "View the setup instructions"
},
{
"header": "Got an error?",
"caption": "Search for it here"
}
]
}
}
}

View File

@@ -4,9 +4,7 @@
"faq": "ЧаВо",
"docs": "Docs",
"credits": "Команда",
"progress": "Прогресс",
"blog": "Blog",
"account": "Account"
"progress": "Прогресс"
},
"hero": {
"subtitle": "Игровые сервера",
@@ -68,25 +66,6 @@
}
]
},
"showcase": {
"title": "What we make",
"text": "Our project has many components. Here are some of them.",
"cards": [
{
"title": "Game servers",
"caption": "Bringing back your favorite games and content using custom servers."
},
{
"title": "Juxtaposition",
"caption": "A re-imagining of Miiverse, as if it were made in the modern era."
},
{
"title": "Cemu support",
"caption": "Play your favorite Wii U titles even without a console!"
}
]
},
"credits": {
"title": "Наша команда",
"text": "Ознакомтесь с командой, которая работает над разработкой Pretendo.",

View File

@@ -4,9 +4,7 @@
"faq": "SSS",
"docs": "Docs",
"credits": "Katkıda Bulunanlar",
"progress": "İlerleme",
"blog": "Blog",
"account": "Account"
"progress": "İlerleme"
},
"hero": {
"subtitle": "Oyun sunucuları",
@@ -68,25 +66,6 @@
}
]
},
"showcase": {
"title": "What we make",
"text": "Our project has many components. Here are some of them.",
"cards": [
{
"title": "Game servers",
"caption": "Bringing back your favorite games and content using custom servers."
},
{
"title": "Juxtaposition",
"caption": "A re-imagining of Miiverse, as if it were made in the modern era."
},
{
"title": "Cemu support",
"caption": "Play your favorite Wii U titles even without a console!"
}
]
},
"credits": {
"title": "Ekip",
"text": "Projenin arkasındaki ekiple tanışın",
@@ -196,64 +175,8 @@
}
]
},
"discordJoin": {
"title": "Stay up to date",
"text": "Join our Discord server to get the latest updates on the project.",
"widget": {
"text": "Get realtime updates to our progress",
"button": "Join the server"
}
},
"footer": {
"socials": "Socials",
"usefulLinks": "Useful links",
"widget": {
"captions": [
"Want to keep updated?",
"Join our Discord server!"
],
"button": "Join now!"
}
},
"progressPage": {
"title": "İlerlememiz",
"description": "Proje ilerlemesini ve hedeflerini kontrol edin! (Her saat başı güncellenir. TÜM proje hedeflerini veya ilerlemesini yansıtmaz)"
},
"blogPage": {
"title": "Blog",
"description": "The latest updates in condensed chunks. If you want to see more frequent updates, consider supporting us on <a href=\"https://www.patreon.com/PretendoNetwork\" target=\"_blank\">Patreon</a>."
},
"account": {
"accountLevel": [
"Standard",
"Tester",
"Moderator",
"Developer"
],
"banned": "Banned"
},
"localizationPage": {
"title": "Let's localize",
"description": "Paste a link to a publicly accessible JSON locale to test it on the website",
"instructions": "View localization instructions",
"fileInput": "File to test",
"filePlaceholder": "https://a.link.to/the_file.json",
"button": "Test file"
},
"docs": {
"missingInLocale": "This page is unavailable in your locale. Please check the English version below.",
"quickLinks": {
"header": "Quick links",
"links": [
{
"header": "Install Pretendo",
"caption": "View the setup instructions"
},
{
"header": "Got an error?",
"caption": "Search for it here"
}
]
}
}
}

View File

@@ -223,15 +223,6 @@
"title": "博客",
"description": "压缩块的最新更新。如果您想看到更频繁的更新,请考虑在 <a href=\"https://www.patreon.com/PretendoNetwork\" target=\"_blank\">Patreon</a> 上支持我们。"
},
"account": {
"accountLevel": [
"Standard",
"Tester",
"Moderator",
"Developer"
],
"banned": "Banned"
},
"localizationPage": {
"title": "让我们本地化",
"description": "粘贴指向可公开访问的 JSON 语言环境的链接以在网站上对其进行测试",

View File

@@ -136,28 +136,43 @@ app.engine('handlebars', handlebars({
neq(value1, value2) {
return value1 !== value2;
},
localeHelper(...args) {
let userLocaleString = args[0];
localeHelper(locale, propString, propVar) {
/*
* Removes the first and the last argument, and then loops through the rest to
* get the string in the user's locale. If not available, it will return it in
* the default locale.
*/
locale: the json locale object
propString: the "path" to the property to get (e.g. "faq.title")
propVar: the dynamic property name to get after the "path" (e.g. localeHelper locale "account.level" would result in )
e.g. localeHelper locale "account.test" "account.level" would result in locale.account.test[account.level]
*/
args.slice(1, -1).forEach(arg => {
userLocaleString = userLocaleString?.[arg];
});
let value = locale;
const props = propString.split('.');
if (!userLocaleString) {
let defaultLocaleString = defaultLocale;
args.slice(1, -1).forEach(arg => {
defaultLocaleString = defaultLocaleString?.[arg];
});
return defaultLocaleString;
} else {
return userLocaleString;
if ( typeof propVar === 'string' || propVar instanceof String ||
typeof propVar === 'number' || propVar instanceof Number ) {
props.push(propVar);
}
function getPropFromLocale(value, props) {
for (const p of props) {
value = value[p];
}
return value;
}
// fall back to english if the prop doesn't exist in the current locale
try {
value = getPropFromLocale(value, props);
} catch (e) {
value = defaultLocale;
try {
value = getPropFromLocale(value, props);
} catch (e) {
logger.error(`Could not find locale property ${props.join('.')}`);
}
}
return value;
}
}
}));

View File

@@ -14,21 +14,21 @@
<p class="tier-name tier-level-{{tierLevel}}" value="{{tierName}}">{{tierName}}</p>
{{else}}
{{#if (neq account.access_level -1)}}
<p class="tier-name access-level-{{account.access_level}}" value="{{ localeHelper locale "account" "accountLevel" account.access_level }}">{{ localeHelper locale "account" "accountLevel" account.access_level }}</p>
<p class="tier-name access-level-{{account.access_level}}" value="{{ localeHelper locale "account.accountLevel" account.access_level }}">{{ localeHelper locale "account.accountLevel" account.access_level }}</p>
{{else}}
<p class="tier-name access-level-banned" value="{{ localeHelper locale "account" "banned" }}">{{ localeHelper locale "account" "banned" }}</p>
<p class="tier-name access-level-banned" value="{{ localeHelper locale "account.banned" }}">{{ localeHelper locale "account.banned" }}</p>
{{/if}}
{{/if}}
</div>
<div class="buttons">
<a class="button secondary" id="download-cemu-files" href="/account/online-files" download>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-download"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
<p class="caption">Download account files</p>
<p class="cemu-warning">(will not work on Nintendo Network)</p>
<p class="caption">{{ localeHelper locale "account.settings.downloadFiles" }}</p>
<p class="cemu-warning">{{ localeHelper locale "account.settings.downloadFilesDescription" }}</p>
</a>
<a class="button secondary" id="account-upgrade" href="/account/upgrade">
<p class="caption">Upgrade account</p>
<p class="caption">{{ localeHelper locale "account.settings.upgrade" }}</p>
</a>
</div>
</div>
@@ -36,7 +36,7 @@
<div class="settings-wrapper">
<h2 class="section-header" id="user-settings">User settings</h2>
<div class="setting-card">
<h2 class="header">Profile</h2>
<h2 class="header">{{ localeHelper locale "account.settings.settingCards.profile" }}</h2>
<a href="/account/edit/profile" class="edit">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"></path>
@@ -44,30 +44,30 @@
</a>
<ul class="setting-list">
<li>
<p class="label">Nickname</p>
<p class="label">{{ localeHelper locale "account.settings.settingCards.nickname" }}</p>
<p class="value">{{account.mii.name}}</p>
</li>
<li>
<p class="label">Birth date</p>
<p class="label">{{ localeHelper locale "account.settings.settingCards.birthDate" }}</p>
<p class="value">{{account.birthdate}}</p>
</li>
<li>
<p class="label">Gender</p>
<p class="label">{{ localeHelper locale "account.settings.settingCards.gender" }}</p>
<p class="value">{{account.gender}}</p>
</li>
<li>
<p class="label">Country/region</p>
<p class="label">{{ localeHelper locale "account.settings.settingCards.country" }}</p>
<p class="value">{{account.country}}</p>
</li>
<li>
<p class="label">Timezone</p>
<p class="label">{{ localeHelper locale "account.settings.settingCards.timezone" }}</p>
<p class="value">{{account.timezone.name}}</p>
</li>
</ul>
</div>
<div class="setting-card">
<h2 class="header">Server environment</h2>
<h2 class="header">{{ localeHelper locale "account.settings.settingCards.serverEnv" }}</h2>
<fieldset {{#unless isTester}}disabled{{/unless}}>
<form class="server-selection" id="server">
<input type="radio" id="prod" name="server_selection" value="prod" checked="{{ eq account.server_access_level 'prod'}}">
@@ -80,7 +80,7 @@
<polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline>
<line x1="12" y1="22.08" x2="12" y2="12"></line>
</svg>
<h2>Production</h2>
<h2>{{ localeHelper locale "account.settings.settingCards.production" }}</h2>
</label>
{{#if isTester}}
<input type="radio" id="beta" name="server_selection" value="beta" checked="{{ neq account.server_access_level 'prod'}}">
@@ -88,19 +88,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<polygon points="2,21 22,21 14,11.5 14,5 10,3 10,11.5"></polygon>
</svg>
<h2>Beta</h2>
<h2>{{ localeHelper locale "account.settings.settingCards.beta" }}</h2>
</label>
{{/if}}
</form>
</fieldset>
{{#unless isTester}}
<p>Beta servers are exclusive to beta testers.<br>To become a beta tester, upgrade to a higher account tier.</p>
<p>{{{ localeHelper locale "account.settings.settingCards.upgradePrompt" }}}</p>
{{else}}
<p>Your current tier gives you beta server access. Cool!</p>
<p>{{ localeHelper locale "account.settings.settingCards.hasAccessPrompt" }}</p>
{{/unless}}
</div>
<h2 class="section-header" id="security">Sign in and security</h2>
<h2 class="section-header" id="security">{{ localeHelper locale "account.settings.settingCards.signInSecurity" }}</h2>
<div class="setting-card">
<h2 class="header">Account</h2>
<a href="/account/edit/login-info" class="edit">
@@ -110,19 +110,19 @@
</a>
<ul class="setting-list">
<li>
<p class="label">Email</p>
<p class="label">{{ localeHelper locale "account.settings.settingCards.email" }}</p>
<p class="value">{{account.email.address}}</p>
</li>
<li>
<p class="label">Password</p>
<p class="value">●●●●●●●●</p> <!-- Should remain hardcoded -->
<p class="label">{{ localeHelper locale "account.settings.settingCards.password" }}</p>
<p class="value">●●●●●●●●</p>
</li>
</ul>
<p>After changing your password, you will be signed out from all devices.</p>
<p>{{ localeHelper locale "account.settings.settingCards.passwordResetNotice" }}</p>
</div>
<div class="setting-card sign-in-history">
<h2 class="header">Sign in history</h2>
<h2 class="header">{{ localeHelper locale "account.settings.settingCards.signInHistory" }}</h2>
<ul class="setting-list">
{{#each account.devices }}
<li>
@@ -132,26 +132,26 @@
{{/each}}
</ul>
<a href="/account/sign-in-history">
<button class="button secondary">View full sign in history</button>
<button class="button secondary">{{ localeHelper locale "account.settings.settingCards.fullSignInHistory" }}</button>
</a>
</div>
<h2 class="section-header" id="other">Other settings</h2>
<h2 class="section-header" id="other">{{ localeHelper locale "account.settings.settingCards.otherSettings" }}</h2>
<div class="setting-card">
<h2 class="header">Discord</h2>
<h2 class="header">{{ localeHelper locale "account.settings.settingCards.discord" }}</h2>
{{#if discordUser}}
<p>Connected to Discord as {{ discordUser.username }}#{{ discordUser.discriminator }}</p>
<button class="button secondary" id="remove-discord-connection">Remove Discord account</button>
<p>{{ localeHelper locale "account.settings.settingCards.connectedToDiscord" }} {{ discordUser.username }}#{{ discordUser.discriminator }}</p>
<button class="button secondary" id="remove-discord-connection">{{ localeHelper locale "account.settings.settingCards.removeDiscord" }}</button>
{{else}}
<p>No Discord account linked. <a href="{{ discordAuthURL }}">Link Discord account here</a></p>
<p>{{ localeHelper locale "account.settings.settingCards.noDiscordLinked" }} <a href="{{ discordAuthURL }}">{{ localeHelper locale "account.settings.settingCards.linkDiscord" }}</a></p>
{{/if}}
</div>
<div class="setting-card">
<h2 class="header">Newsletter</h2>
<h2 class="header">{{ localeHelper locale "account.settings.settingCards.newsletter" }}</h2>
<form id="other">
<input type="checkbox" id="marketing" name="marketing" {{#if account.flags.marketing}}checked{{/if}}>
<label for="marketing">Receive project updates via email (you can opt-out at any time)</label>
<label for="marketing">{{ localeHelper locale "account.settings.settingCards.newsletterPrompt" }}</label>
</form>
</div>
</div>
@@ -178,12 +178,12 @@
<div class="modal-wrapper hidden" id="onlinefiles">
<div class="modal">
<h1 class="title dot">Password</h1>
<p class="modal-caption">Enter your PNID password to download Cemu files</p>
<h1 class="title dot">{{ localeHelper locale "account.settings.settingCards.password" }}</h1>
<p class="modal-caption">{{ localeHelper locale "account.settings.settingCards.passwordPrompt" }}</p>
<input name="password" id="password" type="password" required />
<div class="modal-button-wrapper">
<button class="button cancel" id="onlineFilesCloseButton">Cancel</button>
<button class="button primary confirm" id="onlineFilesConfirmButton">Confirm</button>
<button class="button cancel" id="onlineFilesCloseButton">{{ localeHelper locale "modals.cancel" }}</button>
<button class="button primary confirm" id="onlineFilesConfirmButton">{{ localeHelper locale "modals.confirm" }}</button>
</div>
</div>
</div>

View File

@@ -6,22 +6,22 @@
<div class="account-form-wrapper">
<form action="/account/login" method="post" class="account">
<h2>Sign in</h2>
<p>Enter your account details below</p>
<h2>{{ localeHelper locale "account.loginForm.login" }}</h2>
<p>{{ localeHelper locale "account.loginForm.detailsPrompt" }}</p>
<div>
<label for="username">Username</label>
<label for="username">{{ localeHelper locale "account.loginForm.username" }}</label>
<input name="username" id="username" required>
</div>
<div>
<label for="password">Password</label>
<label for="password">{{ localeHelper locale "account.loginForm.password" }}</label>
<input name="password" id="password" type="password" required>
<a href="/account/passwordreset" class="pwdreset">Forgot your password?</a>
<a href="/account/passwordreset" class="pwdreset">{{ localeHelper locale "account.loginForm.forgotPassword" }}</a>
</div>
<input name="grant_type" id="grant_type" type="hidden" value="password">
<input name="redirect" id="redirect" type="hidden" value="{{redirect}}">
<div class="buttons">
<button type="submit">Login</button>
<a href="/account/register{{#if redirect}}?redirect={{redirect}}{{/if}}" class="register">Don't have an account?</a>
<button type="submit">{{ localeHelper locale "account.loginForm.login" }}</button>
<a href="/account/register{{#if redirect}}?redirect={{redirect}}{{/if}}" class="register">{{ localeHelper locale "account.loginForm.registerPrompt" }}</a>
</div>
</form>
</div>

View File

@@ -7,33 +7,33 @@
<div class="account-form-wrapper">
<form action="/account/register" method="post" class="account register">
<h2>Register</h2>
<p>Enter your account details below</p>
<h2>{{ localeHelper locale "account.loginForm.register" }}</h2>
<p>{{ localeHelper locale "account.loginForm.detailsPrompt" }}</p>
<div class="email">
<label for="email">Email</label>
<label for="email">{{ localeHelper locale "account.loginForm.email" }}</label>
<input name="email" id="email" type="email" value="{{ email }}" required>
</div>
<div>
<label for="username">Username</label>
<label for="username">{{ localeHelper locale "account.loginForm.username" }}</label>
<input name="username" id="username" value="{{ username }}" minlength=6 maxlength=16 required>
</div>
<div>
<label for="mii_name">Mii Name (Max 10 characters)</label>
<label for="mii_name">{{ localeHelper locale "account.loginForm.miiName" }}</label>
<input name="mii_name" id="mii_name" value="{{ mii_name }}" maxlength=10 required>
</div>
<div>
<label for="password">Password</label>
<label for="password">{{ localeHelper locale "account.loginForm.password" }}</label>
<input name="password" id="password" type="password" autocomplete="new-password" required>
</div>
<div>
<label for="password_confirm">Confirm Password</label>
<label for="password_confirm">{{ localeHelper locale "account.loginForm.confirmPassword" }}</label>
<input name="password_confirm" id="password_confirm" type="password" autocomplete="new-password" required>
</div>
<div class="h-captcha" data-sitekey="cf3fd74e-93ca-47e6-9fa0-5fc439de06d4"></div>
<input name="redirect" id="redirect" type="hidden" value="{{redirect}}">
<div class="buttons">
<button type="submit">Register</button>
<a href="/account/login{{#if redirect}}?redirect={{redirect}}{{/if}}" class="register">Already have an account?</a>
<button type="submit">{{ localeHelper locale "account.loginForm.register" }}</button>
<a href="/account/login{{#if redirect}}?redirect={{redirect}}{{/if}}" class="register">{{ localeHelper locale "account.loginForm.loginPrompt" }}</a>
</div>
</form>
</div>

View File

@@ -2,7 +2,7 @@
<div class="wrapper">
<a href="/account" class="back-arrow">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-left"><line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline></svg>
<span>Back</span>
<span>{{ localeHelper locale "upgrade.back" }}</span>
</a>
<div class="account-form-wrapper">
@@ -31,17 +31,15 @@
</svg>
</a>
<h1 class="title dot">Upgrade</h1>
<p class="caption">
Reaching the monthly goal will make Pretendo a full time job, providing better quality updates at a faster rate.
</p>
<h1 class="title dot">{{ localeHelper locale "upgrade.title" }}</h1>
<p class="caption">{{ localeHelper locale "upgrade.description" }}</p>
<div class="progress-bar-wrapper">
<div class="progress-bar">
<div class="progress-bar-inner" style="width: {{ donationCache.completed_capped }}%;" ></div>
</div>
<p>
<span>${{donationCache.total_dollars}}</span> of <span>${{donationCache.goal_dollars}}</span>/month, <span>${{donationCache.completed_real}}%</span> of the monthly goal.
<p class="localeReplace">
{{{ localeHelper locale "donation.progress" }}}
</p>
</div>
<form method="post" data-current-tier="{{currentTier}}">
@@ -64,41 +62,49 @@
</div>
</div>
<p class="price">
<span>{{this.price}}</span> / month
<span>{{this.price}}</span> / {{ localeHelper locale "upgrade.month" }}
</p>
</label>
{{/each}}
<div class="button-wrapper">
<button class="disabled" type="submit" id="submitButton">Select a tier</button>
<button class="unsubscribe hidden" id="unsubModalShowButton">Unsubscribe</button>
<button class="disabled" type="submit" id="submitButton">{{ localeHelper locale "upgrade.tierSelectPrompt" }}</button>
<button class="unsubscribe hidden" id="unsubModalShowButton">{{ localeHelper locale "upgrade.unsub" }}</button>
</div>
</form>
</div>
<div class="modal-wrapper hidden" id="unsub">
<div class="modal">
<h1 class="title dot">Unsubscribe</h1>
<p class="modal-caption">Are you sure you want to unsubscribe from <span>tiername</span>?
You will lose access to the perks associated with that tier.</p>
<h1 class="title dot">{{ localeHelper locale "upgrade.unsub" }}</h1>
<p class="modal-caption">{{{ localeHelper locale "upgrade.unsubPrompt" }}}</p>
<div class="modal-button-wrapper">
<button class="button cancel" id="unsubModalCloseButton">Cancel</button>
<button class="button primary confirm" id="unsubModalConfirmButton">Unsubscribe</button>
<button class="button cancel" id="unsubModalCloseButton">{{ localeHelper locale "modals.cancel" }}</button>
<button class="button primary confirm" id="unsubModalConfirmButton">{{ localeHelper locale "upgrade.unsubConfirm" }}</button>
</div>
</div>
</div>
<div class="modal-wrapper hidden" id="switchtier">
<div class="modal">
<h1 class="title dot">Change tier</h1>
<p class="modal-caption">Are you sure you want to unsubscribe
from <span class="oldtier">oldtiername</span> and subscribe to <span class="newtier">newtiername</span>?</p>
<h1 class="title dot">{{ localeHelper locale "upgrade.changeTier" }}</h1>
<p class="modal-caption">{{{ localeHelper locale "upgrade.changeTierConfirm" }}}</p>
<div class="modal-button-wrapper">
<button class="button cancel" id="switchTierCloseButton">Cancel</button>
<button class="button primary confirm" id="switchTierConfirmButton">Confirm</button>
<button class="button cancel" id="switchTierCloseButton">{{ localeHelper locale "modals.cancel" }}</button>
<button class="button primary confirm" id="switchTierConfirmButton">{{ localeHelper locale "modals.confirm" }}</button>
</div>
</div>
</div>
</div>
<script>
/* this jank is needed to have data mixed in with a localized string */
document.querySelector('.localeReplace').innerHTML = document.querySelector('.localeReplace').innerHTML
.replace('${totd}', '{{donationCache.total_dollars}}');
document.querySelector('.localeReplace').innerHTML = document.querySelector('.localeReplace').innerHTML
.replace('${goald}', '{{donationCache.goal_dollars}}');
document.querySelector('.localeReplace').innerHTML = document.querySelector('.localeReplace').innerHTML
.replace('${perc}', '{{donationCache.completed_real}}');
</script>
<script src="/assets/js/upgrade.js" />

View File

@@ -7,8 +7,8 @@
<div class="progress-hero">
<div class="hero-meta reduced-margin">
<svg xmlns="http://www.w3.org/2000/svg" width="48.87" height="71.093" viewBox="0 0 48.87 71.093"><g id="XMLID_6_" transform="translate(0)"><path id="XMLID_15_" d="M69.581,29.593c-2.029,1.068-.249,4.129,1.78,3.061,5.162-2.67,11.463-2.6,16.981-1.1,4.735,1.282,9.5,3.845,12.246,8.045,1.246,1.922,4.307.142,3.061-1.78C96.921,27.386,80.3,24.04,69.581,29.593Z" transform="translate(-60.112 -20.086)" fill="#9d6ff3"/><path id="XMLID_14_" d="M103.359,21.045c-3.951-6.159-10.751-10-17.657-11.89C77.763,6.948,68.721,7.019,61.281,10.9c-2.029,1.068-.249,4.129,1.78,3.061,6.586-3.453,14.667-3.311,21.644-1.388,5.981,1.638,12.1,4.913,15.521,10.252C101.507,24.783,104.569,23,103.359,21.045Z" transform="translate(-54.766 -7.693)" fill="#9d6ff3"/><path id="XMLID_9_" d="M65.995,47.8a20.7,20.7,0,0,0-12.958,4.45H47.27a2.579,2.579,0,0,0-2.67,2.456v47.239a2.763,2.763,0,0,0,2.67,2.67h5.838a2.639,2.639,0,0,0,2.528-2.67V87.564A21.228,21.228,0,1,0,65.995,47.8Zm0,33.178a12,12,0,1,1,12-12A12,12,0,0,1,65.995,80.978Z" transform="translate(-44.6 -33.522)" fill="#9d6ff3"/></g></svg>
<h1 class="title dot">{{ localeHelper locale "blogPage" "title" }}</h1>
<p class="text">{{{ localeHelper locale "blogPage" "description" }}}</p>
<h1 class="title dot">{{ localeHelper locale "blogPage.title" }}</h1>
<p class="text">{{{ localeHelper locale "blogPage.description" }}}</p>
</div>
</div>

View File

@@ -9,12 +9,12 @@
<h1 class="title">{{{ postInfo.title }}}</h1>
<div class="pub-info">
<span>Published by</span>
<span>{{ localeHelper locale "blog.published" }}</span>
<div class="profile">
<img class="profile-picture" src="{{ postInfo.author_image }}" alt="{{ postInfo.author }}">
<span>{{{ postInfo.author }}}</span>
</div>
<span>on
<span>{{ localeHelper locale "blog.publishedOn" }}
<span class="date">{{{ postInfo.date }}}</span>
</span>
</div>

View File

@@ -34,7 +34,7 @@
<div class="content">
<div class="content-inner">
{{#if missingInLocale}}
<p class="missing-in-locale-notice">{{ localeHelper locale "docs" "missingInLocale" }}</p>
<p class="missing-in-locale-notice">{{ localeHelper locale "docs.missingInLocale" }}</p>
{{/if}}
{{#if showQuickLinks}}
@@ -42,16 +42,16 @@
<div class="quick-links-grid">
<a href="/docs/troubleshoot-errors">
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-download"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg> <div>
<p class="header">{{ localeHelper locale "docs" "quickLinks" "links" 0 "header" }}</p>
<p>{{ localeHelper locale "docs" "quickLinks" "links" 0 "caption" }}</p>
<p class="header">{{ localeHelper locale "docs.quickLinks.links[0]header" }}</p>
<p>{{ localeHelper locale "docs.quickLinks.links[0]caption" }}</p>
</div>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>
</a>
<a href="/docs/beans">
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg> <div>
<p class="header">{{ localeHelper locale "docs" "quickLinks" "links" 1 "header" }}</p>
<p>{{ localeHelper locale "docs" "quickLinks" "links" 1 "caption" }}</p>
<p class="header">{{ localeHelper locale "docs.quickLinks.links[1].header" }}</p>
<p>{{ localeHelper locale "docs.quickLinks.links[1].caption" }}</p>
</div>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>
</a>

View File

@@ -5,15 +5,15 @@
<section class="hero">
<div class="hero-meta">
<h3 class="subtitle">{{ localeHelper locale "hero" "subtitle" }}</h3>
<h1 class="title dot" {{#if locale.hero.titleSuffix}}data-title-suffix="{{locale.hero.titleSuffix}}"{{/if}}>{{ localeHelper locale "hero" "title" }}</h1>
<h3 class="subtitle">{{ localeHelper locale "hero.subtitle" }}</h3>
<h1 class="title dot" {{#if locale.hero.titleSuffix}}data-title-suffix="{{locale.hero.titleSuffix}}"{{/if}}>{{ localeHelper locale "hero.title" }}</h1>
<p class="text">
{{ localeHelper locale "hero" "text" }}
{{ localeHelper locale "hero.text" }}
</p>
<div class="buttons">
<a href="/#about" class="do-button-margin">
<button class="button primary">
{{ localeHelper locale "hero" "buttons" "readMore" }}
{{ localeHelper locale "hero.buttons.readMore" }}
</button>
</a>
<a href="https://invite.gg/pretendo" class="do-button-margin" target="_blank">
@@ -75,7 +75,7 @@
<section class="progress column-2">
<div class="left sect">
<div class="left-meta">
<h2 class="dot title" id="about" {{#if locale.aboutUs.titleSuffix}}data-title-suffix="{{locale.aboutUs.titleSuffix}}"{{/if}}>{{ localeHelper locale "aboutUs" "title" }}</h2>
<h2 class="dot title" id="about" {{#if locale.aboutUs.titleSuffix}}data-title-suffix="{{locale.aboutUs.titleSuffix}}"{{/if}}>{{ localeHelper locale "aboutUs.title" }}</h2>
{{#each locale.aboutUs.paragraphs}}
<p class="text">{{ this }}</p>
{{/each}}
@@ -83,7 +83,7 @@
</div>
<div class="right sect">
<h2 class="title">
<a href="/progress">{{ localeHelper locale "progress" "title" }}</a>
<a href="/progress">{{ localeHelper locale "progress.title" }}</a>
</h2>
{{> progress-list data=featuredFeatureList purple=true }}
</div>
@@ -91,8 +91,8 @@
<section class="faq">
<div class="sect-top sect">
<h2 class="dot title" id="faq" {{#if locale.faq.titleSuffix}}data-title-suffix="{{locale.faq.titleSuffix}}"{{/if}}>{{ localeHelper locale "faq" "title" }}</h2>
<p class="text">{{ localeHelper locale "faq" "text" }}</p>
<h2 class="dot title" id="faq" {{#if locale.faq.titleSuffix}}data-title-suffix="{{locale.faq.titleSuffix}}"{{/if}}>{{ localeHelper locale "faq.title" }}</h2>
<p class="text">{{ localeHelper locale "faq.text" }}</p>
</div>
<div class="questions column-2">
{{#doFaq locale.faq.QAs}}
@@ -110,32 +110,32 @@
<section class="showcase">
<div class="sect-top sect">
<h2 class="dot title" id="showcase" {{#if locale.showcase.titleSuffix}}data-title-suffix="{{locale.showcase.titleSuffix}}"{{/if}}>{{ localeHelper locale "showcase" "title" }}</h2>
<p class="text">{{ localeHelper locale "showcase" "text" }}</p>
<h2 class="dot title" id="showcase" {{#if locale.showcase.titleSuffix}}data-title-suffix="{{locale.showcase.titleSuffix}}"{{/if}}>{{ localeHelper locale "showcase.title" }}</h2>
<p class="text">{{ localeHelper locale "showcase.text" }}</p>
</div>
<div class="grid">
<div class="item highlight">
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="server" class="svg-inline--fa fa-server fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z"></path></svg>
<h1>{{ localeHelper locale "showcase" "cards" 0 "title" }}</h1>
<p>{{ localeHelper locale "showcase" "cards" 0 "caption" }}</p>
<h1>{{ localeHelper locale "showcase.cards.0.title" }}</h1>
<p>{{ localeHelper locale "showcase.cards.0.caption" }}</p>
</div>
<div class="item">
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="users" class="svg-inline--fa fa-users fa-w-20" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"></path></svg>
<h1>{{ localeHelper locale "showcase" "cards" 1 "title" }}</h1>
<p>{{ localeHelper locale "showcase" "cards" 1 "caption" }}</p>
<h1>{{ localeHelper locale "showcase.cards.1.title" }}</h1>
<p>{{ localeHelper locale "showcase.cards.1.caption" }}</p>
</div>
<div class="item">
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="gamepad" class="svg-inline--fa fa-gamepad fa-w-20" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z"></path></svg>
<h1>{{ localeHelper locale "showcase" "cards" 2 "title" }}</h1>
<p>{{ localeHelper locale "showcase" "cards" 2 "caption" }}</p>
<h1>{{ localeHelper locale "showcase.cards.2.title" }}</h1>
<p>{{ localeHelper locale "showcase.cards.2.caption" }}</p>
</div>
</div>
</section>
<section class="team">
<div class="sect-top sect team-top">
<h2 class="dot title" id="credits" {{#if locale.credits.titleSuffix}}data-title-suffix="{{locale.credits.titleSuffix}}"{{/if}}>{{ localeHelper locale "credits" "title" }}</h2>
<p class="text">{{ localeHelper locale "credits" "text" }}</p>
<h2 class="dot title" id="credits" {{#if locale.credits.titleSuffix}}data-title-suffix="{{locale.credits.titleSuffix}}"{{/if}}>{{ localeHelper locale "credits.title" }}</h2>
<p class="text">{{ localeHelper locale "credits.text" }}</p>
</div>
<div class="team-cards">
{{#each locale.credits.people}}
@@ -160,8 +160,8 @@
<section class="team-helpers">
<div class="sect-top sect">
<h2 class="dot title" id="special-thanks" {{#if locale.specialThanks.titleSuffix}}data-title-suffix="{{locale.specialThanks.titleSuffix}}"{{/if}}>{{ localeHelper locale "specialThanks" "title" }}</h2>
<p class="text">{{ localeHelper locale "specialThanks" "text" }}</p>
<h2 class="dot title" id="special-thanks" {{#if locale.specialThanks.titleSuffix}}data-title-suffix="{{locale.specialThanks.titleSuffix}}"{{/if}}>{{ localeHelper locale "specialThanks.title" }}</h2>
<p class="text">{{ localeHelper locale "specialThanks.text" }}</p>
</div>
<div class="animation-wrapper">
<div class="row-wrapper">
@@ -198,12 +198,12 @@
<section class="update-signup">
<div class="sect hero-meta reduced-margin">
<svg xmlns="http://www.w3.org/2000/svg" width="48.87" height="71.093" viewBox="0 0 48.87 71.093"><g id="XMLID_6_" transform="translate(0)"><path id="XMLID_15_" d="M69.581,29.593c-2.029,1.068-.249,4.129,1.78,3.061,5.162-2.67,11.463-2.6,16.981-1.1,4.735,1.282,9.5,3.845,12.246,8.045,1.246,1.922,4.307.142,3.061-1.78C96.921,27.386,80.3,24.04,69.581,29.593Z" transform="translate(-60.112 -20.086)" fill="#9d6ff3"/><path id="XMLID_14_" d="M103.359,21.045c-3.951-6.159-10.751-10-17.657-11.89C77.763,6.948,68.721,7.019,61.281,10.9c-2.029,1.068-.249,4.129,1.78,3.061,6.586-3.453,14.667-3.311,21.644-1.388,5.981,1.638,12.1,4.913,15.521,10.252C101.507,24.783,104.569,23,103.359,21.045Z" transform="translate(-54.766 -7.693)" fill="#9d6ff3"/><path id="XMLID_9_" d="M65.995,47.8a20.7,20.7,0,0,0-12.958,4.45H47.27a2.579,2.579,0,0,0-2.67,2.456v47.239a2.763,2.763,0,0,0,2.67,2.67h5.838a2.639,2.639,0,0,0,2.528-2.67V87.564A21.228,21.228,0,1,0,65.995,47.8Zm0,33.178a12,12,0,1,1,12-12A12,12,0,0,1,65.995,80.978Z" transform="translate(-44.6 -33.522)" fill="#9d6ff3"/></g></svg>
<h2 class="dot title" id="discord-join" {{#if locale.discordJoin.titleSuffix}}data-title-suffix="{{locale.discordJoin.titleSuffix}}"{{/if}}>{{ localeHelper locale "discordJoin" "title" }}</h2>
<p class="text">{{ localeHelper locale "discordJoin" "text" }}</p>
<h2 class="dot title" id="discord-join" {{#if locale.discordJoin.titleSuffix}}data-title-suffix="{{locale.discordJoin.titleSuffix}}"{{/if}}>{{ localeHelper locale "discordJoin.title" }}</h2>
<p class="text">{{ localeHelper locale "discordJoin.text" }}</p>
</div>
<div class="floating-serverjoin">
<p>{{ localeHelper locale "discordJoin" "widget" "text" }}</p>
<a href="https://invite.gg/pretendo" target="_blank">{{ localeHelper locale "discordJoin" "widget" "button" }}</a>
<p>{{ localeHelper locale "discordJoin.widget.text" }}</p>
<a href="https://invite.gg/pretendo" target="_blank">{{ localeHelper locale "discordJoin.widget.button" }}</a>
</div>
<div class="circle"></div>
</section>

View File

@@ -6,17 +6,17 @@
<div class="localization-wrapper">
<div class="localization-widget">
<h1 class="title dot">{{ localeHelper locale "localizationPage" "title" }}</h1>
<p class="caption">{{ localeHelper locale "localizationPage" "description" }}</p>
<h1 class="title dot">{{ localeHelper locale "localizationPage.title" }}</h1>
<p class="caption">{{ localeHelper locale "localizationPage.description" }}</p>
<a href="https://github.com/PretendoNetwork/Pretendo/blob/master/CONTRIBUTING.md#localization" target="_blank" class="localization-instr">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--accent-shade-2)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
{{ localeHelper locale "localizationPage" "instructions" }}
{{ localeHelper locale "localizationPage.instructions" }}
</a>
<form class="localization-form" autocomplete="off">
<label for="url">{{ localeHelper locale "localizationPage" "fileInput" }}</label>
<label for="url">{{ localeHelper locale "localizationPage.fileInput" }}</label>
<div class="input-wrapper">
<input type="url" id="url" placeholder="{{ localeHelper locale "localizationPage" "filePlaceholder" }}" required />
<button type="submit" class="submit-btn">{{ localeHelper locale "localizationPage" "button" }}</button>
<input type="url" id="url" placeholder="{{ localeHelper locale "localizationPage.filePlaceholder" }}" required />
<button type="submit" class="submit-btn">{{ localeHelper locale "localizationPage.button" }}</button>
</div>
</form>
</div>

View File

@@ -28,28 +28,28 @@
<p>Site by <a href="https://mrjvs.com/" target="_blank">mrjvs</a>, <a href="https://jipfr.nl/" target="_blank">jipfr</a> & <a href="https://ashm.dev/" target="_blank">monty</a></p>
</div>
<div>
<h1>{{ localeHelper locale "footer" "socials" }}</h1>
<h1>{{ localeHelper locale "footer.socials" }}</h1>
<a href="https://twitter.com/PretendoNetwork/" target="_blank">Twitter</a>
<a href="https://invite.gg/pretendo" target="_blank">Discord</a>
<a href="https://github.com/PretendoNetwork" target="_blank">GitHub</a>
</div>
<div>
<h1>{{ localeHelper locale "footer" "usefulLinks" }}</h1>
<a style="display: none;" href="/docs">{{ localeHelper locale "nav" "docs" }}</a>
<a href="/#faq">{{ localeHelper locale "nav" "faq" }}</a>
<a href="/progress">{{ localeHelper locale "nav" "progress" }}</a>
<a href="/blog">{{ localeHelper locale "nav" "blog" }}</a>
<a href="/account">{{ localeHelper locale "nav" "account" }}</a>
<h1>{{ localeHelper locale "footer.usefulLinks" }}</h1>
<a style="display: none;" href="/docs">{{ localeHelper locale "nav.docs" }}</a>
<a href="/#faq">{{ localeHelper locale "nav.faq" }}</a>
<a href="/progress">{{ localeHelper locale "nav.progress" }}</a>
<a href="/blog">{{ localeHelper locale "nav.blog" }}</a>
<a href="/account">{{ localeHelper locale "nav.account" }}</a>
</div>
<div class="discord-server-card">
<h1>{{ localeHelper locale "footer" "widget" "captions" 0 }}</h1>
<h2>{{ localeHelper locale "footer" "widget" "captions" 1 }}</h2>
<h1>{{ localeHelper locale "footer.widget.captions.0" }}</h1>
<h2>{{ localeHelper locale "footer.widget.captions.1" }}</h2>
<a href="https://invite.gg/pretendo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right">
<line x1="5" y1="12" x2="19" y2="12"></line>
<polyline points="12 5 19 12 12 19"></polyline>
</svg>
{{ localeHelper locale "footer" "widget" "button" }}
{{ localeHelper locale "footer.widget.button" }}
</a>
</div>
</footer>

View File

@@ -27,12 +27,12 @@
</a>
<nav>
<a href="/#about">{{ localeHelper locale "nav" "about" }}</a>
<a href="/#faq">{{ localeHelper locale "nav" "faq" }}</a>
<a href="/#credits">{{ localeHelper locale "nav" "credits" }}</a>
<a style="display: none;" href="/docs">{{ localeHelper locale "nav" "docs"}}</a>
<a href="/progress" class="keep-on-mobile">{{ localeHelper locale "nav" "progress"}}</a>
<a href="/blog" class="keep-on-mobile">{{ localeHelper locale "nav" "blog" }}</a>
<a href="/#about">{{ localeHelper locale "nav.about" }}</a>
<a href="/#faq">{{ localeHelper locale "nav.faq" }}</a>
<a href="/#credits">{{ localeHelper locale "nav.credits" }}</a>
<a style="display: none;" href="/docs">{{ localeHelper locale "nav.docs"}}</a>
<a href="/progress" class="keep-on-mobile">{{ localeHelper locale "nav.progress"}}</a>
<a href="/blog" class="keep-on-mobile">{{ localeHelper locale "nav.blog" }}</a>
</nav>
<div class="right-section">
@@ -155,12 +155,12 @@
<div class="buttons">
<a href="/account">
<button class="button primary">
Settings
{{ localeHelper locale "nav.accountWidget.settings" }}
</button>
</a>
<a href="/account/logout">
<button class="button logout">
Logout
{{ localeHelper locale "nav.accountWidget.logout" }}
</button>
</a>
</div>

View File

@@ -13,7 +13,7 @@
<div>
<a href="{{this.url}}" class="github" target="_blank">
<svg data-prefix="fab" data-icon="github" class="svg-inline--fa fa-github fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg>
<span>GitHub repository</span>
<span>{{ localeHelper locale "progress.githubRepo" }}</span>
</a>
</div>
</div>{{/if}}

View File

@@ -5,20 +5,18 @@
<div class="progress-hero">
<div class="hero-meta reduced-margin">
<svg xmlns="http://www.w3.org/2000/svg" width="48.87" height="71.093" viewBox="0 0 48.87 71.093"><g id="XMLID_6_" transform="translate(0)"><path id="XMLID_15_" d="M69.581,29.593c-2.029,1.068-.249,4.129,1.78,3.061,5.162-2.67,11.463-2.6,16.981-1.1,4.735,1.282,9.5,3.845,12.246,8.045,1.246,1.922,4.307.142,3.061-1.78C96.921,27.386,80.3,24.04,69.581,29.593Z" transform="translate(-60.112 -20.086)" fill="#9d6ff3"/><path id="XMLID_14_" d="M103.359,21.045c-3.951-6.159-10.751-10-17.657-11.89C77.763,6.948,68.721,7.019,61.281,10.9c-2.029,1.068-.249,4.129,1.78,3.061,6.586-3.453,14.667-3.311,21.644-1.388,5.981,1.638,12.1,4.913,15.521,10.252C101.507,24.783,104.569,23,103.359,21.045Z" transform="translate(-54.766 -7.693)" fill="#9d6ff3"/><path id="XMLID_9_" d="M65.995,47.8a20.7,20.7,0,0,0-12.958,4.45H47.27a2.579,2.579,0,0,0-2.67,2.456v47.239a2.763,2.763,0,0,0,2.67,2.67h5.838a2.639,2.639,0,0,0,2.528-2.67V87.564A21.228,21.228,0,1,0,65.995,47.8Zm0,33.178a12,12,0,1,1,12-12A12,12,0,0,1,65.995,80.978Z" transform="translate(-44.6 -33.522)" fill="#9d6ff3"/></g></svg>
<h1 class="title dot">{{ localeHelper locale "progressPage" "title" }}</h1>
<p class="text">{{ localeHelper locale "progressPage" "description" }}</p>
<h1 class="title dot">{{ localeHelper locale "progressPage.title" }}</h1>
<p class="text">{{ localeHelper locale "progressPage.description" }}</p>
</div>
</div>
<div class="all-progress-lists">
<div class="donation-progress">
<h1 class="title dot">Donation goal</h1>
<div class="progress-bar">
<div class="progress-bar-inner" style="width: {{ donationCache.completed_capped }}%;" ></div>
</div>
<p><span>${{donationCache.total_dollars}}</span> of <span>${{donationCache.goal_dollars}}</span>/month, <span>${{donationCache.completed_real}}%</span> of the monthly goal. To become a subscriber and gain access to cool perks, visit the <a href="/account/upgrade">upgrade page</a>.</p>
<p class="localeReplace">{{{ localeHelper locale "donation.progress" }}} {{{ localeHelper locale "donation.upgradePush" }}}</p>
</div>
{{#each progressLists.sections}}
@@ -31,3 +29,13 @@
{{> footer }}
</div>
<script>
/* this jank is needed to have data mixed in with a localized string */
document.querySelector('.localeReplace').innerHTML = document.querySelector('.localeReplace').innerHTML
.replace('${totd}', '{{donationCache.total_dollars}}');
document.querySelector('.localeReplace').innerHTML = document.querySelector('.localeReplace').innerHTML
.replace('${goald}', '{{donationCache.goal_dollars}}');
document.querySelector('.localeReplace').innerHTML = document.querySelector('.localeReplace').innerHTML
.replace('${perc}', '{{donationCache.completed_real}}');
</script>