From d00925af076c7d3066b7db5879e6869eba208c2e Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 12 Sep 2019 11:34:01 +0200 Subject: [PATCH] Move i18n to vue-i18n and json files Signed-off-by: Thomas Citharel --- js/Makefile | 58 -- js/package.json | 7 +- js/patches/easygettext+2.7.0.patch | 41 -- js/src/App.vue | 1 - js/src/components/Account/Identities.vue | 4 +- .../components/Event/AddressAutoComplete.vue | 28 +- js/src/components/Event/DateTimePicker.vue | 2 +- js/src/components/Event/EventCard.vue | 4 +- js/src/components/Event/EventFullDate.vue | 15 +- .../components/Event/ParticipationModal.vue | 2 +- js/src/components/Event/TagInput.vue | 4 +- js/src/components/Footer.vue | 13 +- js/src/components/NavBar.vue | 12 +- js/src/components/PictureUpload.vue | 2 +- js/src/components/SearchField.vue | 2 +- js/src/i18n/en_US.json | 200 ++++++ js/src/i18n/fr_FR.json | 200 ++++++ js/src/i18n/index.js | 7 + js/src/i18n/locale/en_US/LC_MESSAGES/app.po | 439 ------------- js/src/i18n/locale/fr_FR/LC_MESSAGES/app.po | 440 ------------- js/src/i18n/translations.json | 1 - js/src/main.ts | 17 +- js/src/types/event.model.ts | 2 +- js/src/views/Account/IdentityPicker.vue | 6 +- js/src/views/Account/Profile.vue | 18 +- js/src/views/Account/Register.vue | 18 +- .../views/Account/children/EditIdentity.vue | 43 +- js/src/views/Admin/Dashboard.vue | 14 +- js/src/views/Error.vue | 12 +- js/src/views/Event/Edit.vue | 80 ++- js/src/views/Event/Event.vue | 85 ++- js/src/views/Event/EventList.vue | 4 +- js/src/views/Group/Create.vue | 12 +- js/src/views/Group/Group.vue | 6 +- js/src/views/Group/GroupList.vue | 4 +- js/src/views/Home.vue | 49 +- js/src/views/Moderation/Report.vue | 2 +- js/src/views/PageNotFound.vue | 10 +- js/src/views/Search.vue | 14 +- js/src/views/User/Login.vue | 16 +- js/src/views/User/PasswordReset.vue | 4 +- js/src/views/User/Register.vue | 29 +- js/src/views/User/ResendConfirmation.vue | 10 +- js/src/views/User/SendPasswordReset.vue | 10 +- js/src/views/User/Validate.vue | 8 +- js/tsconfig.json | 1 + js/yarn.lock | 587 ++---------------- 47 files changed, 740 insertions(+), 1803 deletions(-) delete mode 100644 js/Makefile delete mode 100644 js/patches/easygettext+2.7.0.patch create mode 100644 js/src/i18n/en_US.json create mode 100644 js/src/i18n/fr_FR.json create mode 100644 js/src/i18n/index.js delete mode 100644 js/src/i18n/locale/en_US/LC_MESSAGES/app.po delete mode 100644 js/src/i18n/locale/fr_FR/LC_MESSAGES/app.po delete mode 100644 js/src/i18n/translations.json diff --git a/js/Makefile b/js/Makefile deleted file mode 100644 index c55170452..000000000 --- a/js/Makefile +++ /dev/null @@ -1,58 +0,0 @@ -# On OSX the PATH variable isn't exported unless "SHELL" is also set, see: http://stackoverflow.com/a/25506676 -SHELL = /bin/bash -NODE_BINDIR = ./node_modules/.bin -export PATH := $(NODE_BINDIR):$(PATH) - -# Where to find input files (it can be multiple paths). -INPUT_FILES = ./src - -# Where to write the files generated by this makefile. -OUTPUT_DIR = ./src/i18n - -# Available locales for the app. -LOCALES = en_US fr_FR - -# Name of the generated .po files for each available locale. -LOCALE_FILES ?= $(patsubst %,$(OUTPUT_DIR)/locale/%/LC_MESSAGES/app.po,$(LOCALES)) - -GETTEXT_HTML_SOURCES = $(shell find $(INPUT_FILES) -name '*.vue' -o -name '*.html' 2> /dev/null) -GETTEXT_JS_SOURCES = $(shell find $(INPUT_FILES) -name '*.vue' -o -name '*.js') - -# Makefile Targets -.PHONY: clean makemessages translations - -clean: - rm -f /tmp/template.pot $(OUTPUT_DIR)/translations.json - -makemessages: /tmp/template.pot - -translations: ./$(OUTPUT_DIR)/translations.json - -# Create a main .pot template, then generate .po files for each available language. -# Thanx to Systematic: https://github.com/Polyconseil/systematic/blob/866d5a/mk/main.mk#L167-L183 -/tmp/template.pot: $(GETTEXT_HTML_SOURCES) -# `dir` is a Makefile built-in expansion function which extracts the directory-part of `$@`. -# `$@` is a Makefile automatic variable: the file name of the target of the rule. -# => `mkdir -p /tmp/` - mkdir -p $(dir $@) - which gettext-extract -# Extract gettext strings from templates files and create a POT dictionary template. - gettext-extract --attribute v-translate --quiet --parseScript false --output $@ $(GETTEXT_HTML_SOURCES) -# Extract gettext strings from JavaScript files. - xgettext --language=JavaScript --keyword=npgettext:1c,2,3 \ - --from-code=utf-8 --join-existing --no-wrap \ - --package-name=$(shell node -e "console.log(require('./package.json').name);") \ - --package-version=$(shell node -e "console.log(require('./package.json').version);") \ - --output $@ $(GETTEXT_JS_SOURCES) -# Generate .po files for each available language. - @for lang in $(LOCALES); do \ - export PO_FILE=$(OUTPUT_DIR)/locale/$$lang/LC_MESSAGES/app.po; \ - echo "msgmerge --update $$PO_FILE $@"; \ - mkdir -p $$(dirname $$PO_FILE); \ - [ -f $$PO_FILE ] && msgmerge --lang=$$lang --update $$PO_FILE $@ || msginit --no-translator --locale=$$lang --input=$@ --output-file=$$PO_FILE; \ - msgattrib --no-wrap --no-obsolete -o $$PO_FILE $$PO_FILE; \ - done; - -$(OUTPUT_DIR)/translations.json: clean /tmp/template.pot - mkdir -p $(OUTPUT_DIR) - gettext-compile --output $@ $(LOCALE_FILES) diff --git a/js/package.json b/js/package.json index 4eb804f7f..26e3fdbcc 100644 --- a/js/package.json +++ b/js/package.json @@ -9,7 +9,7 @@ "dev": "vue-cli-service build --watch", "test:e2e": "vue-cli-service test:e2e", "test:unit": "vue-cli-service test:unit", - "prepare": "patch-package" + "vue-i18n-extract": "vue-i18n-extract" }, "dependencies": { "apollo-absinthe-upload-link": "^1.5.0", @@ -18,7 +18,6 @@ "apollo-link": "^1.2.11", "apollo-link-http": "^1.5.14", "buefy": "^0.8.2", - "easygettext": "^2.7.0", "graphql": "^14.2.1", "graphql-tag": "^2.10.1", "leaflet": "^1.4.0", @@ -33,7 +32,7 @@ "vue": "^2.6.10", "vue-apollo": "^3.0.0-rc.1", "vue-class-component": "^7.0.2", - "vue-gettext": "^2.1.3", + "vue-i18n": "^8.14.0", "vue-property-decorator": "^8.1.0", "vue-router": "^3.0.6", "vue2-leaflet": "^2.0.3", @@ -58,12 +57,12 @@ "eslint": "^6.0.1", "graphql-cli": "^3.0.12", "node-sass": "^4.11.0", - "patch-package": "^6.1.2", "sass-loader": "^8.0.0", "tslint": "^5.16.0", "tslint-config-airbnb": "^5.11.1", "typescript": "^3.4.3", "vue-cli-plugin-webpack-bundle-analyzer": "^1.3.0", + "vue-i18n-extract": "^1.0.2", "vue-svg-inline-loader": "^1.2.15", "vue-template-compiler": "^2.6.10", "webpack": "^4.30.0" diff --git a/js/patches/easygettext+2.7.0.patch b/js/patches/easygettext+2.7.0.patch deleted file mode 100644 index bdb2ce213..000000000 --- a/js/patches/easygettext+2.7.0.patch +++ /dev/null @@ -1,41 +0,0 @@ -patch-package ---- a/node_modules/easygettext/src/extract-cli.js -+++ b/node_modules/easygettext/src/extract-cli.js -@@ -22,9 +22,12 @@ const endDelimiter = argv.endDelimiter === undefined ? constants.DEFAULT_DELIMIT - const extraAttribute = argv.attribute || false; - const extraFilter = argv.filter || false; - const filterPrefix = argv.filterPrefix || constants.DEFAULT_FILTER_PREFIX; -+const parseScript = argv.parseScript === undefined ? true : argv.parseScript === 'true'; - - if (!quietMode && (!files || files.length === 0)) { -- console.log('Usage:\n\tgettext-extract [--attribute EXTRA-ATTRIBUTE] [--filterPrefix FILTER-PREFIX] [--output OUTFILE] '); -+ console.log( -+ 'Usage:\n\tgettext-extract [--attribute EXTRA-ATTRIBUTE] [--filterPrefix FILTER-PREFIX] [--parseScript BOOLEAN] [--output OUTFILE] ', -+ ); - process.exit(1); - } - -@@ -54,7 +57,7 @@ const extractor = new extract.Extractor({ - }); - - --files.forEach(function(filename) { -+files.forEach(function (filename) { - let file = filename; - const ext = file.split('.').pop(); - if (ALLOWED_EXTENSIONS.indexOf(ext) === -1) { -@@ -63,9 +66,13 @@ files.forEach(function(filename) { - } - console.log(`[${PROGRAM_NAME}] extracting: '${filename}`); - try { -- let data = fs.readFileSync(file, {encoding: 'utf-8'}).toString(); -+ let data = fs.readFileSync(file, { encoding: 'utf-8' }).toString(); - extractor.parse(file, extract.preprocessTemplate(data, ext)); - -+ if (!parseScript) { -+ return; -+ } -+ - if (ext !== 'js') { - data = extract.preprocessScriptTags(data, ext); - } diff --git a/js/src/App.vue b/js/src/App.vue index f08a75f4c..c9fbf8be8 100644 --- a/js/src/App.vue +++ b/js/src/App.vue @@ -79,7 +79,6 @@ export default class App extends Vue { const activeIdentity = identities.find(identity => identity.id === actorId) || identities[0] as IPerson; if (activeIdentity) { - console.log('calling changeIdentity with', activeIdentity); return await changeIdentity(this.$apollo.provider.defaultClient, activeIdentity); } } diff --git a/js/src/components/Account/Identities.vue b/js/src/components/Account/Identities.vue index 2360c5105..c42c3f512 100644 --- a/js/src/components/Account/Identities.vue +++ b/js/src/components/Account/Identities.vue @@ -1,7 +1,7 @@ diff --git a/js/src/components/Event/AddressAutoComplete.vue b/js/src/components/Event/AddressAutoComplete.vue index 76197a2d0..3129b6b10 100644 --- a/js/src/components/Event/AddressAutoComplete.vue +++ b/js/src/components/Event/AddressAutoComplete.vue @@ -1,10 +1,10 @@ @@ -32,37 +32,37 @@ diff --git a/js/src/components/Event/DateTimePicker.vue b/js/src/components/Event/DateTimePicker.vue index 3862876ad..9fc93cab3 100644 --- a/js/src/components/Event/DateTimePicker.vue +++ b/js/src/components/Event/DateTimePicker.vue @@ -1,6 +1,6 @@ diff --git a/js/src/components/Event/EventCard.vue b/js/src/components/Event/EventCard.vue index ff55060a7..f310002c9 100644 --- a/js/src/components/Event/EventCard.vue +++ b/js/src/components/Event/EventCard.vue @@ -29,7 +29,7 @@ - + @@ -37,7 +37,7 @@ - + diff --git a/js/src/components/Event/EventFullDate.vue b/js/src/components/Event/EventFullDate.vue index a8e13e7e3..08ea06668 100644 --- a/js/src/components/Event/EventFullDate.vue +++ b/js/src/components/Event/EventFullDate.vue @@ -1,13 +1,12 @@ diff --git a/js/src/i18n/en_US.json b/js/src/i18n/en_US.json new file mode 100644 index 000000000..6cadb7099 --- /dev/null +++ b/js/src/i18n/en_US.json @@ -0,0 +1,200 @@ +{ + "A validation email was sent to {email}": "A validation email was sent to {email}", + "About this event": "About this event", + "About this instance": "About this instance", + "About": "About", + "Add a new profile": "Add a new profile", + "Add a tag": "Add a tag", + "Add an address": "Add an address", + "Add to my calendar": "Add to my calendar", + "Add": "Add", + "Administration": "Administration", + "Allow all comments": "Allow all comments", + "Are you going to this event?": "Are you going to this event?", + "Are you sure you want to delete this event? This action cannot be reverted.": "Are you sure you want to delete this event? This action cannot be reverted.", + "Before you can login, you need to click on the link inside it to validate your account": "Before you can login, you need to click on the link inside it to validate your account", + "By {name}": "By {name}", + "Category": "Category", + "Change": "Change", + "Clear": "Clear", + "Click to select": "Click to select", + "Click to upload": "Click to upload", + "Close comments for all (except for admins)": "Close comments for all (except for admins)", + "Comments on the event page": "Comments on the event page", + "Comments": "Comments", + "Confirmed: Will happen": "Confirmed: Will happen", + "Country": "Country", + "Create a new event": "Create a new event", + "Create a new group": "Create a new group", + "Create a new identity": "Create a new identity", + "Create group": "Create group", + "Create my event": "Create my event", + "Create my group": "Create my group", + "Create my profile": "Create my profile", + "Create token": "Create token", + "Create your communities and your events": "Create your communities and your events", + "Create": "Create", + "Current": "Current", + "Delete event": "Delete event", + "Delete this identity": "Delete this identity", + "Delete your identity": "Delete your identity", + "Delete {eventTitle}": "Delete {eventTitle}", + "Delete {preferredUsername}": "Delete {preferredUsername}", + "Delete": "Delete", + "Description": "Description", + "Didn't receive the instructions ?": "Didn't receive the instructions ?", + "Disallow promoting on Mobilizon": "Disallow promoting on Mobilizon", + "Display name": "Display name", + "Display participation price": "Display participation price", + "Displayed name": "Displayed name", + "Edit": "Edit", + "Either the account is already validated, either the validation token is incorrect.": "Either the account is already validated, either the validation token is incorrect.", + "Email": "Email", + "Ends on…": "Ends on…", + "Enter some tags": "Enter some tags", + "Error while validating account": "Error while validating account", + "Event list": "Event list", + "Event {eventTitle} deleted": "Event {eventTitle} deleted", + "Event {eventTitle} reported": "Event {eventTitle} reported", + "Event": "Event", + "Events nearby you": "Events nearby you", + "Events you're going at": "Events you're going at", + "Events": "Events", + "Features": "Features", + "Find an address": "Find an address", + "Forgot your password ?": "Forgot your password ?", + "From the {startDate} at {startTime} to the {endDate} at {endTime}": "From the {startDate} at {startTime} to the {endDate} at {endTime}", + "General information": "General information", + "Group List": "Group List", + "Group full name": "Group full name", + "Group name": "Group name", + "Group {displayName} created": "Group {displayName} created", + "Group": "Group", + "Groups": "Groups", + "I create an identity": "I create an identity", + "I want to approve every participation request": "I want to approve every participation request", + "Identities": "Identities", + "Identity {displayName} created": "Identity {displayName} created", + "Identity {displayName} deleted": "Identity {displayName} deleted", + "Identity {displayName} updated": "Identity {displayName} updated", + "Identity": "Identity", + "If an account with this email exists, we just sent another confirmation email to {email}": "If an account with this email exists, we just sent another confirmation email to {email}", + "If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.": "If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.", + "Join": "Join", + "Last published event": "Last published event", + "Learn more on {0}": "Learn more on {0}", + "Learn more on": "Learn more on", + "Leave": "Leave", + "Legal": "Legal", + "License": "License", + "Limited places": "Limited places", + "Loading…": "Loading…", + "Locality": "Locality", + "Log in": "Log in", + "Log out": "Log out", + "Login": "Login", + "Members": "Members", + "Moderated comments (shown after approval)": "Moderated comments (shown after approval)", + "My account": "My account", + "My identities": "My identities", + "Name": "Name", + "No address defined": "No address defined", + "No events found": "No events found", + "No group found": "No group found", + "No groups found": "No groups found", + "No results for \"{queryText}\"": "No results for \"{queryText}\"", + "Number of places": "Number of places", + "One person is going": "No one is going | One person is going | {approved} persons are going", + "Only accessible through link and search (private)": "Only accessible through link and search (private)", + "Opened reports": "Opened reports", + "Organized": "Organized", + "Organizer": "Organizer", + "Other stuff…": "Other stuff…", + "Otherwise this identity will just be removed from the group administrators.": "Otherwise this identity will just be removed from the group administrators.", + "Page limited to my group (asks for auth)": "Page limited to my group (asks for auth)", + "Participation approval": "Participation approval", + "Password reset": "Password reset", + "Password": "Password", + "Pick an identity": "Pick an identity", + "Please be nice to each other": "Please be nice to each other", + "Please check you spam folder if you didn't receive the email.": "Please check you spam folder if you didn't receive the email.", + "Please contact this instance's Mobilizon admin if you think this is a mistake.": "Please contact this instance's Mobilizon admin if you think this is a mistake.", + "Please make sure the address is correct and that the page hasn't been moved.": "Please make sure the address is correct and that the page hasn't been moved.", + "Please read the full rules": "Please read the full rules", + "Please type at least 5 characters": "Please type at least 5 characters", + "Postal Code": "Postal Code", + "Private feeds": "Private feeds", + "Promotion": "Promotion", + "Public RSS/Atom Feed": "Public RSS/Atom Feed", + "Public comment moderation": "Public comment moderation", + "Public feeds": "Public feeds", + "Public iCal Feed": "Public iCal Feed", + "Published events": "Published events", + "RSS/Atom Feed": "RSS/Atom Feed", + "Region": "Region", + "Register an account on Mobilizon!": "Register an account on Mobilizon!", + "Register": "Register", + "Registration is currently closed.": "Registration is currently closed.", + "Report": "Signaler", + "Resend confirmation email": "Resend confirmation email", + "Reset my password": "Reset my password", + "Save": "Save", + "Search events, groups, etc.": "Search events, groups, etc.", + "Search results: \"{search}\"": "Search results: \"{search}\"", + "Search": "Search", + "Searching…": "Searching…", + "Send confirmation email again": "Send confirmation email again", + "Send email to reset my password": "Send email to reset my password", + "Share this event": "Share this event", + "Show map": "Show map", + "Show remaining number of places": "Show remaining number of places", + "Sign up": "Sign up", + "Starts on…": "Starts on…", + "Status": "Status", + "Street": "Street", + "Tentative: Will be confirmed later": "Tentative: Will be confirmed later", + "The event organizer didn't add any description.": "The event organizer didn't add any description.", + "The page you're looking for doesn't exist.": "The page you're looking for doesn't exist.", + "The {date} at {time}": "The {date} at {time}", + "The {date} from {startTime} to {endTime}": "The {date} from {startTime} to {endTime}", + "There are {participants} participants.": "There's only one participant | There are {participants} participants.", + "These events may interest you": "These events may interest you", + "This instance isn't opened to registrations, but you can register on other instances.": "This instance isn't opened to registrations, but you can register on other instances.", + "This will delete / anonymize all content (events, comments, messages, participations…) created from this identity.": "This will delete / anonymize all content (events, comments, messages, participations…) created from this identity.", + "Title": "Title", + "To confirm, type your event title \"{eventTitle}\"": "To confirm, type your event title \"{eventTitle}\"", + "To confirm, type your identity username \"{preferredUsername}\"": "To confirm, type your identity username \"{preferredUsername}\"", + "Unknown error.": "Unknown error.", + "Update event {name}": "Update event {name}", + "Update my event": "Update my event", + "User logout": "User logout", + "Username": "Username", + "Users": "Users", + "Visible everywhere on the web (public)": "Visible everywhere on the web (public)", + "We just sent an email to {email}": "We just sent an email to {email}", + "Website / URL": "Website / URL", + "Welcome back {username}": "Welcome back {username}", + "Welcome back!": "Welcome back!", + "Welcome on your administration panel": "Welcome on your administration panel", + "Who can view this event and participate": "Who can view this event and participate", + "World map": "World map", + "You and one other person are going to this event": "You're the only one going to this event | You and one other person are going to this event | You and {approved} persons are going to this event.", + "You announced that you're going to this event.": "You announced that you're going to this event.", + "You are already logged-in.": "You are already logged-in.", + "You are an organizer.": "You are an organizer.", + "You have one event in {days} days.": "You have no events in {days} days | You have one event in {days} days. | You have {count} events in {days} days", + "You have one event today.": "You have no events today | You have one event today. | You have {count} events today", + "You have one event tomorrow.": "You have no events tomorrow | You have one event tomorrow. | You have {count} events tomorrow", + "You need to login.": "You need to login.", + "You're not going to any event yet": "You're not going to any event yet", + "Your account has been validated": "Your account has been validated", + "Your account is being validated": "Your account is being validated", + "Your account is nearly ready, {username}": "Your account is nearly ready, {username}", + "Your local administrator resumed it's policy:": "Your local administrator resumed it's policy:", + "e.g. 10 Rue Jangot": "e.g. 10 Rue Jangot", + "iCal Feed": "iCal Feed", + "meditate a bit": "meditate a bit", + "public event": "public event", + "{actor}'s avatar": "{actor}'s avatar", + "© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks": "© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks" +} \ No newline at end of file diff --git a/js/src/i18n/fr_FR.json b/js/src/i18n/fr_FR.json new file mode 100644 index 000000000..92db9529a --- /dev/null +++ b/js/src/i18n/fr_FR.json @@ -0,0 +1,200 @@ +{ + "A validation email was sent to {email}": "Un email de validation a été envoyé à {email}", + "About this event": "À propos de cet événement", + "About this instance": "À propos de cette instance", + "About": "À propos", + "Add a new profile": "Ajouter un nouveau profil", + "Add a tag": "Ajouter un tag", + "Add an address": "Ajouter une adresse", + "Add to my calendar": "Ajouter à mon agenda", + "Add": "Ajouter", + "Administration": "Administration", + "Allow all comments": "Autoriser tous les commentaires", + "Are you going to this event?": "Allez-vous à cet événement ?", + "Are you sure you want to delete this event? This action cannot be reverted.": "Êtes-vous certain⋅e de vouloir supprimer cet événement ? Cette action ne peut être annulée.", + "Before you can login, you need to click on the link inside it to validate your account": "Avant que vous puissiez vous enregistrer, vous devez cliquer sur le lien à l'intérieur pour valider votre compte", + "By {name}": "Par {name}", + "Category": "Catégorie", + "Change": "Modifier", + "Clear": "Effacer", + "Click to select": "Cliquez pour sélectionner", + "Click to upload": "Cliquez pour uploader", + "Close comments for all (except for admins)": "Fermer les commentaires à tout le monde (excepté les administrateurs)", + "Comments on the event page": "Commentaires sur la page de l'événement", + "Comments": "Commentaires", + "Confirmed: Will happen": "Confirmé : aura lieu", + "Country": "Pays", + "Create a new event": "Créer un nouvel événement", + "Create a new group": "Créer un nouveau groupe", + "Create a new identity": "Créer une nouvelle identité", + "Create group": "Créer un groupe", + "Create my event": "Créer mon événement", + "Create my group": "Créer mon groupe", + "Create my profile": "Créer mon profil", + "Create token": "Créer un jeton", + "Create your communities and your events": "Créer vos communautés et vos événements", + "Create": "Créer", + "Current": "Actuel", + "Delete event": "Supprimer un événement", + "Delete this identity": "Supprimer cette identité", + "Delete your identity": "Supprimer votre identité", + "Delete {eventTitle}": "Supprimer {eventTitle}", + "Delete {preferredUsername}": "Supprimer {preferredUsername}", + "Delete": "Supprimer", + "Description": "Description", + "Didn't receive the instructions ?": "Vous n'avez pas reçu les instructions ?", + "Disallow promoting on Mobilizon": "Refuser la mise en avant sur Mobilizon", + "Display name": "Nom affiché", + "Display participation price": "Afficher un prix de participation", + "Displayed name": "Nom affiché", + "Edit": "Éditer", + "Either the account is already validated, either the validation token is incorrect.": "Soit le compte est déjà validé, soit le jeton de validation est incorrect.", + "Email": "Email", + "Ends on…": "Se termine le…", + "Enter some tags": "Écrire des tags", + "Error while validating account": "Erreur lors de la validation du compte", + "Event list": "Liste d'événements", + "Event {eventTitle} deleted": "Événement {eventTitle} supprimé", + "Event {eventTitle} reported": "Événement {eventTitle} signalé", + "Event": "Événement", + "Events nearby you": "Événements près de chez vous", + "Events you're going at": "Événements auxquels vous vous rendez", + "Events": "Événements", + "Features": "Fonctionnalités", + "Find an address": "Trouver une adresse", + "Forgot your password ?": "Mot de passe oublié ?", + "From the {startDate} at {startTime} to the {endDate} at {endTime}": "Du {startDate} à {startTime} au {endDate} à {endTime}", + "General information": "Information générales", + "Group List": "Liste de groupes", + "Group full name": "Nom complet du groupe", + "Group name": "Nom du groupe", + "Group {displayName} created": "Groupe {displayName} créé", + "Group": "Groupe", + "Groups": "Groupes", + "I create an identity": "Je crée une identité", + "I want to approve every participation request": "Je veux approuver chaque demande de participation", + "Identities": "Identités", + "Identity {displayName} created": "Identité {displayName} créée", + "Identity {displayName} deleted": "Identité {displayName} supprimée", + "Identity {displayName} updated": "Identité {displayName} mise à jour", + "Identity": "Identité", + "If an account with this email exists, we just sent another confirmation email to {email}": "Si un compte avec un tel email existe, nous venons juste d'envoyer un nouvel email de confirmation à {email}", + "If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.": "Si cette identité est la seule administratrice de certains groupes, vous devez les supprimer avant de pouvoir supprimer cette identité.", + "Join": "Rejoindre", + "Last published event": "Dernier événement publié", + "Learn more on {0}": "En apprendre plus sur {0}", + "Learn more on": "En apprendre plus sur", + "Leave": "Quitter", + "Legal": "Mentions légales", + "License": "Licence", + "Limited places": "Places limitées", + "Loading…": "Chargement en cours…", + "Locality": "Commune", + "Log in": "Se connecter", + "Log out": "Se déconnecter", + "Login": "Se connecter", + "Members": "Membres", + "Moderated comments (shown after approval)": "Commentaires modérés (affichés après validation)", + "My account": "Mon compte", + "My identities": "Mes identités", + "Name": "Nom", + "No address defined": "Aucune adresse définie", + "No events found": "Aucun événement trouvé", + "No group found": "Aucun groupe trouvé", + "No groups found": "Aucun groupe trouvé", + "No results for \"{queryText}\"": "Pas de résultats pour « {queryText} »", + "Number of places": "Nombre de places", + "One person is going": "Personne n'y va | Une personne y va | {approved} personnes y vont", + "Only accessible through link and search (private)": "Uniquement accessibles par lien et la recherche (privé)", + "Opened reports": "Signalements ouverts", + "Organized": "Organisés", + "Organizer": "Organisateur", + "Other stuff…": "Autres trucs…", + "Otherwise this identity will just be removed from the group administrators.": "Sinon cette identité sera juste supprimée des administrateurs du groupe.", + "Page limited to my group (asks for auth)": "Accès limité à mon groupe (demande authentification)", + "Participation approval": "Validation des participations", + "Password reset": "Réinitialisation du mot de passe", + "Password": "Mot de passe", + "Pick an identity": "Choisissez une identité", + "Please be nice to each other": "Soyez sympas entre vous", + "Please check you spam folder if you didn't receive the email.": "Merci de vérifier votre dossier des indésirables si vous n'avez pas reçu l'email.", + "Please contact this instance's Mobilizon admin if you think this is a mistake.": "Veuillez contacter l'administrateur de cette instance Mobilizon si vous pensez qu’il s’agit d’une erreur.", + "Please make sure the address is correct and that the page hasn't been moved.": "Assurez‐vous que l’adresse est correcte et que la page n’a pas été déplacée.", + "Please read the full rules": "Merci de lire les règles complètes", + "Please type at least 5 characters": "Merci d'entrer au moins 5 caractères", + "Postal Code": "Code postal", + "Private feeds": "Flux privés", + "Promotion": "Mise en avant", + "Public RSS/Atom Feed": "Flux RSS/Atom public", + "Public comment moderation": "Modération des commentaires publics", + "Public feeds": "Flux publics", + "Public iCal Feed": "Flux iCal public", + "Published events": "Événements publiés", + "RSS/Atom Feed": "Flux RSS/Atom", + "Region": "Région", + "Register an account on Mobilizon!": "S'inscrire sur Mobilizon !", + "Register": "S'inscrire", + "Registration is currently closed.": "Les inscriptions sont actuellement fermées.", + "Report": "Report", + "Resend confirmation email": "Envoyer à nouveau l'email de confirmation", + "Reset my password": "Réinitialiser mon mot de passe", + "Save": "Enregistrer", + "Search events, groups, etc.": "Rechercher des événements, des groupes, etc.", + "Search results: \"{search}\"": "Résultats de recherche: « {search} »", + "Search": "Rechercher", + "Searching…": "Recherche en cours…", + "Send confirmation email again": "Envoyer l'email de confirmation à nouveau", + "Send email to reset my password": "Envoyer un email pour réinitialiser mon mot de passe", + "Share this event": "Partager l'événement", + "Show map": "Afficher la carte", + "Show remaining number of places": "Afficher le nombre de places restantes", + "Sign up": "S'enregistrer", + "Starts on…": "Débute le…", + "Status": "Statut", + "Street": "Rue", + "Tentative: Will be confirmed later": "Provisoire : sera confirmé plus tard", + "The event organizer didn't add any description.": "L'organisateur de l'événement n'a pas ajouté de description.", + "The page you're looking for doesn't exist.": "La page que vous recherchez n'existe pas.", + "The {date} at {time}": "Le {date} à {time}", + "The {date} from {startTime} to {endTime}": "Le {date} de {startTime} à {endTime}", + "There are {participants} participants.": "Il n'y a qu'un⋅e participant⋅e. | Il y a {participants} participants.", + "These events may interest you": "Ces événements peuvent vous intéresser", + "This instance isn't opened to registrations, but you can register on other instances.": "Cette instance n'autorise pas les inscriptions, mais vous pouvez vous enregistrer sur d'autres instances.", + "This will delete / anonymize all content (events, comments, messages, participations…) created from this identity.": "Cela supprimera / anonymisera tout le contenu (événements, commentaires, messages, participations…) créés avec cette identité.", + "Title": "Titre", + "To confirm, type your event title \"{eventTitle}\"": "Pour confirmer, entrez le titre de l'événement « {eventTitle} »", + "To confirm, type your identity username \"{preferredUsername}\"": "Pour confirmer, entrez le nom de l’identité « {preferredUsername} »", + "Unknown error.": "Erreur inconnue.", + "Update event {name}": "Éditer l'événement {name}", + "Update my event": "Éditer mon événement", + "User logout": "Déconnexion", + "Username": "Pseudo", + "Users": "Utilisateurs", + "Visible everywhere on the web (public)": "Visible partout sur le web (public)", + "We just sent an email to {email}": "Nous venons d'envoyer un email à {email}", + "Website / URL": "Site web / URL", + "Welcome back {username}": "Bon retour {username}", + "Welcome back!": "Bon retour !", + "Welcome on your administration panel": "Bienvenue sur votre espace d'administration", + "Who can view this event and participate": "Qui peut voir cet événement et y participer", + "World map": "Carte mondiale", + "You and one other person are going to this event": "Vous êtes le ou la seule à vous rendre à cet événement | Vous et une autre personne vous rendez à cet événement | Vous et {approved} autres personnes vous rendez à cet événement.", + "You announced that you're going to this event.": "Vous avez annoncé vous rendre à cet événement.", + "You are already logged-in.": "Vous êtes déjà connecté.", + "You are an organizer.": "Vous êtes un organisateur.", + "You have one event in {days} days.": "Vous n'avez pas d'événements dans {days} jours | Vous avez un événement dans {days} jours. | Vous avez {count} événements dans {days} jours", + "You have one event today.": "Vous n'avez pas d'évenement aujourd'hui | Vous avez un événement aujourd'hui. | Vous avez {count} événements aujourd'hui", + "You have one event tomorrow.": "Vous n'avez pas d'événement demain | Vous avez un événement demain. | Vous avez {count} événements demain", + "You need to login.": "Vous devez vous connecter.", + "You're not going to any event yet": "Vous n'allez à aucun événement pour le moment", + "Your account has been validated": "Votre compte a été validé", + "Your account is being validated": "Votre compte est en cours de validation", + "Your account is nearly ready, {username}": "Votre compte est presque prêt, {username}", + "Your local administrator resumed it's policy:": "Votre administrateur local a résumé sa politique ainsi :", + "e.g. 10 Rue Jangot": "par exemple : 10 Rue Jangot", + "iCal Feed": "Flux iCal", + "meditate a bit": "méditez un peu", + "public event": "événement public", + "{actor}'s avatar": "Avatar de {actor}", + "© The Mobilizon Contributors {date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks": "© Les contributeurs de Mobilizon {date} - Fait avec Elixir, Phoenix, VueJS & et de l'amour et des semaines" +} \ No newline at end of file diff --git a/js/src/i18n/index.js b/js/src/i18n/index.js new file mode 100644 index 000000000..cc43b375c --- /dev/null +++ b/js/src/i18n/index.js @@ -0,0 +1,7 @@ +import en_US from './en_US'; +import fr_FR from './fr_FR'; + +export default { + en_US, + fr_FR +} \ No newline at end of file diff --git a/js/src/i18n/locale/en_US/LC_MESSAGES/app.po b/js/src/i18n/locale/en_US/LC_MESSAGES/app.po deleted file mode 100644 index 3a6b4c277..000000000 --- a/js/src/i18n/locale/en_US/LC_MESSAGES/app.po +++ /dev/null @@ -1,439 +0,0 @@ -# English translations for mobilizon package. -# Copyright (C) 2019 THE mobilizon'S COPYRIGHT HOLDER -# This file is distributed under the same license as the mobilizon package. -# Automatically generated, 2019. -# -msgid "" -msgstr "" -"Project-Id-Version: mobilizon 0.1.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-12 16:47+0200\n" -"PO-Revision-Date: 2019-04-08 20:58+0200\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: en_US\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: src/components/Footer.vue:10 -msgid "© The Mobilizon Contributors %{date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks" -msgstr "© The Mobilizon Contributors %{date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks" - -#: src/views/Account/Register.vue:57 -msgid "A validation email was sent to %{email}" -msgstr "A validation email was sent to %{email}" - -#: src/components/Footer.vue:5 -msgid "About" -msgstr "About" - -#: src/views/Event/Event.vue:137 -msgid "About this event" -msgstr "About this event" - -#: src/views/User/Register.vue:26 -msgid "About this instance" -msgstr "About this instance" - -#: src/views/Account/Identities.vue:7 -msgid "Add a new profile" -msgstr "Add a new profile" - -#: src/views/Event/Event.vue:44 src/views/Event/Event.vue:216 -msgid "Add to my calendar" -msgstr "Add to my calendar" - -#: src/views/Event/Event.vue:2 -msgid "Are you going to this event?" -msgstr "Are you going to this event?" - -#: src/views/Account/Register.vue:60 -msgid "Before you can login, you need to click on the link inside it to validate your account" -msgstr "Before you can login, you need to click on the link inside it to validate your account" - -#: src/views/Event/Event.vue:100 -msgid "By %{ name }" -msgstr "By %{ name }" - -#: src/views/Event/Create.vue:3 -msgid "Create a new event" -msgstr "Create a new event" - -#: src/views/Group/Create.vue:3 -msgid "Create a new group" -msgstr "Create a new group" - -#: src/views/Group/GroupList.vue:15 -msgid "Create group" -msgstr "Create group" - -#: src/views/Event/Create.vue:25 -msgid "Create my event" -msgstr "Create my event" - -#: src/views/Group/Create.vue:20 -msgid "Create my group" -msgstr "Create my group" - -#: src/views/Account/Register.vue:43 -msgid "Create my profile" -msgstr "Create my profile" - -#: src/views/Account/Profile.vue:61 -msgid "Create token" -msgstr "Create token" - -#: src/views/User/Register.vue:16 -msgid "Create your communities and your events" -msgstr "Create your communities and your events" - -#: src/views/Account/Identities.vue:36 -msgid "Current" -msgstr "Current" - -#: src/views/Account/Profile.vue:93 src/views/Event/Event.vue:63 -msgid "Delete" -msgstr "Delete" - -#: src/views/User/Register.vue:82 -msgid "Didn't receive the instructions ?" -msgstr "Didn't receive the instructions ?" - -#: src/views/Event/Event.vue:58 -msgid "Edit" -msgstr "Edit" - -#: src/views/User/Validate.vue:8 -msgid "Either the account is already validated, either the validation token is incorrect." -msgstr "Either the account is already validated, either the validation token is incorrect." - -#: src/views/Event/EventList.vue:3 -msgid "Event list" -msgstr "Event list" - -#: src/views/Search.vue:10 -msgid "Events" -msgstr "Events" - -#: src/views/Home.vue:68 -msgid "Events nearby you" -msgstr "Events nearby you" - -#: src/views/Home.vue:24 -msgid "Events you're going at" -msgstr "Events you're going at" - -#: src/views/User/Register.vue:14 -msgid "Features" -msgstr "Features" - -#: src/views/User/Login.vue:41 -msgid "Forgot your password ?" -msgstr "Forgot your password ?" - -#: src/components/Event/EventFullDate.vue:9 -msgid "From the %{ startDate } at %{ startTime } to the %{ endDate } at %{ endTime }" -msgstr "From the %{ startDate } at %{ startTime } to the %{ endDate } at %{ endTime }" - -#: src/views/Group/GroupList.vue:3 -msgid "Group List" -msgstr "Group List" - -#: src/views/Search.vue:28 -msgid "Groups" -msgstr "Groups" - -#: src/views/Account/Profile.vue:56 -msgid "iCal Feed" -msgstr "iCal Feed" - -#: src/views/Account/Identities.vue:4 -msgid "Identities" -msgstr "Identities" - -#: src/views/User/ResendConfirmation.vue:16 -msgid "If an account with this email exists, we just sent another confirmation email to %{email}" -msgstr "If an account with this email exists, we just sent another confirmation email to %{email}" - -#: src/views/Event/Event.vue:20 -msgid "Join" -msgstr "Join" - -#: src/views/User/Register.vue:20 -msgid "" -"Learn more on\n" -" joinmobilizon.org" -msgstr "" -"Learn more on\n" -" joinmobilizon.org" - -#: src/views/Event/Event.vue:24 -msgid "Leave" -msgstr "Leave" - -#: src/components/Footer.vue:7 -msgid "Legal" -msgstr "Legal" - -#: src/components/Footer.vue:6 -msgid "License" -msgstr "License" - -#: src/components/NavBar.vue:32 -msgid "Log in" -msgstr "Log in" - -#: src/components/NavBar.vue:50 -msgid "Log out" -msgstr "Log out" - -#: src/views/User/Login.vue:33 src/views/User/Register.vue:91 -msgid "Login" -msgstr "Login" - -#: src/views/User/Register.vue:32 -msgid "meditate a bit" -msgstr "meditate a bit" - -#: src/views/Group/Group.vue:41 -msgid "Members" -msgstr "Members" - -#: src/components/NavBar.vue:49 -msgid "My account" -msgstr "My account" - -#: src/views/Event/Event.vue:69 -msgid "No address defined" -msgstr "No address defined" - -#: src/views/Event/EventList.vue:15 src/views/Home.vue:78 -#: src/views/Search.vue:22 -msgid "No events found" -msgstr "No events found" - -#: src/views/Group/Group.vue:52 -msgid "No group found" -msgstr "No group found" - -#: src/views/Search.vue:38 -msgid "No groups found" -msgstr "No groups found" - -#: src/views/Account/Profile.vue:66 src/views/Group/Group.vue:27 -msgid "Organized" -msgstr "Organized" - -#: src/components/Event/EventCard.vue:1 -msgid "Organizer" -msgstr "Organizer" - -#: src/views/User/Register.vue:17 -msgid "Other stuff…" -msgstr "Other stuff…" - -#: src/views/User/PasswordReset.vue:4 src/views/User/SendPasswordReset.vue:4 -msgid "Password reset" -msgstr "Password reset" - -#: src/views/User/Register.vue:31 -msgid "Please be nice to each other" -msgstr "Please be nice to each other" - -#: src/views/User/ResendConfirmation.vue:21 -#: src/views/User/SendPasswordReset.vue:22 -msgid "Please check you spam folder if you didn't receive the email." -msgstr "Please check you spam folder if you didn't receive the email." - -#: src/views/PageNotFound.vue:12 -msgid "Please contact this instance's Mobilizon admin if you think this is a mistake." -msgstr "" - -#: src/views/PageNotFound.vue:9 -msgid "Please make sure the address is correct and that the page hasn't been moved." -msgstr "" - -#: src/views/User/Register.vue:35 -msgid "Please read the full rules" -msgstr "Please read the full rules" - -#: src/views/Account/Profile.vue:45 -msgid "Private feeds" -msgstr "Private feeds" - -#: src/views/Event/Event.vue:34 -msgid "public event" -msgstr "public event" - -#: src/views/Account/Profile.vue:27 -msgid "Public feeds" -msgstr "Public feeds" - -#: src/views/Account/Profile.vue:38 -msgid "Public iCal Feed" -msgstr "Public iCal Feed" - -#: src/views/Account/Profile.vue:33 -msgid "Public RSS/Atom Feed" -msgstr "Public RSS/Atom Feed" - -#: src/views/Account/Identities.vue:16 src/views/Home.vue:8 -#: src/views/User/Login.vue:49 src/views/User/Register.vue:74 -msgid "Register" -msgstr "Register" - -#: src/views/Account/Register.vue:5 src/views/User/Register.vue:5 -msgid "Register an account on Mobilizon!" -msgstr "Register an account on Mobilizon!" - -#: src/views/Error.vue:2 -msgid "Registration is currently closed." -msgstr "Registration is currently closed." - -#: src/views/User/ResendConfirmation.vue:4 -msgid "Resend confirmation email" -msgstr "Resend confirmation email" - -#: src/views/User/PasswordReset.vue:29 -msgid "Reset my password" -msgstr "Reset my password" - -#: src/views/Account/Profile.vue:51 -msgid "RSS/Atom Feed" -msgstr "RSS/Atom Feed" - -#: src/views/PageNotFound.vue:19 src/components/SearchField.vue:19 -msgid "Search" -msgstr "Search" - -#: src/views/Search.vue:3 -msgid "Search results: « %{ search } »" -msgstr "Search results: « %{ search } »" - -#: src/views/User/ResendConfirmation.vue:11 -msgid "Send confirmation email again" -msgstr "Send confirmation email again" - -#: src/views/User/SendPasswordReset.vue:12 -msgid "Send email to reset my password" -msgstr "Send email to reset my password" - -#: src/views/Event/Event.vue:205 -msgid "Share this event" -msgstr "Share this event" - -#: src/views/Event/Event.vue:78 -msgid "Show map" -msgstr "Show map" - -#: src/components/NavBar.vue:28 -msgid "Sign up" -msgstr "Sign up" - -#: src/components/Event/EventFullDate.vue:1 -msgid "The %{ date } at %{ time }" -msgstr "The %{ date } at %{ time }" - -#: src/components/Event/EventFullDate.vue:5 -msgid "The %{ date } from %{ startTime } to %{ endTime }" -msgstr "The %{ date } from %{ startTime } to %{ endTime }" - -#: src/views/Event/Event.vue:140 -msgid "The event organizer didn't add any description." -msgstr "The event organizer didn't add any description." - -#: src/views/PageNotFound.vue:6 -msgid "The page you're looking for doesn't exist." -msgstr "" - -#: src/views/Event/Event.vue:223 -msgid "These events may interest you" -msgstr "These events may interest you" - -#: src/views/Home.vue:11 -msgid "This instance isn't opened to registrations, but you can register on other instances." -msgstr "This instance isn't opened to registrations, but you can register on other instances." - -#: src/views/Error.vue:6 -msgid "Unknown error." -msgstr "Unknown error." - -#: src/views/Account/Profile.vue:84 -msgid "User logout" -msgstr "User logout" - -#: src/views/User/SendPasswordReset.vue:17 -msgid "We just sent an email to %{email}" -msgstr "We just sent an email to %{email}" - -#: src/views/Home.vue:18 -msgid "Welcome back %{username}" -msgstr "Welcome back %{username}" - -#: src/views/User/Login.vue:4 -msgid "Welcome back!" -msgstr "Welcome back!" - -#: src/views/Event/Event.vue:2 -msgid "You announced that you're going to this event." -msgstr "You announced that you're going to this event." - -#: src/views/User/Login.vue:58 -msgid "You are already logged-in." -msgstr "You are already logged-in." - -#: src/views/Event/Event.vue:2 -msgid "You are an organizer." -msgstr "You are an organizer." - -#: src/views/Home.vue:45 -msgid "You have one event in %{ days } days." -msgid_plural "You have %{ count } events in %{ days } days" -msgstr[0] "You have one event in %{ days } days." -msgstr[1] "You have %{ count } events in %{ days } days" - -#: src/views/Home.vue:29 -msgid "You have one event today." -msgid_plural "You have %{ count } events today" -msgstr[0] "You have one event today." -msgstr[1] "You have %{ count } events today" - -#: src/views/Home.vue:37 -msgid "You have one event tomorrow." -msgid_plural "You have %{ count } events tomorrow" -msgstr[0] "You have one event tomorrow." -msgstr[1] "You have %{ count } events tomorrow" - -#: src/views/User/Login.vue:9 -msgid "You need to login." -msgstr "You need to login." - -#: src/views/Home.vue:64 -msgid "You're not going to any event yet" -msgstr "You're not going to any event yet" - -#: src/views/User/Validate.vue:12 -msgid "Your account has been validated" -msgstr "Your account has been validated" - -#: src/views/User/Validate.vue:3 -msgid "Your account is being validated" -msgstr "Your account is being validated" - -#: src/views/Account/Register.vue:52 -msgid "Your account is nearly ready, %{username}" -msgstr "Your account is nearly ready, %{username}" - -#: src/views/User/Register.vue:28 -msgid "Your local administrator resumed it's policy:" -msgstr "Your local administrator resumed it's policy:" - -#: src/components/Footer.vue:4 -msgid "World map" -msgstr "World map" - -#: src/views/PageNotFound.vue:42 -msgid "Search events, groups, etc." -msgstr "" diff --git a/js/src/i18n/locale/fr_FR/LC_MESSAGES/app.po b/js/src/i18n/locale/fr_FR/LC_MESSAGES/app.po deleted file mode 100644 index ef0b304f4..000000000 --- a/js/src/i18n/locale/fr_FR/LC_MESSAGES/app.po +++ /dev/null @@ -1,440 +0,0 @@ -# French translations for mobilizon package. -# Copyright (C) 2018 THE mobilizon'S COPYRIGHT HOLDER -# This file is distributed under the same license as the mobilizon package. -# Automatically generated, 2018. -# -msgid "" -msgstr "" -"Project-Id-Version: mobilizon 0.1.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-12 16:47+0200\n" -"PO-Revision-Date: 2019-04-12 16:45+0200\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: fr_FR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.2.1\n" - -#: src/components/Footer.vue:10 -msgid "© The Mobilizon Contributors %{date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks" -msgstr "© Les contributeurs de Mobilizon %{date} - Fait avec Elixir, Phoenix, VueJS & et de l'amour et des semaines" - -#: src/views/Account/Register.vue:57 -msgid "A validation email was sent to %{email}" -msgstr "Un email de validation a été envoyé à %{email}" - -#: src/components/Footer.vue:5 -msgid "About" -msgstr "À propos" - -#: src/views/Event/Event.vue:137 -msgid "About this event" -msgstr "À propos de cet événement" - -#: src/views/User/Register.vue:26 -msgid "About this instance" -msgstr "À propos de cette instance" - -#: src/views/Account/Identities.vue:7 -msgid "Add a new profile" -msgstr "Ajouter un nouveau profil" - -#: src/views/Event/Event.vue:44 src/views/Event/Event.vue:216 -msgid "Add to my calendar" -msgstr "Ajouter à mon agenda" - -#: src/views/Event/Event.vue:2 -msgid "Are you going to this event?" -msgstr "Allez-vous à cet événement ?" - -#: src/views/Account/Register.vue:60 -msgid "Before you can login, you need to click on the link inside it to validate your account" -msgstr "Avant que vous puissiez vous enregistrer, vous devez cliquer sur le lien à l'intérieur pour valider votre compte" - -#: src/views/Event/Event.vue:100 -msgid "By %{ name }" -msgstr "Par %{name}" - -#: src/views/Event/Create.vue:3 -msgid "Create a new event" -msgstr "Créer un nouvel événement" - -#: src/views/Group/Create.vue:3 -msgid "Create a new group" -msgstr "Créer un nouveau groupe" - -#: src/views/Group/GroupList.vue:15 -msgid "Create group" -msgstr "Créer un groupe" - -#: src/views/Event/Create.vue:25 -msgid "Create my event" -msgstr "Créer mon événement" - -#: src/views/Group/Create.vue:20 -msgid "Create my group" -msgstr "Créer mon groupe" - -#: src/views/Account/Register.vue:43 -msgid "Create my profile" -msgstr "Créer mon profil" - -#: src/views/Account/Profile.vue:61 -msgid "Create token" -msgstr "Créer un jeton" - -#: src/views/User/Register.vue:16 -msgid "Create your communities and your events" -msgstr "Créer vos communautés et vos événements" - -#: src/views/Account/Identities.vue:36 -msgid "Current" -msgstr "Actuel" - -#: src/views/Account/Profile.vue:93 src/views/Event/Event.vue:63 -msgid "Delete" -msgstr "Supprimer" - -#: src/views/User/Register.vue:82 -msgid "Didn't receive the instructions ?" -msgstr "Vous n'avez pas reçu les instructions ?" - -#: src/views/Event/Event.vue:58 -msgid "Edit" -msgstr "Éditer" - -#: src/views/User/Validate.vue:8 -msgid "Either the account is already validated, either the validation token is incorrect." -msgstr "Soit le compte est déjà validé, soit le jeton de validation est incorrect." - -#: src/views/Event/EventList.vue:3 -msgid "Event list" -msgstr "Liste d'événements" - -#: src/views/Search.vue:10 -msgid "Events" -msgstr "Événements" - -#: src/views/Home.vue:68 -msgid "Events nearby you" -msgstr "Événements près de chez vous" - -#: src/views/Home.vue:24 -msgid "Events you're going at" -msgstr "Événements auxquels vous vous rendez" - -#: src/views/User/Register.vue:14 -msgid "Features" -msgstr "Fonctionnalités" - -#: src/views/User/Login.vue:41 -msgid "Forgot your password ?" -msgstr "Mot de passe oublié ?" - -#: src/components/Event/EventFullDate.vue:9 -msgid "From the %{ startDate } at %{ startTime } to the %{ endDate } at %{ endTime }" -msgstr "Du %{ startDate } à %{ startTime } au %{ endDate } à %{ endTime }" - -#: src/views/Group/GroupList.vue:3 -msgid "Group List" -msgstr "Liste de groupes" - -#: src/views/Search.vue:28 -msgid "Groups" -msgstr "Groupes" - -#: src/views/Account/Profile.vue:56 -msgid "iCal Feed" -msgstr "Flux iCal" - -#: src/views/Account/Identities.vue:4 -msgid "Identities" -msgstr "Identités" - -#: src/views/User/ResendConfirmation.vue:16 -msgid "If an account with this email exists, we just sent another confirmation email to %{email}" -msgstr "Si un compte avec un tel email existe, nous venons juste d'envoyer un nouvel email de confirmation à %{email}" - -#: src/views/Event/Event.vue:20 -msgid "Join" -msgstr "Rejoindre" - -#: src/views/User/Register.vue:20 -msgid "" -"Learn more on\n" -" joinmobilizon.org" -msgstr "" -"En apprendre plus sur\n" -" joinmobilizon.org" - -#: src/views/Event/Event.vue:24 -msgid "Leave" -msgstr "Quitter" - -#: src/components/Footer.vue:7 -msgid "Legal" -msgstr "Mentions légales" - -#: src/components/Footer.vue:6 -msgid "License" -msgstr "License" - -#: src/components/NavBar.vue:32 -msgid "Log in" -msgstr "Se connecter" - -#: src/components/NavBar.vue:50 -msgid "Log out" -msgstr "Se déconnecter" - -#: src/views/User/Login.vue:33 src/views/User/Register.vue:91 -msgid "Login" -msgstr "Se connecter" - -#: src/views/User/Register.vue:32 -msgid "meditate a bit" -msgstr "méditez un peu" - -#: src/views/Group/Group.vue:41 -msgid "Members" -msgstr "Membres" - -#: src/components/NavBar.vue:49 -msgid "My account" -msgstr "Mon compte" - -#: src/views/Event/Event.vue:69 -msgid "No address defined" -msgstr "Aucune adresse définie" - -#: src/views/Event/EventList.vue:15 src/views/Home.vue:78 -#: src/views/Search.vue:22 -msgid "No events found" -msgstr "Aucun événement trouvé" - -#: src/views/Group/Group.vue:52 -msgid "No group found" -msgstr "Aucun groupe trouvé" - -#: src/views/Search.vue:38 -msgid "No groups found" -msgstr "Aucun groupe trouvé" - -#: src/views/Account/Profile.vue:66 src/views/Group/Group.vue:27 -msgid "Organized" -msgstr "Organisés" - -#: src/components/Event/EventCard.vue:1 -msgid "Organizer" -msgstr "Organisateur" - -#: src/views/User/Register.vue:17 -msgid "Other stuff…" -msgstr "Autres trucs…" - -#: src/views/User/PasswordReset.vue:4 src/views/User/SendPasswordReset.vue:4 -msgid "Password reset" -msgstr "Réinitialisation du mot de passe" - -#: src/views/User/Register.vue:31 -msgid "Please be nice to each other" -msgstr "Soyez sympas entre vous" - -#: src/views/User/ResendConfirmation.vue:21 -#: src/views/User/SendPasswordReset.vue:22 -msgid "Please check you spam folder if you didn't receive the email." -msgstr "Merci de vérifier votre dossier des indésirables si vous n'avez pas reçu l'email." - -#: src/views/PageNotFound.vue:12 -msgid "Please contact this instance's Mobilizon admin if you think this is a mistake." -msgstr "Veuillez contacter l'administrateur de cette instance Mobilizon si vous pensez qu’il s’agit d’une erreur." - -#: src/views/PageNotFound.vue:9 -msgid "Please make sure the address is correct and that the page hasn't been moved." -msgstr "Assurez‐vous que l’adresse est correcte et que la page n’a pas été déplacée." - -#: src/views/User/Register.vue:35 -msgid "Please read the full rules" -msgstr "Merci de lire les règles complètes" - -#: src/views/Account/Profile.vue:45 -msgid "Private feeds" -msgstr "Flux privés" - -#: src/views/Event/Event.vue:34 -msgid "public event" -msgstr "événement public" - -#: src/views/Account/Profile.vue:27 -msgid "Public feeds" -msgstr "Flux publics" - -#: src/views/Account/Profile.vue:38 -msgid "Public iCal Feed" -msgstr "Flux iCal public" - -#: src/views/Account/Profile.vue:33 -msgid "Public RSS/Atom Feed" -msgstr "Flux RSS/Atom public" - -#: src/views/Account/Identities.vue:16 src/views/Home.vue:8 -#: src/views/User/Login.vue:49 src/views/User/Register.vue:74 -msgid "Register" -msgstr "S'inscrire" - -#: src/views/Account/Register.vue:5 src/views/User/Register.vue:5 -msgid "Register an account on Mobilizon!" -msgstr "S'inscrire sur Mobilizon !" - -#: src/views/Error.vue:2 -msgid "Registration is currently closed." -msgstr "Les inscriptions sont actuellement fermées." - -#: src/views/User/ResendConfirmation.vue:4 -msgid "Resend confirmation email" -msgstr "Envoyer à nouveau l'email de confirmation" - -#: src/views/User/PasswordReset.vue:29 -msgid "Reset my password" -msgstr "Réinitialiser mon mot de passe" - -#: src/views/Account/Profile.vue:51 -msgid "RSS/Atom Feed" -msgstr "Flux RSS/Atom" - -#: src/views/PageNotFound.vue:19 src/components/SearchField.vue:19 -msgid "Search" -msgstr "Rechercher" - -#: src/views/Search.vue:3 -msgid "Search results: « %{ search } »" -msgstr "Résultats de recherche : « %{ search } »" - -#: src/views/User/ResendConfirmation.vue:11 -msgid "Send confirmation email again" -msgstr "Envoyer l'email de confirmation à nouveau" - -#: src/views/User/SendPasswordReset.vue:12 -msgid "Send email to reset my password" -msgstr "Envoyer un email pour réinitialiser mon mot de passe" - -#: src/views/Event/Event.vue:205 -msgid "Share this event" -msgstr "Partager l'événement" - -#: src/views/Event/Event.vue:78 -msgid "Show map" -msgstr "Afficher la carte" - -#: src/components/NavBar.vue:28 -msgid "Sign up" -msgstr "S'enregistrer" - -#: src/components/Event/EventFullDate.vue:1 -msgid "The %{ date } at %{ time }" -msgstr "Le %{ date } à %{ time }" - -#: src/components/Event/EventFullDate.vue:5 -msgid "The %{ date } from %{ startTime } to %{ endTime }" -msgstr "Le %{ date } de %{ startTime } à %{ endTime }" - -#: src/views/Event/Event.vue:140 -msgid "The event organizer didn't add any description." -msgstr "L'organisateur de l'événement n'a pas ajouté de description." - -#: src/views/PageNotFound.vue:6 -msgid "The page you're looking for doesn't exist." -msgstr "La page que vous recherchez n'existe pas." - -#: src/views/Event/Event.vue:223 -msgid "These events may interest you" -msgstr "Ces événements peuvent vous intéresser" - -#: src/views/Home.vue:11 -msgid "This instance isn't opened to registrations, but you can register on other instances." -msgstr "Cette instance n'autorise pas les inscriptions, mais vous pouvez vous enregistrer sur d'autres instances." - -#: src/views/Error.vue:6 -msgid "Unknown error." -msgstr "Erreur inconnue." - -#: src/views/Account/Profile.vue:84 -msgid "User logout" -msgstr "Déconnexion" - -#: src/views/User/SendPasswordReset.vue:17 -msgid "We just sent an email to %{email}" -msgstr "Nous venons d'envoyer un email à %{email}" - -#: src/views/Home.vue:18 -msgid "Welcome back %{username}" -msgstr "Bon retour %{username}" - -#: src/views/User/Login.vue:4 -msgid "Welcome back!" -msgstr "Bon retour !" - -#: src/views/Event/Event.vue:2 -msgid "You announced that you're going to this event." -msgstr "Vous avez annoncé vous rendre à cet événement." - -#: src/views/User/Login.vue:58 -msgid "You are already logged-in." -msgstr "Vous êtes déjà connecté." - -#: src/views/Event/Event.vue:2 -msgid "You are an organizer." -msgstr "Vous êtes un organisateur." - -#: src/views/Home.vue:45 -msgid "You have one event in %{ days } days." -msgid_plural "You have %{ count } events in %{ days } days" -msgstr[0] "Vous avez un événement dans %{ days } jours." -msgstr[1] "Vous avez %{ count } événements dans %{ days } jours" - -#: src/views/Home.vue:29 -msgid "You have one event today." -msgid_plural "You have %{ count } events today" -msgstr[0] "Vous avez un événement aujourd'hui." -msgstr[1] "Vous avez %{ count } événements aujourd'hui" - -#: src/views/Home.vue:37 -msgid "You have one event tomorrow." -msgid_plural "You have %{ count } events tomorrow" -msgstr[0] "Vous avez un événement demain." -msgstr[1] "Vous avez %{ count } événements demain" - -#: src/views/User/Login.vue:9 -msgid "You need to login." -msgstr "Vous devez vous connecter." - -#: src/views/Home.vue:64 -msgid "You're not going to any event yet" -msgstr "Vous n'allez à aucun événement pour le moment" - -#: src/views/User/Validate.vue:12 -msgid "Your account has been validated" -msgstr "Votre compte a été validé" - -#: src/views/User/Validate.vue:3 -msgid "Your account is being validated" -msgstr "Votre compte est en cours de validation" - -#: src/views/Account/Register.vue:52 -msgid "Your account is nearly ready, %{username}" -msgstr "Votre compte est presque prêt, %{ username }" - -#: src/views/User/Register.vue:28 -msgid "Your local administrator resumed it's policy:" -msgstr "Votre administrateur local a résumé sa politique ainsi :" - -#: src/components/Footer.vue:4 -msgid "World map" -msgstr "Carte mondiale" - -#: src/views/PageNotFound.vue:42 -msgid "Search events, groups, etc." -msgstr "Rechercher des événements, des groupes, etc." diff --git a/js/src/i18n/translations.json b/js/src/i18n/translations.json deleted file mode 100644 index 8e863a82c..000000000 --- a/js/src/i18n/translations.json +++ /dev/null @@ -1 +0,0 @@ -{"en_US":{"© The Mobilizon Contributors %{date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks":"© The Mobilizon Contributors %{date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks","A validation email was sent to %{email}":"A validation email was sent to %{email}","About":"About","About this event":"About this event","About this instance":"About this instance","Add a new profile":"Add a new profile","Add to my calendar":"Add to my calendar","Are you going to this event?":"Are you going to this event?","Before you can login, you need to click on the link inside it to validate your account":"Before you can login, you need to click on the link inside it to validate your account","By %{ name }":"By %{ name }","Create a new event":"Create a new event","Create a new group":"Create a new group","Create group":"Create group","Create my event":"Create my event","Create my group":"Create my group","Create my profile":"Create my profile","Create token":"Create token","Create your communities and your events":"Create your communities and your events","Current":"Current","Delete":"Delete","Didn't receive the instructions ?":"Didn't receive the instructions ?","Edit":"Edit","Either the account is already validated, either the validation token is incorrect.":"Either the account is already validated, either the validation token is incorrect.","Event list":"Event list","Events":"Events","Events nearby you":"Events nearby you","Events you're going at":"Events you're going at","Features":"Features","Forgot your password ?":"Forgot your password ?","From the %{ startDate } at %{ startTime } to the %{ endDate } at %{ endTime }":"From the %{ startDate } at %{ startTime } to the %{ endDate } at %{ endTime }","Group List":"Group List","Groups":"Groups","iCal Feed":"iCal Feed","Identities":"Identities","If an account with this email exists, we just sent another confirmation email to %{email}":"If an account with this email exists, we just sent another confirmation email to %{email}","Join":"Join","Learn more on\n joinmobilizon.org":"Learn more on\n joinmobilizon.org","Leave":"Leave","Legal":"Legal","License":"License","Log in":"Log in","Log out":"Log out","Login":"Login","meditate a bit":"meditate a bit","Members":"Members","My account":"My account","No address defined":"No address defined","No events found":"No events found","No group found":"No group found","No groups found":"No groups found","Organized":"Organized","Organizer":"Organizer","Other stuff…":"Other stuff…","Password reset":"Password reset","Please be nice to each other":"Please be nice to each other","Please check you spam folder if you didn't receive the email.":"Please check you spam folder if you didn't receive the email.","Please read the full rules":"Please read the full rules","Private feeds":"Private feeds","public event":"public event","Public feeds":"Public feeds","Public iCal Feed":"Public iCal Feed","Public RSS/Atom Feed":"Public RSS/Atom Feed","Register":"Register","Register an account on Mobilizon!":"Register an account on Mobilizon!","Registration is currently closed.":"Registration is currently closed.","Resend confirmation email":"Resend confirmation email","Reset my password":"Reset my password","RSS/Atom Feed":"RSS/Atom Feed","Search":"Search","Search results: « %{ search } »":"Search results: « %{ search } »","Send confirmation email again":"Send confirmation email again","Send email to reset my password":"Send email to reset my password","Share this event":"Share this event","Show map":"Show map","Sign up":"Sign up","The %{ date } at %{ time }":"The %{ date } at %{ time }","The %{ date } from %{ startTime } to %{ endTime }":"The %{ date } from %{ startTime } to %{ endTime }","The event organizer didn't add any description.":"The event organizer didn't add any description.","These events may interest you":"These events may interest you","This instance isn't opened to registrations, but you can register on other instances.":"This instance isn't opened to registrations, but you can register on other instances.","Unknown error.":"Unknown error.","User logout":"User logout","We just sent an email to %{email}":"We just sent an email to %{email}","Welcome back %{username}":"Welcome back %{username}","Welcome back!":"Welcome back!","You announced that you're going to this event.":"You announced that you're going to this event.","You are already logged-in.":"You are already logged-in.","You are an organizer.":"You are an organizer.","You have one event in %{ days } days.":["You have one event in %{ days } days.","You have %{ count } events in %{ days } days"],"You have one event today.":["You have one event today.","You have %{ count } events today"],"You have one event tomorrow.":["You have one event tomorrow.","You have %{ count } events tomorrow"],"You need to login.":"You need to login.","You're not going to any event yet":"You're not going to any event yet","Your account has been validated":"Your account has been validated","Your account is being validated":"Your account is being validated","Your account is nearly ready, %{username}":"Your account is nearly ready, %{username}","Your local administrator resumed it's policy:":"Your local administrator resumed it's policy:","World map":"World map"},"fr_FR":{"© The Mobilizon Contributors %{date} - Made with Elixir, Phoenix, VueJS & with some love and some weeks":"© Les contributeurs de Mobilizon %{date} - Fait avec Elixir, Phoenix, VueJS & et de l'amour et des semaines","A validation email was sent to %{email}":"Un email de validation a été envoyé à %{email}","About":"À propos","About this event":"À propos de cet événement","About this instance":"À propos de cette instance","Add a new profile":"Ajouter un nouveau profil","Add to my calendar":"Ajouter à mon agenda","Are you going to this event?":"Allez-vous à cet événement ?","Before you can login, you need to click on the link inside it to validate your account":"Avant que vous puissiez vous enregistrer, vous devez cliquer sur le lien à l'intérieur pour valider votre compte","By %{ name }":"Par %{name}","Create a new event":"Créer un nouvel événement","Create a new group":"Créer un nouveau groupe","Create group":"Créer un groupe","Create my event":"Créer mon événement","Create my group":"Créer mon groupe","Create my profile":"Créer mon profil","Create token":"Créer un jeton","Create your communities and your events":"Créer vos communautés et vos événements","Current":"Actuel","Delete":"Supprimer","Didn't receive the instructions ?":"Vous n'avez pas reçu les instructions ?","Edit":"Éditer","Either the account is already validated, either the validation token is incorrect.":"Soit le compte est déjà validé, soit le jeton de validation est incorrect.","Event list":"Liste d'événements","Events":"Événements","Events nearby you":"Événements près de chez vous","Events you're going at":"Événements auxquels vous vous rendez","Features":"Fonctionnalités","Forgot your password ?":"Mot de passe oublié ?","From the %{ startDate } at %{ startTime } to the %{ endDate } at %{ endTime }":"Du %{ startDate } à %{ startTime } au %{ endDate } à %{ endTime }","Group List":"Liste de groupes","Groups":"Groupes","iCal Feed":"Flux iCal","Identities":"Identités","If an account with this email exists, we just sent another confirmation email to %{email}":"Si un compte avec un tel email existe, nous venons juste d'envoyer un nouvel email de confirmation à %{email}","Join":"Rejoindre","Learn more on\n joinmobilizon.org":"En apprendre plus sur\n joinmobilizon.org","Leave":"Quitter","Legal":"Mentions légales","License":"License","Log in":"Se connecter","Log out":"Se déconnecter","Login":"Se connecter","meditate a bit":"méditez un peu","Members":"Membres","My account":"Mon compte","No address defined":"Aucune adresse définie","No events found":"Aucun événement trouvé","No group found":"Aucun groupe trouvé","No groups found":"Aucun groupe trouvé","Organized":"Organisés","Organizer":"Organisateur","Other stuff…":"Autres trucs…","Password reset":"Réinitialisation du mot de passe","Please be nice to each other":"Soyez sympas entre vous","Please check you spam folder if you didn't receive the email.":"Merci de vérifier votre dossier des indésirables si vous n'avez pas reçu l'email.","Please contact this instance's Mobilizon admin if you think this is a mistake.":"Veuillez contacter l'administrateur de cette instance Mobilizon si vous pensez qu’il s’agit d’une erreur.","Please make sure the address is correct and that the page hasn't been moved.":"Assurez‐vous que l’adresse est correcte et que la page n’a pas été déplacée.","Please read the full rules":"Merci de lire les règles complètes","Private feeds":"Flux privés","public event":"événement public","Public feeds":"Flux publics","Public iCal Feed":"Flux iCal public","Public RSS/Atom Feed":"Flux RSS/Atom public","Register":"S'inscrire","Register an account on Mobilizon!":"S'inscrire sur Mobilizon !","Registration is currently closed.":"Les inscriptions sont actuellement fermées.","Resend confirmation email":"Envoyer à nouveau l'email de confirmation","Reset my password":"Réinitialiser mon mot de passe","RSS/Atom Feed":"Flux RSS/Atom","Search":"Rechercher","Search results: « %{ search } »":"Résultats de recherche : « %{ search } »","Send confirmation email again":"Envoyer l'email de confirmation à nouveau","Send email to reset my password":"Envoyer un email pour réinitialiser mon mot de passe","Share this event":"Partager l'événement","Show map":"Afficher la carte","Sign up":"S'enregistrer","The %{ date } at %{ time }":"Le %{ date } à %{ time }","The %{ date } from %{ startTime } to %{ endTime }":"Le %{ date } de %{ startTime } à %{ endTime }","The event organizer didn't add any description.":"L'organisateur de l'événement n'a pas ajouté de description.","The page you're looking for doesn't exist.":"La page que vous recherchez n'existe pas.","These events may interest you":"Ces événements peuvent vous intéresser","This instance isn't opened to registrations, but you can register on other instances.":"Cette instance n'autorise pas les inscriptions, mais vous pouvez vous enregistrer sur d'autres instances.","Unknown error.":"Erreur inconnue.","User logout":"Déconnexion","We just sent an email to %{email}":"Nous venons d'envoyer un email à %{email}","Welcome back %{username}":"Bon retour %{username}","Welcome back!":"Bon retour !","You announced that you're going to this event.":"Vous avez annoncé vous rendre à cet événement.","You are already logged-in.":"Vous êtes déjà connecté.","You are an organizer.":"Vous êtes un organisateur.","You have one event in %{ days } days.":["Vous avez un événement dans %{ days } jours.","Vous avez %{ count } événements dans %{ days } jours"],"You have one event today.":["Vous avez un événement aujourd'hui.","Vous avez %{ count } événements aujourd'hui"],"You have one event tomorrow.":["Vous avez un événement demain.","Vous avez %{ count } événements demain"],"You need to login.":"Vous devez vous connecter.","You're not going to any event yet":"Vous n'allez à aucun événement pour le moment","Your account has been validated":"Votre compte a été validé","Your account is being validated":"Votre compte est en cours de validation","Your account is nearly ready, %{username}":"Votre compte est presque prêt, %{ username }","Your local administrator resumed it's policy:":"Votre administrateur local a résumé sa politique ainsi :","World map":"Carte mondiale","Search events, groups, etc.":"Rechercher des événements, des groupes, etc."}} \ No newline at end of file diff --git a/js/src/main.ts b/js/src/main.ts index 7878e9605..9f3d4c79c 100644 --- a/js/src/main.ts +++ b/js/src/main.ts @@ -2,14 +2,13 @@ // (runtime-only or standalone) has been set in webpack.base.conf with an alias. import Vue from 'vue'; import Buefy from 'buefy'; -import GetTextPlugin from 'vue-gettext'; +import VueI18n from 'vue-i18n'; import App from '@/App.vue'; import router from '@/router'; import { apolloProvider } from './vue-apollo'; import { NotifierPlugin } from '@/plugins/notifier'; import filters from '@/filters'; - -const translations = require('@/i18n/translations.json'); +import messages from '@/i18n/index'; Vue.config.productionTip = false; @@ -19,13 +18,12 @@ Vue.use(filters); const language = (window.navigator as any).userLanguage || window.navigator.language; -Vue.use(GetTextPlugin, { - translations, - defaultLanguage: 'en_US', - silent: true, -}); +Vue.use(VueI18n); -Vue.config.language = language.replace('-', '_'); +const i18n = new VueI18n({ + locale: language.replace('-', '_'), // set locale + messages, // set locale messages +}); /* eslint-disable no-new */ new Vue({ @@ -34,4 +32,5 @@ new Vue({ el: '#app', template: '', components: { App }, + i18n, }); diff --git a/js/src/types/event.model.ts b/js/src/types/event.model.ts index b6a4d53c6..79b3621d0 100644 --- a/js/src/types/event.model.ts +++ b/js/src/types/event.model.ts @@ -158,7 +158,7 @@ export class EventModel implements IEvent { publishAt = new Date(); - participantStats = { approved: 0, unapproved: 0}; + participantStats = { approved: 0, unapproved: 0 }; participants: IParticipant[] = []; relatedEvents: IEvent[] = []; diff --git a/js/src/views/Account/IdentityPicker.vue b/js/src/views/Account/IdentityPicker.vue index 46b8449d9..89a182ab2 100644 --- a/js/src/views/Account/IdentityPicker.vue +++ b/js/src/views/Account/IdentityPicker.vue @@ -1,11 +1,13 @@