#59 multilingual support - configs

This commit is contained in:
Avris 2020-09-28 18:29:13 +02:00
parent a3ad9d03bb
commit 8c38ea9eb4
12 changed files with 232 additions and 198 deletions

View File

@ -1,14 +1,14 @@
<template>
<ul :class="{'list-unstyled': !expanded}">
<li v-for="author in authors" class="mb-2">
<li v-for="author in config.contact.authors" class="mb-2">
{{ author.name }}
(<nuxt-link :to="author.pronounsLink">{{ author.pronouns }}</nuxt-link>)
<template v-for="(link, area, index) in author.areas">
<Spaceless>
<nuxt-link v-if="link && link.indexOf('/') === 0" :to="link">{{ area }}</nuxt-link>
<a v-else-if="link" :href="link" target="_blank" rel="noopener">{{ area }}</a>
<span v-else>{{ area }}</span>
<nuxt-link v-if="link && link.indexOf('/') === 0" :to="link">{{ area.replace(/_/g, ' ') }}</nuxt-link>
<a v-else-if="link" :href="link" target="_blank" rel="noopener">{{ area.replace(/_/g, ' ') }}</a>
<span v-else>{{ area.replace(/_/g, ' ') }}</span>
<span v-if="index < Object.keys(author.areas).length - 1">, </span>
</Spaceless>
</template>
@ -34,45 +34,5 @@
props: {
expanded: { type: Boolean }
},
data() {
return {
authors: [
{
name: 'Andrea',
pronouns: 'onu',
pronounsLink: '/onu',
website: 'https://avris.it',
twitter: 'AvrisIT',
mail: 'andrea@avris.it',
areas: {
kod: 'https://gitlab.com/Avris/Zaimki',
język: null,
},
},
{
name: 'Paweł Dembowski',
pronouns: 'on',
pronounsLink: '/on',
twitter: 'VaultAusir',
mail: 'pawel.dembowski@gmail.com',
areas: {
język: null,
literatura: '/literatura',
},
},
{
name: 'Zuzanna Sybilla Grzybowska',
pronouns: 'on/ona/ono',
pronounsLink: '/on&ona&ono',
twitter: 'mykofanes',
mail: 'zuzannagrzybowska@protonmail.com',
areas: {
neutratywy: '/neutratywy',
'social media': null,
},
},
],
};
},
}
</script>

View File

