Merge branch 'dev' into alternate_weather_api
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "fittrackee_client",
|
||||
"version": "0.7.3",
|
||||
"version": "0.7.10",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
@ -11,22 +11,26 @@
|
||||
"i18n:report": "vue-cli-service i18n:report --src \"./src/**/*.?(js|vue)\" --locales \"./src/locales/**/*.json\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@tmcw/togeojson": "^5.4.0",
|
||||
"@vue-leaflet/vue-leaflet": "^0.6.1",
|
||||
"@tmcw/togeojson": "^5.5.0",
|
||||
"@vue-leaflet/vue-leaflet": "^0.7.0",
|
||||
"@zxcvbn-ts/core": "^2.0.5",
|
||||
"@zxcvbn-ts/language-common": "^2.0.1",
|
||||
"@zxcvbn-ts/language-de": "^2.1.0",
|
||||
"@zxcvbn-ts/language-en": "^2.1.0",
|
||||
"@zxcvbn-ts/language-fr": "^2.2.0",
|
||||
"axios": "^0.26.1",
|
||||
"chart.js": "^3.9.1",
|
||||
"chartjs-plugin-datalabels": "^2.1.0",
|
||||
"core-js": "^3.26.0",
|
||||
"@zxcvbn-ts/language-it": "^2.1.0",
|
||||
"axios": "^1.2.1",
|
||||
"chart.js": "^4.1.1",
|
||||
"chartjs-plugin-datalabels": "^2.2.0",
|
||||
"core-js": "^3.26.1",
|
||||
"date-fns": "^2.29.3",
|
||||
"date-fns-tz": "^1.3.7",
|
||||
"leaflet": "^1.9.2",
|
||||
"leaflet": "^1.9.3",
|
||||
"linkify-html": "^4.0.2",
|
||||
"linkifyjs": "^4.0.2",
|
||||
"register-service-worker": "^1.7.1",
|
||||
"vue": "^3.2.41",
|
||||
"sanitize-html": "^2.8.0",
|
||||
"vue": "^3.2.45",
|
||||
"vue-chart-3": "3.1.1",
|
||||
"vue-fullscreen": "^3.1.1",
|
||||
"vue-i18n": "^9.2.2",
|
||||
@ -35,10 +39,11 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@intlify/vue-i18n-loader": "^4.2.0",
|
||||
"@types/chai": "^4.3.3",
|
||||
"@types/mocha": "^10.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.42.0",
|
||||
"@typescript-eslint/parser": "^5.42.0",
|
||||
"@types/chai": "^4.3.4",
|
||||
"@types/mocha": "^10.0.1",
|
||||
"@types/sanitize-html": "^2.8.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.47.0",
|
||||
"@typescript-eslint/parser": "^5.47.0",
|
||||
"@vue/cli-plugin-babel": "~5.0.8",
|
||||
"@vue/cli-plugin-eslint": "~5.0.8",
|
||||
"@vue/cli-plugin-pwa": "~5.0.8",
|
||||
@ -48,18 +53,18 @@
|
||||
"@vue/cli-plugin-vuex": "~5.0.8",
|
||||
"@vue/cli-service": "~5.0.8",
|
||||
"@vue/eslint-config-typescript": "^11.0.2",
|
||||
"@vue/test-utils": "^2.2.1",
|
||||
"chai": "^4.3.6",
|
||||
"eslint": "8.26.0",
|
||||
"@vue/test-utils": "^2.2.6",
|
||||
"chai": "^4.3.7",
|
||||
"eslint": "8.30.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-import-resolver-typescript": "^3.5.2",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"eslint-plugin-vue": "^9.7.0",
|
||||
"prettier": "^2.7.1",
|
||||
"sass": "^1.55.0",
|
||||
"sass-loader": "^13.1.0",
|
||||
"typescript": "^4.8.4",
|
||||
"eslint-plugin-vue": "^9.8.0",
|
||||
"prettier": "^2.8.1",
|
||||
"sass": "^1.57.1",
|
||||
"sass-loader": "^13.2.0",
|
||||
"typescript": "^4.9.4",
|
||||
"vue-cli-plugin-i18n": "~2.3.1"
|
||||
},
|
||||
"eslintConfig": {
|
||||
|
@ -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>
|
||||
|
@ -0,0 +1,57 @@
|
||||
<template>
|
||||
<svg
|
||||
version="1.1"
|
||||
id="Capa_1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
x="0px"
|
||||
y="0px"
|
||||
viewBox="0 0 495.017 495.017"
|
||||
style="enable-background: new 0 0 495.017 495.017"
|
||||
xml:space="preserve"
|
||||
>
|
||||
<desc id="mountaineeringDescription">
|
||||
silhouette of a person doing mountaineering
|
||||
</desc>
|
||||
<g>
|
||||
<path
|
||||
d="M271.32,78.354c21.633,0,39.192-17.54,39.192-39.182C310.513,17.541,292.953,0,271.32,0
|
||||
c-21.633,0-39.175,17.541-39.175,39.173C232.146,60.814,249.688,78.354,271.32,78.354z"
|
||||
/>
|
||||
<path
|
||||
d="M312.763,349.373l-47.021-43.163l2.087-15.884l-70.055-4.301c-4.173,6.412-9.963,14.482-17.193,23.104l-19.17,72.416
|
||||
l-54.928,73.797c-8.185,11.007-5.92,26.567,5.095,34.76c4.449,3.314,9.658,4.916,14.817,4.916c7.583,0,15.058-3.461,19.941-10.011
|
||||
l57.794-77.641c1.893-2.539,3.284-5.417,4.092-8.475l16.625-62.781l45.518,41.786l-6.211,90.579
|
||||
c-0.938,13.691,9.381,25.548,23.083,26.485c0.565,0.041,1.146,0.057,1.73,0.057c12.938,0,23.859-10.035,24.748-23.146
|
||||
l7.036-102.498C321.269,361.843,318.325,354.477,312.763,349.373z"
|
||||
/>
|
||||
<path
|
||||
d="M398.667,183.428h-70.005l-39.482-56.053l0.13-0.956c1.405-10.708-1.506-21.537-8.091-30.101
|
||||
c-6.581-8.564-16.288-14.16-26.994-15.567c-11.858-1.545-23.1,2.271-31.54,9.429V43.548c0-8.022-6.503-14.532-14.542-14.532
|
||||
h-40.277c-8.038,0-14.542,6.51-14.542,14.532v22.637h-12.033c-8.586,0-16.628,4.255-21.463,11.363
|
||||
c-4.836,7.108-5.838,16.149-2.684,24.149l36.18,91.856v22.718c0,11.152,4.58,21.125,11.876,28.427
|
||||
c5.046-6.082,12.743-9.713,20.526-9.195l88.571,5.443l6.938-52.94l19.767,28.047c3.881,5.507,10.19,8.783,16.921,8.783h80.744
|
||||
c11.437,0,20.701-9.268,20.701-20.702C419.367,192.696,410.104,183.428,398.667,183.428z"
|
||||
/>
|
||||
<path
|
||||
d="M191.093,273.166l82.25,5.055c7.117,0.55,12.748-4.789,13.166-11.64c0.422-6.849-4.786-12.737-11.643-13.157l-89.903-5.523
|
||||
c-5.015-0.348-9.573,2.352-11.805,6.737c-2.039,3.97-50.771,96.822-143.537,83.768c-6.662-0.906-13.068,3.777-14.023,10.569
|
||||
c-0.954,6.794,3.768,13.078,10.563,14.032c7.198,1.011,14.169,1.488,20.895,1.488C128.224,364.487,177.119,295.915,191.093,273.166
|
||||
z"
|
||||
/>
|
||||
<path
|
||||
d="M476.659,251.313c-14.223-9.793-36.401-18.891-66.555-18.488c-35.468,0.473-68.598,27.748-69.198,28.412
|
||||
c-6.13,6.835-5.562,17.348,1.278,23.478c6.824,6.139,17.339,5.564,23.469-1.268l0.114-0.13c0,0,19.495-20.418,36.814-24.925
|
||||
l-5.822,215.844c0,0.307,0,0.678,0,0.994c0.289,10.198,8.765,18.236,18.955,17.963c10.206-0.276,18.245-8.759,17.985-18.957
|
||||
l-5.951-221.215c27.271,0.444,43.739,8.938,43.739,8.938c2.65,1.035,5.741,0.022,7.242-2.501
|
||||
C480.414,256.635,479.359,253.172,476.659,251.313z"
|
||||
/>
|
||||
</g>
|
||||
</svg>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'Mountaineering',
|
||||
}
|
||||
</script>
|
@ -12,6 +12,7 @@
|
||||
<MountainBikingElectric
|
||||
v-if="sportLabel === 'Mountain Biking (Electric)'"
|
||||
/>
|
||||
<Mountaineering v-if="sportLabel === 'Mountaineering'" />
|
||||
<Rowing v-if="sportLabel === 'Rowing'" />
|
||||
<Running v-if="sportLabel === 'Running'" />
|
||||
<SkiingAlpine v-if="sportLabel === 'Skiing (Alpine)'" />
|
||||
@ -31,6 +32,7 @@
|
||||
import Hiking from '@/components/Common/Images/SportImage/Hiking.vue'
|
||||
import MountainBiking from '@/components/Common/Images/SportImage/MountainBiking.vue'
|
||||
import MountainBikingElectric from '@/components/Common/Images/SportImage/MountainBikingElectric.vue'
|
||||
import Mountaineering from '@/components/Common/Images/SportImage/Mountaineering.vue'
|
||||
import Rowing from '@/components/Common/Images/SportImage/Rowing.vue'
|
||||
import Running from '@/components/Common/Images/SportImage/Running.vue'
|
||||
import SkiingAlpine from '@/components/Common/Images/SportImage/SkiingAlpine.vue'
|
||||
|
@ -5,8 +5,8 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { ChartData, ChartOptions, LayoutItem } from 'chart.js'
|
||||
import { ComputedRef, PropType, computed, defineComponent } from 'vue'
|
||||
import { ChartOptions, LayoutItem } from 'chart.js'
|
||||
import { PropType, computed, defineComponent } from 'vue'
|
||||
import { BarChart, useBarChart } from 'vue-chart-3'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
@ -60,7 +60,7 @@
|
||||
? 'm'
|
||||
: 'km'
|
||||
}
|
||||
const chartData: ComputedRef<ChartData<'bar'>> = computed(() => ({
|
||||
const chartData = computed(() => ({
|
||||
labels: props.labels,
|
||||
// workaround to avoid dataset modification
|
||||
datasets: JSON.parse(JSON.stringify(props.datasets)),
|
||||
|
@ -197,14 +197,9 @@
|
||||
.nav-item {
|
||||
padding: 0 10px;
|
||||
|
||||
&.dropdown-wrapper {
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
::v-deep(.dropdown-list) {
|
||||
margin-left: -10px;
|
||||
padding-left: 10px;
|
||||
width: 75px;
|
||||
margin-left: -95px !important;
|
||||
width: 115px !important;
|
||||
}
|
||||
}
|
||||
|
||||
@ -294,6 +289,11 @@
|
||||
|
||||
.nav-item {
|
||||
padding: 7px 25px;
|
||||
|
||||
::v-deep(.dropdown-list) {
|
||||
margin-left: initial !important;
|
||||
width: auto !important;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-profile-img {
|
||||
|
@ -242,5 +242,10 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#language,
|
||||
#date_format {
|
||||
padding: $default-padding * 0.5;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -114,7 +114,7 @@
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="data altitude" v-if="workout && workout.with_gpx">
|
||||
<div class="data altitude" v-if="hasElevation(workout)">
|
||||
<i class="fa fa-location-arrow" aria-hidden="true" />
|
||||
<div class="data-values">
|
||||
+<Distance
|
||||
@ -167,6 +167,10 @@
|
||||
const locale: ComputedRef<Locale> = computed(
|
||||
() => store.getters[ROOT_STORE.GETTERS.LOCALE]
|
||||
)
|
||||
|
||||
function hasElevation(workout: IWorkout): boolean {
|
||||
return workout && workout.ascent !== null && workout.descent !== null
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
@ -108,7 +108,7 @@
|
||||
},
|
||||
},
|
||||
scales: {
|
||||
[displayDistance.value ? 'xDistance' : 'xDuration']: {
|
||||
x: {
|
||||
grid: {
|
||||
drawOnChartArea: false,
|
||||
},
|
||||
|
@ -3,7 +3,13 @@
|
||||
<Card>
|
||||
<template #title>{{ $t('workouts.NOTES') }}</template>
|
||||
<template #content>
|
||||
{{ notes && notes !== '' ? notes : $t('workouts.NO_NOTES') }}
|
||||
<span
|
||||
v-html="
|
||||
notes && notes !== ''
|
||||
? linkifyAndClean(notes)
|
||||
: $t('workouts.NO_NOTES')
|
||||
"
|
||||
/>
|
||||
</template>
|
||||
</Card>
|
||||
</div>
|
||||
@ -12,6 +18,8 @@
|
||||
<script setup lang="ts">
|
||||
import { toRefs, withDefaults } from 'vue'
|
||||
|
||||
import { linkifyAndClean } from '@/utils/inputs'
|
||||
|
||||
interface Props {
|
||||
notes?: string | null
|
||||
}
|
||||
|
@ -37,7 +37,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label> {{ $t('workouts.SPORT', 1) }}: </label>
|
||||
<label> {{ $t('workouts.SPORT', 1) }}*: </label>
|
||||
<select
|
||||
id="sport"
|
||||
required
|
||||
@ -57,7 +57,7 @@
|
||||
<div class="form-item" v-if="isCreation && withGpx">
|
||||
<label for="gpxFile">
|
||||
{{ $t('workouts.GPX_FILE') }}
|
||||
{{ $t('workouts.ZIP_ARCHIVE_DESCRIPTION') }}:
|
||||
{{ $t('workouts.ZIP_ARCHIVE_DESCRIPTION') }}*:
|
||||
</label>
|
||||
<input
|
||||
id="gpxFile"
|
||||
@ -105,7 +105,7 @@
|
||||
<div v-if="!withGpx">
|
||||
<div class="workout-date-duration">
|
||||
<div class="form-item">
|
||||
<label>{{ $t('workouts.WORKOUT_DATE') }}:</label>
|
||||
<label>{{ $t('workouts.WORKOUT_DATE') }}*:</label>
|
||||
<div class="workout-date-time">
|
||||
<input
|
||||
id="workout-date"
|
||||
@ -129,12 +129,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>{{ $t('workouts.DURATION') }}:</label>
|
||||
<label>{{ $t('workouts.DURATION') }}*:</label>
|
||||
<div>
|
||||
<input
|
||||
id="workout-duration-hour"
|
||||
name="workout-duration-hour"
|
||||
class="workout-duration"
|
||||
:class="{ errored: isDurationInvalid() }"
|
||||
type="text"
|
||||
placeholder="HH"
|
||||
minlength="1"
|
||||
@ -150,6 +151,7 @@
|
||||
id="workout-duration-minutes"
|
||||
name="workout-duration-minutes"
|
||||
class="workout-duration"
|
||||
:class="{ errored: isDurationInvalid() }"
|
||||
type="text"
|
||||
pattern="^([0-5][0-9])$"
|
||||
minlength="2"
|
||||
@ -165,6 +167,7 @@
|
||||
id="workout-duration-seconds"
|
||||
name="workout-duration-seconds"
|
||||
class="workout-duration"
|
||||
:class="{ errored: isDurationInvalid() }"
|
||||
type="text"
|
||||
pattern="^([0-5][0-9])$"
|
||||
minlength="2"
|
||||
@ -178,22 +181,59 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>
|
||||
{{ $t('workouts.DISTANCE') }} ({{
|
||||
authUser.imperial_units ? 'mi' : 'km'
|
||||
}}):
|
||||
</label>
|
||||
<input
|
||||
name="workout-distance"
|
||||
type="number"
|
||||
min="0"
|
||||
step="0.001"
|
||||
required
|
||||
@invalid="invalidateForm"
|
||||
:disabled="loading"
|
||||
v-model="workoutForm.workoutDistance"
|
||||
/>
|
||||
<div class="workout-data">
|
||||
<div class="form-item">
|
||||
<label>
|
||||
{{ $t('workouts.DISTANCE') }} ({{
|
||||
authUser.imperial_units ? 'mi' : 'km'
|
||||
}})*:
|
||||
</label>
|
||||
<input
|
||||
:class="{ errored: isDistanceInvalid() }"
|
||||
name="workout-distance"
|
||||
type="number"
|
||||
min="0"
|
||||
step="0.001"
|
||||
required
|
||||
@invalid="invalidateForm"
|
||||
:disabled="loading"
|
||||
v-model="workoutForm.workoutDistance"
|
||||
/>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>
|
||||
{{ $t('workouts.ASCENT') }} ({{
|
||||
authUser.imperial_units ? 'ft' : 'm'
|
||||
}}):
|
||||
</label>
|
||||
<input
|
||||
:class="{ errored: isElevationInvalid() }"
|
||||
name="workout-ascent"
|
||||
type="number"
|
||||
min="0"
|
||||
step="0.01"
|
||||
@invalid="invalidateForm"
|
||||
:disabled="loading"
|
||||
v-model="workoutForm.workoutAscent"
|
||||
/>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>
|
||||
{{ $t('workouts.DESCENT') }} ({{
|
||||
authUser.imperial_units ? 'ft' : 'm'
|
||||
}}):
|
||||
</label>
|
||||
<input
|
||||
:class="{ errored: isElevationInvalid() }"
|
||||
name="workout-descent"
|
||||
type="number"
|
||||
min="0"
|
||||
step="0.01"
|
||||
@invalid="invalidateForm"
|
||||
:disabled="loading"
|
||||
v-model="workoutForm.workoutDescent"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
@ -228,6 +268,7 @@
|
||||
<script setup lang="ts">
|
||||
import {
|
||||
ComputedRef,
|
||||
Ref,
|
||||
computed,
|
||||
reactive,
|
||||
ref,
|
||||
@ -300,12 +341,15 @@
|
||||
workoutDurationMinutes: '',
|
||||
workoutDurationSeconds: '',
|
||||
workoutDistance: '',
|
||||
workoutAscent: '',
|
||||
workoutDescent: '',
|
||||
})
|
||||
const withGpx = ref(
|
||||
props.workout.id ? props.workout.with_gpx : props.isCreation
|
||||
)
|
||||
let gpxFile: File | null = null
|
||||
const formErrors = ref(false)
|
||||
const payloadErrorMessages: Ref<string[]> = ref([])
|
||||
|
||||
onMounted(() => {
|
||||
if (props.workout.id) {
|
||||
@ -337,26 +381,78 @@
|
||||
const duration = workout.duration.split(':')
|
||||
workoutForm.workoutDistance = `${
|
||||
authUser.value.imperial_units
|
||||
? convertDistance(workout.distance, 'km', 'mi', 2)
|
||||
: parseFloat(workout.distance.toFixed(2))
|
||||
? convertDistance(workout.distance, 'km', 'mi', 3)
|
||||
: parseFloat(workout.distance.toFixed(3))
|
||||
}`
|
||||
workoutForm.workoutDate = workoutDateTime.workout_date
|
||||
workoutForm.workoutTime = workoutDateTime.workout_time
|
||||
workoutForm.workoutDurationHour = duration[0]
|
||||
workoutForm.workoutDurationMinutes = duration[1]
|
||||
workoutForm.workoutDurationSeconds = duration[2]
|
||||
workoutForm.workoutAscent =
|
||||
workout.ascent === null
|
||||
? ''
|
||||
: `${
|
||||
authUser.value.imperial_units
|
||||
? convertDistance(workout.ascent, 'm', 'ft', 2)
|
||||
: parseFloat(workout.ascent.toFixed(2))
|
||||
}`
|
||||
workoutForm.workoutDescent =
|
||||
workout.descent === null
|
||||
? ''
|
||||
: `${
|
||||
authUser.value.imperial_units
|
||||
? convertDistance(workout.descent, 'm', 'ft', 2)
|
||||
: parseFloat(workout.descent.toFixed(2))
|
||||
}`
|
||||
}
|
||||
}
|
||||
function isDistanceInvalid() {
|
||||
return payloadErrorMessages.value.includes('workouts.INVALID_DISTANCE')
|
||||
}
|
||||
function isDurationInvalid() {
|
||||
return payloadErrorMessages.value.includes('workouts.INVALID_DURATION')
|
||||
}
|
||||
function isElevationInvalid() {
|
||||
return payloadErrorMessages.value.includes(
|
||||
'workouts.INVALID_ASCENT_OR_DESCENT'
|
||||
)
|
||||
}
|
||||
function formatPayload(payload: IWorkoutForm) {
|
||||
payloadErrorMessages.value = []
|
||||
payload.title = workoutForm.title
|
||||
payload.distance = authUser.value.imperial_units
|
||||
? convertDistance(+workoutForm.workoutDistance, 'mi', 'km', 3)
|
||||
: +workoutForm.workoutDistance
|
||||
payload.duration =
|
||||
+workoutForm.workoutDurationHour * 3600 +
|
||||
+workoutForm.workoutDurationMinutes * 60 +
|
||||
+workoutForm.workoutDurationSeconds
|
||||
if (payload.duration <= 0) {
|
||||
payloadErrorMessages.value.push('workouts.INVALID_DURATION')
|
||||
}
|
||||
payload.distance = authUser.value.imperial_units
|
||||
? convertDistance(+workoutForm.workoutDistance, 'mi', 'km', 3)
|
||||
: +workoutForm.workoutDistance
|
||||
if (payload.distance <= 0) {
|
||||
payloadErrorMessages.value.push('workouts.INVALID_DISTANCE')
|
||||
}
|
||||
payload.workout_date = `${workoutForm.workoutDate} ${workoutForm.workoutTime}`
|
||||
payload.ascent =
|
||||
workoutForm.workoutAscent === ''
|
||||
? null
|
||||
: authUser.value.imperial_units
|
||||
? convertDistance(+workoutForm.workoutAscent, 'ft', 'm', 3)
|
||||
: +workoutForm.workoutAscent
|
||||
payload.descent =
|
||||
workoutForm.workoutDescent === ''
|
||||
? null
|
||||
: authUser.value.imperial_units
|
||||
? convertDistance(+workoutForm.workoutDescent, 'ft', 'm', 3)
|
||||
: +workoutForm.workoutDescent
|
||||
if (
|
||||
(payload.ascent !== null && payload.descent === null) ||
|
||||
(payload.ascent === null && payload.descent !== null)
|
||||
) {
|
||||
payloadErrorMessages.value.push('workouts.INVALID_ASCENT_OR_DESCENT')
|
||||
}
|
||||
}
|
||||
function updateWorkout() {
|
||||
const payload: IWorkoutForm = {
|
||||
@ -369,10 +465,17 @@
|
||||
} else {
|
||||
formatPayload(payload)
|
||||
}
|
||||
store.dispatch(WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT, {
|
||||
workoutId: props.workout.id,
|
||||
data: payload,
|
||||
})
|
||||
if (payloadErrorMessages.value.length > 0) {
|
||||
store.commit(
|
||||
ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,
|
||||
payloadErrorMessages.value
|
||||
)
|
||||
} else {
|
||||
store.dispatch(WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT, {
|
||||
workoutId: props.workout.id,
|
||||
data: payload,
|
||||
})
|
||||
}
|
||||
} else {
|
||||
if (withGpx.value) {
|
||||
if (!gpxFile) {
|
||||
@ -384,7 +487,17 @@
|
||||
store.dispatch(WORKOUTS_STORE.ACTIONS.ADD_WORKOUT, payload)
|
||||
} else {
|
||||
formatPayload(payload)
|
||||
store.dispatch(WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX, payload)
|
||||
if (payloadErrorMessages.value.length > 0) {
|
||||
store.commit(
|
||||
ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,
|
||||
payloadErrorMessages.value
|
||||
)
|
||||
} else {
|
||||
store.dispatch(
|
||||
WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX,
|
||||
payload
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -507,6 +620,22 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.workout-data {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
.form-item {
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
@media screen and (max-width: $medium-limit) {
|
||||
flex-direction: column;
|
||||
.form-item {
|
||||
width: initial;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -521,5 +650,9 @@
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.errored {
|
||||
outline: 2px solid var(--input-error-color);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -134,7 +134,7 @@
|
||||
{{ $t('workouts.ASCENT') }}
|
||||
</span>
|
||||
<Distance
|
||||
v-if="workout.with_gpx"
|
||||
v-if="workout.ascent !== null"
|
||||
:distance="workout.ascent"
|
||||
unitFrom="m"
|
||||
:useImperialUnits="user.imperial_units"
|
||||
@ -145,7 +145,7 @@
|
||||
{{ $t('workouts.DESCENT') }}
|
||||
</span>
|
||||
<Distance
|
||||
v-if="workout.with_gpx"
|
||||
v-if="workout.descent !== null"
|
||||
:distance="workout.descent"
|
||||
unitFrom="m"
|
||||
:useImperialUnits="user.imperial_units"
|
||||
|
@ -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'] // to remove after norwegian 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)
|
||||
|
@ -2,5 +2,5 @@
|
||||
"CONTACT_ADMIN": "Kontaktiere den Administrator",
|
||||
"FITTRACKEE_DESCRIPTION": "<strong>FitTrackee</strong> ist ein selbst-gehosteter Outdoor-Aktivitäts-Tracker.",
|
||||
"FITTRACKEE_LICENSE": "unter {0} Lizenz ",
|
||||
"SOURCE_CODE": "Quellkode"
|
||||
"SOURCE_CODE": "Quellcode"
|
||||
}
|
||||
|
@ -1,59 +1,59 @@
|
||||
{
|
||||
"ACTION": "Aktion",
|
||||
"ACTIVATE_USER_ACCOUNT": "Aktiviere Konto",
|
||||
"ACTIVE": "Aktiv",
|
||||
"ADMIN_RIGHTS_DELETE_USER_ACCOUNT": "Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto.",
|
||||
"ADMIN": "Admin",
|
||||
"ADMINISTRATION": "Administration",
|
||||
"APPLICATION": "Anwendung",
|
||||
"APP_CONFIG": {
|
||||
"ADMIN_CONTACT": "Kontakt-E-Mail des Administrators",
|
||||
"MAX_USERS_LABEL": "Max. Anzahl aktiver Nutzer",
|
||||
"MAX_USERS_HELP": "Wenn 0, gibt es keine Registrierungslimitierung..",
|
||||
"MAX_FILES_IN_ZIP_LABEL": "Max. Dateianzahl im zip Archiv",
|
||||
"NO_CONTACT_EMAIL": "keine Kontakt-E-Mail",
|
||||
"SINGLE_UPLOAD_MAX_SIZE_LABEL": "Max. Größe der hochgeladenen Dateien (in Mb)",
|
||||
"TITLE": "Anwendungskonfiguration",
|
||||
"ZIP_UPLOAD_MAX_SIZE_LABEL": "Max. Größe des zip Archives (in Mb)"
|
||||
},
|
||||
"BACK_TO_ADMIN": "Zurück zu Admin",
|
||||
"CONFIRM_USER_ACCOUNT_DELETION": "Möchtest du wirklich das {0} Konto löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden.",
|
||||
"CONFIRM_USER_PASSWORD_RESET": "Möchtest du wirklich das {0} Passwort zurücksetzen?",
|
||||
"CURRENT_EMAIL": "Aktuelle E-Mail",
|
||||
"DELETE_USER": "Lösche Nutzer",
|
||||
"EMAIL_SENDING_DISABLED": "E-Mail-Versand ist deaktiviert.",
|
||||
"ENABLE_DISABLE_SPORTS": "Aktivieren/Deaktivieren von Sportarten.",
|
||||
"NEW_EMAIL": "Neue E-Mail",
|
||||
"PASSWORD_RESET_SUCCESSFUL": "Das wasswort wurde zurückgesetzt.",
|
||||
"REGISTRATION_DISABLED": "Registrierung ist derzeit deaktiviert.",
|
||||
"REGISTRATION_ENABLED": "Registrierung ist derzeit aktiviert.",
|
||||
"RESET_USER_PASSWORD": "Passwort zurücksetzen",
|
||||
"SPORTS": {
|
||||
"TABLE": {
|
||||
"ACTIVE": "Aktiv",
|
||||
"HAS_WORKOUTS": "Trainings existieren",
|
||||
"IMAGE": "Bild",
|
||||
"LABEL": "Titel"
|
||||
"ACTION": "Aktion",
|
||||
"ACTIVATE_USER_ACCOUNT": "Aktiviere Konto",
|
||||
"ACTIVE": "Aktiv",
|
||||
"ADMIN": "Admin",
|
||||
"ADMINISTRATION": "Administration",
|
||||
"ADMIN_RIGHTS_DELETE_USER_ACCOUNT": "Hinzufügen/Entfernen von Administratorrechten, Lösche Nutzerkonto.",
|
||||
"APPLICATION": "Anwendung",
|
||||
"APP_CONFIG": {
|
||||
"ADMIN_CONTACT": "Kontakt-E-Mail des Administrators",
|
||||
"MAX_FILES_IN_ZIP_LABEL": "Max. Dateianzahl im zip Archiv",
|
||||
"MAX_USERS_HELP": "Wenn 0, gibt es keine Registrierungslimitierung..",
|
||||
"MAX_USERS_LABEL": "Max. Anzahl aktiver Nutzer",
|
||||
"NO_CONTACT_EMAIL": "keine Kontakt-E-Mail",
|
||||
"SINGLE_UPLOAD_MAX_SIZE_LABEL": "Max. Größe der hochgeladenen Dateien (in Mb)",
|
||||
"TITLE": "Anwendungskonfiguration",
|
||||
"ZIP_UPLOAD_MAX_SIZE_LABEL": "Max. Größe des zip Archives (in Mb)"
|
||||
},
|
||||
"TITLE": "Sportarten Administration"
|
||||
},
|
||||
"UPDATE_APPLICATION_DESCRIPTION": "Aktualisiere Anwemdungskonfiguration (maximale Anzahl an registrierten Nutzern, maximale Dateigröße).",
|
||||
"UPDATE_USER_EMAIL": "Aktualisiere E-Mail",
|
||||
"USER": "Nutzer",
|
||||
"USER_EMAIL_UPDATE_SUCCESSFUL": "Die E-Mail Adresse wurde aktualisiert.",
|
||||
"USERS": {
|
||||
"TABLE": {
|
||||
"ADD_ADMIN_RIGHTS": "Administratorrechte hinzufügen",
|
||||
"REMOVE_ADMIN_RIGHTS": "Administratorrechte entfernen"
|
||||
"BACK_TO_ADMIN": "Zurück zu Admin",
|
||||
"CONFIRM_USER_ACCOUNT_DELETION": "Möchtest du wirklich das {0} Konto löschen? Alle Daten werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden.",
|
||||
"CONFIRM_USER_PASSWORD_RESET": "Möchtest du wirklich das {0} Passwort zurücksetzen?",
|
||||
"CURRENT_EMAIL": "Aktuelle E-Mail",
|
||||
"DELETE_USER": "Lösche Nutzer",
|
||||
"EMAIL_SENDING_DISABLED": "E-Mail-Versand ist deaktiviert.",
|
||||
"ENABLE_DISABLE_SPORTS": "Aktivieren/Deaktivieren von Sportarten.",
|
||||
"NEW_EMAIL": "Neue E-Mail",
|
||||
"PASSWORD_RESET_SUCCESSFUL": "Das wasswort wurde zurückgesetzt.",
|
||||
"REGISTRATION_DISABLED": "Registrierung ist derzeit deaktiviert.",
|
||||
"REGISTRATION_ENABLED": "Registrierung ist derzeit aktiviert.",
|
||||
"RESET_USER_PASSWORD": "Passwort zurücksetzen",
|
||||
"SPORTS": {
|
||||
"TABLE": {
|
||||
"ACTIVE": "Aktiv",
|
||||
"HAS_WORKOUTS": "Trainings existieren",
|
||||
"IMAGE": "Bild",
|
||||
"LABEL": "Titel"
|
||||
},
|
||||
"TITLE": "Sportarten Administration"
|
||||
},
|
||||
"SELECTS": {
|
||||
"ORDER_BY": {
|
||||
"ADMIN": "Adminstatus",
|
||||
"CREATED_AT": "Registrierungsdatum",
|
||||
"IS_ACTIVE": "Accountstatus",
|
||||
"USERNAME": "Nutzername",
|
||||
"WORKOUTS_COUNT": "Trainingsanzahl"
|
||||
}
|
||||
}
|
||||
}
|
||||
"UPDATE_APPLICATION_DESCRIPTION": "Aktualisiere Anwemdungskonfiguration (maximale Anzahl an registrierten Nutzern, maximale Dateigröße).",
|
||||
"UPDATE_USER_EMAIL": "Aktualisiere E-Mail",
|
||||
"USER": "Nutzer",
|
||||
"USERS": {
|
||||
"SELECTS": {
|
||||
"ORDER_BY": {
|
||||
"ADMIN": "Adminstatus",
|
||||
"CREATED_AT": "Registrierungsdatum",
|
||||
"IS_ACTIVE": "Accountstatus",
|
||||
"USERNAME": "Nutzername",
|
||||
"WORKOUTS_COUNT": "Trainingsanzahl"
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
"ADD_ADMIN_RIGHTS": "Administratorrechte hinzufügen",
|
||||
"REMOVE_ADMIN_RIGHTS": "Administratorrechte entfernen"
|
||||
}
|
||||
},
|
||||
"USER_EMAIL_UPDATE_SUCCESSFUL": "Die E-Mail Adresse wurde aktualisiert."
|
||||
}
|
||||
|
@ -1,9 +1,11 @@
|
||||
{
|
||||
"ERROR": {
|
||||
"Network Error": "Netzwerkfehler.",
|
||||
"UNKNOWN": "Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.",
|
||||
"at least one file in zip archive exceeds size limit, please check the archive": "Mindestens eine Datei im ZIP-Archiv überschreitet das Größenlimit, bitte überprüfe das Archiv.",
|
||||
"email: valid email must be provided": "E-Mail: Eine gültige E-Mail muss angegeben werden.",
|
||||
"error during gpx processing": "Fehler bei der GPX-Verarbeitung.",
|
||||
"error during gpx file parsing": "Fehler beim Einlesen der GPX-Datei",
|
||||
"error during gpx processing": "Fehler bei der GPX-Verarbeitung.",
|
||||
"error on getting configuration": "Fehler beim Abrufen der Konfiguration.",
|
||||
"error when updating configuration": "Fehler beim Aktualisieren der Konfiguration",
|
||||
"error, please try again or contact the administrator": "Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.",
|
||||
@ -14,16 +16,16 @@
|
||||
"invalid payload": "Die bereitgestellten Daten sind ungültig.",
|
||||
"invalid token, please log in again": "Ungültiges Token, bitte erneut anmelden.",
|
||||
"invalid token, please request a new token": "Ungültiges Token, bitte erneut anmelden.",
|
||||
"Network Error": "Netzwerkfehler.",
|
||||
"new email must be different than curent email": "Die neue E-Mail muss sich von der aktuellen E-Mail unterscheiden",
|
||||
"no file part": "Keine Datei angegeben.",
|
||||
"no selected file": "Keine Datei ausgewählt.",
|
||||
"password: password and password confirmation do not match": "Passwort: Passwort und Passwortbestätigung stimmen nicht überein.",
|
||||
"provide a valid auth token": "Gebe ein gültiges Authentifizierungstoken an.",
|
||||
"signature expired, please log in again": "Die Signatur ist abgelaufen. Bitte melde dich erneut an.",
|
||||
"sorry, that username is already taken": "Es tut mir leid, der Benutzername ist schon vergeben.",
|
||||
"sport does not exist": "Sportart existiert nicht.",
|
||||
"signature expired, please log in again": "Die Signatur ist abgelaufen. Bitte melde dich erneut an.",
|
||||
"successfully registered": "Registrierung erfolgreich.",
|
||||
"the number of files in the archive exceeds the limit": "Die Anzahl der Dateien im Archiv überschreitet die Begrenzung.",
|
||||
"user does not exist": "Der Nutzer existiert nicht.",
|
||||
"valid email must be provided for admin contact": "Um den Administrator zu kontaktieren, muss eine gültige E-Mail-Adresse angegeben werden",
|
||||
"you can not delete your account, no other user has admin rights": "Du kannst Dein Konto nicht löschen, da kein anderer Nutzer hat Administratorrechte besitzt.",
|
||||
|
@ -9,14 +9,14 @@
|
||||
"HIDDEN": "Versteckt",
|
||||
"HOME": "Startseite",
|
||||
"SELECTS": {
|
||||
"ORDER": {
|
||||
"ASC": "aufsteigend",
|
||||
"DESC": "absteigend",
|
||||
"LABEL": "sortieren"
|
||||
},
|
||||
"ORDER_BY": {
|
||||
"LABEL": "sortiert nach"
|
||||
},
|
||||
"ORDER": {
|
||||
"LABEL": "sortieren",
|
||||
"ASC": "aufsteigend",
|
||||
"DESC": "absteigend"
|
||||
},
|
||||
"PER_PAGE": {
|
||||
"LABEL": "pro Seite"
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{
|
||||
"DASHBOARD": "Dashboard",
|
||||
"THIS_MONTH": "Dieser Monat"
|
||||
"DASHBOARD": "Dashboard",
|
||||
"THIS_MONTH": "Dieser Monat"
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"UNKNOWN": "Fehler. Bitte versuche es erneut oder kontaktiere den Administrator.",
|
||||
"APP_ERROR": "Bei der Anwendung scheinen einige Probleme aufgetreten zu sein.<br />Bitte versuche es später noch einmal oder kontaktiere den Administrator.",
|
||||
"NOT_FOUND": {
|
||||
"PAGE": "Seite nicht gefunden",
|
||||
"WORKOUT": "Training nicht gefunden"
|
||||
},
|
||||
"SOMETHING_WRONG": "Etwas lief schief"
|
||||
"APP_ERROR": "Bei der Anwendung scheinen einige Probleme aufgetreten zu sein.<br />Bitte versuche es später noch einmal oder kontaktiere den Administrator.",
|
||||
"NOT_FOUND": {
|
||||
"PAGE": "Seite nicht gefunden",
|
||||
"WORKOUT": "Training nicht gefunden"
|
||||
},
|
||||
"SOMETHING_WRONG": "Etwas lief schief",
|
||||
"UNKNOWN": "Fehler. Bitte versuche es erneut oder kontaktiere den Administrator."
|
||||
}
|
||||
|
@ -9,20 +9,20 @@
|
||||
"REDIRECT_URL": "Weiterleitungs-URL",
|
||||
"SCOPE": {
|
||||
"LABEL": "Geltungsbereich",
|
||||
"profile:write_DESCRIPTION": "erlaubt Schreibzugriff auf <code>auth</code>-Endpunkte",
|
||||
"application:write_DESCRIPTION": "erlaubt Schreibzugriff auf die Anwendungskonfiguration",
|
||||
"profile:read_DESCRIPTION": "erlaubt Lesezugriff auf <code>auth</code>-Endpunkte",
|
||||
"profile:write_DESCRIPTION": "erlaubt Schreibzugriff auf <code>auth</code>-Endpunkte",
|
||||
"users:read_DESCRIPTION": "erlaubt Lesezugriff auf <code>users</code>-Endpunkte",
|
||||
"users:write_DESCRIPTION": "erlaubt Schreibzugriff auf <code>users</code>-Endpunkte",
|
||||
"workouts:read_DESCRIPTION": "erlaubt Lesezugriff auf <code>workouts</code>-Endpunkte",
|
||||
"workouts:write_DESCRIPTION": "erlaubt Schreibzugriff auf <code>workouts</code>-Endpunkte",
|
||||
"application:write_DESCRIPTION": "erlaubt Schreibzugriff auf die Anwendungskonfiguration"
|
||||
"workouts:write_DESCRIPTION": "erlaubt Schreibzugriff auf <code>workouts</code>-Endpunkte"
|
||||
},
|
||||
"URL": "Anwendungs-URL"
|
||||
},
|
||||
"APPS_LIST": "OAuth2-Anwendungen",
|
||||
"APP_CREATED_SUCCESSFULLY": "Anwendung erfolgreich erstellt. Stelle sicher, dass du das Geheimnis kopierst, du kannst es nicht erneut anzeigen.",
|
||||
"APP_DELETION_CONFIRMATION": "Bist sicher, dass du diese App löschen willst?",
|
||||
"APP_REQUESTING_ACCESS": "Die Anwendung {0} fragt an:",
|
||||
"APPS_LIST": "OAuth2-Anwendungen",
|
||||
"AUTHORIZE_APP": "{0} den Zugriff auf deinen Account erlauben?",
|
||||
"COPY_TO_CLIPBOARD": "in Zwischenablage kopieren",
|
||||
"DELETE_APP": "Anwendung löschen",
|
||||
|
@ -17,6 +17,9 @@
|
||||
"Mountain Biking (Electric)": {
|
||||
"LABEL": "Mountainbiken (elektrisch)"
|
||||
},
|
||||
"Mountaineering": {
|
||||
"LABEL": "Bergsteigen"
|
||||
},
|
||||
"Rowing": {
|
||||
"LABEL": "Rudern"
|
||||
},
|
||||
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"STATISTICS": "Statistik",
|
||||
"TIME_FRAMES": {
|
||||
"week": "Woche",
|
||||
"month": "Monat",
|
||||
"year": "Jahr"
|
||||
}
|
||||
"STATISTICS": "Statistik",
|
||||
"TIME_FRAMES": {
|
||||
"month": "Monat",
|
||||
"week": "Woche",
|
||||
"year": "Jahr"
|
||||
}
|
||||
}
|
||||
|
@ -12,38 +12,38 @@
|
||||
"HIDE_PASSWORD": "Passwort verbergen",
|
||||
"INVALID_TOKEN": "Ungültiges Token, bitte fordere ein neues Passworts an.",
|
||||
"LANGUAGE": "Sprache",
|
||||
"LOG_IN": "Anmelden",
|
||||
"LOGIN": "Anmeldung",
|
||||
"LOGOUT": "Abmelden",
|
||||
"LOG_IN": "Anmelden",
|
||||
"NEW_PASSWORD": "Neues Passwort",
|
||||
"NO_USERS_FOUND": "Keine Nutzer gefunden.",
|
||||
"PASSWORD": "Passwort",
|
||||
"PASSWORD_INFO": "Mindestens 8 Zeichen sind erforderlich.",
|
||||
"PASSWORD_FORGOTTEN": "Passwort vergessen?",
|
||||
"PASSWORD_INFO": "Mindestens 8 Zeichen sind erforderlich.",
|
||||
"PASSWORD_RESET": "Passwort zurücksetzen",
|
||||
"PASSWORD_SENT_EMAIL_TEXT": "Prüfe Deine E-Mail. Wenn Deine Adresse in der Datenbank enthalten ist, wirst du eine E-Mail mit einem Link erhalten um Dein Passwort zurückzusetzen.",
|
||||
"PASSWORD_STRENGTH": {
|
||||
"WEAK": "schwach",
|
||||
"AVERAGE": "mittel",
|
||||
"GOOD": "gut",
|
||||
"STRONG": "start",
|
||||
"LABEL": "Passwortstärke",
|
||||
"STRONG": "start",
|
||||
"SUGGESTIONS": {
|
||||
"l33t": "Vermeide vorhersehbare Buchstabenersetzungen wie {'@'} für a.",
|
||||
"reverseWords": "Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter.",
|
||||
"allUppercase": "Schreibe einige, aber nicht alle Buchstaben groß.",
|
||||
"anotherWord": "Füge weitere weniger gebräuchliche Wörter hinzu.",
|
||||
"associatedYears": "Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden.",
|
||||
"capitalization": "Schreibe mehr als nur den ersten Buchstaben groß.",
|
||||
"dates": "Vermeide Daten und Jahreszahlen, die mit Dir in Verbindung gebracht werden.",
|
||||
"recentYears": "Vermeide Angabe von letzten Jahreszahlen.",
|
||||
"associatedYears": "Vermeide Jahreszahlen, die mit Dir in Verbindung gebracht werden.",
|
||||
"sequences": "Vermeide gebräuchliche Zeichenfolgen.",
|
||||
"repeated": "Vermeide wiederholungen von Wörtern und Zeichen.",
|
||||
"l33t": "Vermeide vorhersehbare Buchstabenersetzungen wie {'@'} für a.",
|
||||
"longerKeyboardPattern": "Verwende längere Tastaturmuster und ändere mehrmals die Schreibrichtung.",
|
||||
"anotherWord": "Füge weitere weniger gebräuchliche Wörter hinzu.",
|
||||
"useWords": "Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke.",
|
||||
"noNeed": "Du kannst sichere Passwörter erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden.",
|
||||
"pwned": "Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern."
|
||||
}
|
||||
"pwned": "Wenn Sie dieses Passwort auch anderweitig verwenden, sollten Sie es ändern.",
|
||||
"recentYears": "Vermeide Angabe von letzten Jahreszahlen.",
|
||||
"repeated": "Vermeide wiederholungen von Wörtern und Zeichen.",
|
||||
"reverseWords": "Vermeide umgekehrte Schreibweisen gebräuchlicher Wörter.",
|
||||
"sequences": "Vermeide gebräuchliche Zeichenfolgen.",
|
||||
"useWords": "Verwenden Sie mehrere Wörter, aber vermeide gebräuchliche Ausdrücke."
|
||||
},
|
||||
"WEAK": "schwach"
|
||||
},
|
||||
"PASSWORD_UPDATED": "Dein Passwort wurde aktualisiert. Klicke {0} um dich anzumelden.",
|
||||
"PROFILE": {
|
||||
@ -57,20 +57,32 @@
|
||||
"EDIT_PREFERENCES": "Einstellungen ändern",
|
||||
"EDIT_SPORTS_PREFERENCES": "Einstellungen für Sportarten ändern",
|
||||
"ERRORED_EMAIL_UPDATE": "Bitte {0} um Deine E-Mail Adresse nochmals zu ändern oder kontaktiere den Administrator",
|
||||
"FIRST_NAME": "Vorname",
|
||||
"FIRST_DAY_OF_WEEK": "Erster Tag der Woche",
|
||||
"FIRST_NAME": "Vorname",
|
||||
"LANGUAGE": "Sprache",
|
||||
"LAST_NAME": "Nachname",
|
||||
"LOCATION": "Ort",
|
||||
"MONDAY": "Montag",
|
||||
"PICTURE": "Bild",
|
||||
"PICTURE_EDITION": "Bildausgabe",
|
||||
"PICTURE_UPDATE": "Bild aktualisieren",
|
||||
"PICTURE_REMOVE": "Bild entfernen",
|
||||
"PICTURE_UPDATE": "Bild aktualisieren",
|
||||
"PREFERENCES_EDITION": "Einstellungsausgabe",
|
||||
"PROFILE_EDITION": "Profil-Ausgabe",
|
||||
"REGISTRATION_DATE": "Regirierungsdatum",
|
||||
"REGISTRATION_DATE": "Registrierungsdatum",
|
||||
"SPORT": {
|
||||
"ACTION": "Aktion",
|
||||
"COLOR": "Farbe",
|
||||
"DISABLED_BY_ADMIN": "vom Admin deaktiviert",
|
||||
"IS_ACTIVE": "aktiv",
|
||||
"LABEL": "Titel",
|
||||
"STOPPED_SPEED_THRESHOLD": "Geschwindigkeitsschwellenwert für Stopp"
|
||||
},
|
||||
"SPORTS_EDITION": "Sportarten-Einstellungsausgabe",
|
||||
"SUCCESSFUL_EMAIL_UPDATE": "Dein Konto wurde erfolgreich aktualisiert. Bitte prüfe Deine E-Mail um die neue E-Mail Adresse zu bestätigen.",
|
||||
"SUCCESSFUL_REGISTRATION": "Dein Konto wurde erfolgreich erstellt.",
|
||||
"SUCCESSFUL_REGISTRATION_WITH_EMAIL": "Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt.",
|
||||
"SUCCESSFUL_UPDATE": "Dein Konto wurde erfolgreich aktualisiert.",
|
||||
"SUNDAY": "Sontag",
|
||||
"TABS": {
|
||||
"ACCOUNT": "Konto",
|
||||
@ -80,32 +92,20 @@
|
||||
"PROFILE": "Profil",
|
||||
"SPORTS": "Sportarten"
|
||||
},
|
||||
"SPORT": {
|
||||
"ACTION": "Aktion",
|
||||
"COLOR": "Farbe",
|
||||
"DISABLED_BY_ADMIN": "vom Admin deaktiviert",
|
||||
"IS_ACTIVE": "aktiv",
|
||||
"LABEL": "Titel",
|
||||
"STOPPED_SPEED_THRESHOLD": "Geschwindigkeitsschwellenwert für Stopp"
|
||||
},
|
||||
"SUCCESSFUL_EMAIL_UPDATE": "Dein Konto wurde erfolgreich aktualisiert. Bitte prüfe Deine E-Mail um die neue E-Mail Adresse zu bestätigen.",
|
||||
"SUCCESSFUL_REGISTRATION": "Dein Konto wurde erfolgreich erstellt.",
|
||||
"SUCCESSFUL_REGISTRATION_WITH_EMAIL": "Ein Aktivierungslink für Dein Konto wurde an die angegebene E-Mail Adresse geschickt.",
|
||||
"SUCCESSFUL_UPDATE": "Dein Konto wurde erfolgreich aktualisiert.",
|
||||
"TIMEZONE": "Zeitzone",
|
||||
"UNITS": {
|
||||
"LABEL": "Einheiten für die Distanz",
|
||||
"IMPERIAL": "Imperiales System (ft, mi, mph, °F)",
|
||||
"LABEL": "Einheiten für die Distanz",
|
||||
"METRIC": "Metrisches System (m, km, m/s, °C)"
|
||||
},
|
||||
"TIMEZONE": "Zeitzone"
|
||||
}
|
||||
},
|
||||
"REGISTER": "Registrieren",
|
||||
"RESENT_ACCOUNT_CONFIRMATION": "E-Mail zur Kontobestätigung erneut senden",
|
||||
"REGISTER_DISABLED": "Entschuldigung, die Registrierung ist deaktiviert.",
|
||||
"RESENT_ACCOUNT_CONFIRMATION": "E-Mail zur Kontobestätigung erneut senden",
|
||||
"RESET_PASSWORD": "Passwort zurücksetzen",
|
||||
"SHOW_PASSWORD": "Passwort anzeigen",
|
||||
"THIS_USER_ACCOUNT_IS_INACTIVE": "Dieser Account ist inaktiv.",
|
||||
"USER_PICTURE": "Benutzerbild",
|
||||
"USERNAME": "Nutzername",
|
||||
"USERNAME_INFO": "3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt."
|
||||
"USERNAME_INFO": "3 bis 30 Zeichen sind erforderlich, nur alphanumerische Zeichen und der Unterstrich _ sind erlaubt.",
|
||||
"USER_PICTURE": "Benutzerbild"
|
||||
}
|
||||
|
@ -2,8 +2,8 @@
|
||||
"ADD_WORKOUT": "Training hinzufügen",
|
||||
"ANALYSIS": "Analyse",
|
||||
"ASCENT": "Aufstieg",
|
||||
"AVE_SPEED": "Durchschn. Geschwindigkeit",
|
||||
"AVERAGE_SPEED": "Durchschnittsgeschwindigkeit",
|
||||
"AVE_SPEED": "Durchschn. Geschwindigkeit",
|
||||
"BACK_TO_WORKOUT": "zurück zum Training",
|
||||
"DATE": "Datum",
|
||||
"DESCENT": "Abstieg",
|
||||
@ -16,6 +16,8 @@
|
||||
"FROM": "Von",
|
||||
"GPX_FILE": ".gpx Datei",
|
||||
"HIDE_FILTERS": "verberge Filter",
|
||||
"INVALID_DISTANCE": "Die Distanz muss größer als 0 sein",
|
||||
"INVALID_DURATION": "Die Dauer muss größer als 0 Sekunden sein",
|
||||
"LATEST_WORKOUTS": "Letzte Trainings",
|
||||
"LOAD_MORE_WORKOUT": "Lade mehr Trainings",
|
||||
"MAX_ALTITUDE": "maximale Höhe",
|
||||
@ -25,6 +27,7 @@
|
||||
"MIN_ALTITUDE": "minimale Höhe",
|
||||
"NEXT_SEGMENT": "Nächstes Segment",
|
||||
"NEXT_WORKOUT": "Nächstes Training",
|
||||
"NOTES": "Anmerkungen",
|
||||
"NO_DATA_CLEANING": "Daten aus gpx, ohne Bereinigung",
|
||||
"NO_FILE_PROVIDED": "Keine Datei angegeben",
|
||||
"NO_FOLDER": "enthält keinen Ordner",
|
||||
@ -36,7 +39,6 @@
|
||||
"NO_PREVIOUS_WORKOUT": "Kein vorheriges Training",
|
||||
"NO_RECORDS": "Keine Aufzeichnungen.",
|
||||
"NO_WORKOUTS": "Keine Trainings.",
|
||||
"NOTES": "Anmerkungen",
|
||||
"PAUSES": "Pausen",
|
||||
"PREVIOUS_SEGMENT": "Vorheriges Segment",
|
||||
"PREVIOUS_WORKOUT": "Vorheriges Training",
|
||||
@ -58,27 +60,6 @@
|
||||
"TOTAL_DURATION": "Gesamtdauer",
|
||||
"UPLOAD_FIRST_WORKOUT": "Füge erstes Training hinzu!",
|
||||
"WEATHER": {
|
||||
"HUMIDITY": "Luftfeuchtigkeit",
|
||||
"TEMPERATURE": "Temperatur",
|
||||
"WIND": "Wind",
|
||||
"WIND_DIRECTIONS": {
|
||||
"N": "N",
|
||||
"NNE": "NNO",
|
||||
"NE": "NO",
|
||||
"ENE": "ONO",
|
||||
"E": "O",
|
||||
"ESE": "OSO",
|
||||
"SE": "SO",
|
||||
"SSE": "SSO",
|
||||
"S": "S",
|
||||
"SSW": "SSW",
|
||||
"SW": "SW",
|
||||
"WSW": "WSW",
|
||||
"W": "W",
|
||||
"WNW": "WNW",
|
||||
"NW": "NW",
|
||||
"NNW": "NNW"
|
||||
},
|
||||
"DARK_SKY": {
|
||||
"clear-day": "klarer Tag",
|
||||
"clear-night": "klare Nacht",
|
||||
@ -90,10 +71,31 @@
|
||||
"sleet": "Schneeregen",
|
||||
"snow": "Schnee",
|
||||
"wind": "Wind"
|
||||
},
|
||||
"HUMIDITY": "Luftfeuchtigkeit",
|
||||
"TEMPERATURE": "Temperatur",
|
||||
"WIND": "Wind",
|
||||
"WIND_DIRECTIONS": {
|
||||
"E": "O",
|
||||
"ENE": "ONO",
|
||||
"ESE": "OSO",
|
||||
"N": "N",
|
||||
"NE": "NO",
|
||||
"NNE": "NNO",
|
||||
"NNW": "NNW",
|
||||
"NW": "NW",
|
||||
"S": "S",
|
||||
"SE": "SO",
|
||||
"SSE": "SSO",
|
||||
"SSW": "SSW",
|
||||
"SW": "SW",
|
||||
"W": "W",
|
||||
"WNW": "WNW",
|
||||
"WSW": "WSW"
|
||||
}
|
||||
},
|
||||
"WITH_GPX": "mit .gpx Datei",
|
||||
"WITHOUT_GPX": "ohne .gpx Datei",
|
||||
"WITH_GPX": "mit .gpx Datei",
|
||||
"WORKOUT": "Training | Trainings",
|
||||
"WORKOUT_DATE": "Trainingsdatum",
|
||||
"WORKOUT_DELETION_CONFIRMATION": "Bist du sicher, dass du dieses Training löschen möchtest?",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"CONTACT_ADMIN": "Contact the administrator",
|
||||
"FITTRACKEE_DESCRIPTION": "<strong>FitTrackee</strong> is a self-hosted outdoor activity tracker.",
|
||||
"FITTRACKEE_LICENSE": "under {0} license ",
|
||||
"SOURCE_CODE": "Source code"
|
||||
"CONTACT_ADMIN": "Contact the administrator",
|
||||
"FITTRACKEE_DESCRIPTION": "<strong>FitTrackee</strong> is a self-hosted outdoor activity tracker.",
|
||||
"FITTRACKEE_LICENSE": "under {0} license ",
|
||||
"SOURCE_CODE": "Source code"
|
||||
}
|
@ -1,59 +1,59 @@
|
||||
{
|
||||
"ACTION": "Action",
|
||||
"ACTIVATE_USER_ACCOUNT": "Activate account",
|
||||
"ACTIVE": "Active",
|
||||
"ADMIN_RIGHTS_DELETE_USER_ACCOUNT": "Add/remove admin rights, delete user account.",
|
||||
"ADMIN": "Admin",
|
||||
"ADMINISTRATION": "Administration",
|
||||
"APPLICATION": "Application",
|
||||
"APP_CONFIG": {
|
||||
"ADMIN_CONTACT": "Administrator email for contact",
|
||||
"MAX_USERS_LABEL": "Max. number of active users",
|
||||
"MAX_USERS_HELP": "If 0, no limitation on registration.",
|
||||
"MAX_FILES_IN_ZIP_LABEL": "Max. files of zip archive",
|
||||
"NO_CONTACT_EMAIL": "no contact email",
|
||||
"SINGLE_UPLOAD_MAX_SIZE_LABEL": "Max. size of uploaded files (in Mb)",
|
||||
"TITLE": "Application configuration",
|
||||
"ZIP_UPLOAD_MAX_SIZE_LABEL": "Max. size of zip archive (in Mb)"
|
||||
},
|
||||
"BACK_TO_ADMIN": "Back to admin",
|
||||
"CONFIRM_USER_ACCOUNT_DELETION": "Are you sure you want to delete {0} account? All data will be deleted, this cannot be undone.",
|
||||
"CONFIRM_USER_PASSWORD_RESET": "Are you sure you want to reset {0} password?",
|
||||
"CURRENT_EMAIL": "Current email",
|
||||
"DELETE_USER": "Delete user",
|
||||
"EMAIL_SENDING_DISABLED": "Email sending is disabled.",
|
||||
"ENABLE_DISABLE_SPORTS": "Enable/disable sports.",
|
||||
"NEW_EMAIL": "New email",
|
||||
"PASSWORD_RESET_SUCCESSFUL": "The password has been reset.",
|
||||
"REGISTRATION_DISABLED": "Registration is currently disabled.",
|
||||
"REGISTRATION_ENABLED": "Registration is currently enabled.",
|
||||
"RESET_USER_PASSWORD": "Reset password",
|
||||
"SPORTS": {
|
||||
"TABLE": {
|
||||
"ACTIVE": "Active",
|
||||
"HAS_WORKOUTS": "workouts exist",
|
||||
"IMAGE": "Image",
|
||||
"LABEL": "Label"
|
||||
"ACTION": "Action",
|
||||
"ACTIVATE_USER_ACCOUNT": "Activate account",
|
||||
"ACTIVE": "Active",
|
||||
"ADMIN": "Admin",
|
||||
"ADMINISTRATION": "Administration",
|
||||
"ADMIN_RIGHTS_DELETE_USER_ACCOUNT": "Add/remove admin rights, delete user account.",
|
||||
"APPLICATION": "Application",
|
||||
"APP_CONFIG": {
|
||||
"ADMIN_CONTACT": "Administrator email for contact",
|
||||
"MAX_FILES_IN_ZIP_LABEL": "Max. files of zip archive",
|
||||
"MAX_USERS_HELP": "If 0, no limitation on registration.",
|
||||
"MAX_USERS_LABEL": "Max. number of active users",
|
||||
"NO_CONTACT_EMAIL": "no contact email",
|
||||
"SINGLE_UPLOAD_MAX_SIZE_LABEL": "Max. size of uploaded files (in Mb)",
|
||||
"TITLE": "Application configuration",
|
||||
"ZIP_UPLOAD_MAX_SIZE_LABEL": "Max. size of zip archive (in Mb)"
|
||||
},
|
||||
"TITLE": "Sports administration"
|
||||
},
|
||||
"UPDATE_APPLICATION_DESCRIPTION": "Update application configuration (maximum number of registered users, maximum files size).",
|
||||
"UPDATE_USER_EMAIL": "Update email",
|
||||
"USER": "user | users",
|
||||
"USER_EMAIL_UPDATE_SUCCESSFUL": "The email address has been updated.",
|
||||
"USERS": {
|
||||
"TABLE": {
|
||||
"ADD_ADMIN_RIGHTS": "Add admin rights",
|
||||
"REMOVE_ADMIN_RIGHTS": "Remove admin rights"
|
||||
"BACK_TO_ADMIN": "Back to admin",
|
||||
"CONFIRM_USER_ACCOUNT_DELETION": "Are you sure you want to delete {0} account? All data will be deleted, this cannot be undone.",
|
||||
"CONFIRM_USER_PASSWORD_RESET": "Are you sure you want to reset {0} password?",
|
||||
"CURRENT_EMAIL": "Current email",
|
||||
"DELETE_USER": "Delete user",
|
||||
"EMAIL_SENDING_DISABLED": "Email sending is disabled.",
|
||||
"ENABLE_DISABLE_SPORTS": "Enable/disable sports.",
|
||||
"NEW_EMAIL": "New email",
|
||||
"PASSWORD_RESET_SUCCESSFUL": "The password has been reset.",
|
||||
"REGISTRATION_DISABLED": "Registration is currently disabled.",
|
||||
"REGISTRATION_ENABLED": "Registration is currently enabled.",
|
||||
"RESET_USER_PASSWORD": "Reset password",
|
||||
"SPORTS": {
|
||||
"TABLE": {
|
||||
"ACTIVE": "Active",
|
||||
"HAS_WORKOUTS": "workouts exist",
|
||||
"IMAGE": "Image",
|
||||
"LABEL": "Label"
|
||||
},
|
||||
"TITLE": "Sports administration"
|
||||
},
|
||||
"SELECTS": {
|
||||
"ORDER_BY": {
|
||||
"ADMIN": "admin status",
|
||||
"CREATED_AT": "registration date",
|
||||
"IS_ACTIVE": "account status",
|
||||
"USERNAME": "username",
|
||||
"WORKOUTS_COUNT": "workout count"
|
||||
}
|
||||
}
|
||||
}
|
||||
"UPDATE_APPLICATION_DESCRIPTION": "Update application configuration (maximum number of registered users, maximum files size).",
|
||||
"UPDATE_USER_EMAIL": "Update email",
|
||||
"USER": "user | users",
|
||||
"USERS": {
|
||||
"SELECTS": {
|
||||
"ORDER_BY": {
|
||||
"ADMIN": "admin status",
|
||||
"CREATED_AT": "registration date",
|
||||
"IS_ACTIVE": "account status",
|
||||
"USERNAME": "username",
|
||||
"WORKOUTS_COUNT": "workout count"
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
"ADD_ADMIN_RIGHTS": "Add admin rights",
|
||||
"REMOVE_ADMIN_RIGHTS": "Remove admin rights"
|
||||
}
|
||||
},
|
||||
"USER_EMAIL_UPDATE_SUCCESSFUL": "The email address has been updated."
|
||||
}
|
||||
|
@ -1,36 +1,38 @@
|
||||
{
|
||||
"ERROR": {
|
||||
"UNKNOWN": "Error. Please try again or contact the administrator.",
|
||||
"email: valid email must be provided": "Email: valid email must be provided.",
|
||||
"error during gpx processing": "Error during gpx processing.",
|
||||
"error during gpx file parsing": "Error during gpx file parsing.",
|
||||
"error on getting configuration": "Error on getting configuration.",
|
||||
"error when updating configuration": "Error when updating configuration",
|
||||
"error, please try again or contact the administrator": "Error, please try again or contact the administrator.",
|
||||
"error, registration is disabled": "Error, registration is disabled.",
|
||||
"file extension not allowed": "File extension not allowed.",
|
||||
"file size is greater than the allowed size": "File size is greater than the allowed size.",
|
||||
"invalid credentials": "Invalid credentials.",
|
||||
"invalid payload": "Provided data are invalid.",
|
||||
"invalid token, please log in again": "Invalid token, please log in again.",
|
||||
"invalid token, please request a new token": "Invalid token, please log in again.",
|
||||
"Network Error": "Network Error.",
|
||||
"new email must be different than curent email": "The new email must be different than curent email",
|
||||
"no file part": "No file provided.",
|
||||
"no selected file": "No selected file.",
|
||||
"password: password and password confirmation do not match": "Password: password and password confirmation don't match.",
|
||||
"provide a valid auth token": "Provide a valid auth token.",
|
||||
"sorry, that username is already taken": "Sorry, that username is already taken.",
|
||||
"sport does not exist": "Sport does not exist.",
|
||||
"signature expired, please log in again": "Signature expired. Please log in again.",
|
||||
"successfully registered": "Successfully registered.",
|
||||
"user does not exist": "User does not exist.",
|
||||
"valid email must be provided for admin contact": "A valid email must be provided for administrator contact",
|
||||
"you can not delete your account, no other user has admin rights": "You can not delete your account, no other user has admin rights.",
|
||||
"you do not have permissions": "You do not have permissions."
|
||||
},
|
||||
"PAGINATION": {
|
||||
"PREVIOUS": "previous",
|
||||
"NEXT": "next"
|
||||
}
|
||||
"ERROR": {
|
||||
"Network Error": "Network Error.",
|
||||
"UNKNOWN": "Error. Please try again or contact the administrator.",
|
||||
"at least one file in zip archive exceeds size limit, please check the archive": "At least one file in zip archive exceeds size limit, please check the archive.",
|
||||
"email: valid email must be provided": "Email: valid email must be provided.",
|
||||
"error during gpx file parsing": "Error during gpx file parsing.",
|
||||
"error during gpx processing": "Error during gpx processing.",
|
||||
"error on getting configuration": "Error on getting configuration.",
|
||||
"error when updating configuration": "Error when updating configuration",
|
||||
"error, please try again or contact the administrator": "Error, please try again or contact the administrator.",
|
||||
"error, registration is disabled": "Error, registration is disabled.",
|
||||
"file extension not allowed": "File extension not allowed.",
|
||||
"file size is greater than the allowed size": "File size is greater than the allowed size.",
|
||||
"invalid credentials": "Invalid credentials.",
|
||||
"invalid payload": "Provided data are invalid.",
|
||||
"invalid token, please log in again": "Invalid token, please log in again.",
|
||||
"invalid token, please request a new token": "Invalid token, please log in again.",
|
||||
"new email must be different than curent email": "The new email must be different than curent email",
|
||||
"no file part": "No file provided.",
|
||||
"no selected file": "No selected file.",
|
||||
"password: password and password confirmation do not match": "Password: password and password confirmation don't match.",
|
||||
"provide a valid auth token": "Provide a valid auth token.",
|
||||
"signature expired, please log in again": "Signature expired. Please log in again.",
|
||||
"sorry, that username is already taken": "Sorry, that username is already taken.",
|
||||
"sport does not exist": "Sport does not exist.",
|
||||
"successfully registered": "Successfully registered.",
|
||||
"the number of files in the archive exceeds the limit": "The number of files in the archive exceeds the limit.",
|
||||
"user does not exist": "User does not exist.",
|
||||
"valid email must be provided for admin contact": "A valid email must be provided for administrator contact",
|
||||
"you can not delete your account, no other user has admin rights": "You can not delete your account, no other user has admin rights.",
|
||||
"you do not have permissions": "You do not have permissions."
|
||||
},
|
||||
"PAGINATION": {
|
||||
"NEXT": "next",
|
||||
"PREVIOUS": "previous"
|
||||
}
|
||||
}
|
@ -1,18 +1,18 @@
|
||||
{
|
||||
"ACCOUNT-CONFIRMATION-RESEND": "Resend confirmation email",
|
||||
"AUTHORIZE": "Authorize",
|
||||
"BACK": "Back",
|
||||
"CANCEL": "Cancel",
|
||||
"CLEAR_FILTER": "Clear filters",
|
||||
"DELETE_MY_ACCOUNT": "Delete my account",
|
||||
"DISABLE": "Disable",
|
||||
"EDIT": "Edit",
|
||||
"ENABLE": "Enable",
|
||||
"FILTER": "Filter",
|
||||
"LOGIN": "Log in",
|
||||
"NO": "No",
|
||||
"REGISTER": "Register",
|
||||
"RESET": "Reset",
|
||||
"SUBMIT": "Submit",
|
||||
"YES": "Yes"
|
||||
"ACCOUNT-CONFIRMATION-RESEND": "Resend confirmation email",
|
||||
"AUTHORIZE": "Authorize",
|
||||
"BACK": "Back",
|
||||
"CANCEL": "Cancel",
|
||||
"CLEAR_FILTER": "Clear filters",
|
||||
"DELETE_MY_ACCOUNT": "Delete my account",
|
||||
"DISABLE": "Disable",
|
||||
"EDIT": "Edit",
|
||||
"ENABLE": "Enable",
|
||||
"FILTER": "Filter",
|
||||
"LOGIN": "Log in",
|
||||
"NO": "No",
|
||||
"REGISTER": "Register",
|
||||
"RESET": "Reset",
|
||||
"SUBMIT": "Submit",
|
||||
"YES": "Yes"
|
||||
}
|
@ -1,25 +1,25 @@
|
||||
{
|
||||
"ABOUT": "about",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"CONTACT": "contact",
|
||||
"DAY": "day | days",
|
||||
"DISPLAYED": "Displayed",
|
||||
"DOCUMENTATION": "documentation",
|
||||
"HERE": "here",
|
||||
"HIDDEN": "Hidden",
|
||||
"HOME": "Home",
|
||||
"SELECTS": {
|
||||
"ORDER_BY": {
|
||||
"LABEL": "order by"
|
||||
"ABOUT": "about",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"CONTACT": "contact",
|
||||
"DAY": "day | days",
|
||||
"DISPLAYED": "Displayed",
|
||||
"DOCUMENTATION": "documentation",
|
||||
"HERE": "here",
|
||||
"HIDDEN": "Hidden",
|
||||
"HOME": "Home",
|
||||
"SELECTS": {
|
||||
"ORDER": {
|
||||
"ASC": "ascending",
|
||||
"DESC": "descending",
|
||||
"LABEL": "sort"
|
||||
},
|
||||
"ORDER_BY": {
|
||||
"LABEL": "order by"
|
||||
},
|
||||
"PER_PAGE": {
|
||||
"LABEL": "par page"
|
||||
}
|
||||
},
|
||||
"ORDER": {
|
||||
"LABEL": "sort",
|
||||
"ASC": "ascending",
|
||||
"DESC": "descending"
|
||||
},
|
||||
"PER_PAGE": {
|
||||
"LABEL": "par page"
|
||||
}
|
||||
},
|
||||
"TOTAL": "Total"
|
||||
"TOTAL": "Total"
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
{
|
||||
"DASHBOARD": "Dashboard",
|
||||
"THIS_MONTH": "This month"
|
||||
"DASHBOARD": "Dashboard",
|
||||
"THIS_MONTH": "This month"
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"UNKNOWN": "Error. Please try again or contact the administrator.",
|
||||
"APP_ERROR": "The application seems to have encountered some issues.<br />Please try again later or contact the administrator.",
|
||||
"NOT_FOUND": {
|
||||
"PAGE": "Page not found",
|
||||
"WORKOUT": "Workout not found"
|
||||
},
|
||||
"SOMETHING_WRONG": "Something went wrong"
|
||||
}
|
||||
"APP_ERROR": "The application seems to have encountered some issues.<br />Please try again later or contact the administrator.",
|
||||
"NOT_FOUND": {
|
||||
"PAGE": "Page not found",
|
||||
"WORKOUT": "Workout not found"
|
||||
},
|
||||
"SOMETHING_WRONG": "Something went wrong",
|
||||
"UNKNOWN": "Error. Please try again or contact the administrator."
|
||||
}
|
||||
|
@ -1,36 +1,36 @@
|
||||
{
|
||||
"ADD_A_NEW_APP": "Add a new OAuth2 application",
|
||||
"APP": {
|
||||
"CLIENT_ID": "Id",
|
||||
"CLIENT_SECRET": "Secret",
|
||||
"DESCRIPTION": "Application description",
|
||||
"ISSUE_AT": "Issue at",
|
||||
"NAME": "Application name",
|
||||
"REDIRECT_URL": "Redirect URL",
|
||||
"SCOPE": {
|
||||
"LABEL": "Scope",
|
||||
"application:write_DESCRIPTION": "grants write access to application configuration.",
|
||||
"profile:read_DESCRIPTION": "grants read access to <code>auth</code> endpoints.",
|
||||
"profile:write_DESCRIPTION": "grants write access to <code>auth</code> endpoints.",
|
||||
"users:read_DESCRIPTION": "grants read access to <code>users</code> endpoints.",
|
||||
"users:write_DESCRIPTION": "grants write access to <code>users</code> endpoints.",
|
||||
"workouts:read_DESCRIPTION": "grants read access to <code>workouts</code> endpoints.",
|
||||
"workouts:write_DESCRIPTION": "grants write access to <code>workouts</code> endpoints."
|
||||
"ADD_A_NEW_APP": "Add a new OAuth2 application",
|
||||
"APP": {
|
||||
"CLIENT_ID": "Id",
|
||||
"CLIENT_SECRET": "Secret",
|
||||
"DESCRIPTION": "Application description",
|
||||
"ISSUE_AT": "Issue at",
|
||||
"NAME": "Application name",
|
||||
"REDIRECT_URL": "Redirect URL",
|
||||
"SCOPE": {
|
||||
"LABEL": "Scope",
|
||||
"application:write_DESCRIPTION": "grants write access to application configuration.",
|
||||
"profile:read_DESCRIPTION": "grants read access to <code>auth</code> endpoints.",
|
||||
"profile:write_DESCRIPTION": "grants write access to <code>auth</code> endpoints.",
|
||||
"users:read_DESCRIPTION": "grants read access to <code>users</code> endpoints.",
|
||||
"users:write_DESCRIPTION": "grants write access to <code>users</code> endpoints.",
|
||||
"workouts:read_DESCRIPTION": "grants read access to <code>workouts</code> endpoints.",
|
||||
"workouts:write_DESCRIPTION": "grants write access to <code>workouts</code> endpoints."
|
||||
},
|
||||
"URL": "Application URL"
|
||||
},
|
||||
"URL": "Application URL"
|
||||
},
|
||||
"APP_CREATED_SUCCESSFULLY": "Application created successfully. Make sure to copy the secret now, it won't show up again.",
|
||||
"APP_DELETION_CONFIRMATION": "Are you sure you want to delete this app?",
|
||||
"APP_REQUESTING_ACCESS": "The application {0} is requesting:",
|
||||
"APPS_LIST": "OAuth2 applications",
|
||||
"AUTHORIZE_APP": "Authorize {0} to use your account?",
|
||||
"COPY_TO_CLIPBOARD": "copy to the clipboard",
|
||||
"DELETE_APP": "Delete application",
|
||||
"NEW_APP": "Add an application",
|
||||
"NO_APP": "Application not found!",
|
||||
"NO_APPS": "no applications",
|
||||
"NO_DESCRIPTION": "no description",
|
||||
"REVOKE_ALL_TOKENS": "Revoke all tokens",
|
||||
"TOKENS_REVOCATION_CONFIRMATION": "Are you sure you want to revoke all tokens?",
|
||||
"TOKENS_REVOKED": "All existing associated tokens have been revoked."
|
||||
}
|
||||
"APPS_LIST": "OAuth2 applications",
|
||||
"APP_CREATED_SUCCESSFULLY": "Application created successfully. Make sure to copy the secret now, it won't show up again.",
|
||||
"APP_DELETION_CONFIRMATION": "Are you sure you want to delete this app?",
|
||||
"APP_REQUESTING_ACCESS": "The application {0} is requesting:",
|
||||
"AUTHORIZE_APP": "Authorize {0} to use your account?",
|
||||
"COPY_TO_CLIPBOARD": "copy to the clipboard",
|
||||
"DELETE_APP": "Delete application",
|
||||
"NEW_APP": "Add an application",
|
||||
"NO_APP": "Application not found!",
|
||||
"NO_APPS": "no applications",
|
||||
"NO_DESCRIPTION": "no description",
|
||||
"REVOKE_ALL_TOKENS": "Revoke all tokens",
|
||||
"TOKENS_REVOCATION_CONFIRMATION": "Are you sure you want to revoke all tokens?",
|
||||
"TOKENS_REVOKED": "All existing associated tokens have been revoked."
|
||||
}
|
||||
|
@ -1,41 +1,44 @@
|
||||
{
|
||||
"Cycling (Sport)": {
|
||||
"LABEL": "Cycling (Sport)"
|
||||
},
|
||||
"Cycling (Transport)": {
|
||||
"LABEL": "Cycling (Transport)"
|
||||
},
|
||||
"Cycling (Virtual)": {
|
||||
"LABEL": "Cycling (Virtual)"
|
||||
},
|
||||
"Hiking": {
|
||||
"LABEL": "Hiking"
|
||||
},
|
||||
"Mountain Biking": {
|
||||
"LABEL": "Mountain Biking"
|
||||
},
|
||||
"Mountain Biking (Electric)": {
|
||||
"LABEL": "Mountain Biking (Electric)"
|
||||
},
|
||||
"Rowing": {
|
||||
"LABEL": "Rowing"
|
||||
},
|
||||
"Running": {
|
||||
"LABEL": "Running"
|
||||
},
|
||||
"Skiing (Alpine)": {
|
||||
"LABEL": "Skiing (Alpine)"
|
||||
},
|
||||
"Skiing (Cross Country)": {
|
||||
"LABEL": "Skiing (Cross Country)"
|
||||
},
|
||||
"Snowshoes": {
|
||||
"LABEL": "Snowshoes"
|
||||
},
|
||||
"Trail": {
|
||||
"LABEL": "Trail"
|
||||
},
|
||||
"Walking": {
|
||||
"LABEL": "Walking"
|
||||
}
|
||||
}
|
||||
"Cycling (Sport)": {
|
||||
"LABEL": "Cycling (Sport)"
|
||||
},
|
||||
"Cycling (Transport)": {
|
||||
"LABEL": "Cycling (Transport)"
|
||||
},
|
||||
"Cycling (Virtual)": {
|
||||
"LABEL": "Cycling (Virtual)"
|
||||
},
|
||||
"Hiking": {
|
||||
"LABEL": "Hiking"
|
||||
},
|
||||
"Mountain Biking": {
|
||||
"LABEL": "Mountain Biking"
|
||||
},
|
||||
"Mountain Biking (Electric)": {
|
||||
"LABEL": "Mountain Biking (Electric)"
|
||||
},
|
||||
"Mountaineering": {
|
||||
"LABEL": "Mountaineering"
|
||||
},
|
||||
"Rowing": {
|
||||
"LABEL": "Rowing"
|
||||
},
|
||||
"Running": {
|
||||
"LABEL": "Running"
|
||||
},
|
||||
"Skiing (Alpine)": {
|
||||
"LABEL": "Skiing (Alpine)"
|
||||
},
|
||||
"Skiing (Cross Country)": {
|
||||
"LABEL": "Skiing (Cross Country)"
|
||||
},
|
||||
"Snowshoes": {
|
||||
"LABEL": "Snowshoes"
|
||||
},
|
||||
"Trail": {
|
||||
"LABEL": "Trail"
|
||||
},
|
||||
"Walking": {
|
||||
"LABEL": "Walking"
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"STATISTICS": "Statistics",
|
||||
"TIME_FRAMES": {
|
||||
"week": "week",
|
||||
"month": "month",
|
||||
"year": "year"
|
||||
}
|
||||
"STATISTICS": "Statistics",
|
||||
"TIME_FRAMES": {
|
||||
"month": "month",
|
||||
"week": "week",
|
||||
"year": "year"
|
||||
}
|
||||
}
|
||||
|
@ -1,111 +1,111 @@
|
||||
{
|
||||
"ACCOUNT_CONFIRMATION_NOT_RECEIVED": "Didn't received instructions?",
|
||||
"ACCOUNT_CONFIRMATION_SENT": "Check your email. A new confirmation email has been sent to the address provided.",
|
||||
"ADMIN": "Admin",
|
||||
"ALREADY_HAVE_ACCOUNT": "Already have an account?",
|
||||
"CONFIRM_ACCOUNT_DELETION": "Are you sure you want to delete your account? All data will be deleted, this cannot be undone",
|
||||
"CURRENT_PASSWORD": "Current password",
|
||||
"EMAIL": "Email",
|
||||
"EMAIL_INFO": "Enter a valid email address.",
|
||||
"ENTER_PASSWORD": "Enter a password",
|
||||
"FILTER_ON_USERNAME": "Filter on username",
|
||||
"HIDE_PASSWORD": "hide password",
|
||||
"INVALID_TOKEN": "Invalid token, please request a new password reset.",
|
||||
"LANGUAGE": "Language",
|
||||
"LOG_IN": "log in",
|
||||
"LOGIN": "Login",
|
||||
"LOGOUT": "Logout",
|
||||
"NEW_PASSWORD": "New password",
|
||||
"NO_USERS_FOUND": "No users found.",
|
||||
"PASSWORD": "Password",
|
||||
"PASSWORD_INFO": "At least 8 characters required.",
|
||||
"PASSWORD_FORGOTTEN": "Forgot password?",
|
||||
"PASSWORD_RESET": "Password reset",
|
||||
"PASSWORD_SENT_EMAIL_TEXT": "Check your email. If your address is in our database, you'll received an email with a link to reset your password.",
|
||||
"PASSWORD_STRENGTH": {
|
||||
"WEAK": "weak",
|
||||
"AVERAGE": "average",
|
||||
"GOOD": "good",
|
||||
"STRONG": "strong",
|
||||
"LABEL": "password strength",
|
||||
"SUGGESTIONS": {
|
||||
"l33t": "Avoid predictable letter substitutions like {'@'} for a.",
|
||||
"reverseWords": "Avoid reversed spellings of common words.",
|
||||
"allUppercase": "Capitalize some, but not all letters.",
|
||||
"capitalization": "Capitalize more than the first letter.",
|
||||
"dates": "Avoid dates and years that are associated with you.",
|
||||
"recentYears": "Avoid recent years.",
|
||||
"associatedYears": "Avoid years that are associated with you.",
|
||||
"sequences": "Avoid common character sequences.",
|
||||
"repeated": "Avoid repeated words and characters.",
|
||||
"longerKeyboardPattern": "Use longer keyboard patterns and change typing direction multiple times.",
|
||||
"anotherWord": "Add more words that are less common.",
|
||||
"useWords": "Use multiple words, but avoid common phrases.",
|
||||
"noNeed": "You can create strong passwords without using symbols, numbers, or uppercase letters.",
|
||||
"pwned": "If you use this password elsewhere, you should change it."
|
||||
}
|
||||
},
|
||||
"PASSWORD_UPDATED": "Your password have been updated. Click {0} to log in.",
|
||||
"PROFILE": {
|
||||
"ACCOUNT_EDITION": "Account edition",
|
||||
"ASCENT_DATA": "Ascent-related data (records, total)",
|
||||
"BACK_TO_PROFILE": "Back to profile",
|
||||
"BIO": "Bio",
|
||||
"BIRTH_DATE": "Birth date",
|
||||
"DATE_FORMAT": "Date display format",
|
||||
"EDIT": "Edit profile",
|
||||
"EDIT_PREFERENCES": "Edit preferences",
|
||||
"EDIT_SPORTS_PREFERENCES": "Edit sports preferences",
|
||||
"ERRORED_EMAIL_UPDATE": "Please {0} to change your email address again or contact the administrator",
|
||||
"FIRST_NAME": "First name",
|
||||
"FIRST_DAY_OF_WEEK": "First day of week",
|
||||
"ACCOUNT_CONFIRMATION_NOT_RECEIVED": "Didn't received instructions?",
|
||||
"ACCOUNT_CONFIRMATION_SENT": "Check your email. A new confirmation email has been sent to the address provided.",
|
||||
"ADMIN": "Admin",
|
||||
"ALREADY_HAVE_ACCOUNT": "Already have an account?",
|
||||
"CONFIRM_ACCOUNT_DELETION": "Are you sure you want to delete your account? All data will be deleted, this cannot be undone",
|
||||
"CURRENT_PASSWORD": "Current password",
|
||||
"EMAIL": "Email",
|
||||
"EMAIL_INFO": "Enter a valid email address.",
|
||||
"ENTER_PASSWORD": "Enter a password",
|
||||
"FILTER_ON_USERNAME": "Filter on username",
|
||||
"HIDE_PASSWORD": "hide password",
|
||||
"INVALID_TOKEN": "Invalid token, please request a new password reset.",
|
||||
"LANGUAGE": "Language",
|
||||
"LAST_NAME": "Last name",
|
||||
"LOCATION": "Location",
|
||||
"MONDAY": "Monday",
|
||||
"PICTURE": "Picture",
|
||||
"PICTURE_EDITION": "Picture edition",
|
||||
"PICTURE_UPDATE": "Update picture",
|
||||
"PICTURE_REMOVE": "Remove picture",
|
||||
"PREFERENCES_EDITION": "Preferences edition",
|
||||
"PROFILE_EDITION": "Profile edition",
|
||||
"REGISTRATION_DATE": "Registration date",
|
||||
"SPORTS_EDITION": "Sports preferences edition",
|
||||
"SUNDAY": "Sunday",
|
||||
"TABS": {
|
||||
"ACCOUNT": "account",
|
||||
"APPS": "apps",
|
||||
"PICTURE": "picture",
|
||||
"PREFERENCES": "preferences",
|
||||
"PROFILE": "profile",
|
||||
"SPORTS": "sports"
|
||||
"LOGIN": "Login",
|
||||
"LOGOUT": "Logout",
|
||||
"LOG_IN": "log in",
|
||||
"NEW_PASSWORD": "New password",
|
||||
"NO_USERS_FOUND": "No users found.",
|
||||
"PASSWORD": "Password",
|
||||
"PASSWORD_FORGOTTEN": "Forgot password?",
|
||||
"PASSWORD_INFO": "At least 8 characters required.",
|
||||
"PASSWORD_RESET": "Password reset",
|
||||
"PASSWORD_SENT_EMAIL_TEXT": "Check your email. If your address is in our database, you'll received an email with a link to reset your password.",
|
||||
"PASSWORD_STRENGTH": {
|
||||
"AVERAGE": "average",
|
||||
"GOOD": "good",
|
||||
"LABEL": "password strength",
|
||||
"STRONG": "strong",
|
||||
"SUGGESTIONS": {
|
||||
"allUppercase": "Capitalize some, but not all letters.",
|
||||
"anotherWord": "Add more words that are less common.",
|
||||
"associatedYears": "Avoid years that are associated with you.",
|
||||
"capitalization": "Capitalize more than the first letter.",
|
||||
"dates": "Avoid dates and years that are associated with you.",
|
||||
"l33t": "Avoid predictable letter substitutions like {'@'} for a.",
|
||||
"longerKeyboardPattern": "Use longer keyboard patterns and change typing direction multiple times.",
|
||||
"noNeed": "You can create strong passwords without using symbols, numbers, or uppercase letters.",
|
||||
"pwned": "If you use this password elsewhere, you should change it.",
|
||||
"recentYears": "Avoid recent years.",
|
||||
"repeated": "Avoid repeated words and characters.",
|
||||
"reverseWords": "Avoid reversed spellings of common words.",
|
||||
"sequences": "Avoid common character sequences.",
|
||||
"useWords": "Use multiple words, but avoid common phrases."
|
||||
},
|
||||
"WEAK": "weak"
|
||||
},
|
||||
"SPORT": {
|
||||
"ACTION": "action",
|
||||
"COLOR": "color",
|
||||
"DISABLED_BY_ADMIN": "disabled by admin",
|
||||
"IS_ACTIVE": "active",
|
||||
"LABEL": "label",
|
||||
"STOPPED_SPEED_THRESHOLD": "stopped speed threshold"
|
||||
"PASSWORD_UPDATED": "Your password have been updated. Click {0} to log in.",
|
||||
"PROFILE": {
|
||||
"ACCOUNT_EDITION": "Account edition",
|
||||
"ASCENT_DATA": "Ascent-related data (records, total)",
|
||||
"BACK_TO_PROFILE": "Back to profile",
|
||||
"BIO": "Bio",
|
||||
"BIRTH_DATE": "Birth date",
|
||||
"DATE_FORMAT": "Date display format",
|
||||
"EDIT": "Edit profile",
|
||||
"EDIT_PREFERENCES": "Edit preferences",
|
||||
"EDIT_SPORTS_PREFERENCES": "Edit sports preferences",
|
||||
"ERRORED_EMAIL_UPDATE": "Please {0} to change your email address again or contact the administrator",
|
||||
"FIRST_DAY_OF_WEEK": "First day of week",
|
||||
"FIRST_NAME": "First name",
|
||||
"LANGUAGE": "Language",
|
||||
"LAST_NAME": "Last name",
|
||||
"LOCATION": "Location",
|
||||
"MONDAY": "Monday",
|
||||
"PICTURE": "Picture",
|
||||
"PICTURE_EDITION": "Picture edition",
|
||||
"PICTURE_REMOVE": "Remove picture",
|
||||
"PICTURE_UPDATE": "Update picture",
|
||||
"PREFERENCES_EDITION": "Preferences edition",
|
||||
"PROFILE_EDITION": "Profile edition",
|
||||
"REGISTRATION_DATE": "Registration date",
|
||||
"SPORT": {
|
||||
"ACTION": "action",
|
||||
"COLOR": "color",
|
||||
"DISABLED_BY_ADMIN": "disabled by admin",
|
||||
"IS_ACTIVE": "active",
|
||||
"LABEL": "label",
|
||||
"STOPPED_SPEED_THRESHOLD": "stopped speed threshold"
|
||||
},
|
||||
"SPORTS_EDITION": "Sports preferences edition",
|
||||
"SUCCESSFUL_EMAIL_UPDATE": "Your account has been updated successfully. Please check your email to confirm your new email address.",
|
||||
"SUCCESSFUL_REGISTRATION": "Your account has been created successfully.",
|
||||
"SUCCESSFUL_REGISTRATION_WITH_EMAIL": "A link to activate your account has been emailed to the address provided.",
|
||||
"SUCCESSFUL_UPDATE": "Your account has been updated successfully.",
|
||||
"SUNDAY": "Sunday",
|
||||
"TABS": {
|
||||
"ACCOUNT": "account",
|
||||
"APPS": "apps",
|
||||
"PICTURE": "picture",
|
||||
"PREFERENCES": "preferences",
|
||||
"PROFILE": "profile",
|
||||
"SPORTS": "sports"
|
||||
},
|
||||
"TIMEZONE": "Timezone",
|
||||
"UNITS": {
|
||||
"IMPERIAL": "Imperial system (ft, mi, mph, °F)",
|
||||
"LABEL": "Units for distance",
|
||||
"METRIC": "Metric system (m, km, m/s, °C)"
|
||||
}
|
||||
},
|
||||
"SUCCESSFUL_EMAIL_UPDATE": "Your account has been updated successfully. Please check your email to confirm your new email address.",
|
||||
"SUCCESSFUL_REGISTRATION": "Your account has been created successfully.",
|
||||
"SUCCESSFUL_REGISTRATION_WITH_EMAIL": "A link to activate your account has been emailed to the address provided.",
|
||||
"SUCCESSFUL_UPDATE": "Your account has been updated successfully.",
|
||||
"UNITS": {
|
||||
"LABEL": "Units for distance",
|
||||
"IMPERIAL": "Imperial system (ft, mi, mph, °F)",
|
||||
"METRIC": "Metric system (m, km, m/s, °C)"
|
||||
},
|
||||
"TIMEZONE": "Timezone"
|
||||
},
|
||||
"REGISTER": "Register",
|
||||
"RESENT_ACCOUNT_CONFIRMATION": "Resend account confirmation email",
|
||||
"REGISTER_DISABLED": "Sorry, registration is disabled.",
|
||||
"RESET_PASSWORD": "Reset your password",
|
||||
"SHOW_PASSWORD": "show password",
|
||||
"THIS_USER_ACCOUNT_IS_INACTIVE": "This user account is inactive.",
|
||||
"USER_PICTURE": "user picture",
|
||||
"USERNAME": "Username",
|
||||
"USERNAME_INFO": "3 to 30 characters required, only alphanumeric characters and the underscore character \"_\" allowed."
|
||||
"REGISTER": "Register",
|
||||
"REGISTER_DISABLED": "Sorry, registration is disabled.",
|
||||
"RESENT_ACCOUNT_CONFIRMATION": "Resend account confirmation email",
|
||||
"RESET_PASSWORD": "Reset your password",
|
||||
"SHOW_PASSWORD": "show password",
|
||||
"THIS_USER_ACCOUNT_IS_INACTIVE": "This user account is inactive.",
|
||||
"USERNAME": "Username",
|
||||
"USERNAME_INFO": "3 to 30 characters required, only alphanumeric characters and the underscore character \"_\" allowed.",
|
||||
"USER_PICTURE": "user picture"
|
||||
}
|
@ -1,102 +1,105 @@
|
||||
{
|
||||
"ADD_WORKOUT": "Add a workout",
|
||||
"ANALYSIS": "analysis",
|
||||
"ASCENT": "ascent",
|
||||
"AVE_SPEED": "ave. speed",
|
||||
"AVERAGE_SPEED": "average speed",
|
||||
"BACK_TO_WORKOUT": "back to workout",
|
||||
"DATE": "date",
|
||||
"DESCENT": "descent",
|
||||
"DISPLAY_FILTERS": "display filters",
|
||||
"DISTANCE": "distance",
|
||||
"DURATION": "duration",
|
||||
"EDIT_WORKOUT": "Edit the workout",
|
||||
"ELEVATION": "elevation",
|
||||
"END": "end",
|
||||
"FROM": "from",
|
||||
"GPX_FILE": ".gpx file",
|
||||
"HIDE_FILTERS": "hide filters",
|
||||
"LATEST_WORKOUTS": "Latest workouts",
|
||||
"LOAD_MORE_WORKOUT": "Load more workouts",
|
||||
"MAX_ALTITUDE": "max. altitude",
|
||||
"MAX_FILES": "max files",
|
||||
"MAX_SIZE": "max size",
|
||||
"MAX_SPEED": "max. speed",
|
||||
"MIN_ALTITUDE": "min. altitude",
|
||||
"NEXT_SEGMENT": "No next segment",
|
||||
"NEXT_WORKOUT": "Next workout",
|
||||
"NO_DATA_CLEANING": "data from gpx, without any cleaning",
|
||||
"NO_FILE_PROVIDED": "No file provided",
|
||||
"NO_FOLDER": "no folder inside",
|
||||
"NO_MAP": "No map",
|
||||
"NO_NEXT_SEGMENT": "No next segment",
|
||||
"NO_NEXT_WORKOUT": "No next workout",
|
||||
"NO_NOTES": "No notes",
|
||||
"NO_PREVIOUS_SEGMENT": "No previous segment",
|
||||
"NO_PREVIOUS_WORKOUT": "No previous workout",
|
||||
"NO_RECORDS": "No records.",
|
||||
"NO_WORKOUTS": "No workouts.",
|
||||
"NOTES": "notes",
|
||||
"PAUSES": "pauses",
|
||||
"PREVIOUS_SEGMENT": "Previous segment",
|
||||
"PREVIOUS_WORKOUT": "Previous workout",
|
||||
"RECORD": "record | records",
|
||||
"RECORD_AS": "Ave. speed",
|
||||
"RECORD_FD": "Farthest distance",
|
||||
"RECORD_HA": "Highest ascent",
|
||||
"RECORD_LD": "Longest duration",
|
||||
"RECORD_MS": "Max. speed",
|
||||
"REMAINING_CHARS": "remaining characters",
|
||||
"SEGMENT": "segment | segments",
|
||||
"SPEED": "speed",
|
||||
"SPORT": "sport | sports",
|
||||
"START": "start",
|
||||
"START_AND_FINISH": "Start and finish",
|
||||
"START_ELEVATION_AT_ZERO": "start elevation axis at zero",
|
||||
"TITLE": "title",
|
||||
"TO": "to",
|
||||
"TOTAL_DURATION": "total duration",
|
||||
"UPLOAD_FIRST_WORKOUT": "Upload one!",
|
||||
"WEATHER": {
|
||||
"HUMIDITY": "humidity",
|
||||
"TEMPERATURE": "temperature",
|
||||
"WIND": "wind",
|
||||
"WIND_DIRECTIONS": {
|
||||
"N": "N",
|
||||
"NNE": "NNE",
|
||||
"NE": "NE",
|
||||
"ENE": "ENE",
|
||||
"E": "E",
|
||||
"ESE": "ESE",
|
||||
"SE": "SE",
|
||||
"SSE": "SSE",
|
||||
"S": "S",
|
||||
"SSW": "SSW",
|
||||
"SW": "SW",
|
||||
"WSW": "WSW",
|
||||
"W": "W",
|
||||
"WNW": "WNW",
|
||||
"NW": "NW",
|
||||
"NNW": "NNW"
|
||||
"ADD_WORKOUT": "Add a workout",
|
||||
"ANALYSIS": "analysis",
|
||||
"ASCENT": "ascent",
|
||||
"AVERAGE_SPEED": "average speed",
|
||||
"AVE_SPEED": "ave. speed",
|
||||
"BACK_TO_WORKOUT": "back to workout",
|
||||
"DATE": "date",
|
||||
"DESCENT": "descent",
|
||||
"DISPLAY_FILTERS": "display filters",
|
||||
"DISTANCE": "distance",
|
||||
"DURATION": "duration",
|
||||
"EDIT_WORKOUT": "Edit the workout",
|
||||
"ELEVATION": "elevation",
|
||||
"END": "end",
|
||||
"FROM": "from",
|
||||
"GPX_FILE": ".gpx file",
|
||||
"HIDE_FILTERS": "hide filters",
|
||||
"INVALID_ASCENT_OR_DESCENT": "Both elevation values must be provided and be greater than or equal to 0.",
|
||||
"INVALID_DISTANCE": "The distance must be greater than 0",
|
||||
"INVALID_DURATION": "The duration must be greater than 0 seconds",
|
||||
"LATEST_WORKOUTS": "Latest workouts",
|
||||
"LOAD_MORE_WORKOUT": "Load more workouts",
|
||||
"MAX_ALTITUDE": "max. altitude",
|
||||
"MAX_FILES": "max files",
|
||||
"MAX_SIZE": "max size",
|
||||
"MAX_SPEED": "max. speed",
|
||||
"MIN_ALTITUDE": "min. altitude",
|
||||
"NEXT_SEGMENT": "No next segment",
|
||||
"NEXT_WORKOUT": "Next workout",
|
||||
"NOTES": "notes",
|
||||
"NO_DATA_CLEANING": "data from gpx, without any cleaning",
|
||||
"NO_FILE_PROVIDED": "No file provided",
|
||||
"NO_FOLDER": "no folder inside",
|
||||
"NO_MAP": "No map",
|
||||
"NO_NEXT_SEGMENT": "No next segment",
|
||||
"NO_NEXT_WORKOUT": "No next workout",
|
||||
"NO_NOTES": "No notes",
|
||||
"NO_PREVIOUS_SEGMENT": "No previous segment",
|
||||
"NO_PREVIOUS_WORKOUT": "No previous workout",
|
||||
"NO_RECORDS": "No records.",
|
||||
"NO_WORKOUTS": "No workouts.",
|
||||
"PAUSES": "pauses",
|
||||
"PREVIOUS_SEGMENT": "Previous segment",
|
||||
"PREVIOUS_WORKOUT": "Previous workout",
|
||||
"RECORD": "record | records",
|
||||
"RECORD_AS": "Ave. speed",
|
||||
"RECORD_FD": "Farthest distance",
|
||||
"RECORD_HA": "Highest ascent",
|
||||
"RECORD_LD": "Longest duration",
|
||||
"RECORD_MS": "Max. speed",
|
||||
"REMAINING_CHARS": "remaining characters",
|
||||
"SEGMENT": "segment | segments",
|
||||
"SPEED": "speed",
|
||||
"SPORT": "sport | sports",
|
||||
"START": "start",
|
||||
"START_AND_FINISH": "Start and finish",
|
||||
"START_ELEVATION_AT_ZERO": "start elevation axis at zero",
|
||||
"TITLE": "title",
|
||||
"TO": "to",
|
||||
"TOTAL_DURATION": "total duration",
|
||||
"UPLOAD_FIRST_WORKOUT": "Upload one!",
|
||||
"WEATHER": {
|
||||
"DARK_SKY": {
|
||||
"clear-day": "clear day",
|
||||
"clear-night": "clear night",
|
||||
"cloudy": "cloudy",
|
||||
"fog": "fog",
|
||||
"partly-cloudy-day": "partly cloudy day",
|
||||
"partly-cloudy-night": "partly cloudy night",
|
||||
"rain": "rain",
|
||||
"sleet": "sleet",
|
||||
"snow": "snow",
|
||||
"wind": "wind"
|
||||
},
|
||||
"HUMIDITY": "humidity",
|
||||
"TEMPERATURE": "temperature",
|
||||
"WIND": "wind",
|
||||
"WIND_DIRECTIONS": {
|
||||
"E": "E",
|
||||
"ENE": "ENE",
|
||||
"ESE": "ESE",
|
||||
"N": "N",
|
||||
"NE": "NE",
|
||||
"NNE": "NNE",
|
||||
"NNW": "NNW",
|
||||
"NW": "NW",
|
||||
"S": "S",
|
||||
"SE": "SE",
|
||||
"SSE": "SSE",
|
||||
"SSW": "SSW",
|
||||
"SW": "SW",
|
||||
"W": "W",
|
||||
"WNW": "WNW",
|
||||
"WSW": "WSW"
|
||||
}
|
||||
},
|
||||
"DARK_SKY": {
|
||||
"clear-day": "clear day",
|
||||
"clear-night": "clear night",
|
||||
"cloudy": "cloudy",
|
||||
"fog": "fog",
|
||||
"partly-cloudy-day": "partly cloudy day",
|
||||
"partly-cloudy-night": "partly cloudy night",
|
||||
"rain": "rain",
|
||||
"sleet": "sleet",
|
||||
"snow": "snow",
|
||||
"wind": "wind"
|
||||
}
|
||||
},
|
||||
"WITH_GPX": "with .gpx file",
|
||||
"WITHOUT_GPX": "without .gpx file",
|
||||
"WORKOUT": "workout | workouts",
|
||||
"WORKOUT_DATE": "workout date",
|
||||
"WORKOUT_DELETION_CONFIRMATION": "Are you sure you want to delete this workout?",
|
||||
"ZIP_ARCHIVE": ".zip file",
|
||||
"ZIP_ARCHIVE_DESCRIPTION": "or .zip file containing .gpx files"
|
||||
"WITHOUT_GPX": "without .gpx file",
|
||||
"WITH_GPX": "with .gpx file",
|
||||
"WORKOUT": "workout | workouts",
|
||||
"WORKOUT_DATE": "workout date",
|
||||
"WORKOUT_DELETION_CONFIRMATION": "Are you sure you want to delete this workout?",
|
||||
"ZIP_ARCHIVE": ".zip file",
|
||||
"ZIP_ARCHIVE_DESCRIPTION": "or .zip file containing .gpx files"
|
||||
}
|
||||
|
@ -1,59 +1,59 @@
|
||||
{
|
||||
"ACTION": "Action",
|
||||
"ACTIVATE_USER_ACCOUNT": "Activer le compte",
|
||||
"ACTIVE": "Actif",
|
||||
"ADMIN_RIGHTS_DELETE_USER_ACCOUNT": "Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs.",
|
||||
"ADMIN": "Admin",
|
||||
"ADMINISTRATION": "Administration",
|
||||
"APPLICATION": "Application",
|
||||
"APP_CONFIG": {
|
||||
"ADMIN_CONTACT": "Email de l'administrateur pour contact ",
|
||||
"MAX_USERS_LABEL": "Nombre maximum d'utilisateurs actifs ",
|
||||
"MAX_USERS_HELP": "Si égal à 0, pas limite d'inscription",
|
||||
"MAX_FILES_IN_ZIP_LABEL": "Taille max. des archives zip (en Mo) ",
|
||||
"NO_CONTACT_EMAIL": "non renseigné",
|
||||
"SINGLE_UPLOAD_MAX_SIZE_LABEL": "Taille max. des fichiers (en Mo) ",
|
||||
"TITLE": "Configuration de l'application",
|
||||
"ZIP_UPLOAD_MAX_SIZE_LABEL": "Nombre max. de fichiers dans une archive zip "
|
||||
},
|
||||
"BACK_TO_ADMIN": "Revenir à l'admin",
|
||||
"CONFIRM_USER_ACCOUNT_DELETION": "Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur {0} ? Toutes les données seront définitivement.",
|
||||
"CONFIRM_USER_PASSWORD_RESET": "Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur {0} ?",
|
||||
"CURRENT_EMAIL": "Adresse email actuelle",
|
||||
"DELETE_USER": "Supprimer l'utilisateur",
|
||||
"EMAIL_SENDING_DISABLED": "L'envoi d'emails est désactivé.",
|
||||
"ENABLE_DISABLE_SPORTS": "Activer/désactiver des sports.",
|
||||
"NEW_EMAIL": "Nouvelle adresse email",
|
||||
"PASSWORD_RESET_SUCCESSFUL": "Le mot de passe a été réinitialisé.",
|
||||
"REGISTRATION_DISABLED": "Les inscriptions sont actuellement désactivées.",
|
||||
"REGISTRATION_ENABLED": "Les inscriptions sont actuellement activées.",
|
||||
"RESET_USER_PASSWORD": "Réinit. le mot de passe",
|
||||
"SPORTS": {
|
||||
"TABLE": {
|
||||
"ACTIVE": "Actif",
|
||||
"HAS_WORKOUTS": "des séances existent",
|
||||
"IMAGE": "Image",
|
||||
"LABEL": "Label"
|
||||
"ACTION": "Action",
|
||||
"ACTIVATE_USER_ACCOUNT": "Activer le compte",
|
||||
"ACTIVE": "Actif",
|
||||
"ADMIN": "Admin",
|
||||
"ADMINISTRATION": "Administration",
|
||||
"ADMIN_RIGHTS_DELETE_USER_ACCOUNT": "Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs.",
|
||||
"APPLICATION": "Application",
|
||||
"APP_CONFIG": {
|
||||
"ADMIN_CONTACT": "Email de l'administrateur pour contact ",
|
||||
"MAX_FILES_IN_ZIP_LABEL": "Nombre max. de fichiers dans une archive zip ",
|
||||
"MAX_USERS_HELP": "Si égal à 0, pas limite d'inscription",
|
||||
"MAX_USERS_LABEL": "Nombre maximum d'utilisateurs actifs ",
|
||||
"NO_CONTACT_EMAIL": "non renseigné",
|
||||
"SINGLE_UPLOAD_MAX_SIZE_LABEL": "Taille max. des fichiers (en Mo) ",
|
||||
"TITLE": "Configuration de l'application",
|
||||
"ZIP_UPLOAD_MAX_SIZE_LABEL": "Taille max. des archives zip (en Mo) "
|
||||
},
|
||||
"TITLE": "Administration - Sports"
|
||||
},
|
||||
"UPDATE_APPLICATION_DESCRIPTION": "Configurer l'application (nombre maximum d'utilisateurs inscrits, taille maximale des fichers).",
|
||||
"UPDATE_USER_EMAIL": "Changer l'email",
|
||||
"USER": "utilisateur | utilisateurs",
|
||||
"USER_EMAIL_UPDATE_SUCCESSFUL": "L'adresse email a été mise à jour.",
|
||||
"USERS": {
|
||||
"TABLE": {
|
||||
"ADD_ADMIN_RIGHTS": "Ajouter les droits d'admin",
|
||||
"REMOVE_ADMIN_RIGHTS": "Retirer les droits d'admin"
|
||||
"BACK_TO_ADMIN": "Revenir à l'admin",
|
||||
"CONFIRM_USER_ACCOUNT_DELETION": "Êtes-vous sûr de vouloir supprimer le compte de l'utilisateur {0} ? Toutes les données seront définitivement.",
|
||||
"CONFIRM_USER_PASSWORD_RESET": "Êtes-vous sûr de vouloir réinitialiser le mot de passe de l'utilisateur {0} ?",
|
||||
"CURRENT_EMAIL": "Adresse email actuelle",
|
||||
"DELETE_USER": "Supprimer l'utilisateur",
|
||||
"EMAIL_SENDING_DISABLED": "L'envoi d'emails est désactivé.",
|
||||
"ENABLE_DISABLE_SPORTS": "Activer/désactiver des sports.",
|
||||
"NEW_EMAIL": "Nouvelle adresse email",
|
||||
"PASSWORD_RESET_SUCCESSFUL": "Le mot de passe a été réinitialisé.",
|
||||
"REGISTRATION_DISABLED": "Les inscriptions sont actuellement désactivées.",
|
||||
"REGISTRATION_ENABLED": "Les inscriptions sont actuellement activées.",
|
||||
"RESET_USER_PASSWORD": "Réinit. le mot de passe",
|
||||
"SPORTS": {
|
||||
"TABLE": {
|
||||
"ACTIVE": "Actif",
|
||||
"HAS_WORKOUTS": "des séances existent",
|
||||
"IMAGE": "Image",
|
||||
"LABEL": "Label"
|
||||
},
|
||||
"TITLE": "Administration - Sports"
|
||||
},
|
||||
"SELECTS": {
|
||||
"ORDER_BY": {
|
||||
"ADMIN": "status administrateur",
|
||||
"CREATED_AT": "date d'inscription",
|
||||
"IS_ACTIVE": "statut du compte",
|
||||
"USERNAME": "nom d'utilisateur",
|
||||
"WORKOUTS_COUNT": "nombre de séances"
|
||||
}
|
||||
}
|
||||
}
|
||||
"UPDATE_APPLICATION_DESCRIPTION": "Configurer l'application (nombre maximum d'utilisateurs inscrits, taille maximale des fichers).",
|
||||
"UPDATE_USER_EMAIL": "Changer l'email",
|
||||
"USER": "utilisateur | utilisateurs",
|
||||
"USERS": {
|
||||
"SELECTS": {
|
||||
"ORDER_BY": {
|
||||
"ADMIN": "status administrateur",
|
||||
"CREATED_AT": "date d'inscription",
|
||||
"IS_ACTIVE": "statut du compte",
|
||||
"USERNAME": "nom d'utilisateur",
|
||||
"WORKOUTS_COUNT": "nombre de séances"
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
"ADD_ADMIN_RIGHTS": "Ajouter les droits d'admin",
|
||||
"REMOVE_ADMIN_RIGHTS": "Retirer les droits d'admin"
|
||||
}
|
||||
},
|
||||
"USER_EMAIL_UPDATE_SUCCESSFUL": "L'adresse email a été mise à jour."
|
||||
}
|
||||
|
@ -1,9 +1,11 @@
|
||||
{
|
||||
"ERROR": {
|
||||
"Network Error": "Erreur réseau.",
|
||||
"UNKNOWN": "Erreur. Veuillez réessayer ou contacter l'administrateur.",
|
||||
"at least one file in zip archive exceeds size limit, please check the archive": "Au moins un fichier de l'archive zip dépasse la taille maximale, veuillez vérifier l'archive.",
|
||||
"email: valid email must be provided": "Courriel : une adresse électronique valide doit être fournie.",
|
||||
"error during gpx processing": "Erreur lors du traitement du fichier gpx.",
|
||||
"error during gpx file parsing": "Erreur lors de l'analyse du fichier.",
|
||||
"error during gpx processing": "Erreur lors du traitement du fichier gpx.",
|
||||
"error on getting configuration": "Erreur lors de la récupération de la configuration.",
|
||||
"error when updating configuration": "Erreur lors de la mise à jour de la configuration",
|
||||
"error, please try again or contact the administrator": "Erreur, veuillez réessayer ou contacter l'administrateur.",
|
||||
@ -14,23 +16,23 @@
|
||||
"invalid payload": "Données fournies incorrectes.",
|
||||
"invalid token, please log in again": "Jeton de connexion invalide, merci de vous reconnecter.",
|
||||
"invalid token, please request a new token": "Jeton de connexion, merci de vous reconnecter.",
|
||||
"new email must be different than curent email": "La nouvelle addresse électronique doit être differente de l'adresse actuelle",
|
||||
"no file part": "Pas de fichier fourni.",
|
||||
"no selected file": "Pas de fichier sélectionné.",
|
||||
"Network Error": "Erreur réseau.",
|
||||
"new email must be different than curent email": "La nouvelle addresse électronique doit être differente de l'adresse actuelle",
|
||||
"password: password and password confirmation do not match": "Mot de passe : les mots de passe saisis sont différents.",
|
||||
"provide a valid auth token": "Merci de fournir un jeton de connexion valide.",
|
||||
"sport does not exist": "Ce sport n'existe pas.",
|
||||
"signature expired, please log in again": "Signature expirée. Merci de vous reconnecter.",
|
||||
"sorry, that username is already taken": "Désolé, ce nom d'utilisateur est déjà utilisé.",
|
||||
"sport does not exist": "Ce sport n'existe pas.",
|
||||
"successfully registered": "Inscription validée.",
|
||||
"the number of files in the archive exceeds the limit": "Le nombre de fichiers de l'archive dépasse la limite.",
|
||||
"user does not exist": "L'utilisateur n'existe pas.",
|
||||
"valid email must be provided for admin contact": "Une adresse électronique doit être fournie pour le contact de l'administrateur",
|
||||
"you can not delete your account, no other user has admin rights": "Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration.",
|
||||
"you do not have permissions": "Vous n'avez pas les permissions nécessaires."
|
||||
},
|
||||
"PAGINATION": {
|
||||
"PREVIOUS": "précédent",
|
||||
"NEXT": "suivant"
|
||||
"NEXT": "suivant",
|
||||
"PREVIOUS": "précédent"
|
||||
}
|
||||
}
|
||||
|
@ -1,25 +1,25 @@
|
||||
{
|
||||
"ABOUT": "à propos",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"CONTACT": "contact",
|
||||
"DAY": "jour | jours",
|
||||
"DISPLAYED": "Affiché",
|
||||
"DOCUMENTATION": "documentation (en)",
|
||||
"HERE": "ici",
|
||||
"HIDDEN": "Masqué",
|
||||
"HOME": "Accueil",
|
||||
"SELECTS": {
|
||||
"ORDER_BY": {
|
||||
"LABEL": "trier par "
|
||||
"ABOUT": "à propos",
|
||||
"CONFIRMATION": "Confirmation",
|
||||
"CONTACT": "contact",
|
||||
"DAY": "jour | jours",
|
||||
"DISPLAYED": "Affiché",
|
||||
"DOCUMENTATION": "documentation (en)",
|
||||
"HERE": "ici",
|
||||
"HIDDEN": "Masqué",
|
||||
"HOME": "Accueil",
|
||||
"SELECTS": {
|
||||
"ORDER": {
|
||||
"ASC": "ascendant",
|
||||
"DESC": "descendant",
|
||||
"LABEL": "tri"
|
||||
},
|
||||
"ORDER_BY": {
|
||||
"LABEL": "trier par "
|
||||
},
|
||||
"PER_PAGE": {
|
||||
"LABEL": "par page"
|
||||
}
|
||||
},
|
||||
"ORDER": {
|
||||
"LABEL": "tri",
|
||||
"ASC": "ascendant",
|
||||
"DESC": "descendant"
|
||||
},
|
||||
"PER_PAGE": {
|
||||
"LABEL": "par page"
|
||||
}
|
||||
},
|
||||
"TOTAL": "Total"
|
||||
"TOTAL": "Total"
|
||||
}
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"UNKNOWN": "Erreur. Veuillez réessayer ou contacter l'administrateur.",
|
||||
"APP_ERROR": "L'application semble rencontrer quelques problèmes.<br />Veuillez réessayer plus tard ou contacter l'administrateur.",
|
||||
"NOT_FOUND": {
|
||||
"PAGE": "Page introuvable",
|
||||
"WORKOUT": "Séance introuvable"
|
||||
},
|
||||
"SOMETHING_WRONG": "Une erreur s'est produite"
|
||||
}
|
||||
"APP_ERROR": "L'application semble rencontrer quelques problèmes.<br />Veuillez réessayer plus tard ou contacter l'administrateur.",
|
||||
"NOT_FOUND": {
|
||||
"PAGE": "Page introuvable",
|
||||
"WORKOUT": "Séance introuvable"
|
||||
},
|
||||
"SOMETHING_WRONG": "Une erreur s'est produite",
|
||||
"UNKNOWN": "Erreur. Veuillez réessayer ou contacter l'administrateur."
|
||||
}
|
||||
|
@ -1,36 +1,36 @@
|
||||
{
|
||||
"ADD_A_NEW_APP": "Ajouter une nouvelle application OAuth2",
|
||||
"APP": {
|
||||
"CLIENT_ID": "Identifiant",
|
||||
"CLIENT_SECRET": "Secret",
|
||||
"DESCRIPTION": "Description de l'application",
|
||||
"ISSUE_AT": "Créée le",
|
||||
"NAME": "Nom de l'application",
|
||||
"REDIRECT_URL": "URL de redirection",
|
||||
"SCOPE": {
|
||||
"LABEL": "Scope",
|
||||
"application:write_DESCRIPTION": "donne les droits en écriture à la configuration de l'application.",
|
||||
"profile:read_DESCRIPTION": "donne les droits en lecture aux routes <code>auth</code>.",
|
||||
"profile:write_DESCRIPTION": "donne les droits en écriture aux routes <code>auth</code>.",
|
||||
"users:read_DESCRIPTION": "donne les droits en lecture aux routes <code>users</code>.",
|
||||
"users:write_DESCRIPTION": "donne les droits en écriture aux routes <code>users</code>.",
|
||||
"workouts:read_DESCRIPTION": "donne les droits en lecture aux routes <code>workouts</code>.",
|
||||
"workouts:write_DESCRIPTION": "donne les droits en écriture aux routes <code>workouts</code>."
|
||||
"ADD_A_NEW_APP": "Ajouter une nouvelle application OAuth2",
|
||||
"APP": {
|
||||
"CLIENT_ID": "Identifiant",
|
||||
"CLIENT_SECRET": "Secret",
|
||||
"DESCRIPTION": "Description de l'application",
|
||||
"ISSUE_AT": "Créée le",
|
||||
"NAME": "Nom de l'application",
|
||||
"REDIRECT_URL": "URL de redirection",
|
||||
"SCOPE": {
|
||||
"LABEL": "Scope",
|
||||
"application:write_DESCRIPTION": "donne les droits en écriture à la configuration de l'application.",
|
||||
"profile:read_DESCRIPTION": "donne les droits en lecture aux routes <code>auth</code>.",
|
||||
"profile:write_DESCRIPTION": "donne les droits en écriture aux routes <code>auth</code>.",
|
||||
"users:read_DESCRIPTION": "donne les droits en lecture aux routes <code>users</code>.",
|
||||
"users:write_DESCRIPTION": "donne les droits en écriture aux routes <code>users</code>.",
|
||||
"workouts:read_DESCRIPTION": "donne les droits en lecture aux routes <code>workouts</code>.",
|
||||
"workouts:write_DESCRIPTION": "donne les droits en écriture aux routes <code>workouts</code>."
|
||||
},
|
||||
"URL": "URL de l'application"
|
||||
},
|
||||
"URL": "URL de l'application"
|
||||
},
|
||||
"APP_CREATED_SUCCESSFULLY": "Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus.",
|
||||
"APP_DELETION_CONFIRMATION": "Êtes-vous sûr de vouloir supprimer cette application ?",
|
||||
"APP_REQUESTING_ACCESS": "L'application {0} demande les accès suivants :",
|
||||
"APPS_LIST": "Applications OAuth2",
|
||||
"AUTHORIZE_APP": "Autoriser {0} à utiliser votre compte ?",
|
||||
"COPY_TO_CLIPBOARD": "copier dans le presse papier",
|
||||
"DELETE_APP": "Supprimer l'application",
|
||||
"NEW_APP": "Ajouter une application",
|
||||
"NO_APP": "Application introuvable !",
|
||||
"NO_APPS": "pas de applications",
|
||||
"NO_DESCRIPTION": "pas de description",
|
||||
"REVOKE_ALL_TOKENS": "Révoquer tous les jetons",
|
||||
"TOKENS_REVOCATION_CONFIRMATION": "Êtes-vous sûr de vouloir révoquer tous les jetons ?",
|
||||
"TOKENS_REVOKED": "Tous les jetons associés existants ont été révoqués."
|
||||
}
|
||||
"APPS_LIST": "Applications OAuth2",
|
||||
"APP_CREATED_SUCCESSFULLY": "Application créée avec succès. Assurez-vous de copier le secret maintenant, il ne s'affichera plus.",
|
||||
"APP_DELETION_CONFIRMATION": "Êtes-vous sûr de vouloir supprimer cette application ?",
|
||||
"APP_REQUESTING_ACCESS": "L'application {0} demande les accès suivants :",
|
||||
"AUTHORIZE_APP": "Autoriser {0} à utiliser votre compte ?",
|
||||
"COPY_TO_CLIPBOARD": "copier dans le presse papier",
|
||||
"DELETE_APP": "Supprimer l'application",
|
||||
"NEW_APP": "Ajouter une application",
|
||||
"NO_APP": "Application introuvable !",
|
||||
"NO_APPS": "pas de applications",
|
||||
"NO_DESCRIPTION": "pas de description",
|
||||
"REVOKE_ALL_TOKENS": "Révoquer tous les jetons",
|
||||
"TOKENS_REVOCATION_CONFIRMATION": "Êtes-vous sûr de vouloir révoquer tous les jetons ?",
|
||||
"TOKENS_REVOKED": "Tous les jetons associés existants ont été révoqués."
|
||||
}
|
||||
|
@ -17,6 +17,9 @@
|
||||
"Mountain Biking (Electric)": {
|
||||
"LABEL": "VTT (Électrique)"
|
||||
},
|
||||
"Mountaineering": {
|
||||
"LABEL": "Alpinisme"
|
||||
},
|
||||
"Rowing": {
|
||||
"LABEL": "Aviron"
|
||||
},
|
||||
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"STATISTICS": "Statistiques",
|
||||
"TIME_FRAMES": {
|
||||
"week": "semaine",
|
||||
"month": "mois",
|
||||
"year": "année"
|
||||
}
|
||||
"STATISTICS": "Statistiques",
|
||||
"TIME_FRAMES": {
|
||||
"month": "mois",
|
||||
"week": "semaine",
|
||||
"year": "année"
|
||||
}
|
||||
}
|
||||
|
@ -12,38 +12,38 @@
|
||||
"HIDE_PASSWORD": "masquer le mot de passe",
|
||||
"INVALID_TOKEN": "Jeton invalide, veuillez demander une nouvelle réinitialisation de mot de passe.",
|
||||
"LANGUAGE": "Langue",
|
||||
"LOG_IN": "connecter",
|
||||
"LOGIN": "Se connecter",
|
||||
"LOGOUT": "Se déconnecter",
|
||||
"LOG_IN": "connecter",
|
||||
"NEW_PASSWORD": "Nouveau mot de passe",
|
||||
"NO_USERS_FOUND": "Aucun utilisateur trouvé.",
|
||||
"PASSWORD": "Mot de passe",
|
||||
"PASSWORD_INFO": "8 caractères minimum.",
|
||||
"PASSWORD_FORGOTTEN": "Mot de passe oublié ?",
|
||||
"PASSWORD_INFO": "8 caractères minimum.",
|
||||
"PASSWORD_RESET": "Réinitialisation du mot de passe",
|
||||
"PASSWORD_SENT_EMAIL_TEXT": "Vérifiez vos courriels. Si vote adresse est dans notre base de données, vous recevrez un courriel avec un lien pour réinitialiser votre mot de passe.",
|
||||
"PASSWORD_STRENGTH": {
|
||||
"WEAK": "faible",
|
||||
"AVERAGE": "moyenne",
|
||||
"GOOD": "bonne",
|
||||
"STRONG": "forte",
|
||||
"LABEL": "robustesse du mot de passe",
|
||||
"STRONG": "forte",
|
||||
"SUGGESTIONS": {
|
||||
"l33t": "Évitez les substitutions de lettres prévisibles comme {'@'} pour a.",
|
||||
"reverseWords": "Évitez les orthographes inversées des mots courants.",
|
||||
"allUppercase": "Mettez quelques lettres en majuscules, mais pas toutes.",
|
||||
"anotherWord": "Ajoutez des mots moins courants.",
|
||||
"associatedYears": "Évitez les années qui vous sont associées. (ex : date de naissance).",
|
||||
"capitalization": "Capitalisez mais pas seulement la première lettre.",
|
||||
"dates": "Évitez les dates et les années qui vous sont associées. (ex : date ou année de naissance).",
|
||||
"recentYears": "Évitez les dernières années.",
|
||||
"associatedYears": "Évitez les années qui vous sont associées. (ex : date de naissance).",
|
||||
"sequences": "Évitez les séquences de caractères courantes.",
|
||||
"repeated": "Évitez les mots et les caractères répétés.",
|
||||
"l33t": "Évitez les substitutions de lettres prévisibles comme {'@'} pour a.",
|
||||
"longerKeyboardPattern": "Utilisez des motifs de clavier plus longs et changez de sens de frappe plusieurs fois.",
|
||||
"anotherWord": "Ajoutez des mots moins courants.",
|
||||
"useWords": "Utilisez plusieurs mots, mais évitez les phrases courantes.",
|
||||
"noNeed": "Vous pouvez créer des mots de passe forts sans utiliser de symboles, de chiffres ou de lettres majuscules.",
|
||||
"pwned": "Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier."
|
||||
}
|
||||
"pwned": "Si vous utilisez ce mot de passe ailleurs, vous devriez le modifier.",
|
||||
"recentYears": "Évitez les dernières années.",
|
||||
"repeated": "Évitez les mots et les caractères répétés.",
|
||||
"reverseWords": "Évitez les orthographes inversées des mots courants.",
|
||||
"sequences": "Évitez les séquences de caractères courantes.",
|
||||
"useWords": "Utilisez plusieurs mots, mais évitez les phrases courantes."
|
||||
},
|
||||
"WEAK": "faible"
|
||||
},
|
||||
"PASSWORD_UPDATED": "Votre mot de passe a été mis à jour. Cliquez {0} pour vous connecter.",
|
||||
"PROFILE": {
|
||||
@ -65,12 +65,24 @@
|
||||
"MONDAY": "Lundi",
|
||||
"PICTURE": "Image de profil",
|
||||
"PICTURE_EDITION": "Mise à jour de l'image de profil",
|
||||
"PICTURE_UPDATE": "Mettre à jour l'image",
|
||||
"PICTURE_REMOVE": "Supprimer",
|
||||
"PICTURE_UPDATE": "Mettre à jour l'image",
|
||||
"PREFERENCES_EDITION": "Mise à jour des préférences",
|
||||
"PROFILE_EDITION": "Mise à jour du profil",
|
||||
"REGISTRATION_DATE": "Date d'inscription",
|
||||
"SPORT": {
|
||||
"ACTION": "action",
|
||||
"COLOR": "couleur",
|
||||
"DISABLED_BY_ADMIN": "désactivé par l'administrateur",
|
||||
"IS_ACTIVE": "actif",
|
||||
"LABEL": "label",
|
||||
"STOPPED_SPEED_THRESHOLD": "seuil de vitesse arrêtée"
|
||||
},
|
||||
"SPORTS_EDITION": "Mise à jour des préférences des sports",
|
||||
"SUCCESSFUL_EMAIL_UPDATE": "Votre compte a été modifié avec succès. Veuillez vérifier votre boîte de réception pour valider votre nouvelle adresse électronique.",
|
||||
"SUCCESSFUL_REGISTRATION": "Votre compte a été créé avec succès.",
|
||||
"SUCCESSFUL_REGISTRATION_WITH_EMAIL": "Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie.",
|
||||
"SUCCESSFUL_UPDATE": "Votre compte a été modifié avec succès.",
|
||||
"SUNDAY": "Dimanche",
|
||||
"TABS": {
|
||||
"ACCOUNT": "compte",
|
||||
@ -80,24 +92,12 @@
|
||||
"PROFILE": "profil",
|
||||
"SPORTS": "sports"
|
||||
},
|
||||
"TIMEZONE": "Fuseau horaire",
|
||||
"UNITS": {
|
||||
"LABEL": "Unités pour les distances",
|
||||
"IMPERIAL": "Système impérial (ft, mi, mph, °F)",
|
||||
"LABEL": "Unités pour les distances",
|
||||
"METRIC": "Système métrique (m, km, m/s, °C)"
|
||||
},
|
||||
"SPORT": {
|
||||
"ACTION": "action",
|
||||
"COLOR": "couleur",
|
||||
"DISABLED_BY_ADMIN": "désactivé par l'administrateur",
|
||||
"IS_ACTIVE": "actif",
|
||||
"LABEL": "label",
|
||||
"STOPPED_SPEED_THRESHOLD": "seuil de vitesse arrêtée"
|
||||
},
|
||||
"SUCCESSFUL_EMAIL_UPDATE": "Votre compte a été modifié avec succès. Veuillez vérifier votre boîte de réception pour valider votre nouvelle adresse électronique.",
|
||||
"SUCCESSFUL_REGISTRATION": "Votre compte a été créé avec succès.",
|
||||
"SUCCESSFUL_REGISTRATION_WITH_EMAIL": "Un lien pour activer votre compte a été envoyé à l'adresse électronique fournie.",
|
||||
"SUCCESSFUL_UPDATE": "Votre compte a été modifié avec succès.",
|
||||
"TIMEZONE": "Fuseau horaire"
|
||||
}
|
||||
},
|
||||
"REGISTER": "S'inscrire",
|
||||
"REGISTER_DISABLED": "Désolé, les inscriptions sont désactivées.",
|
||||
@ -105,7 +105,7 @@
|
||||
"RESET_PASSWORD": "Réinitialiser votre mot de passe",
|
||||
"SHOW_PASSWORD": "afficher le mot de passe",
|
||||
"THIS_USER_ACCOUNT_IS_INACTIVE": "Le compte de cet utilisateur est inactif.",
|
||||
"USER_PICTURE": "photo de l'utilisateur",
|
||||
"USERNAME": "Nom d'utilisateur",
|
||||
"USERNAME_INFO": "3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés."
|
||||
"USERNAME_INFO": "3 à 30 caractères requis, seuls les caractères alphanumériques et le caractère _ sont autorisés.",
|
||||
"USER_PICTURE": "photo de l'utilisateur"
|
||||
}
|
@ -16,6 +16,9 @@
|
||||
"FROM": "à partir de",
|
||||
"GPX_FILE": "fichier .gpx",
|
||||
"HIDE_FILTERS": "masquer les filtres",
|
||||
"INVALID_ASCENT_OR_DESCENT": "Les 2 valeurs pour l'élévation doivent être renseignées et être supérieures ou égales à 0.",
|
||||
"INVALID_DISTANCE": "La distance doit être supérieure à 0",
|
||||
"INVALID_DURATION": "La durée doit être supérieure à 0 secondes",
|
||||
"LATEST_WORKOUTS": "Séances récentes",
|
||||
"LOAD_MORE_WORKOUT": "Charger les séances suivantes",
|
||||
"MAX_ALTITUDE": "altitude max",
|
||||
@ -25,6 +28,7 @@
|
||||
"MIN_ALTITUDE": "altitude min",
|
||||
"NEXT_SEGMENT": "Segment suivant",
|
||||
"NEXT_WORKOUT": "Séance suivante",
|
||||
"NOTES": "notes",
|
||||
"NO_DATA_CLEANING": "données issues du fichier gpx, sans correction",
|
||||
"NO_FILE_PROVIDED": "Pas de fichier fourni",
|
||||
"NO_FOLDER": "pas de répertoire",
|
||||
@ -36,7 +40,6 @@
|
||||
"NO_PREVIOUS_WORKOUT": "Pas de séance précédente",
|
||||
"NO_RECORDS": "Pas de records.",
|
||||
"NO_WORKOUTS": "Pas de séances.",
|
||||
"NOTES": "notes",
|
||||
"PAUSES": "pauses",
|
||||
"PREVIOUS_SEGMENT": "Segment précédent",
|
||||
"PREVIOUS_WORKOUT": "Séance précédente",
|
||||
@ -58,27 +61,6 @@
|
||||
"TOTAL_DURATION": "durée totale",
|
||||
"UPLOAD_FIRST_WORKOUT": "Ajoutez votre première séance !",
|
||||
"WEATHER": {
|
||||
"HUMIDITY": "humidité",
|
||||
"TEMPERATURE": "température",
|
||||
"WIND": "vent",
|
||||
"WIND_DIRECTIONS": {
|
||||
"N": "N",
|
||||
"NNE": "NNE",
|
||||
"NE": "NE",
|
||||
"ENE": "ENE",
|
||||
"E": "E",
|
||||
"ESE": "ESE",
|
||||
"SE": "SE",
|
||||
"SSE": "SSE",
|
||||
"S": "S",
|
||||
"SSW": "SSO",
|
||||
"SW": "SO",
|
||||
"WSW": "OSO",
|
||||
"W": "O",
|
||||
"WNW": "ONO",
|
||||
"NW": "NO",
|
||||
"NNW": "NNO"
|
||||
},
|
||||
"DARK_SKY": {
|
||||
"clear-day": "ensoleillé",
|
||||
"clear-night": "nuit claire",
|
||||
@ -90,10 +72,31 @@
|
||||
"sleet": "neige fondue",
|
||||
"snow": "neige",
|
||||
"wind": "venteux"
|
||||
},
|
||||
"HUMIDITY": "humidité",
|
||||
"TEMPERATURE": "température",
|
||||
"WIND": "vent",
|
||||
"WIND_DIRECTIONS": {
|
||||
"E": "E",
|
||||
"ENE": "ENE",
|
||||
"ESE": "ESE",
|
||||
"N": "N",
|
||||
"NE": "NE",
|
||||
"NNE": "NNE",
|
||||
"NNW": "NNO",
|
||||
"NW": "NO",
|
||||
"S": "S",
|
||||
"SE": "SE",
|
||||
"SSE": "SSE",
|
||||
"SSW": "SSO",
|
||||
"SW": "SO",
|
||||
"W": "O",
|
||||
"WNW": "ONO",
|
||||
"WSW": "OSO"
|
||||
}
|
||||
},
|
||||
"WITH_GPX": "avec un fichier .gpx",
|
||||
"WITHOUT_GPX": "sans fichier .gpx",
|
||||
"WITH_GPX": "avec un fichier .gpx",
|
||||
"WORKOUT": "séance | séances",
|
||||
"WORKOUT_DATE": "date de la séance",
|
||||
"WORKOUT_DELETION_CONFIRMATION": "Etes-vous sûr de vouloir supprimer cette séance ?",
|
||||
|
6
fittrackee_client/src/locales/it/about.json
Normal file
6
fittrackee_client/src/locales/it/about.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"CONTACT_ADMIN": "Contatta l'amministratore",
|
||||
"FITTRACKEE_DESCRIPTION": "<strong>FitTrackee</strong> è un tracker self-hosted per attività outdoor.",
|
||||
"FITTRACKEE_LICENSE": "Sotto licenza {0} ",
|
||||
"SOURCE_CODE": "Codice sorgente"
|
||||
}
|
59
fittrackee_client/src/locales/it/administration.json
Normal file
59
fittrackee_client/src/locales/it/administration.json
Normal file
@ -0,0 +1,59 @@
|
||||
{
|
||||
"ACTION": "Azione",
|
||||
"ACTIVATE_USER_ACCOUNT": "Attiva account",
|
||||
"ACTIVE": "Attivo",
|
||||
"ADMIN": "Admin",
|
||||
"ADMINISTRATION": "Amministrazione",
|
||||
"ADMIN_RIGHTS_DELETE_USER_ACCOUNT": "Aggiungi/rimuovi permessi, elimina account utente.",
|
||||
"APPLICATION": "Applicazione",
|
||||
"APP_CONFIG": {
|
||||
"ADMIN_CONTACT": "Email di contatto dell'amministratore",
|
||||
"MAX_FILES_IN_ZIP_LABEL": "Numero massimo di files zip",
|
||||
"MAX_USERS_HELP": "Se settato a 0, non ci sono limiti per le registrazioni.",
|
||||
"MAX_USERS_LABEL": "Numero massimo di utenti attivi",
|
||||
"NO_CONTACT_EMAIL": "nessuna mail di contatto",
|
||||
"SINGLE_UPLOAD_MAX_SIZE_LABEL": "Dimensione massima dei file caricabili (in Mb)",
|
||||
"TITLE": "Configurazione applicazione",
|
||||
"ZIP_UPLOAD_MAX_SIZE_LABEL": "Dimensione massima dell'archivio zip (in Mb)"
|
||||
},
|
||||
"BACK_TO_ADMIN": "Ritorna ad amministrazione",
|
||||
"CONFIRM_USER_ACCOUNT_DELETION": "Sei sicuro di voler eliminare {0} account? Tutti i dati verranno persi, quest'azione non può essere annullata.",
|
||||
"CONFIRM_USER_PASSWORD_RESET": "Sei sicuro di voler resettare {0} password?",
|
||||
"CURRENT_EMAIL": "Email corrente",
|
||||
"DELETE_USER": "Elimina utente",
|
||||
"EMAIL_SENDING_DISABLED": "L'invio di email è disabilitato.",
|
||||
"ENABLE_DISABLE_SPORTS": "Attiva/Disattiva sports.",
|
||||
"NEW_EMAIL": "Nuova email",
|
||||
"PASSWORD_RESET_SUCCESSFUL": "La password è stata reimpostata.",
|
||||
"REGISTRATION_DISABLED": "La registrazione è al momento disabilitata.",
|
||||
"REGISTRATION_ENABLED": "La registrazione è al momento abilitata.",
|
||||
"RESET_USER_PASSWORD": "Reset password",
|
||||
"SPORTS": {
|
||||
"TABLE": {
|
||||
"ACTIVE": "Attivo",
|
||||
"HAS_WORKOUTS": "workout esistono",
|
||||
"IMAGE": "Immagine",
|
||||
"LABEL": "Etichetta"
|
||||
},
|
||||
"TITLE": "Amministrazione sport"
|
||||
},
|
||||
"UPDATE_APPLICATION_DESCRIPTION": "Aggiorna configurazione applicazione (numero massimo di utenti registrati, dimensione massima dei files).",
|
||||
"UPDATE_USER_EMAIL": "Aggiorna email",
|
||||
"USER": "utente | utenti",
|
||||
"USERS": {
|
||||
"SELECTS": {
|
||||
"ORDER_BY": {
|
||||
"ADMIN": "stato admin",
|
||||
"CREATED_AT": "data di registrazione",
|
||||
"IS_ACTIVE": "stato account",
|
||||
"USERNAME": "nome utente",
|
||||
"WORKOUTS_COUNT": "numero di workout"
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
"ADD_ADMIN_RIGHTS": "Aggiungi permessi di amministratore",
|
||||
"REMOVE_ADMIN_RIGHTS": "Rimuovi permessi di amministratore"
|
||||
}
|
||||
},
|
||||
"USER_EMAIL_UPDATE_SUCCESSFUL": "L'indirizzo email è stato aggiornato."
|
||||
}
|
38
fittrackee_client/src/locales/it/api.json
Normal file
38
fittrackee_client/src/locales/it/api.json
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
"ERROR": {
|
||||
"Network Error": "Errore di rete.",
|
||||
"UNKNOWN": "Errore. Per favore riprova o contatta l'amminstratore.",
|
||||
"at least one file in zip archive exceeds size limit, please check the archive": "Almeno un file nell'archivio zip supera il limite di dimensione, per favore controlla.",
|
||||
"email: valid email must be provided": "Email: dev'essere inserita un'email valida.",
|
||||
"error during gpx file parsing": "Errore nella lettura del file gpx.",
|
||||
"error during gpx processing": "Errore nell'elaborazione del file gpx.",
|
||||
"error on getting configuration": "Errore nella lettura della configurazione.",
|
||||
"error when updating configuration": "Errore nell'aggiornamento della configurazione",
|
||||
"error, please try again or contact the administrator": "Errore, per favore riprova o contatta l'amministratore.",
|
||||
"error, registration is disabled": "Errore, la registrazione è disabilitata.",
|
||||
"file extension not allowed": "File con estensione non permessa.",
|
||||
"file size is greater than the allowed size": "La dimensione del file è maggiore di quella massima permessa.",
|
||||
"invalid credentials": "Credenziali errate.",
|
||||
"invalid payload": "I dati inseriti non sono validi.",
|
||||
"invalid token, please log in again": "Token scaduto, per favore ripeti il log in.",
|
||||
"invalid token, please request a new token": "Token scaduto, per favore ripeti il log in.",
|
||||
"new email must be different than curent email": "La nuova email dev'essere diversa dalla vecchia mail",
|
||||
"no file part": "Nessun file scelto.",
|
||||
"no selected file": "Nessun file scelto.",
|
||||
"password: password and password confirmation do not match": "Password: la password inserita e la conferma non combaciano.",
|
||||
"provide a valid auth token": "Insersci un token di autenticazione valido.",
|
||||
"signature expired, please log in again": "Token scaduto. Per favore ripeti il log in.",
|
||||
"sorry, that username is already taken": "Mi dispiace, quell'username è già esistente.",
|
||||
"sport does not exist": "Questo sport non esiste.",
|
||||
"successfully registered": "Registrato con successo.",
|
||||
"the number of files in the archive exceeds the limit": "Il numero di files nell'archivio supera il limite massimo permesso.",
|
||||
"user does not exist": "L'utente non esiste.",
|
||||
"valid email must be provided for admin contact": "Dev'essere inserita un'email valida",
|
||||
"you can not delete your account, no other user has admin rights": "Non puoi eliminare questo account, nessun'altro account ha permessi di amministratore.",
|
||||
"you do not have permissions": "Non hai i permessi necessari."
|
||||
},
|
||||
"PAGINATION": {
|
||||
"NEXT": "avanti",
|
||||
"PREVIOUS": "precedente"
|
||||
}
|
||||
}
|
18
fittrackee_client/src/locales/it/buttons.json
Normal file
18
fittrackee_client/src/locales/it/buttons.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"ACCOUNT-CONFIRMATION-RESEND": "Re-invia email di conferma",
|
||||
"AUTHORIZE": "Autorizza",
|
||||
"BACK": "Indietro",
|
||||
"CANCEL": "Annulla",
|
||||
"CLEAR_FILTER": "Resetta filtri",
|
||||
"DELETE_MY_ACCOUNT": "Elimina il mio account",
|
||||
"DISABLE": "Disattiva",
|
||||
"EDIT": "Modifica",
|
||||
"ENABLE": "Attiva",
|
||||
"FILTER": "Filtra",
|
||||
"LOGIN": "Log in",
|
||||
"NO": "No",
|
||||
"REGISTER": "Registra",
|
||||
"RESET": "Reset",
|
||||
"SUBMIT": "Invia",
|
||||
"YES": "Si"
|
||||
}
|
25
fittrackee_client/src/locales/it/common.json
Normal file
25
fittrackee_client/src/locales/it/common.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"ABOUT": "about",
|
||||
"CONFIRMATION": "Conferma",
|
||||
"CONTACT": "contatto",
|
||||
"DAY": "giorno | giorni",
|
||||
"DISPLAYED": "Mostrato",
|
||||
"DOCUMENTATION": "documentazione",
|
||||
"HERE": "qui",
|
||||
"HIDDEN": "Nascosto",
|
||||
"HOME": "Home",
|
||||
"SELECTS": {
|
||||
"ORDER": {
|
||||
"ASC": "Dal più basso al più alto",
|
||||
"DESC": "Dal più alto al più basso",
|
||||
"LABEL": "ordina"
|
||||
},
|
||||
"ORDER_BY": {
|
||||
"LABEL": "ordina per"
|
||||
},
|
||||
"PER_PAGE": {
|
||||
"LABEL": "per pagina"
|
||||
}
|
||||
},
|
||||
"TOTAL": "Totale"
|
||||
}
|
4
fittrackee_client/src/locales/it/dashboard.json
Normal file
4
fittrackee_client/src/locales/it/dashboard.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"DASHBOARD": "Dashboard",
|
||||
"THIS_MONTH": "Questo mese"
|
||||
}
|
9
fittrackee_client/src/locales/it/error.json
Normal file
9
fittrackee_client/src/locales/it/error.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"APP_ERROR": "L'applicazione ha riscontrato dei problemi. <br /> Per favore riprova più tardi o contatta l'amministratore.",
|
||||
"NOT_FOUND": {
|
||||
"PAGE": "Pagina non trovata",
|
||||
"WORKOUT": "Workout non trovato"
|
||||
},
|
||||
"SOMETHING_WRONG": "Qualcosa è andato storto",
|
||||
"UNKNOWN": "Errore. Per favore riprova o contatta l'amministratore."
|
||||
}
|
27
fittrackee_client/src/locales/it/it.ts
Normal file
27
fittrackee_client/src/locales/it/it.ts
Normal file
@ -0,0 +1,27 @@
|
||||
import AboutTranslations from './about.json'
|
||||
import AdministrationTranslations from './administration.json'
|
||||
import ApiTranslations from './api.json'
|
||||
import ButtonsTranslations from './buttons.json'
|
||||
import CommonTranslations from './common.json'
|
||||
import DashboardTranslations from './dashboard.json'
|
||||
import ErrorTranslations from './error.json'
|
||||
import OAuth2Translations from './oauth2.json'
|
||||
import SportsTranslations from './sports.json'
|
||||
import StatisticsTranslations from './statistics.json'
|
||||
import UserTranslations from './user.json'
|
||||
import WorkoutsTranslations from './workouts.json'
|
||||
|
||||
export default {
|
||||
about: AboutTranslations,
|
||||
admin: AdministrationTranslations,
|
||||
api: ApiTranslations,
|
||||
buttons: ButtonsTranslations,
|
||||
common: CommonTranslations,
|
||||
dashboard: DashboardTranslations,
|
||||
error: ErrorTranslations,
|
||||
oauth2: OAuth2Translations,
|
||||
sports: SportsTranslations,
|
||||
statistics: StatisticsTranslations,
|
||||
user: UserTranslations,
|
||||
workouts: WorkoutsTranslations,
|
||||
}
|
36
fittrackee_client/src/locales/it/oauth2.json
Normal file
36
fittrackee_client/src/locales/it/oauth2.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"ADD_A_NEW_APP": "Aggiungi una nuova applicazione OAuth2",
|
||||
"APP": {
|
||||
"CLIENT_ID": "Id",
|
||||
"CLIENT_SECRET": "Secret",
|
||||
"DESCRIPTION": "Descrizione applicazione",
|
||||
"ISSUE_AT": "Issue at",
|
||||
"NAME": "Nome applicazione",
|
||||
"REDIRECT_URL": "URL redirect",
|
||||
"SCOPE": {
|
||||
"LABEL": "Scope",
|
||||
"application:write_DESCRIPTION": "da permessi di scrittura alla configurazioen dell'applicazione.",
|
||||
"profile:read_DESCRIPTION": "da permessi di lettura a <code>auth</code> endpoints.",
|
||||
"profile:write_DESCRIPTION": "da permessi di scrittura a <code>auth</code> endpoints.",
|
||||
"users:read_DESCRIPTION": "da permessi di lettura a <code>users</code> endpoints.",
|
||||
"users:write_DESCRIPTION": "da permessi di scrittura a <code>users</code>endpoints.",
|
||||
"workouts:read_DESCRIPTION": "da permessi di lettura a <code>workouts</code> endpoints.",
|
||||
"workouts:write_DESCRIPTION": "da permessi di scrittura a <code>workouts</code> endpoints."
|
||||
},
|
||||
"URL": "URL applicazione"
|
||||
},
|
||||
"APPS_LIST": "Applicazioni OAuth2",
|
||||
"APP_CREATED_SUCCESSFULLY": "Applicazione creata. Sii certo di copiare il secret ora, non lo rivedrai più.",
|
||||
"APP_DELETION_CONFIRMATION": "Sei sicuro di voler eliminare quest'app?",
|
||||
"APP_REQUESTING_ACCESS": "L'applicazione {0} sta chiedendo:",
|
||||
"AUTHORIZE_APP": "Autorizzi {0} ad utilizzare il tuo account?",
|
||||
"COPY_TO_CLIPBOARD": "copia nella clipboard",
|
||||
"DELETE_APP": "Elimina applicazione",
|
||||
"NEW_APP": "Aggiungi applicazione",
|
||||
"NO_APP": "Applicazione non trovata!",
|
||||
"NO_APPS": "nessuna applicazione",
|
||||
"NO_DESCRIPTION": "nessuna descrizione",
|
||||
"REVOKE_ALL_TOKENS": "Rimuovi tutti i tokens",
|
||||
"TOKENS_REVOCATION_CONFIRMATION": "Sei sicuro di voler rimuovere tutti i token?",
|
||||
"TOKENS_REVOKED": "Tutti i token esistenti associati sono stati rimossi."
|
||||
}
|
44
fittrackee_client/src/locales/it/sports.json
Normal file
44
fittrackee_client/src/locales/it/sports.json
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
"Cycling (Sport)": {
|
||||
"LABEL": "Ciclismo (Sport)"
|
||||
},
|
||||
"Cycling (Transport)": {
|
||||
"LABEL": "Ciclismo (Trasporto)"
|
||||
},
|
||||
"Cycling (Virtual)": {
|
||||
"LABEL": "Cicliscmo (Virtuale)"
|
||||
},
|
||||
"Hiking": {
|
||||
"LABEL": "Escursioni"
|
||||
},
|
||||
"Mountain Biking": {
|
||||
"LABEL": "Mountain Biking"
|
||||
},
|
||||
"Mountain Biking (Electric)": {
|
||||
"LABEL": "Mountain Biking (Elettrica)"
|
||||
},
|
||||
"Mountaineering": {
|
||||
"LABEL": "Alpinismo"
|
||||
},
|
||||
"Rowing": {
|
||||
"LABEL": "Canottaggio"
|
||||
},
|
||||
"Running": {
|
||||
"LABEL": "Corsa"
|
||||
},
|
||||
"Skiing (Alpine)": {
|
||||
"LABEL": "Sci (Alpino)"
|
||||
},
|
||||
"Skiing (Cross Country)": {
|
||||
"LABEL": "Sci (Cross Country)"
|
||||
},
|
||||
"Snowshoes": {
|
||||
"LABEL": "Racchette da neve"
|
||||
},
|
||||
"Trail": {
|
||||
"LABEL": "Sentieri"
|
||||
},
|
||||
"Walking": {
|
||||
"LABEL": "Camminata"
|
||||
}
|
||||
}
|
8
fittrackee_client/src/locales/it/statistics.json
Normal file
8
fittrackee_client/src/locales/it/statistics.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"STATISTICS": "Statistiche",
|
||||
"TIME_FRAMES": {
|
||||
"month": "mese",
|
||||
"week": "settimana",
|
||||
"year": "anno"
|
||||
}
|
||||
}
|
111
fittrackee_client/src/locales/it/user.json
Normal file
111
fittrackee_client/src/locales/it/user.json
Normal file
@ -0,0 +1,111 @@
|
||||
{
|
||||
"ACCOUNT_CONFIRMATION_NOT_RECEIVED": "Non hai ricevuto istruzioni?",
|
||||
"ACCOUNT_CONFIRMATION_SENT": "Controlla la tua email. Una nuova email di conferma è stata inviata all'indirizzo specificato.",
|
||||
"ADMIN": "Admin",
|
||||
"ALREADY_HAVE_ACCOUNT": "Hai già un account?",
|
||||
"CONFIRM_ACCOUNT_DELETION": "Sei sicuro di voler eliminare il tuo account? Tutti i dati saranno eliminati, quest'azione non può essere annullata",
|
||||
"CURRENT_PASSWORD": "Password corrente",
|
||||
"EMAIL": "Email",
|
||||
"EMAIL_INFO": "Inserisci un indirizzo email valido.",
|
||||
"ENTER_PASSWORD": "Inserisci una password",
|
||||
"FILTER_ON_USERNAME": "Filtra per username",
|
||||
"HIDE_PASSWORD": "nascondi password",
|
||||
"INVALID_TOKEN": "Token invalido, per favore richiedi un nuovo reset della password.",
|
||||
"LANGUAGE": "Lingua",
|
||||
"LOGIN": "Login",
|
||||
"LOGOUT": "Logout",
|
||||
"LOG_IN": "log in",
|
||||
"NEW_PASSWORD": "Nuova password",
|
||||
"NO_USERS_FOUND": "Nessun utente trovato.",
|
||||
"PASSWORD": "Password",
|
||||
"PASSWORD_FORGOTTEN": "Password dimenticata?",
|
||||
"PASSWORD_INFO": "Inserisci almeno 8 caratteri.",
|
||||
"PASSWORD_RESET": "Reset password",
|
||||
"PASSWORD_SENT_EMAIL_TEXT": "Controlla la tua email. Se l'indirizzo inserito è nel nostro database, riceverai un'email con un link per resettare la tua password.",
|
||||
"PASSWORD_STRENGTH": {
|
||||
"AVERAGE": "media",
|
||||
"GOOD": "buona",
|
||||
"LABEL": "sicurezza password",
|
||||
"STRONG": "forte",
|
||||
"SUGGESTIONS": {
|
||||
"allUppercase": "Inserisci qualche maiuscola.",
|
||||
"anotherWord": "Aggiungi più parole che sono meno comuni.",
|
||||
"associatedYears": "Evita date che possono essere associate a te.",
|
||||
"capitalization": "Inserisci maiuscole oltre alla prima lettera.",
|
||||
"dates": "Evita date che possono essere associate a te.",
|
||||
"l33t": "Evita sostituzioni prevedibili, per esempio, {'@'} per la a.",
|
||||
"longerKeyboardPattern": "Usa patterns più lunghi e cambia direzione di scrittura più volte.",
|
||||
"noNeed": "Puoi creare password sicure senza utilizzare simboli, numeri, o maiuscole.",
|
||||
"pwned": "È consigliabile cambiare questa password se è utilizzata per altro.",
|
||||
"recentYears": "Evita date recenti.",
|
||||
"repeated": "Evita di ripetere lettere e parole.",
|
||||
"reverseWords": "Evita di scrivere parole al contrario.",
|
||||
"sequences": "Evita sequenze di caratteri comuni.",
|
||||
"useWords": "Usa più parole, ma evita frasi comuni."
|
||||
},
|
||||
"WEAK": "bassa"
|
||||
},
|
||||
"PASSWORD_UPDATED": "La tua password è stata aggiornata. Clicca {0} per effettuare il login.",
|
||||
"PROFILE": {
|
||||
"ACCOUNT_EDITION": "Tipo di account",
|
||||
"ASCENT_DATA": "Dati relativi alle salite (singoli, totale)",
|
||||
"BACK_TO_PROFILE": "Ritorna al profilo",
|
||||
"BIO": "Bio",
|
||||
"BIRTH_DATE": "Data di nascita",
|
||||
"DATE_FORMAT": "Formato data",
|
||||
"EDIT": "Modifica profilo",
|
||||
"EDIT_PREFERENCES": "Modifica preferenze",
|
||||
"EDIT_SPORTS_PREFERENCES": "Modifica preferenze sport",
|
||||
"ERRORED_EMAIL_UPDATE": "Per favore {0} per cambiare di nuovo la tua mail o contatta l'amministratore",
|
||||
"FIRST_DAY_OF_WEEK": "Primo giorno della settimana",
|
||||
"FIRST_NAME": "Nome",
|
||||
"LANGUAGE": "Lingua",
|
||||
"LAST_NAME": "Cognome",
|
||||
"LOCATION": "Posizione",
|
||||
"MONDAY": "Lunedì",
|
||||
"PICTURE": "Foto",
|
||||
"PICTURE_EDITION": "Foto",
|
||||
"PICTURE_REMOVE": "Rimuovi foto",
|
||||
"PICTURE_UPDATE": "Aggiorna foto",
|
||||
"PREFERENCES_EDITION": "Preferenze",
|
||||
"PROFILE_EDITION": "Profilo",
|
||||
"REGISTRATION_DATE": "Data di registrazione",
|
||||
"SPORT": {
|
||||
"ACTION": "azione",
|
||||
"COLOR": "colore",
|
||||
"DISABLED_BY_ADMIN": "disattivato dall'amministratore",
|
||||
"IS_ACTIVE": "attivo",
|
||||
"LABEL": "etichetta",
|
||||
"STOPPED_SPEED_THRESHOLD": "Limite minimo di velocità"
|
||||
},
|
||||
"SPORTS_EDITION": "Preferenze sport",
|
||||
"SUCCESSFUL_EMAIL_UPDATE": "Il tuo account è stato aggiornato con successo. Per favore controlla la tua email per confermare il tuo indirizzo email.",
|
||||
"SUCCESSFUL_REGISTRATION": "Il tuo account è stato creato con successo.",
|
||||
"SUCCESSFUL_REGISTRATION_WITH_EMAIL": "Un link per attivare il tuo account è stato inviato all'indirizzo specificato.",
|
||||
"SUCCESSFUL_UPDATE": "Il tuo account è stato aggiornato con successo.",
|
||||
"SUNDAY": "Domenica",
|
||||
"TABS": {
|
||||
"ACCOUNT": "account",
|
||||
"APPS": "apps",
|
||||
"PICTURE": "foto",
|
||||
"PREFERENCES": "preferenze",
|
||||
"PROFILE": "profilo",
|
||||
"SPORTS": "sports"
|
||||
},
|
||||
"TIMEZONE": "Timezone",
|
||||
"UNITS": {
|
||||
"IMPERIAL": "Sistema imperiale (ft, mi, mph, °F)",
|
||||
"LABEL": "Unità per la distanza",
|
||||
"METRIC": "Sistema metrico (m, km, m/s, °C)"
|
||||
}
|
||||
},
|
||||
"REGISTER": "Registra",
|
||||
"REGISTER_DISABLED": "Mi dispiace, la registrazione è disabilitata.",
|
||||
"RESENT_ACCOUNT_CONFIRMATION": "Re-invia email di conferma dell'account",
|
||||
"RESET_PASSWORD": "Resetta password",
|
||||
"SHOW_PASSWORD": "mostra password",
|
||||
"THIS_USER_ACCOUNT_IS_INACTIVE": "Questo account è inattivo.",
|
||||
"USERNAME": "Username",
|
||||
"USERNAME_INFO": "Sono richiesti da 3 a 30 caratteri, è permesso utilizzare solo caratteri alfanumerici ed il simbolo \"_\".",
|
||||
"USER_PICTURE": "foto profilo"
|
||||
}
|
104
fittrackee_client/src/locales/it/workouts.json
Normal file
104
fittrackee_client/src/locales/it/workouts.json
Normal file
@ -0,0 +1,104 @@
|
||||
{
|
||||
"ADD_WORKOUT": "Aggiungi un workout",
|
||||
"ANALYSIS": "analisi",
|
||||
"ASCENT": "salita",
|
||||
"AVERAGE_SPEED": "velocità media",
|
||||
"AVE_SPEED": "vel. media",
|
||||
"BACK_TO_WORKOUT": "ritorna al workout",
|
||||
"DATE": "data",
|
||||
"DESCENT": "discesa",
|
||||
"DISPLAY_FILTERS": "mostra filtri",
|
||||
"DISTANCE": "distanza",
|
||||
"DURATION": "durata",
|
||||
"EDIT_WORKOUT": "Modifica il workout",
|
||||
"ELEVATION": "elevazione",
|
||||
"END": "fine",
|
||||
"FROM": "da",
|
||||
"GPX_FILE": "file .gpx",
|
||||
"HIDE_FILTERS": "nascondi filtri",
|
||||
"INVALID_DISTANCE": "La distanza dev'essere maggiore di 0",
|
||||
"INVALID_DURATION": "La durata dev'essere maggiore di 0",
|
||||
"LATEST_WORKOUTS": "Ultimi workout",
|
||||
"LOAD_MORE_WORKOUT": "Carica più workout",
|
||||
"MAX_ALTITUDE": "altitudine massima",
|
||||
"MAX_FILES": "file massimi",
|
||||
"MAX_SIZE": "dimensione massima",
|
||||
"MAX_SPEED": "velocità massima",
|
||||
"MIN_ALTITUDE": "altitudine minima",
|
||||
"NEXT_SEGMENT": "Nessun segmento successivo",
|
||||
"NEXT_WORKOUT": "Prossimo workout",
|
||||
"NOTES": "note",
|
||||
"NO_DATA_CLEANING": "data dal file gpx, senza \"pulizia\"",
|
||||
"NO_FILE_PROVIDED": "Nessun file scelto",
|
||||
"NO_FOLDER": "nessuna cartella all'interno",
|
||||
"NO_MAP": "Nessuna mappa",
|
||||
"NO_NEXT_SEGMENT": "Nessun segmento successivo",
|
||||
"NO_NEXT_WORKOUT": "Nessun workout successivo",
|
||||
"NO_NOTES": "Nessuna nota",
|
||||
"NO_PREVIOUS_SEGMENT": "Nessun segmento precedente",
|
||||
"NO_PREVIOUS_WORKOUT": "Nessun workout precedente",
|
||||
"NO_RECORDS": "Nessun record.",
|
||||
"NO_WORKOUTS": "Nessun workout.",
|
||||
"PAUSES": "pause",
|
||||
"PREVIOUS_SEGMENT": "Segmento precedente",
|
||||
"PREVIOUS_WORKOUT": "Workout precedente",
|
||||
"RECORD": "record | records",
|
||||
"RECORD_AS": "Vel. media",
|
||||
"RECORD_FD": "Distanza più lunga",
|
||||
"RECORD_HA": "Salita più alta",
|
||||
"RECORD_LD": "Durata più lunga",
|
||||
"RECORD_MS": "Vel. massima",
|
||||
"REMAINING_CHARS": "caratteri rimanenti",
|
||||
"SEGMENT": "segmento | segmenti",
|
||||
"SPEED": "velocità",
|
||||
"SPORT": "sport | sports",
|
||||
"START": "inizio",
|
||||
"START_AND_FINISH": "Inizio e fine",
|
||||
"START_ELEVATION_AT_ZERO": "partenza asse elevazione a 0",
|
||||
"TITLE": "titolo",
|
||||
"TO": "a",
|
||||
"TOTAL_DURATION": "durata totale",
|
||||
"UPLOAD_FIRST_WORKOUT": "Carica file!",
|
||||
"WEATHER": {
|
||||
"DARK_SKY": {
|
||||
"clear-day": "cielo chiaro",
|
||||
"clear-night": "notte chiara",
|
||||
"cloudy": "nuvoloso",
|
||||
"fog": "nebbia",
|
||||
"partly-cloudy-day": "parzialmente nuvoloso",
|
||||
"partly-cloudy-night": "notte parzialmente nuvolosa",
|
||||
"rain": "pioggia",
|
||||
"sleet": "nevischio",
|
||||
"snow": "neve",
|
||||
"wind": "vento"
|
||||
},
|
||||
"HUMIDITY": "umidità",
|
||||
"TEMPERATURE": "temperatura",
|
||||
"WIND": "vento",
|
||||
"WIND_DIRECTIONS": {
|
||||
"E": "E",
|
||||
"ENE": "ENE",
|
||||
"ESE": "ESE",
|
||||
"N": "N",
|
||||
"NE": "NE",
|
||||
"NNE": "NNE",
|
||||
"NNW": "NNW",
|
||||
"NW": "NW",
|
||||
"S": "S",
|
||||
"SE": "SE",
|
||||
"SSE": "SSE",
|
||||
"SSW": "SSW",
|
||||
"SW": "SW",
|
||||
"W": "W",
|
||||
"WNW": "WNW",
|
||||
"WSW": "WSW"
|
||||
}
|
||||
},
|
||||
"WITHOUT_GPX": "senza file .gpx",
|
||||
"WITH_GPX": "con file .gpx",
|
||||
"WORKOUT": "workout | workouts",
|
||||
"WORKOUT_DATE": "data workout",
|
||||
"WORKOUT_DELETION_CONFIRMATION": "Sei sicuro di voler eliminare questo workout?",
|
||||
"ZIP_ARCHIVE": "file .zip",
|
||||
"ZIP_ARCHIVE_DESCRIPTION": "o file .zip contenente files .gpx"
|
||||
}
|
@ -1,2 +1,2 @@
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -1,2 +1,2 @@
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -1,2 +1,2 @@
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -1,2 +1,2 @@
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -1,2 +1,2 @@
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -1,2 +1,2 @@
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -1,2 +1,2 @@
|
||||
{
|
||||
}
|
||||
}
|
||||
|
6
fittrackee_client/src/locales/nl/about.json
Normal file
6
fittrackee_client/src/locales/nl/about.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"CONTACT_ADMIN": "Contacteer uw administrator",
|
||||
"FITTRACKEE_DESCRIPTION": "<strong>FitTrackee</strong> is zelf-gehoste buitenshuis activiteiten tracker.",
|
||||
"FITTRACKEE_LICENSE": "Onder {0} licentie ",
|
||||
"SOURCE_CODE": "Broncode"
|
||||
}
|
59
fittrackee_client/src/locales/nl/administration.json
Normal file
59
fittrackee_client/src/locales/nl/administration.json
Normal file
@ -0,0 +1,59 @@
|
||||
{
|
||||
"ACTION": "Actie",
|
||||
"ACTIVATE_USER_ACCOUNT": "Activeer account",
|
||||
"ACTIVE": "Ingeschakeld",
|
||||
"ADMIN": "Beheer",
|
||||
"ADMINISTRATION": "Instellingen",
|
||||
"ADMIN_RIGHTS_DELETE_USER_ACCOUNT": "Toevoegen/verwijderen van administrator rechten, verwijder gebruikersaccount.",
|
||||
"APPLICATION": "Applicatie",
|
||||
"APP_CONFIG": {
|
||||
"ADMIN_CONTACT": "Administrator email voor contact",
|
||||
"MAX_FILES_IN_ZIP_LABEL": "Max. aantal bestanden in zip archief",
|
||||
"MAX_USERS_HELP": "Bij 0, geen limiet op registratie.",
|
||||
"MAX_USERS_LABEL": "Max. aantal actieve gebruikers",
|
||||
"NO_CONTACT_EMAIL": "geen contact email",
|
||||
"SINGLE_UPLOAD_MAX_SIZE_LABEL": "Max. grootte van bestanden voor upload (in Mb)",
|
||||
"TITLE": "Applicatie configureren",
|
||||
"ZIP_UPLOAD_MAX_SIZE_LABEL": "Max. grootte van zip archief (in Mb)"
|
||||
},
|
||||
"BACK_TO_ADMIN": "Terug naar beheer",
|
||||
"CONFIRM_USER_ACCOUNT_DELETION": "Weet u zeker dat u de account {0} wilt wissen? Alle gegevens worden verwijderd, dit kan niet ongedaan gemaakt worden.",
|
||||
"CONFIRM_USER_PASSWORD_RESET": "Weet u zeker dat u het wachtwoord voor {0} wilt resetten?",
|
||||
"CURRENT_EMAIL": "Huidige email",
|
||||
"DELETE_USER": "Verwijder gebruiker",
|
||||
"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",
|
||||
"HAS_WORKOUTS": "Trainingen aanwezig",
|
||||
"IMAGE": "Afbeelding",
|
||||
"LABEL": "Label"
|
||||
},
|
||||
"TITLE": "Beheer sporten"
|
||||
},
|
||||
"UPDATE_APPLICATION_DESCRIPTION": "De applicatie configureren (maximum aantal geregistreerde gebruikers, maximum bestandsgrootte).",
|
||||
"UPDATE_USER_EMAIL": "Update email",
|
||||
"USER": "gebruiker | gebruikers",
|
||||
"USERS": {
|
||||
"SELECTS": {
|
||||
"ORDER_BY": {
|
||||
"ADMIN": "admin status",
|
||||
"CREATED_AT": "Registratie datum",
|
||||
"IS_ACTIVE": "Account status",
|
||||
"USERNAME": "gebruikersnaam",
|
||||
"WORKOUTS_COUNT": "aantal trainingen"
|
||||
}
|
||||
},
|
||||
"TABLE": {
|
||||
"ADD_ADMIN_RIGHTS": "Admin rechten toevoegen",
|
||||
"REMOVE_ADMIN_RIGHTS": "Verwijder admin rechten"
|
||||
}
|
||||
},
|
||||
"USER_EMAIL_UPDATE_SUCCESSFUL": "Het emailadres werd bijgewerkt."
|
||||
}
|
38
fittrackee_client/src/locales/nl/api.json
Normal file
38
fittrackee_client/src/locales/nl/api.json
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
"ERROR": {
|
||||
"Network Error": "Netwerk fout.",
|
||||
"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.",
|
||||
"email: valid email must be provided": "Email: een geldige email is vereist.",
|
||||
"error during gpx file parsing": "Fout bij het verwerken van het gpx bestand.",
|
||||
"error during gpx processing": "Fout bij verwerken van gpx.",
|
||||
"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.",
|
||||
"file size is greater than the allowed size": "Bestandsgrootte is groter dan toegestaan.",
|
||||
"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.",
|
||||
"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.",
|
||||
"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.",
|
||||
"signature expired, please log in again": "Signatuur verlopen. Log opnieuw in.",
|
||||
"sorry, that username is already taken": "Sorry, deze gebruikersnaam is al in gebruik.",
|
||||
"sport does not exist": "Deze sport bestaat niet.",
|
||||
"successfully registered": "Succesvol geregistreerd.",
|
||||
"the number of files in the archive exceeds the limit": "Het aantal bestanden in het zip archief overschrijdt de limiet.",
|
||||
"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."
|
||||
},
|
||||
"PAGINATION": {
|
||||
"NEXT": "volgende",
|
||||
"PREVIOUS": "vorige"
|
||||
}
|
||||
}
|
18
fittrackee_client/src/locales/nl/buttons.json
Normal file
18
fittrackee_client/src/locales/nl/buttons.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"ACCOUNT-CONFIRMATION-RESEND": "Herzend bevestigings email",
|
||||
"AUTHORIZE": "Toekennen",
|
||||
"BACK": "Terug",
|
||||
"CANCEL": "Annuleren",
|
||||
"CLEAR_FILTER": "Verwijder filters",
|
||||
"DELETE_MY_ACCOUNT": "Verwijder mijn account",
|
||||
"DISABLE": "Uitzetten",
|
||||
"EDIT": "Bewerken",
|
||||
"ENABLE": "Aanzetten",
|
||||
"FILTER": "Filter",
|
||||
"LOGIN": "Inloggen",
|
||||
"NO": "Nee",
|
||||
"REGISTER": "Registreer",
|
||||
"RESET": "Reset",
|
||||
"SUBMIT": "Aanpassen",
|
||||
"YES": "Ja"
|
||||
}
|
25
fittrackee_client/src/locales/nl/common.json
Normal file
25
fittrackee_client/src/locales/nl/common.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"ABOUT": "over",
|
||||
"CONFIRMATION": "Bevestiging",
|
||||
"CONTACT": "contacteer",
|
||||
"DAY": "dag | dagen",
|
||||
"DISPLAYED": "Weergegeven",
|
||||
"DOCUMENTATION": "documentatie",
|
||||
"HERE": "hier",
|
||||
"HIDDEN": "Verborgen",
|
||||
"HOME": "Startscherm",
|
||||
"SELECTS": {
|
||||
"ORDER": {
|
||||
"ASC": "oplopend",
|
||||
"DESC": "aflopend",
|
||||
"LABEL": "sorteer"
|
||||
},
|
||||
"ORDER_BY": {
|
||||
"LABEL": "sorteer op"
|
||||
},
|
||||
"PER_PAGE": {
|
||||
"LABEL": "per pagina"
|
||||
}
|
||||
},
|
||||
"TOTAL": "Totaal"
|
||||
}
|
4
fittrackee_client/src/locales/nl/dashboard.json
Normal file
4
fittrackee_client/src/locales/nl/dashboard.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"DASHBOARD": "Dashboard",
|
||||
"THIS_MONTH": "Deze maand"
|
||||
}
|
9
fittrackee_client/src/locales/nl/error.json
Normal file
9
fittrackee_client/src/locales/nl/error.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"APP_ERROR": "Er heeft zich een onbekende fout voorgedaan.<br />Probeer aub later opnieuw of contacteer de administrator.",
|
||||
"NOT_FOUND": {
|
||||
"PAGE": "Pagina niet gevonden",
|
||||
"WORKOUT": "Training niet gevonden"
|
||||
},
|
||||
"SOMETHING_WRONG": "Er ging iets mis",
|
||||
"UNKNOWN": "Fout. Probeer opnieuw of contacteer de administrator."
|
||||
}
|
27
fittrackee_client/src/locales/nl/nl.ts
Normal file
27
fittrackee_client/src/locales/nl/nl.ts
Normal file
@ -0,0 +1,27 @@
|
||||
import AboutTranslations from './about.json'
|
||||
import AdministrationTranslations from './administration.json'
|
||||
import ApiTranslations from './api.json'
|
||||
import ButtonsTranslations from './buttons.json'
|
||||
import CommonTranslations from './common.json'
|
||||
import DashboardTranslations from './dashboard.json'
|
||||
import ErrorTranslations from './error.json'
|
||||
import OAuth2Translations from './oauth2.json'
|
||||
import SportsTranslations from './sports.json'
|
||||
import StatisticsTranslations from './statistics.json'
|
||||
import UserTranslations from './user.json'
|
||||
import WorkoutsTranslations from './workouts.json'
|
||||
|
||||
export default {
|
||||
about: AboutTranslations,
|
||||
admin: AdministrationTranslations,
|
||||
api: ApiTranslations,
|
||||
buttons: ButtonsTranslations,
|
||||
common: CommonTranslations,
|
||||
dashboard: DashboardTranslations,
|
||||
error: ErrorTranslations,
|
||||
oauth2: OAuth2Translations,
|
||||
sports: SportsTranslations,
|
||||
statistics: StatisticsTranslations,
|
||||
user: UserTranslations,
|
||||
workouts: WorkoutsTranslations,
|
||||
}
|
36
fittrackee_client/src/locales/nl/oauth2.json
Normal file
36
fittrackee_client/src/locales/nl/oauth2.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"ADD_A_NEW_APP": "Nieuwe OAuth2 app toevoegen",
|
||||
"APP": {
|
||||
"CLIENT_ID": "Id",
|
||||
"CLIENT_SECRET": "Geheim",
|
||||
"DESCRIPTION": "App omschrijving",
|
||||
"ISSUE_AT": "Probleem bij",
|
||||
"NAME": "Naam van de app",
|
||||
"REDIRECT_URL": "Doorverwijs URL",
|
||||
"SCOPE": {
|
||||
"LABEL": "Omvang",
|
||||
"application:write_DESCRIPTION": "geeft toestemming tot aanpassen van de applicatie instellingen.",
|
||||
"profile:read_DESCRIPTION": "staat leestoegang toe aan <code>auth</code> endpoints.",
|
||||
"profile:write_DESCRIPTION": "staat schrijftoegang toe aan <code>auth</code> endpoints.",
|
||||
"users:read_DESCRIPTION": "staat leestoegang toe aan <code>users</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."
|
||||
},
|
||||
"URL": "App URL"
|
||||
},
|
||||
"APPS_LIST": "OAuth2 apps",
|
||||
"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:",
|
||||
"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."
|
||||
}
|
44
fittrackee_client/src/locales/nl/sports.json
Normal file
44
fittrackee_client/src/locales/nl/sports.json
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
"Cycling (Sport)": {
|
||||
"LABEL": "Fietsen (Sport)"
|
||||
},
|
||||
"Cycling (Transport)": {
|
||||
"LABEL": "Fietsen (Transport)"
|
||||
},
|
||||
"Cycling (Virtual)": {
|
||||
"LABEL": "Fietsen (Virtueel)"
|
||||
},
|
||||
"Hiking": {
|
||||
"LABEL": "Trektocht"
|
||||
},
|
||||
"Mountain Biking": {
|
||||
"LABEL": "Mountainbiken"
|
||||
},
|
||||
"Mountain Biking (Electric)": {
|
||||
"LABEL": "Mountainbiken (Elektrisch)"
|
||||
},
|
||||
"Mountaineering": {
|
||||
"LABEL": "Bergbeklimmen"
|
||||
},
|
||||
"Rowing": {
|
||||
"LABEL": "Roeien"
|
||||
},
|
||||
"Running": {
|
||||
"LABEL": "Lopen"
|
||||
},
|
||||
"Skiing (Alpine)": {
|
||||
"LABEL": "Skiën (Alpine)"
|
||||
},
|
||||
"Skiing (Cross Country)": {
|
||||
"LABEL": "Skiën (Cross Country)"
|
||||
},
|
||||
"Snowshoes": {
|
||||
"LABEL": "Sneeuwschoenen"
|
||||
},
|
||||
"Trail": {
|
||||
"LABEL": "Trail"
|
||||
},
|
||||
"Walking": {
|
||||
"LABEL": "Wandelen"
|
||||
}
|
||||
}
|
8
fittrackee_client/src/locales/nl/statistics.json
Normal file
8
fittrackee_client/src/locales/nl/statistics.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"STATISTICS": "Statistieken",
|
||||
"TIME_FRAMES": {
|
||||
"month": "maand",
|
||||
"week": "week",
|
||||
"year": "jaar"
|
||||
}
|
||||
}
|
111
fittrackee_client/src/locales/nl/user.json
Normal file
111
fittrackee_client/src/locales/nl/user.json
Normal file
@ -0,0 +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?",
|
||||
"CONFIRM_ACCOUNT_DELETION": "Weet u zeker dat u uw account wilt verwijderen? Alle data wordt verwijderd, dit kan niet ongedaan worden",
|
||||
"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.",
|
||||
"LANGUAGE": "Taal",
|
||||
"LOGIN": "Inloggen",
|
||||
"LOGOUT": "Uitloggen",
|
||||
"LOG_IN": "inloggen",
|
||||
"NEW_PASSWORD": "Nieuw wachtwoord",
|
||||
"NO_USERS_FOUND": "Geen gebruikers gevonden.",
|
||||
"PASSWORD": "Wachtwoord",
|
||||
"PASSWORD_FORGOTTEN": "Wachtwoord vergeten?",
|
||||
"PASSWORD_INFO": "Tenminste 8 karakters vereist.",
|
||||
"PASSWORD_RESET": "Wachtwoord reset",
|
||||
"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_STRENGTH": {
|
||||
"AVERAGE": "gemiddeld",
|
||||
"GOOD": "goed",
|
||||
"LABEL": "wachtwoord sterkte",
|
||||
"STRONG": "sterk",
|
||||
"SUGGESTIONS": {
|
||||
"allUppercase": "Gebruik enkele hoofdletters.",
|
||||
"anotherWord": "Voeg meer niet gangbare woorden toe.",
|
||||
"associatedYears": "Vermijd jaartallen met een persoonlijke betekenis.",
|
||||
"capitalization": "Gebruik niet enkel voor de eerste letter een hoofdletter.",
|
||||
"dates": "Vermijd persoonlijke gegevens en jaartallen.",
|
||||
"l33t": "Vermijd voorspelbare vervangingen, zoals {'@'} voor de letter a.",
|
||||
"longerKeyboardPattern": "Gebruik langere patronen en verander de richting van typen meerdere malen.",
|
||||
"noNeed": "U kan sterke wachtwoorden maken zonder gebruik van symbolen, nummers, of hoofdletters.",
|
||||
"pwned": "Als u dit wachtwoord ergens anders gebruikt zou u het beter veranderen.",
|
||||
"recentYears": "Vermijd recente jaartallen.",
|
||||
"repeated": "Vermijd opeenvolgende woorden en karakters.",
|
||||
"reverseWords": "Vermijd gangbare woorden die achterstevoren geschreven zijn.",
|
||||
"sequences": "Vermijd voorspelbare opeenvolgingen.",
|
||||
"useWords": "Gebruik verschillende woorden, maar vermijd vaak gebruikte zinnen."
|
||||
},
|
||||
"WEAK": "zwak"
|
||||
},
|
||||
"PASSWORD_UPDATED": "Uw wachtwoord werd aangepast. Klik {0} om in te loggen.",
|
||||
"PROFILE": {
|
||||
"ACCOUNT_EDITION": "Account aanpassen",
|
||||
"ASCENT_DATA": "Hoogte gerelateerde data (opnames, totaal)",
|
||||
"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",
|
||||
"ERRORED_EMAIL_UPDATE": "Gelieve {0} om uw email adres opnieuw te wijzigen of contacteer uw administrator",
|
||||
"FIRST_DAY_OF_WEEK": "Eerste dag van de week",
|
||||
"FIRST_NAME": "Voornaam",
|
||||
"LANGUAGE": "Taal",
|
||||
"LAST_NAME": "Achternaam",
|
||||
"LOCATION": "Locatie",
|
||||
"MONDAY": "Maandag",
|
||||
"PICTURE": "Afbeelding",
|
||||
"PICTURE_EDITION": "Afbeelding aanpassen",
|
||||
"PICTURE_REMOVE": "Afbeelding verwijderen",
|
||||
"PICTURE_UPDATE": "Afbeelding veranderen",
|
||||
"PREFERENCES_EDITION": "Voorkeuren aanpassen",
|
||||
"PROFILE_EDITION": "Profiel aanpassen",
|
||||
"REGISTRATION_DATE": "Datum registratie",
|
||||
"SPORT": {
|
||||
"ACTION": "actie",
|
||||
"COLOR": "kleur",
|
||||
"DISABLED_BY_ADMIN": "uitgeschakeld door admin",
|
||||
"IS_ACTIVE": "actief",
|
||||
"LABEL": "label",
|
||||
"STOPPED_SPEED_THRESHOLD": "snelheidsgrens voor stilstand"
|
||||
},
|
||||
"SPORTS_EDITION": "Sport voorkeuren aanpassen",
|
||||
"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.",
|
||||
"SUNDAY": "Zondag",
|
||||
"TABS": {
|
||||
"ACCOUNT": "account",
|
||||
"APPS": "apps",
|
||||
"PICTURE": "afbeelding",
|
||||
"PREFERENCES": "voorkeuren",
|
||||
"PROFILE": "profiel",
|
||||
"SPORTS": "sporten"
|
||||
},
|
||||
"TIMEZONE": "Tijdzone",
|
||||
"UNITS": {
|
||||
"IMPERIAL": "Imperialistisch systeem (ft, mi, mph, °F)",
|
||||
"LABEL": "Eenheid voor afstand",
|
||||
"METRIC": "Metrisch systeem (m, km, m/s, °C)"
|
||||
}
|
||||
},
|
||||
"REGISTER": "Registreren",
|
||||
"REGISTER_DISABLED": "Sorry, registreren is uitgeschakeld.",
|
||||
"RESENT_ACCOUNT_CONFIRMATION": "Opnieuw zenden van account bevestigingsmail",
|
||||
"RESET_PASSWORD": "Reset uw wachtwoord",
|
||||
"SHOW_PASSWORD": "toon wachtwoord",
|
||||
"THIS_USER_ACCOUNT_IS_INACTIVE": "Deze account is niet actief.",
|
||||
"USERNAME": "Gebruikersnaam",
|
||||
"USERNAME_INFO": "3 tot 30 karakters vereist, enkel alfanumerieke karakters en het underscore karakter \"_\" zijn toegestaan.",
|
||||
"USER_PICTURE": "gebruikersafbeelding"
|
||||
}
|
104
fittrackee_client/src/locales/nl/workouts.json
Normal file
104
fittrackee_client/src/locales/nl/workouts.json
Normal file
@ -0,0 +1,104 @@
|
||||
{
|
||||
"ADD_WORKOUT": "Training toevoegen",
|
||||
"ANALYSIS": "analyse",
|
||||
"ASCENT": "geklommen",
|
||||
"AVERAGE_SPEED": "gemiddelde snelheid",
|
||||
"AVE_SPEED": "gem. snelheid",
|
||||
"BACK_TO_WORKOUT": "Terug naar training",
|
||||
"DATE": "datum",
|
||||
"DESCENT": "gedaald",
|
||||
"DISPLAY_FILTERS": "toon filters",
|
||||
"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",
|
||||
"INVALID_DURATION": "De duur moet langer zijn dan 0 seconden",
|
||||
"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",
|
||||
"NOTES": "notities",
|
||||
"NO_DATA_CLEANING": "data vanuit gpx, zonder op te schonen",
|
||||
"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",
|
||||
"NO_RECORDS": "Geen records.",
|
||||
"NO_WORKOUTS": "Geen trainingen.",
|
||||
"PAUSES": "pauzes",
|
||||
"PREVIOUS_SEGMENT": "Vorig segment",
|
||||
"PREVIOUS_WORKOUT": "Vorige training",
|
||||
"RECORD": "record | records",
|
||||
"RECORD_AS": "Gem. snelheid",
|
||||
"RECORD_FD": "Langste afstand",
|
||||
"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_AND_FINISH": "Start en aankomst",
|
||||
"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": {
|
||||
"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"
|
||||
},
|
||||
"HUMIDITY": "vochtigheid",
|
||||
"TEMPERATURE": "temperatuur",
|
||||
"WIND": "wind",
|
||||
"WIND_DIRECTIONS": {
|
||||
"E": "O",
|
||||
"ENE": "ONO",
|
||||
"ESE": "OZO",
|
||||
"N": "N",
|
||||
"NE": "NO",
|
||||
"NNE": "NNO",
|
||||
"NNW": "NNW",
|
||||
"NW": "NW",
|
||||
"S": "Z",
|
||||
"SE": "ZO",
|
||||
"SSE": "ZZO",
|
||||
"SSW": "ZZW",
|
||||
"SW": "ZW",
|
||||
"W": "W",
|
||||
"WNW": "WNW",
|
||||
"WSW": "WZW"
|
||||
}
|
||||
},
|
||||
"WITHOUT_GPX": "zonder .gpx bestand",
|
||||
"WITH_GPX": "met .gpx bestand",
|
||||
"WORKOUT": "training | trainingen",
|
||||
"WORKOUT_DATE": "datum training",
|
||||
"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"
|
||||
}
|
@ -162,6 +162,7 @@ button {
|
||||
|
||||
.view {
|
||||
padding-bottom: 35px;
|
||||
background-color: var(--app-background-color);
|
||||
}
|
||||
|
||||
.fa-trophy {
|
||||
|
@ -11,7 +11,7 @@ export const mutations: MutationTree<IRootState> & TRootMutations = {
|
||||
},
|
||||
[ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES](
|
||||
state: IRootState,
|
||||
errorMessages: string
|
||||
errorMessages: string | string[]
|
||||
) {
|
||||
state.errorMessages = errorMessages
|
||||
},
|
||||
|
@ -60,7 +60,7 @@ export type TRootMutations<S = IRootState> = {
|
||||
[ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES](state: S): void
|
||||
[ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES](
|
||||
state: S,
|
||||
errorMessages: string
|
||||
errorMessages: string | string[]
|
||||
): void
|
||||
[ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG](
|
||||
state: S,
|
||||
|
@ -185,11 +185,12 @@ export const actions: ActionTree<IWorkoutsState, IRootState> &
|
||||
if (!payload.file) {
|
||||
throw new Error('No file part')
|
||||
}
|
||||
const notes = payload.notes.replace(/"/g, '\\"')
|
||||
const form = new FormData()
|
||||
form.append('file', payload.file)
|
||||
form.append(
|
||||
'data',
|
||||
`{"sport_id": ${payload.sport_id}, "notes": "${payload.notes}"}`
|
||||
`{"sport_id": ${payload.sport_id}, "notes": "${notes}"}`
|
||||
)
|
||||
authApi
|
||||
.post('workouts', form, {
|
||||
|
@ -19,3 +19,8 @@ export interface IQueryOptions {
|
||||
defaultSort?: string
|
||||
query?: TPaginationPayload
|
||||
}
|
||||
|
||||
export interface IApiErrorMessage {
|
||||
error?: string
|
||||
message?: string
|
||||
}
|
||||
|
@ -116,6 +116,8 @@ export interface IWorkoutForm {
|
||||
distance?: number
|
||||
duration?: number
|
||||
file?: Blob
|
||||
ascent?: number | null
|
||||
descent?: number | null
|
||||
}
|
||||
|
||||
export interface IWorkoutPayload {
|
||||
|
@ -97,7 +97,9 @@ const dateStringFormats: Record<string, string> = {
|
||||
de: 'do MMM yyyy',
|
||||
en: 'MMM. do, yyyy',
|
||||
fr: 'd MMM yyyy',
|
||||
it: 'd MMM yyyy',
|
||||
// nb: 'do MMM yyyy',
|
||||
nl: 'd MMM yyyy',
|
||||
}
|
||||
|
||||
export const getDateFormat = (dateFormat: string, language: string): string => {
|
||||
|
@ -9,6 +9,7 @@ import { ISportsState } from '@/store/modules/sports/types'
|
||||
import { IStatisticsState } from '@/store/modules/statistics/types'
|
||||
import { IUsersState } from '@/store/modules/users/types'
|
||||
import { IWorkoutsState } from '@/store/modules/workouts/types'
|
||||
import { IApiErrorMessage } from '@/types/api'
|
||||
|
||||
export const getApiUrl = (): string => {
|
||||
return process.env.NODE_ENV === 'production'
|
||||
@ -33,11 +34,11 @@ export const handleError = (
|
||||
return
|
||||
}
|
||||
|
||||
const errorInfo: IApiErrorMessage | null =
|
||||
error?.response && error.response.data ? error.response.data : null
|
||||
|
||||
// if stored token is blacklisted, disconnect user
|
||||
if (
|
||||
error?.response?.status === 401 &&
|
||||
error.response.data.error === 'invalid_token'
|
||||
) {
|
||||
if (error?.response?.status === 401 && errorInfo?.error === 'invalid_token') {
|
||||
localStorage.removeItem('authToken')
|
||||
context.dispatch(AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER)
|
||||
return
|
||||
@ -48,8 +49,8 @@ export const handleError = (
|
||||
: error.response
|
||||
? error.response.status === 413
|
||||
? 'file size is greater than the allowed size'
|
||||
: error.response.data.message
|
||||
? error.response.data.message
|
||||
: errorInfo?.message
|
||||
? errorInfo.message
|
||||
: msg
|
||||
: error.message
|
||||
? error.message
|
||||
|
9
fittrackee_client/src/utils/inputs.ts
Normal file
9
fittrackee_client/src/utils/inputs.ts
Normal file
@ -0,0 +1,9 @@
|
||||
import linkifyHtml from 'linkify-html'
|
||||
import sanitizeHtml from 'sanitize-html'
|
||||
|
||||
export const linkifyAndClean = (input: string): string => {
|
||||
return sanitizeHtml(linkifyHtml(input, { target: '_blank' }), {
|
||||
allowedTags: ['a'],
|
||||
disallowedTagsMode: 'escape',
|
||||
})
|
||||
}
|
@ -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, it, nl } from 'date-fns/locale'
|
||||
|
||||
import createI18n from '@/i18n'
|
||||
|
||||
@ -8,14 +8,18 @@ export const localeFromLanguage: Record<string, Locale> = {
|
||||
de: de,
|
||||
en: enUS,
|
||||
fr: fr,
|
||||
it: it,
|
||||
// nb: nb, // disabled for now
|
||||
nl: nl,
|
||||
}
|
||||
|
||||
export const languageLabels: Record<string, string> = {
|
||||
de: 'Deutsch',
|
||||
en: 'English',
|
||||
fr: 'Français',
|
||||
it: 'Italiano',
|
||||
// nb: 'Norsk bokmål', // disabled for now
|
||||
nl: 'Nederlands',
|
||||
}
|
||||
|
||||
const { availableLocales } = createI18n.global
|
||||
|
@ -1,31 +1,38 @@
|
||||
import { zxcvbnOptions } from '@zxcvbn-ts/core'
|
||||
|
||||
export const loadLanguagePackage = async (language: string) => {
|
||||
// no package available for norwegian bokmal and dutch (Nederlands)
|
||||
// fallback to english
|
||||
switch (language) {
|
||||
case 'fr':
|
||||
return await import(
|
||||
/* webpackChunkName: "password.fr" */ '@zxcvbn-ts/language-fr'
|
||||
)
|
||||
case 'de':
|
||||
return await import(
|
||||
/* webpackChunkName: "password.de" */ '@zxcvbn-ts/language-de'
|
||||
)
|
||||
case 'it':
|
||||
return await import(
|
||||
/* webpackChunkName: "password.it" */ '@zxcvbn-ts/language-it'
|
||||
)
|
||||
default:
|
||||
return await import(
|
||||
/* webpackChunkName: "password.en" */ '@zxcvbn-ts/language-en'
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
export const setZxcvbnOptions = async (language: string) => {
|
||||
const zxcvbnCommonPackage = await import(
|
||||
/* webpackChunkName: "password" */ '@zxcvbn-ts/language-common'
|
||||
)
|
||||
const zxcvbnEnPackage = await import(
|
||||
/* webpackChunkName: "password" */ '@zxcvbn-ts/language-en'
|
||||
)
|
||||
const zxcvbnFrPackage = await import(
|
||||
/* webpackChunkName: "password" */ '@zxcvbn-ts/language-fr'
|
||||
)
|
||||
const zxcvbnDePackage = await import(
|
||||
/* webpackChunkName: "password" */ '@zxcvbn-ts/language-de'
|
||||
)
|
||||
const zxcvbnLangPackages: Record<string, typeof zxcvbnEnPackage> = {
|
||||
de: zxcvbnDePackage,
|
||||
en: zxcvbnEnPackage,
|
||||
fr: zxcvbnFrPackage,
|
||||
// no package available for norwegian bokmal, fallback on english
|
||||
nb: zxcvbnEnPackage,
|
||||
}
|
||||
const zxcvbnPackage = zxcvbnLangPackages[language]
|
||||
const zxcvbnLanguagePackage = await loadLanguagePackage(language)
|
||||
const options = {
|
||||
graphs: zxcvbnCommonPackage.default.adjacencyGraphs,
|
||||
dictionary: {
|
||||
...zxcvbnCommonPackage.default.dictionary,
|
||||
...zxcvbnPackage.default.dictionary,
|
||||
...zxcvbnLanguagePackage.default.dictionary,
|
||||
},
|
||||
}
|
||||
zxcvbnOptions.setOptions(options)
|
||||
|
@ -8,6 +8,7 @@ export const sportColors: Record<string, string> = {
|
||||
Hiking: '#bb757c',
|
||||
'Mountain Biking': '#d4b371',
|
||||
'Mountain Biking (Electric)': '#fc9d6f',
|
||||
Mountaineering: '#48b3b7',
|
||||
Rowing: '#fcce72',
|
||||
Running: '#835b83',
|
||||
'Skiing (Alpine)': '#67a4bd',
|
||||
|
@ -30,7 +30,6 @@
|
||||
|
||||
#loginOrRegister {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
|
||||
.container {
|
||||
display: flex;
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div id="profile" class="container view" v-if="authUser.username">
|
||||
<div id="profile" class="view" v-if="authUser.username">
|
||||
<router-view :user="authUser"></router-view>
|
||||
<div id="bottom" />
|
||||
</div>
|
||||
@ -24,6 +24,7 @@
|
||||
#profile {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 $default-padding;
|
||||
|
||||
::v-deep(.profile-form) {
|
||||
display: flex;
|
||||
|
@ -60,8 +60,6 @@
|
||||
<style lang="scss" scoped>
|
||||
@import '~@/scss/vars.scss';
|
||||
#workouts {
|
||||
height: 100%;
|
||||
|
||||
.workouts-container {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
71
fittrackee_client/tests/unit/utils/inputs.spec.ts
Normal file
71
fittrackee_client/tests/unit/utils/inputs.spec.ts
Normal file
@ -0,0 +1,71 @@
|
||||
import { assert } from 'chai'
|
||||
|
||||
import { linkifyAndClean } from '@/utils/inputs'
|
||||
|
||||
describe('linkifyAndClean (clean input remains unchanged)', () => {
|
||||
const testInputs = [
|
||||
'just a text\nfor "test"',
|
||||
'link: <a href="http://www.example.com">example</a>',
|
||||
'link: <a href="http://www.example.com" target="_blank">example</a>',
|
||||
]
|
||||
|
||||
testInputs.map((testInput) => {
|
||||
it(`it returns unmodified input: '${testInput}'`, () => {
|
||||
assert.equal(linkifyAndClean(testInput), testInput)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('linkifyAndClean (URL is linkified)', () => {
|
||||
it('it returns URL as link with target blank', () => {
|
||||
assert.equal(
|
||||
linkifyAndClean('link: http://www.example.com'),
|
||||
'link: <a href="http://www.example.com" target="_blank">http://www.example.com</a>'
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe('linkifyAndClean (input sanitization)', () => {
|
||||
const testsParams = [
|
||||
{
|
||||
description: 'it escapes "script" tags',
|
||||
inputString: "<script>alert('evil!')</script>",
|
||||
expectedString: "<script>alert('evil!')</script>",
|
||||
},
|
||||
{
|
||||
description: 'it escapes nested tags',
|
||||
inputString: '<p><b>test</b></p>',
|
||||
expectedString: '<p><b>test</b></p>',
|
||||
},
|
||||
{
|
||||
description: 'it escapes single tag',
|
||||
inputString: '<p>test',
|
||||
expectedString: '<p>test</p>',
|
||||
},
|
||||
{
|
||||
description: 'it removes css classe',
|
||||
inputString: '<div class="active">test</div>',
|
||||
expectedString: '<div>test</div>',
|
||||
},
|
||||
{
|
||||
description: 'it removes style attribute',
|
||||
inputString: '<div style="display:none;">test</div>',
|
||||
expectedString: '<div>test</div>',
|
||||
},
|
||||
{
|
||||
description: 'it keeps nested HTML link',
|
||||
inputString: '<p><a href="http://www.example.com">example</a></p>',
|
||||
expectedString:
|
||||
'<p><a href="http://www.example.com">example</a></p>',
|
||||
},
|
||||
]
|
||||
|
||||
testsParams.map((testParams) => {
|
||||
it(testParams.description, () => {
|
||||
assert.equal(
|
||||
linkifyAndClean(testParams.inputString),
|
||||
testParams.expectedString
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user