[nouns] reorganise nullpronominal

This commit is contained in:
Avris 2021-09-28 21:34:25 +02:00
parent 6afdf8bbda
commit 24c95ae0c0
24 changed files with 215 additions and 194 deletions

40
components/Avoiding.vue Normal file
View File

@ -0,0 +1,40 @@
<template>
<div v-if="config.pronouns.null && config.pronouns.null.ideas && config.pronouns.null.ideas.length">
<section v-for="idea in config.pronouns.null.ideas">
<h3>{{idea.header}}</h3>
<p v-if="idea.description">
{{idea.description}}
</p>
<ul>
<li v-for="[exampleFrom, exampleTo] in idea.examples">
<LinkedText :text="exampleFrom"/> <strong><LinkedText :text="exampleTo"/></strong>
</li>
</ul>
</section>
<section v-if="sources && sources[''].length">
<Literature :sources="sources"/>
</section>
</div>
</template>
<script>
import {SourceLibrary} from "../src/classes";
export default {
data() {
return {
sources: undefined,
}
},
async mounted() {
if (!this.config.pronouns.null.routes) {
return;
}
const key = this.config.pronouns.null.routes[0];
this.sources = {
'': new SourceLibrary(await this.$axios.$get(`/sources?pronoun=${key}`)).getForPronoun(key),
};
},
};
</script>

View File

@ -137,12 +137,18 @@
});
if (this.config.pronouns.enabled) {
const extra = ['all', '/' + 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);
}
}
links.push({
link: '/' + this.config.pronouns.route,
icon: 'tags',
text: this.$t('pronouns.header'),
textLong: this.$t('pronouns.headerLong').replace( /(<([^>]+)>)/ig, ''),
extra: ['all', '/' + this.config.pronouns.any, this.config.pronouns.avoiding ? '/' + this.config.pronouns.avoiding : null],
extra: extra,
});
}

View File