@ -31,14 +31,27 @@
export default {
data() {
const links = [];
links.push({ link: '/', icon: 'home', text: t('home.header'), textLong: t('home.headerLong'), extra: ['all', this.config.template.any.route] });
if (this.config.sources.enabled) {
links.push({ link: '/' + this.config.sources.route, icon: 'books', text: t('sources.header'), textLong: t('sources.headerLong') });
}
if (this.config.nouns.enabled) {
links.push({ link: '/' + this.config.nouns.route, icon: 'atom-alt', text: t('nouns.header'), textLong: t('nouns.headerLong') });
}
if (this.config.links.enabled) {
links.push({ link: '/' + this.config.links.route, icon: 'bookmark', text: t('links.header'), textLong: t('links.headerLong') });
}
if (this.config.contact.enabled) {
links.push({ link: '/' + this.config.contact.route, icon: 'comment-alt-smile', text: t('contact.header')});
}
return {
links: [
{ link: '/', icon: 'home', text: t('home.header'), textLong: t('home.headerLong'), extra: ['all', 'dowolne'] }, // TODO multilingual "any"
{ link: '/literatura', icon: 'books', text: t('sources.header'), textLong: t('sources.headerLong') },
{ link: '/neutratywy', icon: 'atom-alt', text: t('nouns.header'), textLong: t('nouns.headerLong') },
{ link: '/linki', icon: 'bookmark', text: t('links.header'), textLong: t('links.headerLong') },
{ link: '/kontakt', icon: 'comment-alt-smile', text: t('contact.header') },
],
links,
};
},
methods: {

17
components/Link.vue Normal file
View File

@ -0,0 +1,17 @@
<template>
<li class="my-2">
<Icon :v="link.icon" :set="link.iconSet || 'l'"/>
<a :href="link.url" target="_blank" rel="noopener">
<LinkedText :text="link.headline"/>
</a>
<LinkedText :text="link.extra || ''"/>
</li>
</template>
<script>
export default {
props: {
link: { required: true },
}
};
</script>

View File

@ -1,70 +1,11 @@
<template>
<section :class="{'mt-0': top}">
<section :class="{'mt-0': top}" v-if="config.links.links.length">
<h2 class="mb-3">
<Icon v="bookmark"/>
<T>links.headerLong</T>
</h2>
<ul class="list-unstyled">
<li class="my-2">
<Icon v="globe-europe"/>
<a href="https://pronoun.is/" target="_blank" rel="noopener">
Pronoun.is
</a>
anglojęzyczna inspiracja dla tej strony.
</li>
<li class="my-2">
<Icon v="comment-alt-edit"/>
<a href="https://avris.it/blog/czemu-ka%C5%BCdy-powinien-mie%C4%87-zaimki-w-bio" target="_blank" rel="noopener">
Czemu KAŻDY powinien mieć zaimki w bio
</a>
</li>
<li class="my-2">
<Icon v="comment-alt-edit"/>
<a href="https://avris.it/blog/genderneutralizacja-polszczyzny" target="_blank" rel="noopener">
Genderneutralizacja polszczyzny?
</a>
artykuł opisujący, dlaczego język neutralny płciowo jest ważny,
i zbierający pomysły na stworzenie takiego.
</li>
<li class="my-2">
<Icon v="comment-alt-edit"/>
<a href="https://www.przemyslenia-maniaka.pl/2019/11/maniak-marudzi-27-niebinarne-tumaczenia.html" target="_blank" rel="noopener">
Maniak marudzi #27: Niebinarne tłumaczenia
</a>
artykuł pokazujący, że nie da się przetłumaczyć they/them na polski to tylko wymówka.
</li>
<li class="my-2">
<Icon v="comment-alt-edit"/>
<a href="http://wasowska.net/2020/09/rowni-wobec-jezyka-o-jezyku-neutralnym-plciowo/" target="_blank" rel="noopener">
Równi wobec języka o języku neutralnym płciowo
</a>
artykuł Agnieszki Wąsowskiej
</li>
<li class="my-2">
<Icon v="play-circle"/>
<a href="https://www.youtube.com/watch?v=YOEB6Ixp048" target="_blank" rel="noopener">
Nie-binarny język polski seminarium naukowe (Queer UW)
</a>
</li>
<li class="my-2">
<Icon v="play-circle"/>
<a href="https://rss.com/podcasts/bezwstydny/75056/" target="_blank" rel="noopener">
Niebinarność, neutratywy i prawa człowieka Rozmowa z W. Dynarskim (Bezwstydne Podcast)
</a>
<span class="text-nowrap">o zaimki.pl</span> i neutratywach w okolicach 13:40
</li>
<li class="my-2">
<Icon v="instagram" set="b"/>
<a href="https://www.instagram.com/inkluzywnamowa/" target="_blank" rel="noopener">
@inkluzywnamowa
</a>
</li>
<li class="my-2">
<Icon v="facebook" set="b"/>
<a href="https://facebook.com/slownikempatyczny" target="_blank" rel="noopener">
Słownik Empatyczny Języka Polskiego
</a>
</li>
<Link v-for="link in config.links.links" :link="link"/>
</ul>
</section>
</template>

View File

@ -1,24 +1,11 @@
<template>
<section>
<section v-if="config.links.media.length">
<h2 class="h3">
<Icon v="tv"/>
<T>links.media</T>
</h2>
<ul class="list-unstyled">
<li class="my-2">
<Icon v="newspaper"/>
<a href="https://queer.pl/artykul/204685/zaimkipl-strona-jezyk-polski-niebinarnosc" target="_blank" rel="noopener">
Zaimki.pl: powstała strona ułatwiająca dostosowanie języka polskiego osobom niebinarnym.
Rozmawialiśmy z jej twórcą i twórczynium
<strong>Queer.pl</strong>
</a>
</li>
<li class="my-2">
<Icon v="radio"/>
<a href="https://pod.co/haloradio/joanna-frejus-2020-08-23-17-00" target="_blank" rel="noopener">
Osoby redaktorskie Słownika Neutratywów u Joanny Frejus w <strong>Halo.Radio</strong>
</a>
</li>
<Link v-for="link in config.links.media" :link="link"/>
</ul>
</section>
</template>

View File

@ -1,26 +1,11 @@
<template>
<section>
<section v-if="config.links.socials.length">
<h2 class="h3">
<Icon v="hashtag"/>
<T>links.social</T>
</h2>
<ul class="list-unstyled">
<li class="my-2">
<Icon v="instagram" set="b"/>
<a href="https://instagram.com/neutratywy/" target="_blank" rel="noopener">
<strong>instagram.com/neutratywy</strong>
Słownik Neutratywów Języka Polskiego
</a>
</li>
<li class="my-2">
<Icon v="facebook" set="b"/>
<a href="https://facebook.com/neutratywy" target="_blank" rel="noopener">
<strong>fb.com/neutratywy</strong>
Słownik Neutratywów Języka Polskiego
</a>
</li>
<Link v-for="link in config.links.socials" :link="link"/>
</ul>
</section>
</template>

View File

@ -0,0 +1,63 @@
<template>
<section>
<h2 class="h4">
<Icon v="spell-check"/>
Odmiana:
</h2>
<div class="table-responsive">
<table class="table table-sm">
<thead>
<tr>
<th>Mianownik</th>
<th>Dopełniacz</th>
<th>Celownik</th>
<th>Biernik</th>
<th>Narzędnik</th>
<th>Miejscownik</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ selectedTemplate.getMorpheme('pronoun_n', counter) }}</td>
<td>{{ selectedTemplate.getMorpheme('pronoun_g', counter) }} / {{ selectedTemplate.getMorpheme('pronoun_g_acc', counter) }}</td>
<td>{{ selectedTemplate.getMorpheme('pronoun_d', counter) }}</td>
<td>{{ selectedTemplate.getMorpheme('pronoun_a', counter) }}</td>
<td>{{ selectedTemplate.getMorpheme('pronoun_i', counter) }}</td>
<td>{{ selectedTemplate.getMorpheme('pronoun_l', counter) }}</td>
</tr>
</tbody>
</table>
</div>
<div class="table-responsive">
<table class="table table-sm">
<thead>
<tr>
<th>1 os.</th>
<th>2 os.</th>
<th>3 os.</th>
<th>Przymiotniki</th>
</tr>
</thead>
<tbody>
<tr>
<td>-{{ selectedTemplate.getMorpheme('verb_middle_inter', counter) }}{{ selectedTemplate.plural ? 'śmy' : 'm'}}</td>
<td>-{{ selectedTemplate.getMorpheme('verb_middle_inter', counter) }}{{ selectedTemplate.plural ? 'ście' : 'ś'}}</td>
<td>-{{ selectedTemplate.getMorpheme('verb_end_about', counter) }}</td>
<td>-{{ selectedTemplate.getMorpheme('adjective_n', counter) }}</td>
</tr>
</tbody>
</table>
</div>
</section>
</template>
<script>
export default {
props: {
selectedTemplate: { required: true },
counter: { required: true },
}
}
</script>

