Merge pull request #276 from weblate/weblate-fittrackee-fittrackee-client-administration

Translations update from Hosted Weblate
This commit is contained in:
Sam 2022-11-30 11:10:45 +01:00 committed by GitHub
commit b535b11573
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
37 changed files with 541 additions and 79 deletions

View File

@ -61,7 +61,7 @@ class BaseConfig:
'fr',
'de',
# 'nb', # disabled for now
# 'nl', # disabled for now
'nl',
]
OAUTH2_TOKEN_EXPIRES_IN = {
'authorization_code': 864000, # 10 days

View File

@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><!--[if IE]><link rel="icon" href="/favicon.ico"><![endif]--><link rel="stylesheet" href="/static/css/fork-awesome.min.css"/><link rel="stylesheet" href="/static/css/leaflet.css"/><title>FitTrackee</title><script defer="defer" src="/static/js/chunk-vendors.561352b4.js"></script><script defer="defer" src="/static/js/app.29b99fd4.js"></script><link href="/static/css/app.6b717ec5.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="/img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/img/icons/favicon-16x16.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="no"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="apple-mobile-web-app-title" content="fittrackee_client"><link rel="apple-touch-icon" href="/img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="/img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="/img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><body><noscript><strong>We're sorry but FitTrackee doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><!--[if IE]><link rel="icon" href="/favicon.ico"><![endif]--><link rel="stylesheet" href="/static/css/fork-awesome.min.css"/><link rel="stylesheet" href="/static/css/leaflet.css"/><title>FitTrackee</title><script defer="defer" src="/static/js/chunk-vendors.0004541e.js"></script><script defer="defer" src="/static/js/app.cf4c1e38.js"></script><link href="/static/css/app.4db9e3f8.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="/img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/img/icons/favicon-16x16.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="no"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="apple-mobile-web-app-title" content="fittrackee_client"><link rel="apple-touch-icon" href="/img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="/img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="/img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><body><noscript><strong>We're sorry but FitTrackee doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,2 @@
"use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[193],{7885:function(e,s,t){t.r(s),t.d(s,{default:function(){return A}});var a=t(6252),r=t(2262),l=t(3577),o=(t(7658),t(9150)),n=t(436);const c={class:"chart-menu"},i={class:"chart-arrow"},u={class:"time-frames custom-checkboxes-group"},d={class:"time-frames-checkboxes custom-checkboxes"},p=["id","name","checked","onInput"],m={class:"chart-arrow"};var v=(0,a.aZ)({__name:"StatsMenu",emits:["arrowClick","timeFrameUpdate"],setup(e,{emit:s}){const t=(0,r.iH)("month"),o=["week","month","year"];function n(e){t.value=e,s("timeFrameUpdate",e)}return(e,r)=>((0,a.wg)(),(0,a.iD)("div",c,[(0,a._)("div",i,[(0,a._)("i",{class:"fa fa-chevron-left","aria-hidden":"true",onClick:r[0]||(r[0]=e=>s("arrowClick",!0))})]),(0,a._)("div",u,[(0,a._)("div",d,[((0,a.wg)(),(0,a.iD)(a.HY,null,(0,a.Ko)(o,(s=>(0,a._)("div",{class:"time-frame custom-checkbox",key:s},[(0,a._)("label",null,[(0,a._)("input",{type:"radio",id:s,name:s,checked:t.value===s,onInput:e=>n(s)},null,40,p),(0,a._)("span",null,(0,l.zw)(e.$t(`statistics.TIME_FRAMES.${s}`)),1)])]))),64))])]),(0,a._)("div",m,[(0,a._)("i",{class:"fa fa-chevron-right","aria-hidden":"true",onClick:r[1]||(r[1]=e=>s("arrowClick",!1))})])]))}}),k=t(3744);const _=(0,k.Z)(v,[["__scopeId","data-v-22d55de2"]]);var S=_,w=t(631);const f={class:"sports-menu"},h=["id","name","checked","onInput"],U={class:"sport-label"};var b=(0,a.aZ)({__name:"StatsSportsMenu",props:{userSports:null,selectedSportIds:{default:()=>[]}},emits:["selectedSportIdsUpdate"],setup(e,{emit:s}){const t=e,{t:n}=(0,o.QT)(),c=(0,a.f3)("sportColors"),{selectedSportIds:i}=(0,r.BK)(t),u=(0,a.Fl)((()=>(0,w.xH)(t.userSports,n)));function d(e){s("selectedSportIdsUpdate",e)}return(e,s)=>{const t=(0,a.up)("SportImage");return(0,a.wg)(),(0,a.iD)("div",f,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,r.SU)(u),(e=>((0,a.wg)(),(0,a.iD)("label",{type:"checkbox",key:e.id,style:(0,l.j5)({color:e.color?e.color:(0,r.SU)(c)[e.label]})},[(0,a._)("input",{type:"checkbox",id:e.id,name:e.label,checked:(0,r.SU)(i).includes(e.id),onInput:s=>d(e.id)},null,40,h),(0,a.Wm)(t,{"sport-label":e.label,color:e.color},null,8,["sport-label","color"]),(0,a._)("span",U,(0,l.zw)(e.translatedLabel),1)],4)))),128))])}}});const I=b;var g=I,T=t(9318);const y={key:0,id:"user-statistics"};var C=(0,a.aZ)({__name:"index",props:{sports:null,user:null},setup(e){const s=e,{t:t}=(0,o.QT)(),{sports:l,user:c}=(0,r.BK)(s),i=(0,r.iH)("month"),u=(0,r.iH)(v(i.value)),d=(0,a.Fl)((()=>(0,w.xH)(s.sports,t))),p=(0,r.iH)(_(s.sports));function m(e){i.value=e,u.value=v(i.value)}function v(e){return(0,T.aZ)(new Date,e,s.user.weekm)}function k(e){u.value=(0,T.FN)(u.value,e,s.user.weekm)}function _(e){return e.map((e=>e.id))}function f(e){p.value.includes(e)?p.value=p.value.filter((s=>s!==e)):p.value.push(e)}return(0,a.YP)((()=>s.sports),(e=>{p.value=_(e)})),(e,s)=>(0,r.SU)(d)?((0,a.wg)(),(0,a.iD)("div",y,[(0,a.Wm)(S,{onTimeFrameUpdate:m,onArrowClick:k}),(0,a.Wm)(n.Z,{sports:(0,r.SU)(l),user:(0,r.SU)(c),chartParams:u.value,"displayed-sport-ids":p.value,fullStats:!0},null,8,["sports","user","chartParams","displayed-sport-ids"]),(0,a.Wm)(g,{"selected-sport-ids":p.value,"user-sports":(0,r.SU)(l),onSelectedSportIdsUpdate:f},null,8,["selected-sport-ids","user-sports"])])):(0,a.kq)("",!0)}});const F=(0,k.Z)(C,[["__scopeId","data-v-30799d13"]]);var Z=F,x=t(5630),D=t(5801),H=t(9917);const E={id:"statistics",class:"view"},R={key:0,class:"container"};var W=(0,a.aZ)({__name:"StatisticsView",setup(e){const s=(0,H.o)(),t=(0,a.Fl)((()=>s.getters[D.YN.GETTERS.AUTH_USER_PROFILE])),o=(0,a.Fl)((()=>s.getters[D.O8.GETTERS.SPORTS].filter((e=>t.value.sports_list.includes(e.id)))));return(e,s)=>{const n=(0,a.up)("Card");return(0,a.wg)(),(0,a.iD)("div",E,[(0,r.SU)(t).username?((0,a.wg)(),(0,a.iD)("div",R,[(0,a.Wm)(n,null,{title:(0,a.w5)((()=>[(0,a.Uk)((0,l.zw)(e.$t("statistics.STATISTICS")),1)])),content:(0,a.w5)((()=>[(0,a.Wm)(Z,{class:(0,l.C_)({"stats-disabled":0===(0,r.SU)(t).nb_workouts}),user:(0,r.SU)(t),sports:(0,r.SU)(o)},null,8,["class","user","sports"])])),_:1}),0===(0,r.SU)(t).nb_workouts?((0,a.wg)(),(0,a.j4)(x.Z,{key:0})):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])}}});const P=(0,k.Z)(W,[["__scopeId","data-v-2e341d4e"]]);var A=P}}]);
//# sourceMappingURL=statistics.5231fa2f.js.map
//# sourceMappingURL=statistics.7cce80c4.js.map

View File

@ -8,21 +8,23 @@ msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-07-03 07:58+0200\n"
"PO-Revision-Date: 2022-11-19 09:31+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2022-11-29 00:47+0000\n"
"Last-Translator: bjornclauw <bjorn.clauw.1@gmail.com>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/fittrackee/"
"fittrackee-api-emails/nl/>\n"
"Language: nl\n"
"Language-Team: nl <LL@li.org>\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\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: Weblate 4.15-dev\n"
"Generated-By: Babel 2.11.0\n"
#: fittrackee/emails/templates/layout.html:215
#: fittrackee/emails/templates/layout.txt:1
#, python-format
msgid "Hi %(username)s,"
msgstr ""
msgstr "Dag %(username)s,"
#: fittrackee/emails/templates/account_confirmation/body.txt:6
#: fittrackee/emails/templates/email_update_to_current_email/body.txt:3
@ -35,41 +37,43 @@ msgid ""
"For security, this request was received from a %(operating_system)s "
"device using %(browser_name)s."
msgstr ""
"Voor beveiliging, werd deze aanvraag ontvangen van een %(operating_system)s "
"apparaat via %(browser_name)s."
#: fittrackee/emails/templates/layout.html:221
#: fittrackee/emails/templates/layout.txt:5
msgid "Thanks,"
msgstr ""
msgstr "Bedankt,"
#: fittrackee/emails/templates/layout.html:222
#: fittrackee/emails/templates/layout.txt:6
msgid "The FitTrackee Team"
msgstr ""
msgstr "Het FitTrackee Team"
#: fittrackee/emails/templates/account_confirmation/body.html:2
#: fittrackee/emails/templates/account_confirmation/subject.txt:1
msgid "Confirm your account"
msgstr ""
msgstr "Bevestig uw account"
#: fittrackee/emails/templates/account_confirmation/body.html:3
msgid "Use this link to confirm your account."
msgstr ""
msgstr "Gebruik deze link om uw account te bevestigen."
#: fittrackee/emails/templates/account_confirmation/body.html:4
#: fittrackee/emails/templates/account_confirmation/body.txt:1
msgid "You have created an account on FitTrackee."
msgstr ""
msgstr "U hebt een account aangemaakt op FitTrackee."
#: fittrackee/emails/templates/account_confirmation/body.html:4
msgid "Use the button below to confirm your address email."
msgstr ""
msgstr "Gebruik de onderstaande knop om uw email adres te bevestigen."
#: fittrackee/emails/templates/account_confirmation/body.html:11
#: fittrackee/emails/templates/account_confirmation/body.txt:4
#: fittrackee/emails/templates/email_update_to_new_email/body.html:11
#: fittrackee/emails/templates/email_update_to_new_email/body.txt:4
msgid "Verify your email"
msgstr ""
msgstr "Verifieer uw email"
#: fittrackee/emails/templates/account_confirmation/body.html:18
#: fittrackee/emails/templates/account_confirmation/body.txt:7
@ -77,6 +81,7 @@ msgid ""
"If this account creation wasn't initiated by you, please ignore this "
"email."
msgstr ""
"Indien u deze account niet hebt aangemaakt, gelieve deze email te negeren."
#: fittrackee/emails/templates/account_confirmation/body.html:22
#: fittrackee/emails/templates/email_update_to_new_email/body.html:22
@ -85,19 +90,21 @@ msgid ""
"If you're having trouble with the button above, copy and paste the URL "
"below into your web browser."
msgstr ""
"Als u problemen hebt met bovenstaande knop, kopieer en plak de onderstaande "
"URL in uw web browser."
#: fittrackee/emails/templates/account_confirmation/body.txt:2
msgid "Use the link below to confirm your address email."
msgstr ""
msgstr "Gebruik de onderstaande link om uw email adres te bevestigen."
#: fittrackee/emails/templates/email_update_to_current_email/body.html:2
#: fittrackee/emails/templates/email_update_to_current_email/subject.txt:1
msgid "Email changed"
msgstr ""
msgstr "Email aangepast"
#: fittrackee/emails/templates/email_update_to_current_email/body.html:3
msgid "Your email is being updated."
msgstr ""
msgstr "Uw email wordt aangepast."
#: fittrackee/emails/templates/email_update_to_current_email/body.html:4
#: fittrackee/emails/templates/email_update_to_current_email/body.txt:1
@ -105,6 +112,8 @@ msgid ""
"You recently requested to change your email address for your FitTrackee "
"account to:"
msgstr ""
"U hebt een aanvraag ingediend om uw email adres voor uw FitTrackee account "
"te veranderen naar:"
#: fittrackee/emails/templates/email_update_to_current_email/body.html:18
#: fittrackee/emails/templates/email_update_to_current_email/body.txt:4
@ -112,15 +121,18 @@ msgid ""
"If this email change wasn't initiated by you, please change your password"
" immediately or contact your administrator if your account is locked."
msgstr ""
"Indien deze verandering niet door u werd aangevraagd, gelieve uw wachtwoord "
"dan onmiddellijk te veranderen of contacteer uw administrator als uw account "
"is vergrendeld."
#: fittrackee/emails/templates/email_update_to_new_email/body.html:2
#: fittrackee/emails/templates/email_update_to_new_email/subject.txt:1
msgid "Confirm email change"
msgstr ""
msgstr "Bevestig email verandering"
#: fittrackee/emails/templates/email_update_to_new_email/body.html:3
msgid "Use this link to confirm email change."
msgstr ""
msgstr "Gebruik deze link om uw email verandering te bevestigen."
#: fittrackee/emails/templates/email_update_to_new_email/body.html:4
#: fittrackee/emails/templates/email_update_to_new_email/body.txt:1
@ -128,33 +140,37 @@ msgid ""
"You recently requested to change your email address for your FitTrackee "
"account."
msgstr ""
"U hebt aangevraagd om uw email adres voor uw FitTrackee account te "
"veranderen."
#: fittrackee/emails/templates/email_update_to_new_email/body.html:4
msgid "Use the button below to confirm this address."
msgstr ""
msgstr "Gebruik de onderstaande knop om dit adres te bevestigen."
#: fittrackee/emails/templates/email_update_to_new_email/body.html:18
#: fittrackee/emails/templates/email_update_to_new_email/body.txt:7
msgid "If this email change wasn't initiated by you, please ignore this email."
msgstr ""
"Indien u deze email aanpassing niet hebt aangevraagd, gelieve deze email te "
"negeren."
#: fittrackee/emails/templates/email_update_to_new_email/body.txt:2
msgid "Use the link below to confirm this address."
msgstr ""
msgstr "Gebruik onderstaande link om dit adres te bevestigen."
#: fittrackee/emails/templates/password_change/body.html:2
#: fittrackee/emails/templates/password_change/subject.txt:1
msgid "Password changed"
msgstr ""
msgstr "Wachtwoord aangepast"
#: fittrackee/emails/templates/password_change/body.html:3
msgid "Your password has been changed."
msgstr ""
msgstr "Uw wachtwoord werd aangepast."
#: fittrackee/emails/templates/password_change/body.html:4
#: fittrackee/emails/templates/password_change/body.txt:1
msgid "The password for your FitTrackee account has been changed."
msgstr ""
msgstr "Het wachtwoord voor uw FitTrackee account werd aangepast."
#: fittrackee/emails/templates/password_change/body.html:5
#: fittrackee/emails/templates/password_change/body.txt:4
@ -163,11 +179,14 @@ msgid ""
"password immediately or contact your administrator if your account is "
"locked."
msgstr ""
"Indien de aanpassing van uw wachtwoord niet door u werd aangevraagd, gelieve "
"uw wachtwoord dan onmiddellijk te veranderen of contacteer uw administrator "
"als uw account is vergrendeld."
#: fittrackee/emails/templates/password_reset_request/body.html:2
#: fittrackee/emails/templates/password_reset_request/subject.txt:1
msgid "Password reset request"
msgstr ""
msgstr "Aanvraag voor wachtwoord reset"
#: fittrackee/emails/templates/password_reset_request/body.html:3
#, python-format
@ -175,33 +194,40 @@ msgid ""
"Use this link to reset your password. The link is only valid for "
"%(expiration_delay)s."
msgstr ""
"Gebruik deze link om uw wachtwoord te resetten. De link is enkel geldig voor "
"%(expiration_delay)s."
#: fittrackee/emails/templates/password_reset_request/body.html:4
#: fittrackee/emails/templates/password_reset_request/body.txt:1
msgid "You recently requested to reset your password for your FitTrackee account."
msgstr ""
"U hebt een aanvraag ingediend om uw wachtwoord te resetten voor uw "
"FitTrackee account."
#: fittrackee/emails/templates/password_reset_request/body.html:4
msgid "Use the button below to reset it."
msgstr ""
msgstr "Gebruik de onderstaande knop om het te resetten."
#: fittrackee/emails/templates/password_reset_request/body.html:5
#: fittrackee/emails/templates/password_reset_request/body.txt:2
#, python-format
msgid "This password reset link is only valid for %(expiration_delay)s."
msgstr ""
"Deze link om uw wachtwoord te resetten is enkel geldig voor "
"%(expiration_delay)s."
#: fittrackee/emails/templates/password_reset_request/body.html:13
#: fittrackee/emails/templates/password_reset_request/body.txt:4
msgid "Reset your password"
msgstr ""
msgstr "Reset uw wachtwoord"
#: fittrackee/emails/templates/password_reset_request/body.html:20
#: fittrackee/emails/templates/password_reset_request/body.txt:7
msgid "If you did not request a password reset, please ignore this email."
msgstr ""
"Als u geen aanvraag hebt ingediend om uw wachtwoord aan te passen, gelieve "
"dan deze mail te negeren."
#: fittrackee/emails/templates/password_reset_request/body.txt:1
msgid "Use the link below to reset it."
msgstr ""
msgstr "Gebruik onderstaande link om het te resetten."

View File

@ -54,7 +54,7 @@
.dropdown-list {
list-style-type: none;
background-color: #ffffff;
padding: 0;
padding: 0 !important;
margin-top: 5px;
margin-left: -20px !important;
position: absolute;
@ -64,16 +64,12 @@
width: auto !important;
li {
padding-top: 5px;
padding-right: 5px;
}
li:last-child {
padding-bottom: 5px;
padding: 3px 8px;
}
}
.dropdown-item {
cursor: default;
cursor: pointer;
&.selected {
font-weight: bold;
@ -82,5 +78,9 @@
&.selected::after {
content: ' ✔';
}
&:hover {
background-color: var(--dropdown-hover-color);
}
}
</style>

View File

@ -197,14 +197,10 @@
.nav-item {
padding: 0 10px;
&.dropdown-wrapper {
width: 60px;
}
::v-deep(.dropdown-list) {
margin-left: -10px;
padding-left: 10px;
width: 75px;
padding-left: $default-padding;
padding-right: $default-padding;
right: $default-padding;
}
}
@ -294,6 +290,11 @@
.nav-item {
padding: 7px 25px;
::v-deep(.dropdown-list) {
right: initial;
left: 45px;
}
}
.nav-profile-img {

View File

@ -6,7 +6,7 @@ import { createI18n, LocaleMessages, VueMessageType } from 'vue-i18n'
* The loaded `JSON` locale messages is pre-compiled by `@intlify/vue-i18n-loader`, which is integrated into `vue-cli-plugin-i18n`.
* See: https://github.com/intlify/vue-i18n-loader#rocket-i18n-resource-pre-compilation
*/
const disabledLanguages = ['nb', 'nl'] // to update after translations release
const disabledLanguages = ['nb'] // to update after translations release
function loadLocaleMessages(): Record<string, LocaleMessages<VueMessageType>> {
const locales = require.context('./locales', true, /[A-Za-z0-9-_,\s]+\.ts$/i)

View File

@ -1,2 +1,6 @@
{
"FITTRACKEE_LICENSE": "Onder {0} licentie ",
"CONTACT_ADMIN": "Contacteer uw administrator",
"FITTRACKEE_DESCRIPTION": "<strong>FitTrackee</strong> is zelf-gehoste buitenshuis activiteiten tracker.",
"SOURCE_CODE": "Broncode"
}

View File

@ -1,2 +1,59 @@
{
"ACTION": "Actie",
"ACTIVATE_USER_ACCOUNT": "Activeer account",
"ACTIVE": "Ingeschakeld",
"ADMIN_RIGHTS_DELETE_USER_ACCOUNT": "Toevoegen/verwijderen van administrator rechten, verwijder gebruikersaccount.",
"APPLICATION": "Applicatie",
"APP_CONFIG": {
"ADMIN_CONTACT": "Administrator email voor contact",
"MAX_USERS_LABEL": "Max. aantal actieve gebruikers",
"MAX_FILES_IN_ZIP_LABEL": "Max. aantal bestanden in zip archief",
"NO_CONTACT_EMAIL": "geen contact email",
"TITLE": "Applicatie configureren",
"ZIP_UPLOAD_MAX_SIZE_LABEL": "Max. grootte van zip archief (in Mb)",
"MAX_USERS_HELP": "Bij 0, geen limiet op registratie.",
"SINGLE_UPLOAD_MAX_SIZE_LABEL": "Max. grootte van bestanden voor upload (in Mb)"
},
"ADMIN": "Beheer",
"ADMINISTRATION": "Instellingen",
"BACK_TO_ADMIN": "Terug naar beheer",
"CONFIRM_USER_PASSWORD_RESET": "Weet u zeker dat u het wachtwoord voor {0} wilt resetten?",
"CURRENT_EMAIL": "Huidige email",
"EMAIL_SENDING_DISABLED": "Emails verzenden is uitgeschakeld.",
"ENABLE_DISABLE_SPORTS": "Aan- of uitzetten van sporten.",
"NEW_EMAIL": "Nieuwe email",
"PASSWORD_RESET_SUCCESSFUL": "Het wachtwoord werd gereset.",
"REGISTRATION_DISABLED": "Registratie is momenteel uitgeschakeld.",
"REGISTRATION_ENABLED": "Registratie is momenteel ingeschakeld.",
"RESET_USER_PASSWORD": "Reset wachtwoord",
"SPORTS": {
"TABLE": {
"ACTIVE": "Ingeschakeld",
"IMAGE": "Afbeelding",
"LABEL": "Label",
"HAS_WORKOUTS": "Trainingen aanwezig"
},
"TITLE": "Beheer sporten"
},
"UPDATE_USER_EMAIL": "Update email",
"USER": "gebruiker | gebruikers",
"USER_EMAIL_UPDATE_SUCCESSFUL": "Het emailadres werd bijgewerkt.",
"USERS": {
"TABLE": {
"ADD_ADMIN_RIGHTS": "Admin rechten toevoegen",
"REMOVE_ADMIN_RIGHTS": "Verwijder admin rechten"
},
"SELECTS": {
"ORDER_BY": {
"ADMIN": "admin status",
"CREATED_AT": "Registratie datum",
"IS_ACTIVE": "Account status",
"USERNAME": "gebruikersnaam",
"WORKOUTS_COUNT": "aantal trainingen"
}
}
},
"CONFIRM_USER_ACCOUNT_DELETION": "Weet u zeker dat u de account {0} wilt wissen? Alle gegevens worden verwijderd, dit kan niet ongedaan gemaakt worden.",
"DELETE_USER": "Verwijder gebruiker",
"UPDATE_APPLICATION_DESCRIPTION": "De applicatie configureren (maximum aantal geregistreerde gebruikers, maximum bestandsgrootte)."
}

View File

@ -1,2 +1,38 @@
{
"ERROR": {
"email: valid email must be provided": "Email: een geldige email is vereist.",
"error during gpx processing": "Fout bij verwerken van gpx.",
"error during gpx file parsing": "Fout bij het verwerken van het gpx bestand.",
"error on getting configuration": "Fout bij ophalen van configuratie.",
"error when updating configuration": "Fout bij het updaten van de configuratie",
"error, please try again or contact the administrator": "Fout, probeer opnieuw of contacteer de administrator.",
"error, registration is disabled": "Fout, registratie is uitgeschakeld.",
"file extension not allowed": "Bestandsformaat niet toegelaten.",
"invalid credentials": "Ongeldige inloggegevens.",
"invalid payload": "Ingegeven data is ongeldig.",
"invalid token, please log in again": "Ongeldige token, log opnieuw in.",
"invalid token, please request a new token": "Ongeldige token, log opnieuw in.",
"Network Error": "Netwerk fout.",
"new email must be different than curent email": "Het nieuwe email adres dient te verschillen van het oude",
"no file part": "Geen bestand opgegeven.",
"no selected file": "Geen bestand geselecteerd.",
"the number of files in the archive exceeds the limit": "Het aantal bestanden in het zip archief overschrijdt de limiet.",
"password: password and password confirmation do not match": "Wachtwoord: het wachtwoord en de bevestiging komen niet overeen.",
"provide a valid auth token": "Geef een geldig auth token.",
"sorry, that username is already taken": "Sorry, deze gebruikersnaam is al in gebruik.",
"sport does not exist": "Deze sport bestaat niet.",
"signature expired, please log in again": "Signatuur verlopen. Log opnieuw in.",
"successfully registered": "Succesvol geregistreerd.",
"user does not exist": "Gebruiker bestaat niet.",
"valid email must be provided for admin contact": "Een geldige email is vereist voor admin contact informatie",
"you can not delete your account, no other user has admin rights": "U kunt uw account niet verwijderen, geen andere gebruiker heeft admin rechten.",
"you do not have permissions": "U hebt geen machtigingen.",
"UNKNOWN": "Fout. Probeer opnieuw of contacteer de administrator.",
"at least one file in zip archive exceeds size limit, please check the archive": "Ten minste 1 bestand in het zip archief is groter dan toegelaten, gelieve de bestanden te controleren.",
"file size is greater than the allowed size": "Bestandsgrootte is groter dan toegestaan."
},
"PAGINATION": {
"PREVIOUS": "vorige",
"NEXT": "volgende"
}
}

View File

@ -1,2 +1,18 @@
{
"YES": "Ja",
"ACCOUNT-CONFIRMATION-RESEND": "Herzend bevestigings email",
"AUTHORIZE": "Toekennen",
"BACK": "Terug",
"CANCEL": "Annuleren",
"CLEAR_FILTER": "Verwijder filters",
"DELETE_MY_ACCOUNT": "Verwijder mijn account",
"EDIT": "Bewerken",
"ENABLE": "Aanzetten",
"FILTER": "Filter",
"NO": "Nee",
"REGISTER": "Registreer",
"RESET": "Reset",
"DISABLE": "Uitzetten",
"SUBMIT": "Aanpassen",
"LOGIN": "Inloggen"
}

View File

@ -1,2 +1,25 @@
{
"ABOUT": "over",
"CONFIRMATION": "Bevestiging",
"DOCUMENTATION": "documentatie",
"DISPLAYED": "Weergegeven",
"HERE": "hier",
"CONTACT": "contacteer",
"DAY": "dag | dagen",
"HOME": "Startscherm",
"SELECTS": {
"ORDER": {
"LABEL": "sorteer",
"DESC": "aflopend",
"ASC": "oplopend"
},
"ORDER_BY": {
"LABEL": "sorteer op"
},
"PER_PAGE": {
"LABEL": "per pagina"
}
},
"HIDDEN": "Verborgen",
"TOTAL": "Totaal"
}

View File

@ -1,2 +1,4 @@
{
"DASHBOARD": "Dashboard",
"THIS_MONTH": "Deze maand"
}

View File

@ -1,2 +1,9 @@
{
"NOT_FOUND": {
"PAGE": "Pagina niet gevonden",
"WORKOUT": "Training niet gevonden"
},
"SOMETHING_WRONG": "Er ging iets mis",
"UNKNOWN": "Fout. Probeer opnieuw of contacteer de administrator.",
"APP_ERROR": "Er heeft zich een onbekende fout voorgedaan.<br />Probeer aub later opnieuw of contacteer de administrator."
}

View File

@ -1,2 +1,36 @@
{
"APP": {
"CLIENT_SECRET": "Geheim",
"ISSUE_AT": "Probleem bij",
"REDIRECT_URL": "Doorverwijs URL",
"SCOPE": {
"LABEL": "Omvang",
"users:read_DESCRIPTION": "staat leestoegang toe aan <code>users</code> endpoints.",
"profile:write_DESCRIPTION": "staat schrijftoegang toe aan <code>auth</code> endpoints.",
"profile:read_DESCRIPTION": "staat leestoegang toe aan <code>auth</code> endpoints.",
"users:write_DESCRIPTION": "staat schrijftoegang toe aan <code>users</code> endpoints.",
"workouts:read_DESCRIPTION": "staat leestoegang toe aan <code>workouts</code> endpoints.",
"workouts:write_DESCRIPTION": "staat schrijftoegang toe aan <code>workouts</code> endpoints.",
"application:write_DESCRIPTION": "geeft toestemming tot aanpassen van de applicatie instellingen."
},
"NAME": "Naam van de app",
"URL": "App URL",
"DESCRIPTION": "App omschrijving",
"CLIENT_ID": "Id"
},
"APP_CREATED_SUCCESSFULLY": "App succesvol aangemaakt. Kopieer zeker de geheime sleutel, deze zal later niet meer verschijnen.",
"APP_DELETION_CONFIRMATION": "Weet u zeker dat u deze app wilt verwijderen?",
"APP_REQUESTING_ACCESS": "De app {0} vraagt:",
"APPS_LIST": "OAuth2 apps",
"AUTHORIZE_APP": "Toegang geven aan {0} tot uw gebruikersaccount?",
"COPY_TO_CLIPBOARD": "kopieer naar klembord",
"DELETE_APP": "Verwijder app",
"NEW_APP": "Voeg een app toe",
"NO_APP": "App niet gevonden!",
"NO_APPS": "geen apps",
"NO_DESCRIPTION": "geen beschrijving",
"REVOKE_ALL_TOKENS": "Verwijder alle tokens",
"TOKENS_REVOCATION_CONFIRMATION": "Weet u zeker dat u alle tokens wilt intrekken?",
"TOKENS_REVOKED": "Alle bestaande tokens werden ingetrokken.",
"ADD_A_NEW_APP": "Nieuwe OAuth2 app toevoegen"
}

View File

@ -1,2 +1,41 @@
{
"Cycling (Sport)": {
"LABEL": "Fietsen (Sport)"
},
"Cycling (Transport)": {
"LABEL": "Fietsen (Transport)"
},
"Cycling (Virtual)": {
"LABEL": "Fietsen (Virtueel)"
},
"Mountain Biking": {
"LABEL": "Mountainbiken"
},
"Mountain Biking (Electric)": {
"LABEL": "Mountainbiken (Elektrisch)"
},
"Rowing": {
"LABEL": "Roeien"
},
"Running": {
"LABEL": "Lopen"
},
"Skiing (Alpine)": {
"LABEL": "Skiën (Alpine)"
},
"Skiing (Cross Country)": {
"LABEL": "Skiën (Cross Country)"
},
"Snowshoes": {
"LABEL": "Sneeuwschoenen"
},
"Walking": {
"LABEL": "Wandelen"
},
"Hiking": {
"LABEL": "Trektocht"
},
"Trail": {
"LABEL": "Trail"
}
}

View File

@ -1,2 +1,8 @@
{
"STATISTICS": "Statistieken",
"TIME_FRAMES": {
"week": "week",
"month": "maand",
"year": "jaar"
}
}

View File

@ -1,2 +1,111 @@
{
"ACCOUNT_CONFIRMATION_NOT_RECEIVED": "Geen instructies ontvangen?",
"ACCOUNT_CONFIRMATION_SENT": "Controleer uw email. Een nieuwe bevestigingsmail werd verzonden naar het opgegeven adres.",
"ADMIN": "Beheer",
"ALREADY_HAVE_ACCOUNT": "Al een account aangemaakt?",
"CURRENT_PASSWORD": "Huidig wachtwoord",
"EMAIL": "Email",
"EMAIL_INFO": "Geef een geldig email adres op.",
"ENTER_PASSWORD": "Geef een paswoord in",
"FILTER_ON_USERNAME": "Filter op gebruikersnaam",
"HIDE_PASSWORD": "verberg wachtwoord",
"INVALID_TOKEN": "Ongeldig token, vraag een nieuwe wachtwoord reset aan.",
"LOG_IN": "inloggen",
"LOGIN": "Inloggen",
"LOGOUT": "Uitloggen",
"NEW_PASSWORD": "Nieuw wachtwoord",
"NO_USERS_FOUND": "Geen gebruikers gevonden.",
"PASSWORD": "Wachtwoord",
"PASSWORD_INFO": "Tenminste 8 karakters vereist.",
"PASSWORD_FORGOTTEN": "Wachtwoord vergeten?",
"PASSWORD_RESET": "Wachtwoord reset",
"PASSWORD_STRENGTH": {
"WEAK": "zwak",
"AVERAGE": "gemiddeld",
"GOOD": "goed",
"STRONG": "sterk",
"LABEL": "wachtwoord sterkte",
"SUGGESTIONS": {
"l33t": "Vermijd voorspelbare vervangingen, zoals {'@'} voor de letter a.",
"reverseWords": "Vermijd gangbare woorden die achterstevoren geschreven zijn.",
"capitalization": "Gebruik niet enkel voor de eerste letter een hoofdletter.",
"dates": "Vermijd persoonlijke gegevens en jaartallen.",
"recentYears": "Vermijd recente jaartallen.",
"sequences": "Vermijd voorspelbare opeenvolgingen.",
"repeated": "Vermijd opeenvolgende woorden en karakters.",
"longerKeyboardPattern": "Gebruik langere patronen en verander de richting van typen meerdere malen.",
"anotherWord": "Voeg meer niet gangbare woorden toe.",
"pwned": "Als u dit wachtwoord ergens anders gebruikt zou u het beter veranderen.",
"allUppercase": "Gebruik enkele hoofdletters.",
"associatedYears": "Vermijd jaartallen met een persoonlijke betekenis.",
"useWords": "Gebruik verschillende woorden, maar vermijd vaak gebruikte zinnen.",
"noNeed": "U kan sterke wachtwoorden maken zonder gebruik van symbolen, nummers, of hoofdletters."
}
},
"PROFILE": {
"ASCENT_DATA": "Hoogte gerelateerde data (opnames, totaal)",
"ACCOUNT_EDITION": "Account aanpassen",
"BACK_TO_PROFILE": "Terug naar profiel",
"BIO": "Bio",
"BIRTH_DATE": "Geboortedatum",
"DATE_FORMAT": "Weergaveformaat datum",
"EDIT": "Profiel aanpassen",
"EDIT_PREFERENCES": "Voorkeuren wijzigen",
"EDIT_SPORTS_PREFERENCES": "Sport voorkeuren wijzigen",
"FIRST_NAME": "Voornaam",
"FIRST_DAY_OF_WEEK": "Eerste dag van de week",
"LANGUAGE": "Taal",
"LAST_NAME": "Achternaam",
"LOCATION": "Locatie",
"MONDAY": "Maandag",
"PICTURE": "Afbeelding",
"PICTURE_EDITION": "Afbeelding aanpassen",
"PICTURE_UPDATE": "Afbeelding veranderen",
"PICTURE_REMOVE": "Afbeelding verwijderen",
"PREFERENCES_EDITION": "Voorkeuren aanpassen",
"PROFILE_EDITION": "Profiel aanpassen",
"REGISTRATION_DATE": "Datum registratie",
"SUNDAY": "Zondag",
"TABS": {
"ACCOUNT": "account",
"APPS": "apps",
"PICTURE": "afbeelding",
"PREFERENCES": "voorkeuren",
"PROFILE": "profiel",
"SPORTS": "sporten"
},
"SPORT": {
"ACTION": "actie",
"COLOR": "kleur",
"DISABLED_BY_ADMIN": "uitgeschakeld door admin",
"IS_ACTIVE": "actief",
"LABEL": "label",
"STOPPED_SPEED_THRESHOLD": "snelheidsgrens voor stilstand"
},
"SUCCESSFUL_EMAIL_UPDATE": "Uw account werd succesvol bijgewerkt. Controleer uw inbox om uw nieuw email adres te bevestigen.",
"SUCCESSFUL_REGISTRATION": "Uw account werd succesvol aangemaakt.",
"SUCCESSFUL_REGISTRATION_WITH_EMAIL": "Een link om uw account te activeren werd doorgestuurd naar opgegeven email adres.",
"SUCCESSFUL_UPDATE": "Uw account werd succesvol bijgewerkt.",
"UNITS": {
"LABEL": "Eenheid voor afstand",
"IMPERIAL": "Imperialistisch systeem (ft, mi)",
"METRIC": "Metrisch systeem (m, km)"
},
"TIMEZONE": "Tijdzone",
"ERRORED_EMAIL_UPDATE": "Gelieve {0} om uw email adres opnieuw te wijzigen of contacteer uw administrator",
"SPORTS_EDITION": "Sport voorkeuren aanpassen"
},
"REGISTER": "Registreren",
"REGISTER_DISABLED": "Sorry, registreren is uitgeschakeld.",
"RESET_PASSWORD": "Reset uw wachtwoord",
"SHOW_PASSWORD": "toon wachtwoord",
"THIS_USER_ACCOUNT_IS_INACTIVE": "Deze account is niet actief.",
"USER_PICTURE": "gebruikersafbeelding",
"USERNAME": "Gebruikersnaam",
"CONFIRM_ACCOUNT_DELETION": "Weet u zeker dat u uw account wilt verwijderen? Alle data wordt verwijderd, dit kan niet ongedaan worden",
"LANGUAGE": "Taal",
"PASSWORD_SENT_EMAIL_TEXT": "Controleer uw inbox. Als uw email adres in onze database zit, hebt u een email ontvangen om uw wachtwoord te resetten.",
"PASSWORD_UPDATED": "Uw wachtwoord werd aangepast. Klik {0} om in te loggen.",
"RESENT_ACCOUNT_CONFIRMATION": "Opnieuw zenden van account bevestigingsmail",
"USERNAME_INFO": "3 tot 30 karakters vereist, enkel alfanumerieke karakters en het underscore karakter \"_\" zijn toegestaan."
}

View File

@ -1,2 +1,104 @@
{
"ASCENT": "geklommen",
"AVE_SPEED": "gem. snelheid",
"AVERAGE_SPEED": "gemiddelde snelheid",
"BACK_TO_WORKOUT": "Terug naar training",
"DATE": "datum",
"DESCENT": "gedaald",
"DISTANCE": "afstand",
"DURATION": "duur",
"EDIT_WORKOUT": "Training aanpassen",
"ELEVATION": "hoogte",
"END": "einde",
"FROM": "van",
"GPX_FILE": ".gpx bestand",
"HIDE_FILTERS": "verberg filters",
"INVALID_DISTANCE": "De afstand moet groter zijn dan 0",
"LATEST_WORKOUTS": "Laatste trainingen",
"LOAD_MORE_WORKOUT": "Toon meer trainingen",
"MAX_ALTITUDE": "max. hoogte",
"MAX_FILES": "max. aantal bestanden",
"MAX_SIZE": "max. grootte",
"MAX_SPEED": "max. snelheid",
"MIN_ALTITUDE": "min. hoogte",
"NEXT_SEGMENT": "Geen volgend segment",
"NEXT_WORKOUT": "Volgende training",
"NO_FILE_PROVIDED": "Geen bestand opgegeven",
"NO_FOLDER": "geen map aanwezig",
"NO_MAP": "Geen kaart",
"NO_NEXT_SEGMENT": "Geen volgend segment",
"NO_NEXT_WORKOUT": "Geen volgende training",
"NO_NOTES": "Geen notities",
"NO_PREVIOUS_SEGMENT": "Geen vorig segment",
"NO_PREVIOUS_WORKOUT": "Geen vorige training",
"NOTES": "notities",
"PAUSES": "pauzes",
"PREVIOUS_SEGMENT": "Vorig segment",
"PREVIOUS_WORKOUT": "Vorige training",
"NO_RECORDS": "Geen records.",
"RECORD_AS": "Gem. snelheid",
"RECORD_HA": "Hoogst geklommen",
"RECORD_LD": "Langste duur",
"RECORD_MS": "Max. snelheid",
"REMAINING_CHARS": "resterende karakters",
"SEGMENT": "segment | segmenten",
"SPEED": "snelheid",
"SPORT": "sport | sporten",
"START": "start",
"START_ELEVATION_AT_ZERO": "Zet hoogte-as vast op 0",
"TITLE": "titel",
"TO": "aan",
"TOTAL_DURATION": "totale duur",
"UPLOAD_FIRST_WORKOUT": "Eén uploaden!",
"WEATHER": {
"HUMIDITY": "vochtigheid",
"TEMPERATURE": "temperatuur",
"WIND": "wind",
"WIND_DIRECTIONS": {
"N": "N",
"NNE": "NNO",
"NE": "NO",
"E": "O",
"ESE": "OZO",
"SE": "ZO",
"SSE": "ZZO",
"SSW": "ZZW",
"SW": "ZW",
"WSW": "WZW",
"W": "W",
"WNW": "WNW",
"NW": "NW",
"NNW": "NNW",
"ENE": "ONO",
"S": "Z"
},
"DARK_SKY": {
"clear-day": "heldere dag",
"clear-night": "heldere nacht",
"cloudy": "bewolkt",
"fog": "mist",
"partly-cloudy-day": "gedeeltelijk bewolkte dag",
"partly-cloudy-night": "gedeeltelijk bewolkte nacht",
"rain": "regen",
"sleet": "natte sneeuw",
"snow": "sneeuw",
"wind": "wind"
}
},
"WITH_GPX": "met .gpx bestand",
"WITHOUT_GPX": "zonder .gpx bestand",
"WORKOUT": "training | trainingen",
"WORKOUT_DELETION_CONFIRMATION": "Weet u zeker dat u deze training wilt verwijderen?",
"ZIP_ARCHIVE": ".zip bestand",
"ZIP_ARCHIVE_DESCRIPTION": "of .zip archief met .gpx bestanden",
"ADD_WORKOUT": "Training toevoegen",
"ANALYSIS": "analyse",
"DISPLAY_FILTERS": "toon filters",
"NO_DATA_CLEANING": "data vanuit gpx, zonder op te schonen",
"INVALID_DURATION": "De duur moet langer zijn dan 0 seconden",
"NO_WORKOUTS": "Geen trainingen.",
"RECORD": "record | records",
"RECORD_FD": "Langste afstand",
"START_AND_FINISH": "Start en aankomst",
"WORKOUT_DATE": "datum training"
}

View File

@ -98,7 +98,7 @@ const dateStringFormats: Record<string, string> = {
en: 'MMM. do, yyyy',
fr: 'd MMM yyyy',
// nb: 'do MMM yyyy',
// nl: 'd MMM yyyy',
nl: 'd MMM yyyy',
}
export const getDateFormat = (dateFormat: string, language: string): string => {

View File

@ -1,6 +1,6 @@
/* eslint-disable import/no-duplicates */
import { Locale } from 'date-fns'
import { de, enUS, fr } from 'date-fns/locale'
import { de, enUS, fr, nl } from 'date-fns/locale'
import createI18n from '@/i18n'
@ -9,7 +9,7 @@ export const localeFromLanguage: Record<string, Locale> = {
en: enUS,
fr: fr,
// nb: nb, // disabled for now
// nl: nl, // disabled for now
nl: nl,
}
export const languageLabels: Record<string, string> = {
@ -17,7 +17,7 @@ export const languageLabels: Record<string, string> = {
en: 'English',
fr: 'Français',
// nb: 'Norsk bokmål', // disabled for now
// nl: 'Nederlands', // disabled for now
nl: 'Nederlands',
}
const { availableLocales } = createI18n.global