#43 krótkie omówienie form (pl)
This commit is contained in:
parent
eaaa1041fd
commit
81b28e9821
|
@ -45,7 +45,7 @@ $theme-colors: (
|
|||
@import "~bootstrap/scss/alert";
|
||||
//@import "~bootstrap/scss/progress";
|
||||
//@import "~bootstrap/scss/media";
|
||||
//@import "~bootstrap/scss/list-group";
|
||||
@import "~bootstrap/scss/list-group";
|
||||
//@import "~bootstrap/scss/close";
|
||||
//@import "~bootstrap/scss/toasts";
|
||||
//@import "~bootstrap/scss/modal";
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
name templates description
|
||||
Formy normatywne on,ona Wiele osób niebinarnych, ze względu na ograniczenia polszczyzny, 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!
|
||||
Formy nijakie ono/jego,ono/jej,ono/jejgo,ono/jeno,ono/jenu,vono Ze względu na użycie już istniejącego w polszczyźnie rodzaju nijakiego jest to jedna z najczęściej używanych oraz łatwych do zrozumienia opcji. Formy takie jak „zrobiłom” czy „poszłoś”, choć poprawne gramatycznie, dopiero od niedawna są szerzej używane, i dla wielu brzmią dehumanizująco (póki nie zostaną znormalizowane). W odmianie wiele form nijakich jest tożsamych z męskimi, dlatego niektóre osoby wolą używać zmodyfikowanych wariantów, wykorzystujących inne zaimki przy zachowaniu nijakiej koniugacji czasowników.
|
||||
Dukaizmy onu,onu/jejo,ne neogramatyka, Neologiczne formy stworzone oryginalnie dla powieści fantastycznych. Choć system dukaizmów jest spójny i analogiczny do form normatywnych, to dla nieznaznajomionych brzmi obco. Jest to jedna z najczęściej wybieranych opcji. Niektóre osoby używają też zmodyfikowanych wariantów, wykorzystujących inne zaimki w części przypadków przy zachowaniu dukajowskiej koniugacji czasowników.
|
||||
Formy mnogie oni,one Dosłowne tłumaczenie angielskiego „they/them”. Formy te są poprawne i bez tworzenia neogramatyki, a ich zamysł jest łatwy do zrozumienia dla osób znających angielski odpowiednik, aczkolwiek używanie liczby mnogiej do określenia jednej osoby jest dla wielu dezorientujące. Używanie liczby mnogiej wciąż wymaga wyboru między zgenderyzowanymi wersjami.
|
||||
Formy z placeholderem onæ,on/a,onx,on_,on*,onø Formy te używają placeholdera 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. Intencja jest łatwa do zrozumienia. Często są też używane w zwrotach do grupy osób lub osoby o nieznanej płci.
|
||||
Formy wymienne on&ona,on&ono,ona&ono,on&onu,ona&onu,ono/jego&ono/jej Wiele osób niebinarnych używa zamiennie więcej niż jednej formy (np. męskich i żeńskich albo żeńskich i nijakich) i można się do nich zwracać w dowolnej z nich.
|
|
|
@ -29,20 +29,27 @@
|
|||
Wybierz sposród najpopularniejszych:
|
||||
</p>
|
||||
|
||||
<ul class="list-unstyled">
|
||||
<li v-for="(template, pronoun) in templates" :key="pronoun" :class="separators.includes(template.name()) ? 'mt-3 mb-1' : 'my-1'">
|
||||
<nuxt-link :to="addSlash('/' + pronoun)">
|
||||
<strong>{{template.name()}}</strong>
|
||||
–
|
||||
<small>{{template.description}}</small>
|
||||
</nuxt-link>
|
||||
</li>
|
||||
<li class="mt-3 mb-1">
|
||||
<nuxt-link to="/on&ona">
|
||||
<strong>on lub ona</strong>
|
||||
–
|
||||
Formy wymienne
|
||||
</nuxt-link>
|
||||
<ul class="list-group">
|
||||
<li v-for="[group, groupTemplates] in templateLibrary.split()" class="list-group-item">
|
||||
<p class="h5">
|
||||
{{ group.name }}
|
||||
</p>
|
||||
<div class="small my-1" v-if="group.description">
|
||||
<Icon v="info-circle"/>
|
||||
<em>{{ group.description }}</em>
|
||||
</div>
|
||||
<ul class="list-unstyled">
|
||||
<li v-for="template in groupTemplates" :key="template.canonicalName">
|
||||
<nuxt-link v-if="typeof template === 'string'" :to="'/' + template">
|
||||
<strong>{{template.replace(/&/g, ' lub ')}}</strong>
|
||||
</nuxt-link>
|
||||
<nuxt-link v-else :to="addSlash('/' + template.canonicalName)">
|
||||
<strong>{{template.name()}}</strong>
|
||||
–
|
||||
<small>{{template.description}}</small>
|
||||
</nuxt-link>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
@ -257,7 +264,7 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { examples, templates, getSources, separators } from "~/src/data";
|
||||
import { examples, templates, getSources, templateLibrary } from "~/src/data";
|
||||
import Compressor from "../src/compressor";
|
||||
import { getTemplate } from "../src/buildTemplate";
|
||||
|
||||
|
@ -267,6 +274,7 @@
|
|||
examples: examples,
|
||||
templates: templates,
|
||||
getTemplate: getTemplate,
|
||||
templateLibrary: templateLibrary,
|
||||
|
||||
selectedTemplate: templates['on'].clone(),
|
||||
selectedMorpheme: '',
|
||||
|
@ -275,8 +283,6 @@
|
|||
multiple: ['on', 'ona'],
|
||||
|
||||
customise: false,
|
||||
|
||||
separators: separators,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
|
|
@ -9,31 +9,44 @@
|
|||
<LiteratureMenu all/>
|
||||
|
||||
<section>
|
||||
<ul class="list-unstyled">
|
||||
<li v-for="template in templates" v-if="template.sources.length" :class="separators.includes(template.name()) ? 'mt-3 mb-1' : 'my-1'">
|
||||
<a :href="'#' + toId(template.name())">
|
||||
<strong>{{ template.name() }}</strong>
|
||||
–
|
||||
<small>{{ template.description }}</small>
|
||||
</a>
|
||||
</li>
|
||||
<li v-for="(sources, multiple) in sourcesForMultipleForms" :class="separators.includes(multiple) ? 'mt-3 mb-1' : 'my-1'">
|
||||
<a :href="'#' + toId(multiple)">
|
||||
<strong>{{ multiple.replace(/&/g, ' lub ') }}</strong>
|
||||
–
|
||||
<small>Formy wymienne</small>
|
||||
</a>
|
||||
</li>
|
||||
<li class="mt-3 mb-1">
|
||||
<a href="#inne">
|
||||
Inne formy
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<Share title="Niebinarna polszczyzna w tekstach kultury"/>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<Share title="Niebinarna polszczyzna w tekstach kultury"/>
|
||||
<button v-if="!tocShown" class="btn btn-outline-primary btn-block" @click="tocShown = true">
|
||||
<Icon v="list"/>
|
||||
Pokaż spis treści
|
||||
</button>
|
||||
<ul v-if="tocShown" class="list-group">
|
||||
<li v-for="[group, groupTemplates] in templateLibrary.split(filterTemplate, false)" class="list-group-item">
|
||||
<p class="h5">
|
||||
{{ group.name }}
|
||||
</p>
|
||||
<div class="small my-1" v-if="group.description">
|
||||
<Icon v="info-circle"/>
|
||||
<em>{{ group.description }}</em>
|
||||
</div>
|
||||
<ul class="list-unstyled">
|
||||
<li v-for="template in groupTemplates" :key="template.canonicalName">
|
||||
<a v-if="typeof template === 'string'" :href="'#' + toId(template)">
|
||||
<strong>{{ template.replace(/&/g, ' lub ') }}</strong>
|
||||
</a>
|
||||
<a v-else :href="'#' + toId(template.name())">
|
||||
<strong>{{ template.name() }}</strong>
|
||||
–
|
||||
<small>{{ template.description }}</small>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<p class="h5 mb-0">
|
||||
<a href="#inne">
|
||||
<strong>Inne formy</strong>
|
||||
</a>
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
|
@ -112,7 +125,7 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { templates, sources, sourcesForMultipleForms, separators } from '../src/data'
|
||||
import { templates, sources, sourcesForMultipleForms, templateLibrary } from '../src/data'
|
||||
import { Source } from "../src/classes";
|
||||
|
||||
export default {
|
||||
|
@ -120,9 +133,10 @@
|
|||
return {
|
||||
templates: templates,
|
||||
sourcesForMultipleForms: sourcesForMultipleForms,
|
||||
templateLibrary: templateLibrary,
|
||||
tocShown: false,
|
||||
sourceTypes: Source.TYPES,
|
||||
filter: '',
|
||||
separators: separators,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
|
@ -162,6 +176,12 @@
|
|||
methods: {
|
||||
toId(str) {
|
||||
return str.replace(/\//g, '-').replace(/&/g, '_');
|
||||
},
|
||||
filterTemplate(t) {
|
||||
if (typeof t === 'string') {
|
||||
return Object.keys(sourcesForMultipleForms).includes(t);
|
||||
}
|
||||
return t.sources.length;
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import {buildDict} from "./helpers";
|
||||
import {buildDict, buildList} from "./helpers";
|
||||
|
||||
export class ExamplePart {
|
||||
constructor(variable, str) {
|
||||
|
@ -230,6 +230,53 @@ export class Template {
|
|||
}
|
||||
}
|
||||
|
||||
export class TemplateGroup {
|
||||
constructor(name, templates, description = null) {
|
||||
this.name = name;
|
||||
this.templates = templates;
|
||||
this.description = description;
|
||||
}
|
||||
}
|
||||
|
||||
export class TemplateLibrary {
|
||||
constructor(groups, templates) {
|
||||
this.groups = groups;
|
||||
this.templates = templates;
|
||||
}
|
||||
|
||||
*split(filter = null, includeOthers = true) {
|
||||
let templatesLeft = Object.keys(this.templates);
|
||||
const that = this;
|
||||
|
||||
for (let g of this.groups) {
|
||||
yield [g, buildList(function* () {
|
||||
for (let t of g.templates) {
|
||||
templatesLeft = templatesLeft.filter(i => i !== t);
|
||||
const template = that.templates[t] || t;
|
||||
if (!filter || filter(template)) {
|
||||
yield template;
|
||||
}
|
||||
}
|
||||
})];
|
||||
}
|
||||
|
||||
if (!templatesLeft.length || !includeOthers) {
|
||||
return;
|
||||
}
|
||||
|
||||
yield [
|
||||
new TemplateGroup('Inne formy', templatesLeft),
|
||||
buildList(function* () {
|
||||
for (let t of templatesLeft) {
|
||||
if (!filter || filter(that.templates[t])) {
|
||||
yield that.templates[t];
|
||||
}
|
||||
}
|
||||
}),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
export class Noun {
|
||||
constructor({id, masc, fem, neutr, mascPl, femPl, neutrPl, approved, base_id}) {
|
||||
this.id = id;
|
||||
|
|
15
src/data.js
15
src/data.js
|
@ -1,4 +1,4 @@
|
|||
import {Source, Example, NounTemplate} from './classes'
|
||||
import {Source, Example, NounTemplate, TemplateGroup, TemplateLibrary} from './classes'
|
||||
import { buildDict, buildList } from './helpers';
|
||||
import { parseTemplates, getTemplate } from './buildTemplate';
|
||||
|
||||
|
@ -77,4 +77,15 @@ export const nounTemplates = buildList(function* () {
|
|||
}
|
||||
});
|
||||
|
||||
export const separators = ['ono/jego', 'onu/jenu', 'oni/ich', 'onæ/jæ', 'vono/vego', 'on&ona'];
|
||||
import templateGroupsRaw from '../data/templateGroups.tsv';
|
||||
export const templateGroups = buildList(function* () {
|
||||
for (let g of templateGroupsRaw) {
|
||||
yield new TemplateGroup(
|
||||
g.name,
|
||||
g.templates.split(','),
|
||||
g.description,
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
export const templateLibrary = new TemplateLibrary(templateGroups, templates);
|
||||
|
|
Reference in New Issue