116
locale/pl/config.suml Normal file
View File

@ -0,0 +1,116 @@
locale: 'pl'
template:
any:
route: 'dowolne'
sources:
enabled: true
route: 'literatura'
nouns:
enabled: true
route: 'neutratywy'
links:
enabled: true
route: 'linki'
links:
-
icon: 'globe-europe'
url: 'https://pronoun.is/'
headline: 'Pronoun.is'
extra: ' anglojęzyczna inspiracja dla tej strony.'
-
icon: 'comment-alt-edit'
url: 'https://avris.it/blog/czemu-każdy-powinien-mieć-zaimki-w-bio'
headline: 'Czemu KAŻDY powinien mieć zaimki w bio'
-
icon: 'comment-alt-edit'
url: 'https://avris.it/blog/genderneutralizacja-polszczyzny'
headline: 'Genderneutralizacja polszczyzny?'
extra: ' artykuł opisujący, dlaczego język neutralny płciowo jest ważny, i zbierający pomysły na stworzenie takiego.'
-
icon: 'comment-alt-edit'
url: 'https://www.przemyslenia-maniaka.pl/2019/11/maniak-marudzi-27-niebinarne-tumaczenia.html'
headline: 'Maniak marudzi #27: Niebinarne tłumaczenia'
extra: ' artykuł pokazujący, że „nie da się przetłumaczyć they/them na polski” to tylko wymówka.'
-
icon: 'comment-alt-edit'
url: 'http://wasowska.net/2020/09/rowni-wobec-jezyka-o-jezyku-neutralnym-plciowo/'
headline: 'Równi wobec języka o języku neutralnym płciowo'
extra: ' artykuł Agnieszki Wąsowskiej'
-
icon: 'play-circle'
url: 'https://www.youtube.com/watch?v=YOEB6Ixp048'
headline: 'Nie-binarny język polski seminarium naukowe (Queer UW)'
extra: ''
-
icon: 'play-circle'
url: 'https://rss.com/podcasts/bezwstydny/75056/'
headline: 'Niebinarność, neutratywy i prawa człowieka Rozmowa z W. Dynarskim (Bezwstydne Podcast)'
extra: ' <span class="text-nowrap">o zaimki.pl</span> i neutratywach w okolicach 13:40'
-
icon: 'instagram'
iconSet: 'b'
url: 'https://www.instagram.com/inkluzywnamowa/'
headline: '@inkluzywnamowa'
-
icon: 'facebook'
iconSet: 'b'
url: 'https://facebook.com/slownikempatyczny'
headline: 'Słownik Empatyczny Języka Polskiego'
media:
-
icon: 'newspaper'
url: 'https://queer.pl/artykul/204685/zaimkipl-strona-jezyk-polski-niebinarnosc'
headline: 'Zaimki.pl: powstała strona ułatwiająca dostosowanie języka polskiego osobom niebinarnym. Rozmawialiśmy z jej twórcą i twórczynium <strong>Queer.pl</strong>'
-
icon: 'radio'
url: 'https://pod.co/haloradio/joanna-frejus-2020-08-23-17-00'
headline: 'Osoby redaktorskie Słownika Neutratywów u Joanny Frejus w <strong>Halo.Radio</strong>'
socials:
-
icon: 'instagram'
iconSet: 'b'
url: 'https://instagram.com/neutratywy'
headline: '<strong>instagram.com/neutratywy</strong> „Słownik Neutratywów Języka Polskiego”'
-
icon: 'facebook'
iconSet: 'b'
url: 'https://facebook.com/neutratywy'
headline: '<strong>fb.com/neutratywy</strong> „Słownik Neutratywów Języka Polskiego”'
contact:
enabled: true
route: 'kontakt'
authors:
-
name: 'Andrea'
pronouns: 'onu'
pronounsLink: '/onu'
website: 'https://avris.it'
twitter: 'AvrisIT'
mail: 'andrea@avris.it'
areas:
kod: 'https://gitlab.com/Avris/Zaimki'
język: ~
-
name: 'Paweł Dembowski'
pronouns: 'on'
pronounsLink: '/on'
twitter: 'VaultAusir'
mail: 'pawel.dembowski@gmail.com'
areas:
język: ~
literatura: '/literatura'
-
name: 'Zuzanna Sybilla Grzybowska'
pronouns: 'on/ona/ono'
pronounsLink: '/on&ona&ono'
twitter: 'mykofanes'
mail: 'zuzannagrzybowska@protonmail.com'
areas:
neutratywy: '/neutratywy'
social_media: ~

