#61 English version - WIP
This commit is contained in:
parent
de85859619
commit
08e5b85cbd
|
@ -44,6 +44,11 @@ links:
|
|||
contact:
|
||||
enabled: true
|
||||
route: 'contact'
|
||||
contacts:
|
||||
-
|
||||
icon: 'envelope'
|
||||
url: 'mailto:contact@pronouns.page'
|
||||
headline: 'contact@pronouns.page'
|
||||
authors:
|
||||
-
|
||||
name: 'Andrea'
|
||||
|
@ -73,6 +78,15 @@ contact:
|
|||
areas:
|
||||
social_media: ~
|
||||
|
||||
support:
|
||||
enabled: true
|
||||
links:
|
||||
-
|
||||
icon: 'paypal'
|
||||
iconSet: 'b'
|
||||
url: 'https://paypal.me/AndreAvris'
|
||||
headline: 'PayPal'
|
||||
|
||||
user:
|
||||
enabled: true
|
||||
route: 'account'
|
||||
|
@ -83,6 +97,6 @@ user:
|
|||
- ['mx.', 'mr.', 'miss', 'sir', 'ma''am']
|
||||
- ['person', 'man', 'woman', 'lady', 'dude', 'boy', 'girl', 'bro', 'sis']
|
||||
- ['pretty', 'handsome', 'cute']
|
||||
- ['partner', 'boyfriend', 'girlfriend', 'joyfriend']
|
||||
- ['partner', 'boyfriend', 'girlfriend', 'joyfriend', 'husband', 'wife', 'kissmate']
|
||||
|
||||
redirects: []
|
||||
|
|
|
@ -1,2 +1,5 @@
|
|||
singular plural isHonorific
|
||||
foo {pronoun_subject} bar {pronoun_object} test {possessive_determiner} test {possessive_pronoun} test {reflexive}. FALSE
|
||||
I think {pronoun_subject} is very nice. I think {pronoun_subject} are very nice. FALSE
|
||||
I asked {pronoun_object} if I can borrow {possessive_determiner} pencil. FALSE
|
||||
{'pronoun_subject} told me that the house is {possessive_pronoun}. FALSE
|
||||
{'pronoun_subject} said they would rather do it {reflexive}. FALSE
|
||||
|
|
|
|
@ -5,7 +5,7 @@ home:
|
|||
link: 'Homepage'
|
||||
header: 'Pronouns'
|
||||
headerLong: 'List of pronouns'
|
||||
why: 'Skąd potrzeba niebinarnych zaimków?'
|
||||
why: 'What''s the deal with pronouns?'
|
||||
about:
|
||||
- >
|
||||
Udostępniamy tutaj linki do przykładów użycia
|
||||
|
@ -69,10 +69,11 @@ template:
|
|||
or: 'or'
|
||||
|
||||
sources:
|
||||
header: 'Teksty kultury'
|
||||
headerLong: 'Przykłady z tekstów kultury'
|
||||
headerLonger: 'Niebinarna polszczyzna w tekstach kultury'
|
||||
toc: 'Pokaż spis treści'
|
||||
header: 'Sources'
|
||||
headerLong: 'Examples from cultural texts'
|
||||
headerLonger: 'Examples from cultural texts'
|
||||
subheader: 'Text corpus of gender neutral language'
|
||||
toc: 'Show table of contents'
|
||||
type:
|
||||
All: 'All'
|
||||
Book: 'Books'
|
||||
|
@ -85,9 +86,9 @@ sources:
|
|||
|
||||
links:
|
||||
header: 'Links'
|
||||
headerLong: 'Dodatkowe materiały'
|
||||
headerLong: 'Extra links'
|
||||
|
||||
media: 'Zaimki.pl w mediach'
|
||||
media: 'Pronouns.page in the media'
|
||||
|
||||
social: 'Social media'
|
||||
|
||||
|
@ -95,21 +96,77 @@ contact:
|
|||
header: 'Contact'
|
||||
authors: 'Authors of the website'
|
||||
|
||||
user:
|
||||
header: 'Account'
|
||||
headerLong: 'Your account'
|
||||
tokenExpired: 'Token has expired. Please refresh the website and try again.'
|
||||
login:
|
||||
placeholder: 'Email (or username, if you''re already registered)'
|
||||
action: 'Log in'
|
||||
emailSent: 'We''ve sent you an email with a 6-digit code. Enter it here. The code is single-use and stays valid for 15 minutes.'
|
||||
userNotFound: 'User not found.'
|
||||
email:
|
||||
subject: 'Your login code is %code%'
|
||||
content: |
|
||||
To confirm your email address, use the following code: %code%.
|
||||
|
||||
If you didn't order this code, simply ignore this message.
|
||||
why: >
|
||||
Registering lets you manage your cards ({/@andrea=like this one}).
|
||||
code:
|
||||
action: 'Validate'
|
||||
invalid: 'Invalid code.'
|
||||
account:
|
||||
changeUsername:
|
||||
header: 'Username'
|
||||
action: 'Change'
|
||||
invalid: 'Username must be between 4 and 16 characters long and can only contain numbers, letters, dots, hyphens and underscore.'
|
||||
taken: 'This username is taken.'
|
||||
changeEmail:
|
||||
header: 'Email address'
|
||||
action: 'Change'
|
||||
invalid: 'Invalid email address.'
|
||||
taken: 'This address is taken.'
|
||||
admin: 'Admin'
|
||||
logout: 'Log out'
|
||||
avatar:
|
||||
header: 'Avatar'
|
||||
change: 'Change'
|
||||
deleteAccount: 'Delete account'
|
||||
deleteAccountConfirm: 'Are you sure you want to remove your account? This will be irreversible!'
|
||||
|
||||
profile:
|
||||
description: 'Description'
|
||||
names: 'Names'
|
||||
pronouns: 'Pronouns'
|
||||
pronounsInfo: 'You can enter a pronoun or a link.'
|
||||
words: 'Words'
|
||||
birthday: 'Age'
|
||||
birthdayInfo: 'We do not publish your birthday, just the calculated age.'
|
||||
flags: 'Flags'
|
||||
flagsInfo: 'Drag & drop your pride flags into this frame.'
|
||||
links: 'Links'
|
||||
column: 'Column'
|
||||
|
||||
list: 'Your cards'
|
||||
init: 'Create a card'
|
||||
show: 'Show'
|
||||
edit: 'Edit'
|
||||
delete: 'Delete'
|
||||
deleteConfirm: 'Are you sure you want to delete this card?'
|
||||
editor:
|
||||
header: 'Card editor'
|
||||
save: 'Save your card'
|
||||
|
||||
share: 'Share'
|
||||
|
||||
crud:
|
||||
approve: 'Zatwierdź'
|
||||
hide: 'Schowaj'
|
||||
remove: 'Usuń'
|
||||
edit: 'Edytuj'
|
||||
filter: 'Filtruj'
|
||||
filterLong: 'Filtruj listę…'
|
||||
|
||||
beta: >
|
||||
Strona jest w wersji βeta!
|
||||
Przykłady, formy gramatyczne i linki mogą się jeszcze mocno zmienić!
|
||||
Jeśli masz jakieś sugestie lub uwagi, daj mi proszę znać
|
||||
{https://twitter.com/AvrisIT=na Twitterze} lub {mailto:andrea@avris.it=przez maila}.
|
||||
approve: 'Approve'
|
||||
hide: 'Hide'
|
||||
remove: 'Remove'
|
||||
edit: 'Edit'
|
||||
filter: 'Filter'
|
||||
filterLong: 'Filter the list…'
|
||||
|
||||
footer:
|
||||
source: 'Source code is {https://gitlab.com/Avris/Zaimki=published} under the {https://mit.avris.it=MIT} license.'
|
||||
|
@ -119,6 +176,12 @@ notFound:
|
|||
message: 'Page was not found'
|
||||
back: 'Go back to the homepage'
|
||||
|
||||
confirm:
|
||||
header: 'Are you sure?'
|
||||
yes: 'Yes, I''m sure'
|
||||
no: 'No, cancel'
|
||||
|
||||
terms:
|
||||
header: 'Terms of Service'
|
||||
lastUpdate: 'Last Updated'
|
||||
consent: 'By registering you''re accepting the'
|
||||
|
|
|
@ -119,10 +119,10 @@
|
|||
<p>
|
||||
<T>template.examples</T>:
|
||||
</p>
|
||||
<template v-for="isHonorific in [false, true]">
|
||||
<template v-for="isHonorific in [false, true]" v-if="examples.filter(e => e.isHonorific === isHonorific).length">
|
||||
<ul>
|
||||
<li v-for="example in examples" v-if="example.isHonorific === isHonorific">
|
||||
<span v-for="part in example[(isHonorific ? selectedTemplate.isPluralHonorific() : selectedTemplate.isPlural()) ? 'pluralParts' : 'singularParts']">
|
||||
<span v-for="part in clearExampleParts(example[(isHonorific ? selectedTemplate.isPluralHonorific() : selectedTemplate.isPlural()) ? 'pluralParts' : 'singularParts'])">
|
||||
<input v-if="part.variable" v-model="selectedTemplate.morphemes[part.str]"
|
||||
:class="['form-control form-input p-0', {'active': selectedMorpheme === part.str}]"
|
||||
:size="selectedTemplate.morphemes[part.str] ? selectedTemplate.morphemes[part.str].length : 0"
|
||||
|
@ -187,6 +187,7 @@
|
|||
|
||||
<script>
|
||||
import { examples, templates, getSources, templateLibrary } from "~/src/data";
|
||||
import { ExamplePart } from "~/src/classes";
|
||||
import Compressor from "../src/compressor";
|
||||
import { getTemplate } from "../src/buildTemplate";
|
||||
import MORPHEMES from '../data/templates/morphemes';
|
||||
|
@ -267,6 +268,9 @@
|
|||
addSlash(link) {
|
||||
return link + (link.substr(link.length - 1) === '*' ? '/' : '');
|
||||
},
|
||||
clearExampleParts(parts) {
|
||||
return parts.map(p => new ExamplePart(p.variable, p.str.replace(/^'/, '')));
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import {buildDict, buildList} from "./helpers";
|
||||
import {buildDict, buildList, capitalise} from "./helpers";
|
||||
import MORPHEMES from '../data/templates/morphemes';
|
||||
|
||||
export class ExamplePart {
|
||||
|
@ -27,7 +27,7 @@ export class Example {
|
|||
const parts = [];
|
||||
let lastPosition = 0;
|
||||
|
||||
for (let m of str.matchAll(/{([a-z_]+)}/g)) {
|
||||
for (let m of str.matchAll(/{('?[a-z_]+)}/g)) {
|
||||
const textBefore = str.substr(lastPosition, m.index - lastPosition);
|
||||
if (textBefore.length) {
|
||||
parts.push(new ExamplePart(false, textBefore));
|
||||
|
@ -163,13 +163,21 @@ export class Template {
|
|||
}
|
||||
|
||||
getMorpheme(morpheme, counter = 0) {
|
||||
let capital = false;
|
||||
if (morpheme.startsWith("'")) {
|
||||
capital = true;
|
||||
morpheme = morpheme.substring(1);
|
||||
}
|
||||
|
||||
if (!this.morphemes[morpheme]) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const options = this.morphemes[morpheme].split('&');
|
||||
|
||||
return options[counter % options.length]
|
||||
const result = options[counter % options.length];
|
||||
|
||||
return capital ? capitalise(result) : result;
|
||||
}
|
||||
|
||||
isPlural(counter = 0) {
|
||||
|
|
|
@ -4,7 +4,7 @@ import { parseTemplates, getTemplate } from './buildTemplate';
|
|||
import sourcesForMultipleForms from '../data/sources/sourcesMultiple';
|
||||
|
||||
export const locales = {
|
||||
// en: { name: 'English', url: 'https://en.pronouns.page' },
|
||||
en: { name: 'English', url: 'https://en.pronouns.page' },
|
||||
pl: { name: 'Polski', url: 'https://zaimki.pl' },
|
||||
// de: { name: 'Deutsch', url: 'https://de.pronouns.page' },
|
||||
// nl: { name: 'Nederlands', url: 'https://nl.pronouns.page' },
|
||||
|
|
|
@ -145,3 +145,7 @@ export const curry = function (func) {
|
|||
}
|
||||
};
|
||||
}
|
||||
|
||||
export const capitalise = function (word) {
|
||||
return word.substring(0, 1).toUpperCase() + word.substring(1);
|
||||
}
|
||||
|
|
Reference in New Issue