@ -7,8 +7,13 @@
props: {
text: { required: true },
noicons: { type: Boolean },
escape: { type: Boolean },
},
render(h) {
let text = this.text;
if (this.escape) {
text = text.replace(/[&<>"]/g, tag => escapeChars[tag] || tag);
}
if (!this.text) {
return h('span');
}

View File

@ -138,7 +138,9 @@
link = link.toLowerCase();
}
if (link === this.config.pronouns.any || link === this.config.pronouns.avoiding) {
if (link === this.config.pronouns.any
|| (this.config.pronouns.null && this.config.pronouns.null.routes && this.config.pronouns.null.routes.includes(link))
) {
pronounOpinions.push({
link,
pronoun: link,

View File

@ -16,7 +16,6 @@ pronouns:
null: false
emoji: false
slashes: ['pronoun_n', 'possessive', 'pronoun_d', 'pronoun_a']
avoiding: false
others: 'Andere Pronomen'
pronunciation:

View File

@ -17,12 +17,14 @@ pronouns:
Some like when others alternate between those forms when talking about them.
examples: ['he&she', 'he&they', 'she&they']
null:
description: 'No pronouns / null pronouns / pronounless / nameself'
description: >
{/avoiding=Avoiding gendered forms} / {/no-pronouns=no pronouns} / {/null=null pronouns} /
{/pronounless=pronounless} / {/nullpronominal=nullpronominal} / {/nameself=nameself}
history: >
Some people prefer not using any pronouns, instead being referred by name, initial,
omitting pronouns with passive voice, or restructuring the sentence. See:
{/avoiding=Avoiding gendered forms} &
{https://lgbta.wikia.org/wiki/Nullpronominal=Nullpronominal}.
omitting pronouns with passive voice, or restructuring the sentence.
See: {https://twitter.com/lypomania/status/1290274971642544128=lypomania's guide},
{https://lgbta.wikia.org/wiki/Nullpronominal=Nullpronominal on LGBTA Wiki}
morphemes:
pronoun_subject: '#'
pronoun_object: '#'
@ -31,6 +33,39 @@ pronouns:
reflexive: '#self'
examples: [':Andrea', ':S']
template: 'Open one of the examples and simply replace the name/initial in the URL with your own.'
routes: ['avoiding', 'no-pronouns', 'null', 'pronounless', 'nullpronominal', 'nameself']
ideas:
-
header: 'Use names or initials instead of pronouns'
examples:
- ['I talked to him yesterday', 'I talked to {/:Sky=Sky} yesterday']
- ['She is really beautiful', '{/:Soph=Soph} is really beautiful']
-
- 'Her graduation starts soon'
- '{/:J=J}''s graduation starts soon'
-
header: 'Passive voice'
examples:
- ['He answered the phone', 'The phone was answered']
-
- 'Wen takes good care of her cat'
- 'Wen''s cat is well cared for'
-
header: 'Rephrasing the sentence (circumlocution)'
examples:
- ['Lior did it all by himself', 'Lior did it all without any help']
- ['Gael talks in his sleep', 'Gael talks while sleeping']
-
header: 'Replacing a pronoun with a descriptive noun or phrase'
examples:
- ['She landed the plane safely', 'The pilot landed the plane safely']
- ['This is Lea, she is into painting', 'This is Lea. My friend is into painting']
- ['She argues that…', 'The person who started this discussion argues that…']
-
header: 'Dropping pronouns'
examples:
- ['Did you buy Tex her gift?', 'Did you buy Tex a gift?']
- ['Yes, I bought it for her. I will give it to her tomorrow.', 'Yes, I bought it. I will give it tomorrow.']
emoji:
description: 'Emojiself pronouns'
history: '{https://lgbta.wikia.org/wiki/Emojiself_Pronouns=Emojiself} pronouns are intended for online communication and not supposed to be pronounced.'
@ -43,7 +78,6 @@ pronouns:
examples: ['💫', '💙']
template: 'Open one of the examples and simply replace the emoji in the URL with your own.'
slashes: true
avoiding: 'avoiding'
others: 'Other pronouns'
pronunciation:

View File

@ -82,45 +82,6 @@ pronouns:
othersRaw: 'other'
or: 'or'
grammarTable: 'Table'
avoiding:
header: 'Avoiding gendered forms'
description: >
Some people prefer not using any pronouns, instead being referred by name, initial,
omitting pronouns with passive voice, or restructuring the sentence.
See: {https://twitter.com/lypomania/status/1290274971642544128=@lypomania's guide},
{https://lgbta.wikia.org/wiki/Nullpronominal=Nullpronominal}
ideas:
-
header: 'Use names or initials instead of pronouns'
examples:
- ['I talked to him yesterday', 'I talked to {/:Sky=Sky} yesterday']
- ['She is really beautiful', '{/:Soph=Soph} is really beautiful']
-
- 'Her graduation starts soon'
- '{/:J=J}''s graduation starts soon'
-
header: 'Passive voice'
examples:
- ['He answered the phone', 'The phone was answered']
-
- 'Wen takes good care of her cat'
- 'Wen''s cat is well cared for'
-
header: 'Rephrasing the sentence (circumlocution)'
examples:
- ['Lior did it all by himself', 'Lior did it all without any help']
- ['Gael talks in his sleep', 'Gael talks while sleeping']
-
header: 'Replacing a pronoun with a descriptive noun or phrase'
examples:
- ['She landed the plane safely', 'The pilot landed the plane safely']
- ['This is Lea, she is into painting', 'This is Lea. My friend is into painting']
- ['She argues that…', 'The person who started this discussion argues that…']
-
header: 'Dropping pronouns'
examples:
- ['Did you buy Tex her gift?', 'Did you buy Tex a gift?']
- ['Yes, I bought it for her. I will give it to her tomorrow.', 'Yes, I bought it. I will give it tomorrow.']
sources:
header: 'Sources'

View File

@ -16,7 +16,6 @@ pronouns:
null: false
emoji: false
slashes: false
avoiding: false
others: 'Otros pronombres'
pronunciation:

View File

@ -19,7 +19,6 @@ pronouns:
null: false
emoji: false
slashes: true
avoiding: false
others: 'Autres pronoms'
pronunciation:

View File

@ -36,7 +36,6 @@ pronouns:
examples: ['💫', '💙']
template: 'Open een van de voorbeelden en vervang de emoji in de URL met jouw eigen emoji.'
slashes: true
avoiding: false
others: 'Andere voornaamwoorden'
threeForms: true

View File

@ -18,7 +18,6 @@ pronouns:
null: false
emoji: false
slashes: true
avoiding: false
others: 'Andre pronomen'
pronunciation:

View File

@ -79,7 +79,6 @@ pronouns:
othersRaw: 'andre'
or: 'eller'
grammarTable: 'Tabell'
avoiding: false
sources:
header: 'Kilder'

View File

@ -46,8 +46,100 @@ pronouns:
honorific: '#'
examples: ['💫', '💙', '🐿']
template: 'Otwórz dowolny z przykładów i podmień emoji w URLu na swoje.'
null: false
avoiding: 'unikanie'
null:
description: '{/unikanie=Unikanie form nacechowanych płciowo}'
history: >
Niektóre osoby niebinarne preferują używanie form unikających precyzowania płci
zamiast tych nacechowanych czy to binarnie czy niebinarnie.
Warto też używać ich mówiąc o osobach, których płci nie znamy.
Choć w silnie zgenderyzowanym języku polskim jest to względnie trudne do zrobienia
i może lekko zmieniać znaczenie zdania,
to jednak wcale nie jest niemożliwe.
routes: ['unikanie']
ideas:
-
header: 'Zmiana podmiotu zdania'
examples:
- [ 'usłyszałam dzwonek telefonu', 'zadzwonił telefon' ]
- [ 'przestraszyłem się nagłego hałasu', 'jakiś nagły hałas mnie przestraszył' ]
- [ 'powinieneś skoczyć do sklepu', 'trzeba by skoczyć do sklepu' ]
-
header: 'Strona bierna'
examples:
- [ 'zgubił telefon', 'telefon został zgubiony' ]
- [ 'znalazłam telefon', 'telefon został znaleziony' ]
-
header: 'Forma bezosobowa'
examples:
- [ 'pani w urzędzie powiedziała mi', 'w urzędzie powiedziano mi' ]
- [ 'znalazłam telefon', 'znaleziono telefon' ]
- [ 'jak jesteś zalogowany, to możesz edytować wpisy', 'jak się jest zalogowanym, można edytować wpisy' ]
-
header: 'Bezosobowe użycie 3. os. mnogiej'
examples:
- [ 'pani w urzędzie powiedziała mi', 'w urzędzie powiedzieli mi' ]
-
header: 'Podmiot logiczny w celowniku'
examples:
- [ 'przypomniałem sobie', 'przypomniało mi się' ]
- [ 'zmarzłam', 'zrobiło mi się zimno' ]
- [ 'zrobiłem', 'udało mi się zrobić' ]
-
header: 'Bezokolicznikowy czas przyszły'
examples:
- [ 'będę robiła', 'będę robić' ]
- [ 'będę jadł', 'będę jeść' ]
-
header: 'Czas teraźniejszy i przyszły zamiast przeszłego'
examples:
- [ 'gdy robiłem wczoraj obiad, skaleczyłem się nożem', 'robię wczoraj obiad i jak się nie skaleczę' ]
-
header: 'Imiesłowy'
examples:
- [ 'usiadłem na kanapie', 'usiadłszy na kanapie' ]
- [ 'wypiłam herbatę', 'wypiwszy herbatę' ]
- [ 'posprzątałem mieszkanie', 'mieszkanie posprzątane' ]
-
header: 'Unikanie trybu przypuszczającego'
examples:
- [ 'czy mógłbyś mi pomóc?', 'czy możesz mi pomóc?' ]
- [ 'może bym tak pojechała na wakacje?', 'może pojadę na wakacje?' ]
-
header: 'Osobatywy i inne normatywne neutralne rzeczowniki'
examples:
- [ 'zarządca', 'osoba zarządzająca' ]
- [ 'kandydaci i kandydatki', 'osoby kandydujące' ]
- [ 'proszę przyjść do szkoły z mamą lub tatą', 'proszę przyjść do szkoły z opiekunem' ]
- [ 'mama i tata Ani są bardzo mili', 'rodzice Ani są bardzo mili' ]
- [ 'dziennikarze oko.press', 'redakcja oko.press' ]
- [ 'fani Mariny', 'fandom Mariny' ]
-
header: 'Skrócone zaimki'
description: 'Choć historycznie formy te są męskie, to współcześnie są na tyle rzadko używanie, że warto próbować je reinterpretować.'
examples:
- [ 'to dla niego', 'to dlań' ]
- [ 'mieszkam u niej', 'mieszkam uń' ]
-
header: 'Skrócone zaimki + strona bierna'
description: 'Choć historycznie formy te są męskie, to współcześnie są na tyle rzadko używanie, że warto próbować je reinterpretować.'
examples:
- [ 'zrobiła', 'było przezeń zrobione' ]
-
header: 'Staropolska, rzeczownikowa odmiana przymiotników'
description: 'Choć historycznie formy te są męskie, to współcześnie są na tyle rzadko używanie, że warto próbować je reinterpretować.'
examples:
- [ 'jestem szczęśliwa!', 'jestem szczęśliw!' ]
- [ 'czemu jesteś taki zmartwiony?', 'czemu jesteś tak zmartwion?' ]
-
header: 'Skróty'
examples:
- [ 'Katarzyna Nowak', 'K. Nowak' ]
- [ 'Szanowny Pan Białek', 'Sz. P. Białek' ]
- [ 'Towarzyszka Q', 'Tow. Q' ]
-
header: 'Liczebniki zbiorowe'
examples:
- [ 'dziesięciu pracowników', 'dziesięcioro pracujących' ]
others: 'Pozostałe formy'
pronunciation:

View File

@ -90,100 +90,6 @@ pronouns:
Choć dla wielu osób niezmiernie ważne jest, by używać wobec nich konkretnych zaimków,
innym nie przeszkadza zwracanie się w dowolny sposób o ile wiadomo z kontekstu, że to o nich mowa.
options: 'przejrzyj listę możliwości [share]{/zaimki=tutaj}.'
avoiding:
header: 'Unikanie form nacechowanych płciowo'
description: >
Niektóre osoby niebinarne preferują używanie form unikających precyzowania płci
zamiast tych nacechowanych czy to binarnie czy niebinarnie.
Warto też używać ich mówiąc o osobach, których płci nie znamy.
Choć w silnie zgenderyzowanym języku polskim jest to względnie trudne do zrobienia
i może lekko zmieniać znaczenie zdania,
to jednak wcale nie jest niemożliwe.
ideas:
-
header: 'Zmiana podmiotu zdania'
examples:
- ['usłyszałam dzwonek telefonu', 'zadzwonił telefon']
- ['przestraszyłem się nagłego hałasu', 'jakiś nagły hałas mnie przestraszył']
- ['powinieneś skoczyć do sklepu', 'trzeba by skoczyć do sklepu']
-
header: 'Strona bierna'
examples:
- ['zgubił telefon', 'telefon został zgubiony']
- ['znalazłam telefon', 'telefon został znaleziony']
-
header: 'Forma bezosobowa'
examples:
- ['pani w urzędzie powiedziała mi', 'w urzędzie powiedziano mi']
- ['znalazłam telefon', 'znaleziono telefon']
- ['jak jesteś zalogowany, to możesz edytować wpisy', 'jak się jest zalogowanym, można edytować wpisy']
-
header: 'Bezosobowe użycie 3. os. mnogiej'
examples:
- ['pani w urzędzie powiedziała mi', 'w urzędzie powiedzieli mi']
-
header: 'Podmiot logiczny w celowniku'
examples:
- ['przypomniałem sobie', 'przypomniało mi się']
- ['zmarzłam', 'zrobiło mi się zimno']
- ['zrobiłem', 'udało mi się zrobić']
-
header: 'Bezokolicznikowy czas przyszły'
examples:
- ['będę robiła', 'będę robić']
- ['będę jadł', 'będę jeść']
-
header: 'Czas teraźniejszy i przyszły zamiast przeszłego'
examples:
- ['gdy robiłem wczoraj obiad, skaleczyłem się nożem', 'robię wczoraj obiad i jak się nie skaleczę']
-
header: 'Imiesłowy'
examples:
- ['usiadłem na kanapie', 'usiadłszy na kanapie']
- ['wypiłam herbatę', 'wypiwszy herbatę']
- ['posprzątałem mieszkanie', 'mieszkanie posprzątane']
-
header: 'Unikanie trybu przypuszczającego'
examples:
- ['czy mógłbyś mi pomóc?', 'czy możesz mi pomóc?']
- ['może bym tak pojechała na wakacje?', 'może pojadę na wakacje?']
-
header: 'Osobatywy i inne normatywne neutralne rzeczowniki'
examples:
- ['zarządca', 'osoba zarządzająca']
- ['kandydaci i kandydatki', 'osoby kandydujące']
- ['proszę przyjść do szkoły z mamą lub tatą', 'proszę przyjść do szkoły z opiekunem']
- ['mama i tata Ani są bardzo mili', 'rodzice Ani są bardzo mili']
- ['dziennikarze oko.press', 'redakcja oko.press']
- ['fani Mariny', 'fandom Mariny']
-
header: 'Skrócone zaimki'
description: 'Choć historycznie formy te są męskie, to współcześnie są na tyle rzadko używanie, że warto próbować je reinterpretować.'
examples:
- ['to dla niego', 'to dlań']
- ['mieszkam u niej', 'mieszkam uń']
-
header: 'Skrócone zaimki + strona bierna'
description: 'Choć historycznie formy te są męskie, to współcześnie są na tyle rzadko używanie, że warto próbować je reinterpretować.'
examples:
- ['zrobiła', 'było przezeń zrobione']
-
header: 'Staropolska, rzeczownikowa odmiana przymiotników'
description: 'Choć historycznie formy te są męskie, to współcześnie są na tyle rzadko używanie, że warto próbować je reinterpretować.'
examples:
- ['jestem szczęśliwa!', 'jestem szczęśliw!']
- ['czemu jesteś taki zmartwiony?', 'czemu jesteś tak zmartwion?']
-
header: 'Skróty'
examples:
- ['Katarzyna Nowak', 'K. Nowak']
- ['Szanowny Pan Białek', 'Sz. P. Białek']
- ['Towarzyszka Q', 'Tow. Q']
-
header: 'Liczebniki zbiorowe'
examples:
- ['dziesięciu pracowników', 'dziesięcioro pracujących']
others: 'Inne formy'
othersRaw: 'inne'
or: 'lub'

View File

@ -16,7 +16,6 @@ pronouns:
null: false
emoji: false
slashes: false
avoiding: false
others: 'Outros pronomes'
threeForms: true

View File

@ -27,7 +27,6 @@ pronouns:
template: 'Open one of the examples and simply replace the name/initial in the URL with your own.'
emoji: false
slashes: true
avoiding: false
others: 'Other pronouns'
pronunciation:

View File

@ -23,7 +23,6 @@ pronouns:
examples: ['💫', '💙']
template: '打開一個例句,用自己的表情符號代替位址裏面的表情符號。'
slashes: false
avoiding: false
others: 'Other pronouns'
pronunciation:

View File

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

View File

@ -1,49 +1,30 @@
<template>
<div>
<h2>
<T>pronouns.avoiding.header</T>
{{ clearLinkedText(config.pronouns.null.description) }}
</h2>
<p>
<T>pronouns.avoiding.description</T>
<LinkedText :text="config.pronouns.null.history"/>
</p>
<section v-for="idea in $t('pronouns.avoiding.ideas')">
<h3>{{idea.header}}</h3>
<p v-if="idea.description">
{{idea.description}}
</p>
<ul>
<li v-for="[exampleFrom, exampleTo] in idea.examples">
<LinkedText :text="exampleFrom"/> <strong><LinkedText :text="exampleTo"/></strong>
</li>
</ul>
</section>
<section v-if="sources && Object.keys(sources).length">
<Literature :sources="sources"/>
</section>
<Avoiding/>
</div>
</template>
<script>
import {SourceLibrary} from "../src/classes";
import { head } from "../src/helpers";
import { head, clearLinkedText } from "../src/helpers";
export default {
data() {
return {
sources: undefined,
}
},
async mounted() {
this.sources = {
'': new SourceLibrary(await this.$axios.$get(`/sources?pronoun=${this.config.pronouns.avoiding}`)).getForPronoun(this.config.pronouns.avoiding),
clearLinkedText
};
},
head() {
return head({
title: this.$t('pronouns.avoiding.header'),
title: this.config.pronouns.null.description,
description: this.config.pronouns.null.history,
});
},
};

View File

@ -342,9 +342,11 @@
},
validatePronoun(pronoun) {
pronoun = this.normalisePronoun(pronoun);
return pronoun === this.config.pronouns.any || pronoun === this.config.pronouns.avoiding || buildPronoun(pronouns, pronoun)
? null
: 'profile.pronounsNotFound'
return pronoun === this.config.pronouns.any
|| (this.config.pronouns.null && this.config.pronouns.null.routes && this.config.pronouns.null.routes.includes(pronoun))
|| buildPronoun(pronouns, pronoun)
? null
: 'profile.pronounsNotFound'
},
},
computed: {

View File

@ -32,7 +32,7 @@
</h2>
<p class="h6 small text-center mb-0 mt-2" v-if="selectedPronoun.description">
<em>
(<Spelling escape :text="Array.isArray(selectedPronoun.description)
(<LinkedText escape :text="Array.isArray(selectedPronoun.description)
? ($t('pronouns.alt.header') + ': ' + selectedPronoun.description.join(glue))
: selectedPronoun.description"/>)
</em>
@ -98,6 +98,8 @@
</ul>
</section>
<Avoiding v-if="isNull"/>
<section>
<Share :title="`${$t('pronouns.intro')}: ${selectedPronoun.name(glue)}`"/>
</section>
@ -129,8 +131,9 @@
export default {
components: {LinkedText, GrammarTables },
data() {
const key = decodeURIComponent(this.$route.path.substr(1).replace(/\/$/, ''));
const selectedPronoun = this.config.pronouns.enabled
? buildPronoun(pronouns, decodeURIComponent(this.$route.path.substr(1).replace(/\/$/, '')))
? buildPronoun(pronouns, key)
: null;
return {
@ -145,6 +148,8 @@
counter: 0,
counterHandle: null,
counterSpeed: 1000,
isNull: key.startsWith(':'),
}
},
async asyncData({app}) {

View File

@ -145,7 +145,7 @@
</li>
<li v-if="config.pronouns.null !== false" class="list-group-item" id="nameself">
<p class="h5">
<Spelling :text="config.pronouns.null.description"/>
<LinkedText :text="config.pronouns.null.description"/>
</p>
<div class="small my-1" v-if="config.pronouns.null.history">
<Icon v="info-circle"/>
@ -177,14 +177,6 @@
<T>pronouns.any.description</T>
</p>
</li>
<li v-if="config.pronouns.avoiding" class="list-group-item">
<p class="h5">
<nuxt-link :to="'/' + config.pronouns.avoiding"><T>pronouns.avoiding.header</T></nuxt-link>
</p>
<p>
<T>pronouns.avoiding.description</T>
</p>
</li>
</ul>
</section>

View File

@ -67,7 +67,7 @@ export const buildPronoun = (pronouns, path) => {
pronoun = buildPronounFromTemplate(path, process.env.CONFIG.pronouns.emoji);
}
if (!pronoun && process.env.CONFIG.pronouns.null !== false && path.startsWith(':') && path.length < 12) {
if (!pronoun && process.env.CONFIG.pronouns.null && process.env.CONFIG.pronouns.null.morphemes && path.startsWith(':') && path.length < 12) {
pronoun = buildPronounFromTemplate(path.substring(1), process.env.CONFIG.pronouns.null);
}

View File

@ -23,6 +23,7 @@ export const head = ({title, description, banner}) => {
const meta = { meta: [] };
if (title) {
title = clearLinkedText(title);
title += ' • ' + process.env.TITLE;
meta.title = title;
meta.meta.push({ hid: 'og:title', property: 'og:title', content: title });
@ -30,6 +31,7 @@ export const head = ({title, description, banner}) => {
}
if (description) {
description = clearLinkedText(description);
meta.meta.push({ hid: 'description', name: 'description', content: description });
meta.meta.push({ hid: 'og:description', property: 'og:description', content: description });
meta.meta.push({ hid: 'twitter:description', property: 'twitter:description', content: description });