View File

@ -70,7 +70,6 @@ template:
others: 'Inne formy'
othersRaw: 'inne'
or: 'lub'
declension: 'Odmiana'
sources:
header: 'Teksty kultury'

View File

@ -40,7 +40,7 @@ export default {
css: [],
plugins: [
{ src: '~/plugins/vue-matomo.js', ssr: false },
{ src: '~/plugins/plugin-translate.js' },
{ src: '~/plugins/globals.js' },
],
components: true,
buildModules: [],

View File

@ -35,58 +35,7 @@
</ul>
</section>
<section>
<h2 class="h4">
<Icon v="spell-check"/>
<T>template.declension</T>:
</h2>
<div class="table-responsive">
<table class="table table-sm">
<thead>
<tr>
<th>Mianownik</th>
<th>Dopełniacz</th>
<th>Celownik</th>
<th>Biernik</th>
<th>Narzędnik</th>
<th>Miejscownik</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ selectedTemplate.getMorpheme('pronoun_n', counter) }}</td>
<td>{{ selectedTemplate.getMorpheme('pronoun_g', counter) }} / {{ selectedTemplate.getMorpheme('pronoun_g_acc', counter) }}</td>
<td>{{ selectedTemplate.getMorpheme('pronoun_d', counter) }}</td>
<td>{{ selectedTemplate.getMorpheme('pronoun_a', counter) }}</td>
<td>{{ selectedTemplate.getMorpheme('pronoun_i', counter) }}</td>
<td>{{ selectedTemplate.getMorpheme('pronoun_l', counter) }}</td>
</tr>
</tbody>
</table>
</div>
<div class="table-responsive">
<table class="table table-sm">
<thead>
<tr>
<th>1 os.</th>
<th>2 os.</th>
<th>3 os.</th>
<th>Przymiotniki</th>
</tr>
</thead>
<tbody>
<tr>
<td>-{{ selectedTemplate.getMorpheme('verb_middle_inter', counter) }}{{ selectedTemplate.plural ? 'śmy' : 'm'}}</td>
<td>-{{ selectedTemplate.getMorpheme('verb_middle_inter', counter) }}{{ selectedTemplate.plural ? 'ście' : 'ś'}}</td>
<td>-{{ selectedTemplate.getMorpheme('verb_end_about', counter) }}</td>
<td>-{{ selectedTemplate.getMorpheme('adjective_n', counter) }}</td>
</tr>
</tbody>
</table>
</div>
</section>
<GrammarTables :selectedTemplate="selectedTemplate" :counter="counter"/>
<section v-if="selectedTemplate.history">
<div class="alert alert-info" v-for="part in selectedTemplate.history.split('@')">
@ -119,8 +68,10 @@
import { examples, templates, getSources } from "~/src/data";
import { buildTemplate } from "../src/buildTemplate";
import { head } from "../src/helpers";
import GrammarTables from "../data/GrammarTables";
export default {
components: { GrammarTables },
data() {
return {
examples: examples,

View File

@ -1,6 +1,8 @@
import Vue from 'vue'
import t from '../src/translator';
import config from '../data/config.suml';
export default ({ app }) => {
Vue.prototype.$t = t;
Vue.prototype.config = config;
}