mirror of
https://gitlab.com/PronounsPage/PronounsPage.git
synced 2025-09-24 05:05:20 -04:00
Merge branch 'main' into pl-pronouns-new
# Conflicts: # locale/tr/translations.suml
This commit is contained in:
commit
e31c8306f9
@ -3,7 +3,7 @@
|
||||
## Installation
|
||||
|
||||
```
|
||||
git clone git@gitlab.com:Avris/Zaimki.git
|
||||
git clone git@gitlab.com:PronounsPage/PronounsPage.git
|
||||
```
|
||||
|
||||
We're using FontAwesome Pro, so to set up a local copy without having a FA license,
|
||||
|
@ -5,6 +5,20 @@
|
||||
<script>
|
||||
import {sleep} from "../src/helpers";
|
||||
|
||||
const COLOURS = [
|
||||
'#C71585',
|
||||
'#dc3545',
|
||||
'#fd7e14',
|
||||
'#ffc107',
|
||||
'#198754',
|
||||
'#20c997',
|
||||
'#0dcaf0',
|
||||
'#0d6efd',
|
||||
'#6610f2',
|
||||
'#6f42c1',
|
||||
'#d63384',
|
||||
];
|
||||
|
||||
export default {
|
||||
props: {
|
||||
label: { required: true },
|
||||
@ -28,6 +42,19 @@
|
||||
this.drawChart();
|
||||
},
|
||||
methods: {
|
||||
buildDataset(data, label, colour) {
|
||||
return {
|
||||
label: label,
|
||||
data: this.cumulative
|
||||
? this.accumulate(Object.values(data))
|
||||
: Object.values(data),
|
||||
fill: false,
|
||||
borderColor: colour,
|
||||
}
|
||||
},
|
||||
isMultiDataset(data) {
|
||||
return Object.values(data).length > 0 && typeof(Object.values(data)[0]) === 'object';
|
||||
},
|
||||
async drawChart() {
|
||||
let tries = 0;
|
||||
while (window.Chart === undefined) {
|
||||
@ -36,18 +63,22 @@
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
let colourIndex = 0;
|
||||
new Chart(this.$el.getContext('2d'), {
|
||||
type: this.type,
|
||||
data: {
|
||||
labels: Object.keys(this.data),
|
||||
datasets: [{
|
||||
label: this.label,
|
||||
data: this.cumulative
|
||||
? this.accumulate(Object.values(this.data))
|
||||
: Object.values(this.data),
|
||||
fill: false,
|
||||
borderColor: '#C71585',
|
||||
}],
|
||||
labels: this.isMultiDataset(this.data)
|
||||
? Array.from(Object.values(this.data).reduce((carry, item) => {
|
||||
for (let key in item) {
|
||||
carry.add(key);
|
||||
}
|
||||
return carry;
|
||||
}, new Set()))
|
||||
: Object.keys(this.data),
|
||||
datasets: this.isMultiDataset(this.data)
|
||||
? Object.entries(this.data).map(([key, data]) => this.buildDataset(data, key, COLOURS[colourIndex++ % COLOURS.length]))
|
||||
: [ this.buildDataset(this.data, this.label, COLOURS[0]) ],
|
||||
},
|
||||
options: this.options,
|
||||
});
|
||||
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<p v-if="header" class="h6 d-inline-block me-3"><strong>{{header}}</strong></p>
|
||||
<div class="form-check form-check-inline"
|
||||
v-for="(desc, m) in {'': 'Hide chart', 'daily': 'Daily change chart', 'cumulative': 'Cumulative chart'}">
|
||||
<label class="form-check-label">
|
||||
@ -22,6 +23,7 @@
|
||||
name: { required: true },
|
||||
data: { required: true },
|
||||
init: { 'default': '' },
|
||||
header: {},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -43,7 +43,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li class="mb-2">
|
||||
<a href="https://gitlab.com/Avris/Zaimki/-/boards">
|
||||
<a href="https://gitlab.com/PronounsPage/PronounsPage/-/boards">
|
||||
<Icon v="code-merge"/>
|
||||
<T>contact.contribute.technical.footer</T>
|
||||
</a>
|
||||
@ -148,7 +148,7 @@
|
||||
</LocaleLink>
|
||||
</li>
|
||||
<li class="mb-2">
|
||||
<a href="https://gitlab.com/Avris/Zaimki" target="_blank" rel="noopener">
|
||||
<a href="https://gitlab.com/PronounsPage/PronounsPage" target="_blank" rel="noopener">
|
||||
<Icon v="gitlab" set="b"/>
|
||||
Source code
|
||||
</a>
|
||||
|
@ -86,14 +86,20 @@
|
||||
<Icon v="exclamation-triangle"/>
|
||||
This language version is still under construction!
|
||||
</div>
|
||||
<div v-show="showCensus" class="container">
|
||||
<div class="alert alert-info mb-0">
|
||||
<a href="#" class="float-end" @click.prevent="dismissCensus">
|
||||
<Icon v="times"/>
|
||||
</a>
|
||||
<Icon v="user-chart" size="2" class="d-inline-block float-start me-3 mt-2"/>
|
||||
<T>census.banner</T>
|
||||
</div>
|
||||
<div v-show="showCensus" class="container position-relative">
|
||||
<nuxt-link :to="`/${config.census.route}`">
|
||||
<img src="/img-local/census/census-banner-horizontal.png"
|
||||
alt="Na tle flagi osób niebinarnych (cztery poziome pasy: żółty, biały, fioletowy, czarny) tekst: Trwa trzecia edycja największego badania języka osób niebinarnych! Jakich form używamy? Jak unikamy upłciowionego języka? Jak nasz język rozwija się i zmienia? Wypełnij naszą ankietę, by pomóc nam to zbadać! Niebinarny Spis Powszechny 2023; zaimki.pl/spis"
|
||||
class="w-100 shadow d-none d-md-block"/>
|
||||
<img src="/img-local/census/census-banner-horizontal-mobile.png"
|
||||
alt="Na tle flagi osób niebinarnych (cztery poziome pasy: żółty, biały, fioletowy, czarny) tekst: Trwa trzecia edycja największego badania języka osób niebinarnych! Jakich form używamy? Jak unikamy upłciowionego języka? Jak nasz język rozwija się i zmienia? Wypełnij naszą ankietę, by pomóc nam to zbadać! Niebinarny Spis Powszechny 2023; zaimki.pl/spis"
|
||||
class="w-100 shadow d-md-none"/>
|
||||
</nuxt-link>
|
||||
<a href="#"
|
||||
class="position-absolute p-2 bg-primary text-white btn-dismiss"
|
||||
@click.prevent="dismissCensus">
|
||||
<Icon v="times"/>
|
||||
</a>
|
||||
</div>
|
||||
<div v-if="$user() && $user().bannedReason" class="alert alert-danger mb-0 container">
|
||||
<p class="h4 mb-2">
|
||||
@ -308,7 +314,8 @@
|
||||
const finished = !!parseInt(window.localStorage.getItem(`census-${this.config.census.edition}-finished`) || 0);
|
||||
const dismissed = !!parseInt(window.localStorage.getItem(`census-${this.config.census.edition}-dismissed`) || 0);
|
||||
const alreadyIn = this.$route.path === '/' + this.config.census.route;
|
||||
if (!this.config.census.enabled || finished || dismissed || this.censusDismissed || alreadyIn) {
|
||||
const isHomepage = this.$route.path === '/';
|
||||
if (!this.config.census.enabled || (!isHomepage && (finished || dismissed)) || this.censusDismissed || alreadyIn) {
|
||||
return false;
|
||||
}
|
||||
const start = DateTime.fromISO(this.config.census.start).toLocal();
|
||||
@ -470,4 +477,14 @@
|
||||
top: -0.1em;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-dismiss {
|
||||
top: 0;
|
||||
right: 0;
|
||||
opacity: 0.5;
|
||||
transition: opacity .25s ease-in-out;
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -8,7 +8,7 @@
|
||||
<h2>
|
||||
@{{user.username}}
|
||||
</h2>
|
||||
<p v-if="profile.teamName || profile.footerName" class="mb-2">
|
||||
<p v-if="user.team || profile.teamName || profile.footerName" class="mb-2">
|
||||
<nuxt-link :to="`/${config.contact.team.route}`" class="badge bg-primary text-white">
|
||||
<Icon v="collective-logo.svg" class="inverted"/>
|
||||
<T>contact.team.member</T>
|
||||
|
@ -526,7 +526,7 @@ contact:
|
||||
technical:
|
||||
header: 'Submit a pull request'
|
||||
description: >
|
||||
Technical tasks are managed on {https://gitlab.com/Avris/Zaimki/-/boards=this kanban board}.
|
||||
Technical tasks are managed on {https://gitlab.com/PronounsPage/PronounsPage/-/boards=this kanban board}.
|
||||
Just pick an unassigned task from the “To Do” column, assign it to yourself and start working on it.
|
||||
Don't hesitate to ask questions.
|
||||
footer: 'Technical tasks'
|
||||
@ -798,7 +798,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=Source code} and content are licensed under {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=Source code} and content are licensed under {/license=OQL}.
|
||||
links: 'Contact, social media'
|
||||
legal: 'Legal'
|
||||
financial: 'Financial transparency'
|
||||
|
@ -455,7 +455,7 @@ contact:
|
||||
vorschlagen“ und folgen Sie den Anweisungen.
|
||||
technical:
|
||||
description: >
|
||||
Technische Aufgaben werden auf {https://gitlab.com/Avris/Zaimki/-/boards=diesem kanban board} verwaltet.
|
||||
Technische Aufgaben werden auf {https://gitlab.com/PronounsPage/PronounsPage/-/boards=diesem kanban board} verwaltet.
|
||||
Wählen einfach eine nicht zugewiesene Aufgabe aus der Spalte „To Do“ aus, weise sie dir selbst zu und
|
||||
beginne mit der Arbeit daran. Zögere nicht, Fragen zu stellen.
|
||||
header: 'Reiche eine Pull-Anfrage ein'
|
||||
@ -680,7 +680,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=Der Quellcode} und der Inhalt sind unter der {/license=OQL} Lizenz veröffentlicht.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=Der Quellcode} und der Inhalt sind unter der {/license=OQL} Lizenz veröffentlicht.
|
||||
links: 'Kontakt & Social Media'
|
||||
legal: 'Rechtliches'
|
||||
financial: 'Finanzielle Transparenz'
|
||||
|
@ -13,7 +13,7 @@ We'll invite you to our [Teams](https://www.microsoft.com/en-us/microsoft-365/mi
|
||||
and offer support.
|
||||
|
||||
If you know how to work with tools like Git, Yarn, JavaScript etc.,
|
||||
you can head to [the source code](https://gitlab.com/Avris/Zaimki/),
|
||||
you can head to [the source code](https://gitlab.com/PronounsPage/PronounsPage/),
|
||||
clone the repository and set up the project according to the instruction in README.md.
|
||||
You'll be able to see the changes in real time as you make them.
|
||||
Push them to a separate branch and submit a pull request.
|
||||
@ -22,7 +22,7 @@ Otherwise, don't worry. You can still help localise the project without knowing
|
||||
I'll prepare all the necessary files in a dedicated Teams channel – you can just start editing.
|
||||
|
||||
Alternatively:
|
||||
Click [here](https://gitlab.com/Avris/Zaimki/-/archive/main/Zaimki-main.zip) to download a zip file with the code.
|
||||
Click [here](https://gitlab.com/PronounsPage/PronounsPage/-/archive/main/Zaimki-main.zip) to download a zip file with the code.
|
||||
Don't mind everything else, just create a copy of the `/locale/_base` directory,
|
||||
calling the copy according to the new language code.
|
||||
Instead of `_base` (a version of English modified for this purpose) you can use a different language as a base,
|
||||
@ -32,7 +32,7 @@ eg. for translating into Slavic languages it might be better to start with `pl`
|
||||
Inside that directory hides all the config and code related to the specific language.
|
||||
The most important files are:
|
||||
|
||||
## [translation.suml](https://gitlab.com/Avris/Zaimki/-/blob/main/locale/_base/translations.suml)
|
||||
## [translation.suml](https://gitlab.com/PronounsPage/PronounsPage/-/blob/main/locale/_base/translations.suml)
|
||||
|
||||
This file contains translation keys with corresponding values.
|
||||
Basically, keep everything before the colon as it is, and translate everything after the colon into your language.
|
||||
@ -44,7 +44,7 @@ Also, remember that not everything in this file will necessarily require a trans
|
||||
For instance, the Polish locale contains translations for the “names” module,
|
||||
which a new language will probably not have right away (although might be added later).
|
||||
|
||||
## [config.suml](https://gitlab.com/Avris/Zaimki/-/blob/main/locale/_base/config.suml)
|
||||
## [config.suml](https://gitlab.com/PronounsPage/PronounsPage/-/blob/main/locale/_base/config.suml)
|
||||
|
||||
Although this file is very important, I don't expect you to handle it, if you're not a technical person.
|
||||
Still, some translations are also included there, so please go through it and see if you can do something useful there.
|
||||
@ -54,16 +54,16 @@ This file contains for example a definition of [links](/link), [authors](/contac
|
||||
You can either adjust those definitions directly in this file if you can,
|
||||
or you can just put them in some Word or Excel file for me to handle.
|
||||
|
||||
## [pronouns/pronouns.tsv](https://gitlab.com/Avris/Zaimki/-/blob/main/locale/_base/pronouns/pronouns.tsv)
|
||||
## [pronouns/pronouns.tsv](https://gitlab.com/PronounsPage/PronounsPage/-/blob/main/locale/_base/pronouns/pronouns.tsv)
|
||||
|
||||
This file is a table of pronouns. You can edit it in Excel or just a text editor (just keep the tabs where they were).
|
||||
Columns from `pronoun_subject` to `reflexive` can be removed and replaced with other forms relevant to your language.
|
||||
|
||||
## [pronouns/pronounGroups.tsv](https://gitlab.com/Avris/Zaimki/-/blob/main/locale/_base/pronouns/pronounGroups.tsv)
|
||||
## [pronouns/pronounGroups.tsv](https://gitlab.com/PronounsPage/PronounsPage/-/blob/main/locale/_base/pronouns/pronounGroups.tsv)
|
||||
|
||||
This table contains the groups of pronouns.
|
||||
|
||||
## [pronouns/examples.tsv](https://gitlab.com/Avris/Zaimki/-/blob/main/locale/_base/pronouns/examples.tsv)
|
||||
## [pronouns/examples.tsv](https://gitlab.com/PronounsPage/PronounsPage/-/blob/main/locale/_base/pronouns/examples.tsv)
|
||||
|
||||
This table contains the example sentences – with placeholders for the pronouns to be inserted into.
|
||||
If plural sentence is the same as singular you can leave the second column empty.
|
||||
|
@ -652,7 +652,7 @@ contact:
|
||||
technical:
|
||||
header: 'Submit a pull request'
|
||||
description: >
|
||||
Technical tasks are managed on {https://gitlab.com/Avris/Zaimki/-/boards=this kanban board}.
|
||||
Technical tasks are managed on {https://gitlab.com/PronounsPage/PronounsPage/-/boards=this kanban board}.
|
||||
Just pick an unassigned task from the “To Do” column, assign it to yourself and start working on it.
|
||||
Don't hesitate to ask questions.
|
||||
footer: 'Technical tasks'
|
||||
@ -942,7 +942,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=Source code} and content are licensed under {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=Source code} and content are licensed under {/license=OQL}.
|
||||
links: 'Contact & social media'
|
||||
legal: 'Legal'
|
||||
financial: 'Financial transparency'
|
||||
@ -1486,3 +1486,31 @@ calendar:
|
||||
ukraine:
|
||||
header: 'We stand with Ukraine.'
|
||||
link: '{https://supportukrainenow.org=Here''s how you can support them.}'
|
||||
|
||||
seo:
|
||||
keywords:
|
||||
- 'pronouns'
|
||||
- 'inclusive language'
|
||||
- 'inclusivity'
|
||||
- 'diversity'
|
||||
- 'dei'
|
||||
- 'queer'
|
||||
- 'lgbtq'
|
||||
- 'lgbt'
|
||||
- 'lgbtq page'
|
||||
- 'lgbt page'
|
||||
- 'not binary'
|
||||
- 'non binary'
|
||||
- 'nonbinary'
|
||||
- 'non-binary'
|
||||
- 'gay rights'
|
||||
- 'trans rights'
|
||||
- 'lesbian'
|
||||
- 'gay'
|
||||
- 'transgender'
|
||||
- 'trans'
|
||||
- 'lgbtq youth'
|
||||
- 'lgbt youth'
|
||||
- 'i support lgbt'
|
||||
- 'i support lgbtq'
|
||||
- 'i support gay rights'
|
||||
|
@ -610,7 +610,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=Source code} and content are licensed under {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=Source code} and content are licensed under {/license=OQL}.
|
||||
links: 'Contact, social media'
|
||||
legal: 'Legal'
|
||||
financial: 'Financial transparency' # TODO
|
||||
|
@ -501,7 +501,7 @@ contact:
|
||||
technical:
|
||||
header: 'Envía una solicitud de cambio'
|
||||
description: >
|
||||
Las tareas técnicas son manejadas en {https://gitlab.com/Avris/Zaimki/-/boards=esta tabla kanban}. Solo
|
||||
Las tareas técnicas son manejadas en {https://gitlab.com/PronounsPage/PronounsPage/-/boards=esta tabla kanban}. Solo
|
||||
escoje una tarea no asignada desde la columna “To Do”, asígnatela y empieza a trabajar en ella. No dudes
|
||||
en hacer preguntas.
|
||||
footer: 'Tareas técnicas'
|
||||
@ -669,7 +669,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=El código fuente} y el contenido estan publicado bajo la licencia {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=El código fuente} y el contenido estan publicado bajo la licencia {/license=OQL}.
|
||||
links: 'Contacto, redes sociales'
|
||||
legal: 'Asuntos legales'
|
||||
financial: 'Transparencia financiera'
|
||||
|
@ -565,7 +565,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=Code source} et le contenu sont sous licence {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=Code source} et le contenu sont sous licence {/license=OQL}.
|
||||
links: 'Contact, réseaux sociaux'
|
||||
legal: 'Légal'
|
||||
financial: 'Transparence financière'
|
||||
|
@ -539,7 +539,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=O código-fonte} e o conteúdo são licenciados sob a licença {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=O código-fonte} e o conteúdo são licenciados sob a licença {/license=OQL}.
|
||||
links: 'Contato, redes sociais'
|
||||
legal: 'Legal' # TODO
|
||||
financial: 'Financial transparency' # TODO
|
||||
|
@ -486,7 +486,7 @@ contact:
|
||||
technical:
|
||||
header: 'Submit a pull request'
|
||||
description: >
|
||||
Technical tasks are managed on {https://gitlab.com/Avris/Zaimki/-/boards=this kanban board}.
|
||||
Technical tasks are managed on {https://gitlab.com/PronounsPage/PronounsPage/-/boards=this kanban board}.
|
||||
Just pick an unassigned task from the “To Do” column, assign it to yourself and start working on it.
|
||||
Don't hesitate to ask questions.
|
||||
footer: 'Technical tasks'
|
||||
@ -653,7 +653,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=Il codice sorgente} e i contenuti sono rilasciati secondo la licenza {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=Il codice sorgente} e i contenuti sono rilasciati secondo la licenza {/license=OQL}.
|
||||
links: 'Contatti, social media'
|
||||
legal: 'Questioni legali'
|
||||
financial: 'Trasparenza finanziaria'
|
||||
|
@ -398,7 +398,7 @@ contact:
|
||||
technical:
|
||||
header: 'プルリクエストを提出'
|
||||
description: >
|
||||
テクニカルなタスクは{https://gitlab.com/Avris/Zaimki/-/boards=この「看板」}で管理します。「To
|
||||
テクニカルなタスクは{https://gitlab.com/PronounsPage/PronounsPage/-/boards=この「看板」}で管理します。「To
|
||||
Do」の欄から割り当てられていないタスクを選んでください。質問がある場合はお気軽に!
|
||||
footer: 'テクニカルなタスク'
|
||||
|
||||
@ -619,7 +619,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=ソースコード}と内容は{/license=「定見的クィアライセンス」}の下でライセンスされています。
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=ソースコード}と内容は{/license=「定見的クィアライセンス」}の下でライセンスされています。
|
||||
links: '連絡先、ソーシャルメディア'
|
||||
legal: '法的情報'
|
||||
financial: '財務報告'
|
||||
|
@ -475,7 +475,7 @@ contact:
|
||||
technical:
|
||||
header: '풀 요청 제출하기'
|
||||
description: >
|
||||
기술 작업은 {https://gitlab.com/Avris/Zaimki/-/boards=이 칸반 보드}에서 관리됩니다. "To Do"열에서 할당이 돼있지 않은 작업들 중 한 직접 자신에게
|
||||
기술 작업은 {https://gitlab.com/PronounsPage/PronounsPage/-/boards=이 칸반 보드}에서 관리됩니다. "To Do"열에서 할당이 돼있지 않은 작업들 중 한 직접 자신에게
|
||||
할당하고 작업을 시작하세요. 질문이 있으면 주저하지 말고 물어 주세요.
|
||||
footer: '기술 작업'
|
||||
|
||||
@ -484,7 +484,7 @@ support:
|
||||
description: >
|
||||
서버, 도메인, 스티커 등을 추가하는걸 구입하려는 경우,
|
||||
아래 링크를 사용할 수 있습니다.
|
||||
bankAccount: 'Bank transfer' # TODO
|
||||
bankAccount: '은행 송금'
|
||||
|
||||
user:
|
||||
header: '계정'
|
||||
@ -493,7 +493,7 @@ user:
|
||||
login:
|
||||
help: '로그인하거나 계정을 만들려면 소셜 미디어 버튼을 사용하거나 아래 필드에 이메일을 입력한 다음 우편함으로 받을 코드를 확인하세요.'
|
||||
placeholder: '이메일(또는 이미 등록된 사용자 이름)'
|
||||
action: '로그인' # TODO: 'Log in / register'
|
||||
action: '로그인' # TODO: '로그인 또는 등록'
|
||||
emailSent: '6자리 코드가 포함된 이메일을 보내드렸습니다. 여기에 입력하세요. 코드는 일회용이며 15분 동안 유효합니다.'
|
||||
userNotFound: '사용자를 찾을 수 없습니다.'
|
||||
email:
|
||||
@ -697,7 +697,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=소스 코드}의 콘텐츠는 {/license=OQL}의라이센스 됐습니다.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=소스 코드}의 콘텐츠는 {/license=OQL}의라이센스 됐습니다.
|
||||
links: '연락처, SNS'
|
||||
legal: '합법'
|
||||
financial: '재무 투명성'
|
||||
@ -789,13 +789,13 @@ terms:
|
||||
enbyphobia: '비공포증'
|
||||
queerphobia: 'queerphobia'
|
||||
exclusionism: 'queer exclusionism'
|
||||
sexism: 'sexism'
|
||||
sexism: '성 차별'
|
||||
misogyny: '여성 혐오'
|
||||
harassment: '괴롭힘'
|
||||
impersonation: '사칭'
|
||||
selfHarm: 'encouraging self-harm and/or suicide' # TODO
|
||||
childPornography: 'child pornography'
|
||||
unlawfulConduct: 'unlawful conduct'
|
||||
unlawfulConduct: '불법 행위를'
|
||||
misinformation: '오보'
|
||||
doxxing: 'sharing of someone else''s personal data'
|
||||
spam: '스팸'
|
||||
@ -956,7 +956,7 @@ flags:
|
||||
Abrosexual: 'Abrosexual'
|
||||
Achillean: 'Aquilean{inflection}'
|
||||
Alloromantic_Asexual: 'Alorrománti{inflection_c} asexual'
|
||||
Agender: 'Agénero'
|
||||
Agender: '에이젠더'
|
||||
Ambiamorous: 'Ambiamoros{inflection}'
|
||||
Anarcha-Queer: 'Anarco-queer'
|
||||
Androgyne: 'Andrógin{inflection}'
|
||||
@ -964,29 +964,29 @@ flags:
|
||||
Aporagender: 'Aporagénero'
|
||||
Archaeopronouns: 'Arqueopronombres'
|
||||
Aroace: 'Arro-as'
|
||||
Aromantic: 'Arrománti{inflection_c}'
|
||||
Aromantic: '로맨틱 끌림{inflection_c}'
|
||||
Aromantic_Allosexual: 'Arrománti{inflection_c} alosexual'
|
||||
Asexual: 'Asexual'
|
||||
Asexual: '무성애자'
|
||||
Autigender: 'Autisgénero'
|
||||
Bear: 'Oso'
|
||||
Bicurious: 'Bicurios{inflection}'
|
||||
Bigender: 'Bigénero'
|
||||
Bigender: '바이젠더'
|
||||
Biromantic: 'Birrománti{inflection_c}'
|
||||
Bisexual: 'Bisexual'
|
||||
Bisexual: '양성애자'
|
||||
Butch: 'Butch'
|
||||
Ceteroromantic: 'Ceterorrománti{inflection_c}'
|
||||
Ceterosexual: 'Ceterosexual'
|
||||
Cis_Ally: 'Aliad{inflection} cis'
|
||||
Demiboy: 'Demichico'
|
||||
Demigender: 'Demigénero'
|
||||
Demigirl: 'Demichica'
|
||||
Demiboy: '일부 남성'
|
||||
Demigender: '일부 성별'
|
||||
Demigirl: '일부 여성'
|
||||
Demiromantic: 'Demirrománti{inflection_c}'
|
||||
Demisexual: 'Demisexual'
|
||||
Diamoric: 'Diamóri{inflection_c}'
|
||||
Enbian: 'Nobian{inflection}'
|
||||
Fa*afafine: 'Fa''afafine'
|
||||
Femme: 'Afeminad{inflection}'
|
||||
Gay: 'Gay'
|
||||
Gay: '게이'
|
||||
Gender_Questioning: 'Cuestionándose el género'
|
||||
Genderfae: 'Hadagénero'
|
||||
Genderfaun: 'Faunogénero'
|
||||
@ -998,14 +998,14 @@ flags:
|
||||
Gynesexual: 'Ginosexual'
|
||||
Heteroflexible: 'Heteroflexible'
|
||||
Heteroromantic: 'Heterorrománti{inflection_c}'
|
||||
Heterosexual: 'Heterosexual'
|
||||
Heterosexual: '이성애자'
|
||||
Hijra: 'Hijra'
|
||||
Homoflexible: 'Homoflexible'
|
||||
Homoromantic: 'Homorrománti{inflection_c}'
|
||||
Intersex: 'Intersexual'
|
||||
LGBTQ: 'LGBTQ'
|
||||
Leather_Pride: 'Orgullo de cuero'
|
||||
Lesbian: 'Lesbiana'
|
||||
Lesbian: '레즈비언'
|
||||
Lesbiromantic: 'Lesbirrománti{inflection_c}'
|
||||
Maverique: 'Maverique'
|
||||
Monoamorous: 'Monoamoros{inflection}'
|
||||
@ -1014,7 +1014,7 @@ flags:
|
||||
Nebularomantic: 'Nebulosarrománti{inflection_c}'
|
||||
Neopronouns: 'Neopronombres'
|
||||
Neutrois: 'Neutrés'
|
||||
Nonbinary: 'No binari{inflection}'
|
||||
Nonbinary: '논바이너리{inflection}'
|
||||
Omnisexual: 'Omnisexual'
|
||||
Omniromantic: 'Omnirrománti{inflection_c}'
|
||||
Oriented_Aroace: 'Arro-as orientad{inflection}'
|
||||
@ -1036,7 +1036,7 @@ flags:
|
||||
Straight_Ally: 'Aliad{inflection} hetero'
|
||||
Toric: 'Tóri{inflection_c}'
|
||||
Transfeminine: 'Transfemenin{inflection}'
|
||||
Transgender: 'Transgénero'
|
||||
Transgender: '성전환자'
|
||||
Transmasculine: 'Transmasculin{inflection}'
|
||||
Transneutral: 'Transneutr{inflection}'
|
||||
Trigender: 'Trigénero'
|
||||
|
@ -539,7 +539,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=El kodiche fuente} i el kontenido estan publikados debasho de la lisensia {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=El kodiche fuente} i el kontenido estan publikados debasho de la lisensia {/license=OQL}.
|
||||
links: 'Kontakto, redes sosyalas, apoyo'
|
||||
legal: 'Kozas legalas'
|
||||
financial: 'Transparensia pekunaria'
|
||||
|
@ -614,7 +614,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=De broncode} en inhoud vallen onder de {/license=OQL} licentie.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=De broncode} en inhoud vallen onder de {/license=OQL} licentie.
|
||||
links: 'Contact, sociale media'
|
||||
legal: 'Juridisch'
|
||||
financial: 'Financiële transparantie'
|
||||
|
@ -410,7 +410,7 @@ contact:
|
||||
instruksjonene.
|
||||
technical:
|
||||
description: >
|
||||
Tekniske oppgaver er behandlet på {https://gitlab.com/Avris/Zaimki/-/boards=dette kanban brettet}. Bare
|
||||
Tekniske oppgaver er behandlet på {https://gitlab.com/PronounsPage/PronounsPage/-/boards=dette kanban brettet}. Bare
|
||||
velg en oppgave som ikke er tilordnet, tildel den til deg selv og begynn å jobb. Ikke nøl med å spørre
|
||||
spørsmål.
|
||||
header: 'Send inn en pull forespørsel'
|
||||
@ -651,7 +651,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=Kildekode} og Innholdet er lisensiert under {/license=OQL}-lisensen.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=Kildekode} og Innholdet er lisensiert under {/license=OQL}-lisensen.
|
||||
links: 'Kontakt, sosiale medier'
|
||||
legal: 'Legal' # TODO
|
||||
financial: 'Økonomisk gjennomsiktighet'
|
||||
|
@ -41,7 +41,7 @@ i sugerować te same końcówki neutratywów dla rzeczowników o tych samych ko
|
||||
albo o tym samym pochodzeniu (np. -um dla wyrazów zapożyczonych z łaciny).
|
||||
Możesz przejrzeć nasze schematy końcówek, otwierając formularz zgłaszania propozycji,
|
||||
a następnie klikając na przycisk „Użyj szablonu”
|
||||
(albo i bezpośrednio [w kodzie źródłowym](https://gitlab.com/Avris/Zaimki/-/blob/main/locale/pl/nouns/nounTemplates.tsv)).
|
||||
(albo i bezpośrednio [w kodzie źródłowym](https://gitlab.com/PronounsPage/PronounsPage/-/blob/main/locale/pl/nouns/nounTemplates.tsv)).
|
||||
|
||||
Słowotwórstwo oparte o istniejące sufiksy sprawia też, że odmiana neutratywów powinna być względnie intuicyjna.
|
||||
W razie problemów, zawsze można oczywiście sprawdzić tabelki odmiany w [Słowniku Neutratywów](/neutratywy),
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
{disable_twemoji}
|
||||
|
||||
<img src="/img-local/spis-2022.png" class="hero d-none" alt=""/>
|
||||
<img src="/img-local/census/spis-2022.png" class="hero d-none" alt=""/>
|
||||
|
||||
Wyników drugiej edycji Niebinarnego Spisu Powszechnego jesteśmy ciekawe chyba jeszcze bardziej niż [pierwszej](/blog/spis-2022).
|
||||
Możemy bowiem nie tylko zastosować zeszłoroczne doświadczenie, by ulepszyć pytania i analizę odpowiedzi,
|
||||
|
@ -740,6 +740,11 @@ links:
|
||||
icon: 'play-circle'
|
||||
url: 'https://www.youtube.com/watch?v=MYH2qGScEVk'
|
||||
headline: 'FEMINATYWY. O genderowej nowomowie słów kilka. | Maciej Makselon | TEDxKoszalin'
|
||||
-
|
||||
icon: 'newspaper'
|
||||
url: 'https://ryzykonarracyjne.pl/blog/artykuly/ryzykowne-artykuly-feminatywy-w-rpg-a-na-co-to-komu/'
|
||||
headline: 'Ryzykowne artykuły: Feminatywy w RPG? A na co to komu?'
|
||||
extra: ' – Ryzyko Narracyjne'
|
||||
mediaGuests:
|
||||
-
|
||||
icon: 'newspaper'
|
||||
@ -1958,7 +1963,7 @@ census:
|
||||
- ['ono/eno', '„ono jest fajne”, „lubię eno zwierzątko”']
|
||||
|
||||
- ['onu/jenu', '„onu jest fajnu”, „lubię jenu zwierzątko”']
|
||||
- ['onu/jejo', '„onu jest fajnu”, „lubię jejgo zwierzątko”']
|
||||
- ['onu/jejo', '„onu jest fajnu”, „lubię jejo zwierzątko”']
|
||||
- ['ne/nego', '„ne jest fajnu”, „lubię nego zwierzątko”']
|
||||
|
||||
- ['oni/ich', '„oni są fajni”, „lubię ich zwierzątko”']
|
||||
|
BIN
locale/pl/img/census/census-banner-horizontal-mobile.png
Normal file
BIN
locale/pl/img/census/census-banner-horizontal-mobile.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 244 KiB |
BIN
locale/pl/img/census/census-banner-horizontal.png
Normal file
BIN
locale/pl/img/census/census-banner-horizontal.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 259 KiB |
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 104 KiB |
@ -1240,7 +1240,7 @@ contact:
|
||||
technical:
|
||||
header: 'Zgłoś pull requesta'
|
||||
description: >
|
||||
Technicznymi zadaniami zarządzamy poprzez {https://gitlab.com/Avris/Zaimki/-/boards=ten kanban board}.
|
||||
Technicznymi zadaniami zarządzamy poprzez {https://gitlab.com/PronounsPage/PronounsPage/-/boards=ten kanban board}.
|
||||
Wybierz nieprzypisanego do nikogo taska z kolumny „To Do”, przypisz go do siebie i zacznij pracę.
|
||||
Nie bój się zadawać pytań.
|
||||
footer: 'Zadania techniczne'
|
||||
@ -1528,9 +1528,10 @@ census:
|
||||
Jesteś osobą niebinarną? Też weź udział w Spisie!
|
||||
subscribe:
|
||||
encouragement: >
|
||||
Chcesz otrzymywać przypominajki o przyszłych edycjach Spisu?
|
||||
Możesz podać poniżej swój adres email – wyślemy jedną wiadomość rocznie, zero spamu,
|
||||
i oczywiście bez powiązania adresu z Twoimi odpowiedziami.
|
||||
Nie chcesz przegapić kolejnej edycji? Raportu z wnioskami ze Spisu?
|
||||
Możesz podać tutaj swój adres email – wyślemy Ci dwie wiadomości rocznie:
|
||||
gdy zacznie się nowa edycja, i gdy opublikujemy raport ze Spisu.
|
||||
Oczywiście bez powiązania adresu z Twoimi odpowiedziami.
|
||||
action: 'Zapisz się'
|
||||
unsubscribe: 'Wypisz się'
|
||||
success: 'Zapisałośmy Twój adres, przypomnimy o następnej edycji!'
|
||||
@ -1574,7 +1575,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=Kod źródłowy} oraz treści są udostępnione na licencji {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=Kod źródłowy} oraz treści są udostępnione na licencji {/license=OQL}.
|
||||
links: 'Kontakt, social media'
|
||||
legal: 'Prawne'
|
||||
financial: 'Przejrzystość finansowa'
|
||||
|
@ -425,7 +425,7 @@ contact:
|
||||
technical:
|
||||
footer: 'Tarefas Técnicas'
|
||||
description: >
|
||||
Trabalhos mais técnicos são gerenciados {https://gitlab.com/Avris/Zaimki/-/boards= neste painel Kanban}.
|
||||
Trabalhos mais técnicos são gerenciados {https://gitlab.com/PronounsPage/PronounsPage/-/boards= neste painel Kanban}.
|
||||
Basta escolher uma tarefa na coluna "To Do", atribuí-la a si mesme e começar a trabalhar nela. Se tiver
|
||||
alguma dúvida, pergunte-nos.
|
||||
header: 'Solicite alterações no código '
|
||||
@ -697,7 +697,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=O código-fonte} e o conteúdo são licenciados sob a licença {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=O código-fonte} e o conteúdo são licenciados sob a licença {/license=OQL}.
|
||||
links: 'Contato, redes sociais'
|
||||
legal: 'Assuntos jurídicos'
|
||||
financial: 'Transparência financeira'
|
||||
|
@ -564,7 +564,7 @@ contact:
|
||||
technical:
|
||||
header: 'Trimite un pull request'
|
||||
description: >
|
||||
Sarcinile tehnice sunt gestionate pe {https://gitlab.com/Avris/Zaimki/-/boards=această tablă kanban}.
|
||||
Sarcinile tehnice sunt gestionate pe {https://gitlab.com/PronounsPage/PronounsPage/-/boards=această tablă kanban}.
|
||||
Doar alege o sarcină neasociată din coloana “To Do”, asociază-ți-o și apucă-te să lucrezi la ea.
|
||||
Să nu-ți fie frică să pui întrebări!
|
||||
footer: 'Sarcini tehnice'
|
||||
@ -831,7 +831,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=Codul sursă} și conținutul sunt sub licența {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=Codul sursă} și conținutul sunt sub licența {/license=OQL}.
|
||||
links: 'Date de contact, rețele de socializare, suportă cauza'
|
||||
legal: 'Legal'
|
||||
financial: 'Transparență financiară'
|
||||
|
@ -508,7 +508,7 @@ contact:
|
||||
header: 'Отправить запрос на изменения'
|
||||
footer: 'Технические задачи '
|
||||
description: >
|
||||
Технические задания перечислены {https://gitlab.com/Avris/Zaimki/-/boards=здесь}. Просто выберите
|
||||
Технические задания перечислены {https://gitlab.com/PronounsPage/PronounsPage/-/boards=здесь}. Просто выберите
|
||||
невыполненные задания в списке“To Do” и займитесь ими. Не стесняйтесь задавать вопросы!
|
||||
translationMode:
|
||||
action: 'Предложить перевод'
|
||||
@ -772,7 +772,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=Исходный код} и содержимое лицензированы {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=Исходный код} и содержимое лицензированы {/license=OQL}.
|
||||
links: 'Связаться с нами, социальные сети'
|
||||
legal: 'Юридические вопросы'
|
||||
financial: 'Финансовая прозрачность'
|
||||
|
@ -478,7 +478,7 @@ contact:
|
||||
technical:
|
||||
header: 'Skicka in pull requests'
|
||||
description: >
|
||||
Tekniska sysslor hanteras på {https://gitlab.com/Avris/Zaimki/-/boards=denna kanbantavla}.
|
||||
Tekniska sysslor hanteras på {https://gitlab.com/PronounsPage/PronounsPage/-/boards=denna kanbantavla}.
|
||||
Välj bara en otilldelad syssla från “To Do”-kolumnen, tilldela dig själv den och börja arbeta med den.
|
||||
Var inte rädd för att fråga frågor.
|
||||
footer: 'Tekniska sysslor'
|
||||
@ -717,7 +717,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=Källkod} och innehåll är licensierad under {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=Källkod} och innehåll är licensierad under {/license=OQL}.
|
||||
links: 'Kontakt och sociala medier'
|
||||
legal: 'Rättslig'
|
||||
financial: 'Finansiell insyn'
|
||||
|
@ -503,7 +503,7 @@ contact:
|
||||
technical:
|
||||
header: 'Submit a pull request'
|
||||
description: >
|
||||
Technical tasks are managed on {https://gitlab.com/Avris/Zaimki/-/boards=this kanban board}.
|
||||
Technical tasks are managed on {https://gitlab.com/PronounsPage/PronounsPage/-/boards=this kanban board}.
|
||||
Just pick an unassigned task from the “To Do” column, assign it to yourself and start working on it.
|
||||
Don't hesitate to ask questions.
|
||||
footer: 'Technical tasks'
|
||||
@ -745,7 +745,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=Source code} and content are licensed under {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=Source code} and content are licensed under {/license=OQL}.
|
||||
links: 'Contact, social media'
|
||||
legal: 'Legal'
|
||||
financial: 'Financial transparency'
|
||||
|
@ -465,7 +465,7 @@ user:
|
||||
emailSent: 'Sana 6 haneli bir e-posta gönderdik. Buraya gir. Kod sadece tek kullanımlık ve 15 dakika süre zafında geçerlidir.'
|
||||
userNotFound: 'Kullanıcı bulunamadı.'
|
||||
email:
|
||||
subject: 'Giriş kodun %code%'
|
||||
subject: 'Giriş kodun {{code}}'
|
||||
content: |
|
||||
E-posta hesabını onaylamak için sana verilen tek kullanımlık kodu siteye gir: %code%.
|
||||
Eğer bu kodu sen istemediysen sadece bu iletiyi görmezden gel.
|
||||
@ -719,7 +719,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=Source code} and content are licensed under {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=Source code} and content are licensed under {/license=OQL}.
|
||||
links: 'İletişim, sosyal medya, destek'
|
||||
legal: 'Legal'
|
||||
financial: 'Financial transparency'
|
||||
|
@ -582,7 +582,7 @@ contact:
|
||||
працювати.
|
||||
technical:
|
||||
description: >
|
||||
Керування технічними завданнями здійснюється на {https://gitlab.com/Avris/Zaimki/-/boards=цій канбан
|
||||
Керування технічними завданнями здійснюється на {https://gitlab.com/PronounsPage/PronounsPage/-/boards=цій канбан
|
||||
дощці}. Просто виберіть непоставлене завдання зі стовпця "To Do", призначте його собі та починайте над
|
||||
ним працювати. Не соромтеся задавати запитання.
|
||||
header: 'Надішліть запит на отримання'
|
||||
@ -843,7 +843,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=Вихідний код} та вміст ліцензовані {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=Вихідний код} та вміст ліцензовані {/license=OQL}.
|
||||
links: 'Зв''язатися з нами, соціальні мережі'
|
||||
legal: 'Легально'
|
||||
financial: 'Фінансова прозорість'
|
||||
|
@ -533,7 +533,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=Source code} and content are licensed under {/license=OQL}.
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=Source code} and content are licensed under {/license=OQL}.
|
||||
links: 'Contact, social media'
|
||||
legal: 'Legal' # TODO
|
||||
financial: 'Financial transparency' # TODO
|
||||
|
@ -371,7 +371,7 @@ contact:
|
||||
technical:
|
||||
header: '提交合併請求'
|
||||
description: >
|
||||
技術相關的工作可在{https://gitlab.com/Avris/Zaimki/-/boards=此看板}上找到。
|
||||
技術相關的工作可在{https://gitlab.com/PronounsPage/PronounsPage/-/boards=此看板}上找到。
|
||||
您只需在“To-Do”欄上挑選一項任務,把您自己指派到該任務即可開始。如有問題請盡管問。
|
||||
footer: '技術任務'
|
||||
|
||||
@ -601,7 +601,7 @@ crud:
|
||||
|
||||
footer:
|
||||
license: >
|
||||
{https://gitlab.com/Avris/Zaimki=原始碼}及內容採用{/license=OQL}條款授權。
|
||||
{https://gitlab.com/PronounsPage/PronounsPage=原始碼}及內容採用{/license=OQL}條款授權。
|
||||
links: '聯絡我們'
|
||||
legal: '法律相關'
|
||||
financial: '財務報告' # TODO: could also be 財政透明
|
||||
|
@ -13,6 +13,7 @@ const locale = config.locale;
|
||||
const locales = buildLocaleList(locale);
|
||||
const title = translations.title;
|
||||
const description = translations.description;
|
||||
const keywords = (translations?.seo?.keywords || []).join(', ')
|
||||
const banner = process.env.BASE_URL + '/api/banner/zaimki.png';
|
||||
const colour = '#C71585';
|
||||
const logo = fs.readFileSync(__dirname + '/static/logo/logo.svg').toString('utf-8').replace('/></svg>', 'fill="currentColor"/></svg>');
|
||||
@ -116,6 +117,8 @@ export default {
|
||||
|
||||
{ hid: 'description', name: 'description', content: description },
|
||||
|
||||
{ hid: 'keywords', name: 'keywords', content: keywords },
|
||||
|
||||
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
|
||||
{ hid: 'apple-mobile-web-app-title', name: 'apple-mobile-web-app-title', content: title },
|
||||
{ hid: 'theme-color', name: 'theme-color', content: colour },
|
||||
@ -231,6 +234,7 @@ export default {
|
||||
PLAUSIBLE_API_HOST: process.env.PLAUSIBLE_API_HOST,
|
||||
HEARTBEAT_LINK: process.env.HEARTBEAT_LINK,
|
||||
VERSION: version,
|
||||
KEYWORDS: keywords,
|
||||
},
|
||||
serverMiddleware: [
|
||||
'~/server/no-ssr.js',
|
||||
|
@ -18,9 +18,11 @@
|
||||
|
||||
<h3>
|
||||
Year:
|
||||
<button class="btn btn-sm btn-primary" @click="year--" :disabled="year - 1 < min.year"><Icon v="caret-left"/></button>
|
||||
{{year}}
|
||||
<button class="btn btn-sm btn-primary" @click="year++" :disabled="year + 1 > max.year"><Icon v="caret-right"/></button>
|
||||
<button v-for="y in years" :key="y"
|
||||
:class="['btn', y === year ? 'btn-primary' : 'btn-outline-primary', 'mx-2']"
|
||||
@click="year = y">
|
||||
{{y}}
|
||||
</button>
|
||||
</h3>
|
||||
|
||||
<div class="table-responsive">
|
||||
@ -96,11 +98,17 @@
|
||||
<label for="paypal_email" class="form-label">Email</label>
|
||||
<input v-model="transferDetails.paypal_email" type="email" class="form-control" id="paypal_email" placeholder="paypal-user@email.com">
|
||||
</div>
|
||||
<div v-if="transferMethod === 'charity'" class="mb-3">
|
||||
<div v-if="transferMethod !== 'skip' && transferMethod !== 'charity'" class="mb-3">
|
||||
<p><em>There's a legal limit of how much we can send as volunteer allowance, so please also pick a charity in case it's exceeded.</em></p>
|
||||
</div>
|
||||
<div v-if="transferMethod !== 'skip'" class="mb-3">
|
||||
<p><em>You can also leave the charity details empty – in that case we'll set aside that share and pick a charity together at the end of year, or whenever need arises.</em></p>
|
||||
</div>
|
||||
<div v-if="transferMethod !== 'skip'" class="mb-3">
|
||||
<label for="charity_name" class="form-label">Charity name</label>
|
||||
<input v-model="transferDetails.charity_name" type="text" class="form-control" id="charity_name" placeholder="Trevor Project">
|
||||
</div>
|
||||
<div v-if="transferMethod === 'charity'" class="mb-3">
|
||||
<div v-if="transferMethod !== 'skip'" class="mb-3">
|
||||
<label for="charity_url" class="form-label">Link</label>
|
||||
<input v-model="transferDetails.charity_url" type="email" class="form-control" id="charity_url" placeholder="https://www.thetrevorproject.org/">
|
||||
</div>
|
||||
@ -126,8 +134,14 @@ import {min, max, closed, MONTHS, AREAS, TRANSFER_METHODS} from '../src/timeshee
|
||||
|
||||
export default {
|
||||
data() {
|
||||
const years = [];
|
||||
for (let y = min.year; y <= max.year; y++) {
|
||||
years.push(y);
|
||||
}
|
||||
|
||||
return {
|
||||
year: max.year,
|
||||
years,
|
||||
min,
|
||||
max,
|
||||
closed,
|
||||
|
@ -20,6 +20,7 @@
|
||||
<li>{{countResponses.usable}} <T>census.repliesUsable</T></li>
|
||||
<li><nuxt-link :to="`/${config.census.route}/admin`">{{countResponses.awaiting}} <T>census.repliesAwaiting</T></nuxt-link></li>
|
||||
</ul>
|
||||
<ChartSet name="useful responses" :data="countResponses.graphs" init="cumulative" class="mb-3"/>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@ -304,7 +305,7 @@
|
||||
return head({
|
||||
title: this.$t('census.headerLong'),
|
||||
description: this.$t('census.description')[0],
|
||||
banner: 'img-local/census-banner.png',
|
||||
banner: 'img-local/census/census-banner.png',
|
||||
});
|
||||
},
|
||||
};
|
||||
|
@ -15,11 +15,15 @@
|
||||
</div>
|
||||
<div v-else>
|
||||
<div class="alert alert-info">
|
||||
{{queue.count}} <T>census.repliesAwaiting</T>
|
||||
<p>{{queue.count}} <T>census.repliesAwaiting</T></p>
|
||||
<label class="form-check form-switch d-inline-block">
|
||||
<input class="form-check-input" type="checkbox" role="switch" v-model="hideEmpty">
|
||||
Hide answers with no write-ins
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<ol>
|
||||
<li v-for="(question, i) in config.census.questions">
|
||||
<li v-for="(question, i) in config.census.questions" :key="i" v-if="!hideEmpty || queue.next.writins[i.toString()] || (queue.next.answers[i.toString()] && question.type === 'textarea')">
|
||||
<p>{{question.question}}</p>
|
||||
<p v-if="queue.next.answers[i.toString()]" :class="question.type === 'textarea' ? 'bg-primary text-white p-2 rounded' : ''"><strong>{{queue.next.answers[i.toString()]}}</strong></p>
|
||||
<p v-if="queue.next.writins[i.toString()]" class="bg-primary text-white p-2 rounded"><strong><em>{{queue.next.writins[i.toString()]}}</em></strong></p>
|
||||
@ -42,6 +46,7 @@
|
||||
data() {
|
||||
return {
|
||||
queue: undefined,
|
||||
hideEmpty: false,
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
|
@ -195,6 +195,8 @@
|
||||
<script>
|
||||
import { head } from "../src/helpers";
|
||||
import opinions from '../src/opinions';
|
||||
import {buildPronoun} from "../src/buildPronoun";
|
||||
import {pronouns} from "../src/data";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
@ -304,11 +306,21 @@
|
||||
},
|
||||
},
|
||||
head() {
|
||||
const mainPronoun = buildPronoun(pronouns, this.config.profile.flags.defaultPronoun);
|
||||
|
||||
return head({
|
||||
title: `@${this.username}`,
|
||||
description: this.profile ? this.profile.description : null,
|
||||
banner: `api/banner/@${this.username}.png`,
|
||||
noindex: true,
|
||||
keywords: this.profile ? this.profile.flags.map(flag => {
|
||||
const flagName = process.env.FLAGS[flag];
|
||||
return flag.startsWith('-')
|
||||
? flagName
|
||||
: mainPronoun.format(
|
||||
this.$t(`flags.${flagName.replace(/ /g, '_').replace(/'/g, `*`)}`, {}, false) || flagName
|
||||
);
|
||||
}) : undefined,
|
||||
});
|
||||
},
|
||||
}
|
||||
|
@ -3,8 +3,9 @@ import SQL from 'sql-template-strings';
|
||||
import sha1 from 'sha1';
|
||||
import {ulid} from "ulid";
|
||||
import Papa from 'papaparse';
|
||||
import {handleErrorAsync} from "../../src/helpers";
|
||||
import {groupBy, handleErrorAsync, ImmutableArray} from "../../src/helpers";
|
||||
import {intersection, difference} from "../../src/sets";
|
||||
import {buildChart} from "../../src/stats";
|
||||
|
||||
const getIp = req => {
|
||||
try {
|
||||
@ -94,6 +95,17 @@ router.post('/census/submit', handleErrorAsync(async (req, res) => {
|
||||
return res.json(id);
|
||||
}));
|
||||
|
||||
const normaliseCensusGraph = (graph) => {
|
||||
const newGraph = {};
|
||||
Object.entries(graph).forEach(([date, count]) => {
|
||||
date = date.substring(5); // remove year
|
||||
if (date.startsWith('02')) { // only accept February (other months might appear because of a timezone bug, dismiss them)
|
||||
newGraph[date] = count;
|
||||
}
|
||||
});
|
||||
return newGraph;
|
||||
}
|
||||
|
||||
router.get('/census/count', handleErrorAsync(async (req, res) => {
|
||||
if (!req.isGranted('census')) {
|
||||
return res.json({
|
||||
@ -101,6 +113,7 @@ router.get('/census/count', handleErrorAsync(async (req, res) => {
|
||||
nonbinary: 0,
|
||||
usable: 0,
|
||||
awaiting: 0,
|
||||
graphs: {},
|
||||
});
|
||||
}
|
||||
|
||||
@ -131,6 +144,22 @@ router.get('/census/count', handleErrorAsync(async (req, res) => {
|
||||
AND edition = ${global.config.census.edition}
|
||||
AND troll IS NULL
|
||||
`)).c,
|
||||
graphs: Object.fromEntries(
|
||||
Object.entries(
|
||||
groupBy(
|
||||
await req.db.all(SQL`
|
||||
SELECT edition, id
|
||||
FROM census
|
||||
WHERE locale = ${global.config.locale}
|
||||
AND relevant = 1
|
||||
AND troll = 0
|
||||
`),
|
||||
r => r.edition
|
||||
)
|
||||
).map(([edition, rows]) => {
|
||||
return [edition, normaliseCensusGraph(buildChart(rows, false))];
|
||||
})
|
||||
),
|
||||
});
|
||||
}));
|
||||
|
||||
|
@ -92,7 +92,7 @@ const fetchProfiles = async (db, username, self) => {
|
||||
for (let profile of profiles) {
|
||||
const links = JSON.parse(profile.links).map(l => normaliseUrl(l)).filter(l => !!l);
|
||||
const linksMetadata = {};
|
||||
for (let link of await db.all(SQL`SELECT * FROM links WHERE url IN (`.append(links.map(k => `'${k}'`).join(',')).append(SQL`)`))) {
|
||||
for (let link of await db.all(SQL`SELECT * FROM links WHERE url IN (`.append(links.map(k => `'${k.replace(/'/g, "''")}'`).join(',')).append(SQL`)`))) {
|
||||
linksMetadata[link.url] = {
|
||||
favicon: link.favicon,
|
||||
relMe: JSON.parse(link.relMe),
|
||||
|
@ -18,7 +18,7 @@ export const buildList = (fn, ...args) => {
|
||||
return list;
|
||||
}
|
||||
|
||||
export const head = ({title, description, banner, noindex = false}) => {
|
||||
export const head = ({title, description, banner, noindex = false, keywords}) => {
|
||||
const meta = { meta: [] };
|
||||
|
||||
if (title) {
|
||||
@ -48,6 +48,10 @@ export const head = ({title, description, banner, noindex = false}) => {
|
||||
meta.meta.push({ hid: 'robots', name: 'robots', content: 'noindex'});
|
||||
}
|
||||
|
||||
if (keywords) {
|
||||
meta.meta.push({ hid: 'keywords', name: 'keywords', content: process.env.KEYWORDS + ', ' + keywords.join(', ')});
|
||||
}
|
||||
|
||||
return meta;
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ const deepGet = (obj, path) => {
|
||||
|
||||
const formatDate = d => `${d.getFullYear()}-${(d.getMonth() + 1).toString().padStart(2, '0')}-${d.getDate().toString().padStart(2, '0')}`;
|
||||
|
||||
module.exports.buildChart = (rows) => {
|
||||
module.exports.buildChart = (rows, cumulative = true) => {
|
||||
const dates = rows.map(row => new Date(decodeTime(row.id)));
|
||||
|
||||
const chart = {};
|
||||
@ -71,6 +71,10 @@ module.exports.buildChart = (rows) => {
|
||||
chart[formatDate(date)]++;
|
||||
}
|
||||
|
||||
if (!cumulative) {
|
||||
return chart;
|
||||
}
|
||||
|
||||
const cumChart = {};
|
||||
let cum = 0;
|
||||
for (let [date, count] of Object.entries(chart)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user