#293 [pronouns] any neopronouns

This commit is contained in:
Andrea 2021-12-23 12:36:54 +01:00
parent da31099f1f
commit a15ec86ad9
12 changed files with 136 additions and 54 deletions

View File

@ -155,7 +155,7 @@
});
if (this.config.pronouns.enabled) {
const extra = ['all', '/' + this.config.pronouns.any]
const extra = ['all', '/' + this.config.pronouns.any, `/${this.config.pronouns.any}:`]
if (this.config.pronouns.null && this.config.pronouns.null.routes) {
for (let route of this.config.pronouns.null.routes) {
extra.push('/' + route);
@ -307,7 +307,10 @@
return decodeURIComponent(this.$route.path) === link.link
|| (link.extra || []).includes(this.$route.name)
|| (link.extra || []).includes(decodeURIComponent(this.$route.path))
|| (link.extra || []).filter(x => x && decodeURIComponent(this.$route.path).startsWith(x + '/')).length;
|| (link.extra || []).filter(x => x && (
decodeURIComponent(this.$route.path).startsWith(x + '/')
|| decodeURIComponent(this.$route.path).startsWith(x + ':'))
).length;
},
documentClicked() {
if (this.hamburgerActive) {

View File

@ -139,12 +139,13 @@
}
if (link === this.config.pronouns.any
|| link.startsWith(this.config.pronouns.any + ':')
|| (this.config.pronouns.null && this.config.pronouns.null.routes && this.config.pronouns.null.routes.includes(link))
|| (this.config.pronouns.mirror && this.config.pronouns.mirror.route === pronoun)
) {
pronounOpinions.push({
link,
pronoun: link,
pronoun: link.replace(/:+/g, ' '),
opinion: this.profile.pronouns[pronoun],
});
continue;

View File

@ -0,0 +1,49 @@
<template>
<section v-if="pronounGroup && pronounGroup.group.name">
<ul class="list-group mt-4">
<li class="list-group-item">
<p class="h5">
<Spelling :text="pronounGroup.group.name"/>
</p>
<div v-if="pronounGroup.group.description" class="small my-1">
<Icon v="info-circle"/>
<em><LinkedText :text="pronounGroup.group.description"/></em>
</div>
<ul class="list-unstyled">
<li v-for="pronoun in pronounGroup.groupPronouns" :key="pronoun.canonicalName">
<nuxt-link v-if="typeof pronoun === 'string'" :to="'/' + pronoun">
<strong><Spelling :text="pronoun.replace(/&/g, ' ' + $t('pronouns.or') + ' ')"/></strong>
</nuxt-link>
<nuxt-link v-else :to="addSlash('/' + pronoun.canonicalName)">
<strong><Spelling :text="pronoun.name(glue)"/></strong><small v-if="pronoun.smallForm">/<Spelling :text="pronoun.morphemes[pronoun.smallForm]"/></small>
<small><Spelling :text="pronoun.description"/></small>
</nuxt-link>
<NormativeBadge v-if="pronoun.normative"/>
</li>
</ul>
</li>
<nuxt-link :to="`/${config.pronouns.route}`" class="list-group-item list-group-item-action text-center">
<Icon v="ellipsis-h-alt"/>
</nuxt-link>
</ul>
</section>
</template>
<script>
export default {
props: {
pronounGroup: {},
},
data() {
return {
glue: ' ' + this.$t('pronouns.or') + ' ',
}
},
methods: {
addSlash(link) {
return link + (['*', `'`].includes(link.substr(link.length - 1)) ? '/' : '');
},
},
};
</script>

View File

@ -1,5 +1,5 @@
name pronouns description
Normative forms she,he It's worth mentioning that pronouns ≠ gender. One can still be nonbinary while using pronouns that are congruent with (or opposite to) their gender assigned at birth.
Normative-ish forms they,they/them/themself,it,one Those pronouns have been in common use in normative English already, but recently they got a slightly different new usage: describing a single, specific person. If you want to link to plural “they”, use {/they,!5,Plural%20“they”=this link}.
Popular neopronouns ae,ey,fae,xe,ze,ze/zir Unlike the other pronouns, which are officially recognised as “grammatically correct”, albeit used in a different meaning than we're used to, neopronouns are novel. Not being included in dictionaries doesn't make them any worse, though!
Other neopronouns co,e,e/em/es,hu,ne,ne/nir,per,s/he,thon,ve,vi,vi/vim,zhe These neopronouns are less often used than their more popular counterparts, but it doesn't make them any worse (and some of them are historically notable). Some neoprouns' names are derived from the names of their creators. If your pronoun is not on the list, use the generator below!
key name pronouns description
normative Normative forms she,he It's worth mentioning that pronouns ≠ gender. One can still be nonbinary while using pronouns that are congruent with (or opposite to) their gender assigned at birth.
normative-ish Normative-ish forms they,they/them/themself,it,one Those pronouns have been in common use in normative English already, but recently they got a slightly different new usage: describing a single, specific person. If you want to link to plural “they”, use {/they,!5,Plural%20“they”=this link}.
neopronouns Popular neopronouns ae,ey,fae,xe,ze,ze/zir Unlike the other pronouns, which are officially recognised as “grammatically correct”, albeit used in a different meaning than we're used to, neopronouns are novel. Not being included in dictionaries doesn't make them any worse, though!
neopronouns Other neopronouns co,e,e/em/es,hu,ne,ne/nir,per,s/he,thon,ve,vi,vi/vim,zhe These neopronouns are less often used than their more popular counterparts, but it doesn't make them any worse (and some of them are historically notable). Some neoprouns' names are derived from the names of their creators. If your pronoun is not on the list, use the generator below!

1 key name pronouns description
2 normative Normative forms she,he It's worth mentioning that pronouns ≠ gender. One can still be nonbinary while using pronouns that are congruent with (or opposite to) their gender assigned at birth.
3 normative-ish Normative-ish forms they,they/them/themself,it,one Those pronouns have been in common use in normative English already, but recently they got a slightly different new usage: describing a single, specific person. If you want to link to plural “they”, use {/they,!5,Plural%20“they”=this link}.
4 neopronouns Popular neopronouns ae,ey,fae,xe,ze,ze/zir Unlike the other pronouns, which are officially recognised as “grammatically correct”, albeit used in a different meaning than we're used to, neopronouns are novel. Not being included in dictionaries doesn't make them any worse, though!
5 neopronouns Other neopronouns co,e,e/em/es,hu,ne,ne/nir,per,s/he,thon,ve,vi,vi/vim,zhe These neopronouns are less often used than their more popular counterparts, but it doesn't make them any worse (and some of them are historically notable). Some neoprouns' names are derived from the names of their creators. If your pronoun is not on the list, use the generator below!

View File

@ -1,7 +1,7 @@
name pronouns description
Formy normatywne ona,on Wiele osób niebinarnych, ze względu na ograniczenia polszczyzny lub po prostu dlatego, że tak im bardziej pasuje, decyduje się zwyczajnie używać form „on” lub „ona” czy to zgodnie z ich płcią przypisaną przy urodzeniu, czy przeciwnie. Nie ujmuje to im niebinarności! Zaimki ≠ płeć.
Formy neutralne ono,ono/jej,ono/jejgo,ono/jeno,ono/jenu Ze względu na użycie już istniejącego w polszczyźnie {/pytania#nijaki=rodzaju neutralnego} jest to jedna z najczęściej używanych oraz łatwych do zrozumienia opcji. Formy takie jak „zrobiłom” czy „poszłoś”, choć <a href="http://www.rjp.pan.pl/index.php?option=com_content&view=article&id=317:byom-byo&catid=44&Itemid=208" target="_blank" rel="noopener">poprawne gramatycznie</a>, dopiero od niedawna są szerzej używane, i dla wielu brzmią infantylnie, dehumanizująco (póki nie zostaną znormalizowane). W odmianie wiele form neutralnych jest tożsamych z męskimi, dlatego niektóre osoby wolą używać zmodyfikowanych wariantów wykorzystujących inne zaimki przy zachowaniu neutralnej koniugacji czasowników.
Formy postpłciowe (dukaizmy) onu,onu/jejo,ne,onu/jegu Neologiczne formy stworzone oryginalnie dla <a href="https://pl.wikipedia.org/wiki/Perfekcyjna_niedoskona%C5%82o%C5%9B%C4%87" target="_blank" rel="noopener">powieści fantastycznych</a>. Choć rodzaj postpłciowy jest systemem spójnym i analogicznym do form normatywnych, to dla niezaznajomionych brzmi obco. Niektóre osoby używają też zmodyfikowanych wariantów wykorzystujących inne zaimki w części przypadków przy zachowaniu postpłciowej koniugacji czasowników.
Formy mnogie one,oni,oni/e,ona/ich,ony,onie Normatywne formy mnogie mogą być używane do opisu pojedynczej osoby, w tym jako dosłowne tłumaczenie angielskiego „they/them”. Są poprawne i bez tworzenia neogramatyki, a ich zamysł jest łatwy do zrozumienia dla osób znających angielski odpowiednik, aczkolwiek dla wielu jest to dezorientujące. Używanie ich wciąż wymaga wyboru między zgenderyzowanymi wersjami („oni” lub „one”). Nienormatywne formy mnogie mogą służyć nie tylko do opisu pojedynczych osób, ale również grup mieszanych lub o nieznanej płci. Więcej informacji o zwracaniu się do grup na naszym blogu: {/blog/jak-zwracać-się-do-grup=„Jak zwracać się do grup osób?”}
Zaimki graficzne onx,on/a,on_,on*,'n' Formy te używają placeholderów / znaków zastępujących w miejscu różnic między wersją męską a żeńską. Są przydatne w piśmie, ale ciężkie lub niemożliwe do wymówienia (mogą też sprawiać problemy czytnikom ekranowym). Intencja jest łatwa do zrozumienia. Często są też używane w zwrotach do grupy osób lub osoby o nieznanej płci.
Neozaimki vono,ono/eno,miau,wona,ony/jegi,onæ,onø,onu/jegie
key name pronouns description
normatywne Formy normatywne ona,on Wiele osób niebinarnych, ze względu na ograniczenia polszczyzny lub po prostu dlatego, że tak im bardziej pasuje, decyduje się zwyczajnie używać form „on” lub „ona” czy to zgodnie z ich płcią przypisaną przy urodzeniu, czy przeciwnie. Nie ujmuje to im niebinarności! Zaimki ≠ płeć.
neutralne Formy neutralne ono,ono/jej,ono/jejgo,ono/jeno,ono/jenu Ze względu na użycie już istniejącego w polszczyźnie {/pytania#nijaki=rodzaju neutralnego} jest to jedna z najczęściej używanych oraz łatwych do zrozumienia opcji. Formy takie jak „zrobiłom” czy „poszłoś”, choć <a href="http://www.rjp.pan.pl/index.php?option=com_content&view=article&id=317:byom-byo&catid=44&Itemid=208" target="_blank" rel="noopener">poprawne gramatycznie</a>, dopiero od niedawna są szerzej używane, i dla wielu brzmią infantylnie, dehumanizująco (póki nie zostaną znormalizowane). W odmianie wiele form neutralnych jest tożsamych z męskimi, dlatego niektóre osoby wolą używać zmodyfikowanych wariantów wykorzystujących inne zaimki przy zachowaniu neutralnej koniugacji czasowników.
postpłciowe Formy postpłciowe (dukaizmy) onu,onu/jejo,ne,onu/jegu Neologiczne formy stworzone oryginalnie dla <a href="https://pl.wikipedia.org/wiki/Perfekcyjna_niedoskona%C5%82o%C5%9B%C4%87" target="_blank" rel="noopener">powieści fantastycznych</a>. Choć rodzaj postpłciowy jest systemem spójnym i analogicznym do form normatywnych, to dla niezaznajomionych brzmi obco. Niektóre osoby używają też zmodyfikowanych wariantów wykorzystujących inne zaimki w części przypadków przy zachowaniu postpłciowej koniugacji czasowników.
mnogie Formy mnogie one,oni,oni/e,ona/ich,ony,onie Normatywne formy mnogie mogą być używane do opisu pojedynczej osoby, w tym jako dosłowne tłumaczenie angielskiego „they/them”. Są poprawne i bez tworzenia neogramatyki, a ich zamysł jest łatwy do zrozumienia dla osób znających angielski odpowiednik, aczkolwiek dla wielu jest to dezorientujące. Używanie ich wciąż wymaga wyboru między zgenderyzowanymi wersjami („oni” lub „one”). Nienormatywne formy mnogie mogą służyć nie tylko do opisu pojedynczych osób, ale również grup mieszanych lub o nieznanej płci. Więcej informacji o zwracaniu się do grup na naszym blogu: {/blog/jak-zwracać-się-do-grup=„Jak zwracać się do grup osób?”}
graficzne Zaimki graficzne onx,on/a,on_,on*,'n' Formy te używają placeholderów / znaków zastępujących w miejscu różnic między wersją męską a żeńską. Są przydatne w piśmie, ale ciężkie lub niemożliwe do wymówienia (mogą też sprawiać problemy czytnikom ekranowym). Intencja jest łatwa do zrozumienia. Często są też używane w zwrotach do grupy osób lub osoby o nieznanej płci.
neozaimki Neozaimki vono,ono/eno,miau,wona,ony/jegi,onæ,onø,onu/jegie

Can't render this file because it contains an unexpected character in line 3 and column 297.

View File

@ -271,7 +271,8 @@ export default {
}
if (config.pronouns.enabled) {
routes.push({ path: '/' + encodeURIComponent(config.pronouns.any), component: resolve(__dirname, 'routes/any.vue') });
routes.push({ path: `/${encodeURIComponent(config.pronouns.any)}`, component: resolve(__dirname, 'routes/any.vue') });
routes.push({ path: `/${encodeURIComponent(config.pronouns.any)}::group`, component: resolve(__dirname, 'routes/any.vue') });
if (config.pronouns.null && config.pronouns.null.routes) {
for (let route of config.pronouns.null.routes) {
routes.push({ path: '/' + encodeURIComponent(route), component: resolve(__dirname, 'routes/avoiding.vue') });

View File

@ -1,5 +1,6 @@
<template>
<div>
<NotFound v-if="pronounGroups === undefined"/>
<div v-else>
<h2>
<Icon v="tag"/>
<T>pronouns.intro</T><T>quotation.colon</T>
@ -8,7 +9,10 @@
<section>
<div class="alert alert-primary">
<h2 class="text-center mb-0">
<strong><T>pronouns.any.short</T></strong>
<strong>
<T>pronouns.any.short</T>
<span v-if="groupKey">{{groupKey}}</span>
</strong>
</h2>
<p class="h6 small text-center mb-0 mt-2">
<em>
@ -32,6 +36,8 @@
</ul>
</section>
<PronounGroup v-for="pronounGroup in pronounGroups" :key="pronounGroup.name" :pronounGroup="pronounGroup"/>
<section>
<Share :title="`${$t('pronouns.intro')}: ${$t('pronouns.any.short')}`"/>
</section>
@ -49,25 +55,46 @@
</template>
<script>
import { examples, pronouns } from "~/src/data";
import { examples, pronouns, pronounLibrary } from "~/src/data";
import { head } from "../src/helpers";
export default {
data() {
const groupKey = this.$route.params.group;
let pronounGroups = [];
if (groupKey) {
pronounGroups = pronounLibrary.byKey()[groupKey];
}
return {
examples: examples,
examples,
groupKey,
pronounGroups,
}
},
head() {
return head({
title: `${this.$t('pronouns.intro')}: ${this.$t('pronouns.any.short')}`,
title: `${this.$t('pronouns.intro')}: ${this.$t('pronouns.any.short')} ${this.groupKey || ''}`.trim(),
banner: `api/banner/${this.$t('pronouns.any.short')}.png`,
});
},
computed: {
pronounsChoice() {
if (!this.pronounGroups.length) {
return pronouns;
}
let choice = {};
for (let pronounGroup of this.pronounGroups) {
choice = {...choice, ...pronounGroup.groupPronouns}
}
return choice;
}
},
methods: {
randomPronoun() {
const keys = Object.keys(pronouns);
return pronouns[keys[keys.length * Math.random() << 0]];
const keys = Object.keys(this.pronounsChoice);
return this.pronounsChoice[keys[keys.length * Math.random() << 0]];
},
}
}

View File

@ -375,6 +375,7 @@
validatePronoun(pronoun) {
pronoun = this.normalisePronoun(pronoun);
return pronoun === this.config.pronouns.any
|| pronoun.startsWith(this.config.pronouns.any + ':')
|| (this.config.pronouns.null && this.config.pronouns.null.routes && this.config.pronouns.null.routes.includes(pronoun))
|| (this.config.pronouns.mirror && this.config.pronouns.mirror.route === pronoun)
|| buildPronoun(pronouns, pronoun)

View File

@ -70,35 +70,7 @@
<GrammarTables :selectedPronoun="selectedPronoun" :counter="counter"/>
<section v-if="pronounGroup && pronounGroup.group.description">
<ul class="list-group mt-4">
<li class="list-group-item">
<p class="h5">
<Spelling :text="pronounGroup.group.name"/>
</p>
<div class="small my-1">
<Icon v="info-circle"/>
<em><LinkedText :text="pronounGroup.group.description"/></em>
</div>
<ul class="list-unstyled">
<li v-for="pronoun in pronounGroup.groupPronouns" :key="pronoun.canonicalName">
<nuxt-link v-if="typeof pronoun === 'string'" :to="'/' + pronoun">
<strong><Spelling :text="pronoun.replace(/&/g, ' ' + $t('pronouns.or') + ' ')"/></strong>
</nuxt-link>
<nuxt-link v-else :to="addSlash('/' + pronoun.canonicalName)">
<strong><Spelling :text="pronoun.name(glue)"/></strong><small v-if="pronoun.smallForm">/<Spelling :text="pronoun.morphemes[pronoun.smallForm]"/></small>
<small><Spelling :text="pronoun.description"/></small>
</nuxt-link>
<NormativeBadge v-if="pronoun.normative"/>
</li>
</ul>
</li>
<nuxt-link to="/" class="list-group-item list-group-item-action text-center">
<Icon v="ellipsis-h-alt"/>
</nuxt-link>
</ul>
</section>
<PronounGroup :pronounGroup="pronounGroup"/>
<Avoiding v-if="isNull"/>

View File

@ -187,11 +187,19 @@
</li>
<li class="list-group-item">
<p class="h5">
<nuxt-link :to="'/' + config.pronouns.any"><T>pronouns.any.header</T></nuxt-link>
<nuxt-link :to="`/${config.pronouns.any}`"><T>pronouns.any.header</T></nuxt-link>
</p>
<p>
<T>pronouns.any.description</T>
</p>
<ul v-if="Object.keys(pronounLibrary.byKey()).length" class="small">
<li>
<nuxt-link :to="`/${config.pronouns.any}`"><T>pronouns.any.short</T></nuxt-link>
</li>
<li v-for="(keyPronouns, key) in pronounLibrary.byKey()">
<nuxt-link :to="`/${config.pronouns.any}:${key}`"><T>pronouns.any.short</T> {{key}}</nuxt-link>
</li>
</ul>
</li>
</ul>
</section>

View File

@ -501,10 +501,11 @@ export class Pronoun {
}
export class PronounGroup {
constructor(name, pronouns, description = null) {
constructor(name, pronouns, description = null, key = null) {
this.name = name;
this.pronouns = pronouns;
this.description = description;
this.key = key;
}
}
@ -547,6 +548,24 @@ export class PronounLibrary {
];
}
byKey() {
const ret = {};
for (let g of this.groups) {
if (g.key === null) { continue; }
if (ret[g.key] === undefined) { ret[g.key] = []; }
const p = {};
for (let t of g.pronouns) {
const pronoun = this.pronouns[t];
if (!pronoun) { continue; }
p[pronoun.canonicalName] = pronoun;
}
ret[g.key].push({ group: g, groupPronouns: p});
}
return ret;
}
find(pronoun) {
if (!pronoun) {
return null;

View File

@ -37,6 +37,7 @@ export const pronounGroups = buildList(function* () {
g.name,
g.pronouns ? g.pronouns.split(',') : [],
g.description,
g.key || null,
);
}
});