mirror of
https://github.com/joaovitoriasilva/endurain.git
synced 2026-01-08 23:38:01 -05:00
Add Slovenian language support and bump version to 0.15.7
Introduces Slovenian (SL) as a supported language across backend and frontend, including language enum, language switchers, and i18n resources. Updates documentation to credit the contributor, and increments version numbers in backend and frontend to 0.15.7.
This commit is contained in:
@@ -7,7 +7,7 @@ from cryptography.fernet import Fernet
|
||||
import core.logger as core_logger
|
||||
|
||||
# Constant related to version
|
||||
API_VERSION = "v0.15.6"
|
||||
API_VERSION = "v0.15.7"
|
||||
LICENSE_NAME = "GNU Affero General Public License v3.0 or later"
|
||||
LICENSE_IDENTIFIER = "AGPL-3.0-or-later"
|
||||
LICENSE_URL = "https://spdx.org/licenses/AGPL-3.0-or-later.html"
|
||||
|
||||
@@ -31,6 +31,7 @@ class Language(Enum):
|
||||
GERMAN: German language code ("de").
|
||||
FRENCH: French language code ("fr").
|
||||
GALICIAN: Galician language code ("gl").
|
||||
SLOVENIAN: Slovenian language code ("sl").
|
||||
SPANISH: Spanish language code ("es").
|
||||
PORTUGUESE: Portuguese language code ("pt").
|
||||
ENGLISH_USA: US English language code ("us").
|
||||
@@ -43,6 +44,7 @@ class Language(Enum):
|
||||
GERMAN = "de"
|
||||
FRENCH = "fr"
|
||||
GALICIAN = "gl"
|
||||
SLOVENIAN = "sl"
|
||||
SPANISH = "es"
|
||||
PORTUGUESE = "pt"
|
||||
ENGLISH_USA = "us"
|
||||
@@ -140,6 +142,7 @@ class User(UserBase):
|
||||
from_attributes=True, extra="forbid", validate_assignment=True
|
||||
)
|
||||
|
||||
|
||||
class UserRead(User):
|
||||
id: StrictInt
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[tool.poetry]
|
||||
name = "endurain"
|
||||
version = "0.15.6"
|
||||
version = "0.15.7"
|
||||
description = "Endurain API for the Endurain app"
|
||||
authors = ["João Vitória Silva <8648976+joaovitoriasilva@users.noreply.github.com>"]
|
||||
readme = "README.md"
|
||||
|
||||
@@ -102,6 +102,7 @@ Currently supported in:
|
||||
- GALICIAN (GL)
|
||||
- Dutch (NL) [@woutvanderaa](https://github.com/woutvanderaa)
|
||||
- Portuguese (PT)
|
||||
- Slovenian (SL) [@thehijacker](https://github.com/thehijacker)
|
||||
- Spanish (ES) [@rgmelkor](https://github.com/rgmelkor) and [@tinchodin](https://github.com/tinchodin)
|
||||
- English (US)
|
||||
|
||||
|
||||
4
frontend/app/package-lock.json
generated
4
frontend/app/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "endurain",
|
||||
"version": "0.15.6",
|
||||
"version": "0.15.7",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "endurain",
|
||||
"version": "0.15.6",
|
||||
"version": "0.15.7",
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-svg-core": "^6.7.1",
|
||||
"@fortawesome/free-brands-svg-icons": "^6.7.1",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "endurain",
|
||||
"version": "0.15.6",
|
||||
"version": "0.15.7",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<a class="link-body-emphasis" href="https://discord.gg/6VUjUq2uZR"
|
||||
><font-awesome-icon :icon="['fab', 'fa-discord']"
|
||||
/></a>
|
||||
• v0.15.6
|
||||
• v0.15.7
|
||||
</p>
|
||||
<p class="text-center text-muted">
|
||||
<img
|
||||
|
||||
@@ -48,6 +48,7 @@ const languages = computed(() => [
|
||||
{ value: 'it', label: t('generalItems.languageOption11') },
|
||||
{ value: 'nl', label: t('generalItems.languageOption6') },
|
||||
{ value: 'pt', label: t('generalItems.languageOption3') },
|
||||
{ value: 'sl', label: t('generalItems.languageOption12') },
|
||||
{ value: 'es', label: t('generalItems.languageOption7') },
|
||||
{ value: 'us', label: t('generalItems.languageOption1') }
|
||||
])
|
||||
|
||||
@@ -34,6 +34,7 @@ export default {
|
||||
{ value: 'it', label: t('generalItems.languageOption11') },
|
||||
{ value: 'nl', label: t('generalItems.languageOption6') },
|
||||
{ value: 'pt', label: t('generalItems.languageOption3') },
|
||||
{ value: 'sl', label: t('generalItems.languageOption12') },
|
||||
{ value: 'es', label: t('generalItems.languageOption7') },
|
||||
{ value: 'us', label: t('generalItems.languageOption1') }
|
||||
])
|
||||
|
||||
@@ -173,6 +173,9 @@
|
||||
<span v-if="authStore.user.preferred_language == 'pt'">{{
|
||||
$t('generalItems.languageOption3')
|
||||
}}</span>
|
||||
<span v-if="authStore.user.preferred_language == 'sl'">{{
|
||||
$t('generalItems.languageOption12')
|
||||
}}</span>
|
||||
<span v-if="authStore.user.preferred_language == 'es'">{{
|
||||
$t('generalItems.languageOption7')
|
||||
}}</span>
|
||||
|
||||
@@ -334,6 +334,7 @@
|
||||
<option value="it">{{ $t('generalItems.languageOption11') }}</option>
|
||||
<option value="nl">{{ $t('generalItems.languageOption6') }}</option>
|
||||
<option value="pt">{{ $t('generalItems.languageOption3') }}</option>
|
||||
<option value="sl">{{ $t('generalItems.languageOption12') }}</option>
|
||||
<option value="es">{{ $t('generalItems.languageOption7') }}</option>
|
||||
<option value="us">{{ $t('generalItems.languageOption1') }}</option>
|
||||
</select>
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
"languageOption9": "Chinese (Traditional)",
|
||||
"languageOption10": "Galician (GL)",
|
||||
"languageOption11": "Italian (IT)",
|
||||
"languageOption12": "Slovenian (SL)",
|
||||
"firstDayOfWeekOption0": "Sunday",
|
||||
"firstDayOfWeekOption1": "Monday",
|
||||
"firstDayOfWeekOption2": "Tuesday",
|
||||
@@ -76,4 +77,4 @@
|
||||
"genderMale": "Male",
|
||||
"genderFemale": "Female",
|
||||
"genderUnspecified": "Unspecified"
|
||||
}
|
||||
}
|
||||
@@ -2,12 +2,12 @@ import { createI18n } from 'vue-i18n'
|
||||
|
||||
// Bundle only locale JSON files (root + nested), eagerly so they're in dist
|
||||
const translationModules = {
|
||||
...import.meta.glob('./{ca,de,es,fr,gl,it,nl,pt,us,cn,tw}/*.json', { eager: true }),
|
||||
...import.meta.glob('./{ca,de,es,fr,gl,it,nl,pt,us,cn,tw}/**/*.json', { eager: true })
|
||||
...import.meta.glob('./{ca,cn,de,es,fr,gl,it,nl,pt,sl,tw,us}/*.json', { eager: true }),
|
||||
...import.meta.glob('./{ca,cn,de,es,fr,gl,it,nl,pt,sl,tw,us}/**/*.json', { eager: true })
|
||||
}
|
||||
|
||||
// Define available locales
|
||||
const locales = ['ca', 'de', 'es', 'fr', 'gl', 'it', 'nl', 'pt', 'us', 'cn', 'tw']
|
||||
const locales = ['ca', 'cn', 'de', 'es', 'fr', 'gl', 'it', 'nl', 'pt', 'sl', 'tw', 'us']
|
||||
|
||||
// Define all component paths
|
||||
const componentPaths = {
|
||||
|
||||
14
frontend/app/src/i18n/sl/activitiesView.json
Normal file
14
frontend/app/src/i18n/sl/activitiesView.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"title": "Activities",
|
||||
"filterLabelType": "Type",
|
||||
"filterOptionAllTypes": "All types",
|
||||
"filterLabelFromDate": "From date",
|
||||
"filterLabelToDate": "To date",
|
||||
"filterLabelNameLocation": "Name or location",
|
||||
"filterPlaceholderNameLocation": "e.g., Morning run",
|
||||
"buttonClear": "Clear",
|
||||
"buttonApply": "Apply",
|
||||
"errorFailedFetchActivityTypes": "Failed to fetch activity types",
|
||||
"errorUpdatingActivities": "Failed to updated activities",
|
||||
"errorFetchingActivities": "Failed to fetch user activities"
|
||||
}
|
||||
43
frontend/app/src/i18n/sl/activityItems.json
Normal file
43
frontend/app/src/i18n/sl/activityItems.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"run": "Run",
|
||||
"trailRun": "Trail run",
|
||||
"virtualRun": "Virtual run",
|
||||
"ride": "Ride",
|
||||
"gravelRide": "Gravel ride",
|
||||
"mtbRide": "MTB ride",
|
||||
"virtualRide": "Virtual ride",
|
||||
"lapSwimming": "Lap swimming",
|
||||
"openWaterSwimming": "Open water swimming",
|
||||
"workout": "Workout",
|
||||
"walk": "Walk",
|
||||
"indoorWalk": "Indoor walk",
|
||||
"hike": "Hike",
|
||||
"rowing": "Rowing",
|
||||
"yoga": "Yoga",
|
||||
"alpineSki": "Alpine ski",
|
||||
"nordicSki": "Nordic ski",
|
||||
"snowboard": "Snowboard",
|
||||
"transition": "Transition",
|
||||
"strengthTraining": "Strength training",
|
||||
"crossfit": "CrossFit",
|
||||
"tennis": "Tennis",
|
||||
"tableTennis": "Table tennis",
|
||||
"badminton": "Badminton",
|
||||
"squash": "Squash",
|
||||
"racquetball": "Racquetball",
|
||||
"pickleball": "Pickleball",
|
||||
"commutingRide": "Commuting ride",
|
||||
"indoorRide": "Indoor ride",
|
||||
"mixedSurfaceRide": "Mixed surface ride",
|
||||
"windsurf": "Windsurf",
|
||||
"standUpPaddling": "Stand up paddling",
|
||||
"surf": "Surf",
|
||||
"trackRun": "Track run",
|
||||
"ebikeRide": "E-Bike ride",
|
||||
"ebikeMountainRide": "E-Bike mountain ride",
|
||||
"iceSkate": "Ice skate",
|
||||
"soccer": "Soccer",
|
||||
"padel": "Padel",
|
||||
"treadmillRun": "Treadmill run",
|
||||
"labelWorkout": " workout"
|
||||
}
|
||||
13
frontend/app/src/i18n/sl/activityView.json
Normal file
13
frontend/app/src/i18n/sl/activityView.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"labelGear": "Gear",
|
||||
"labelGearNotSet": "Not set",
|
||||
"modalLabelDeleteGear": "Delete gear from activity",
|
||||
"modalLabelDeleteGearBody": "Are you sure you want to remove the gear from the activity?",
|
||||
"modalLabelDeleteGearButton": "Delete gear",
|
||||
"successMessageGearAdded": "Gear added to activity",
|
||||
"successMessageGearDeleted": "Gear deleted from activity",
|
||||
"errorMessageDeleteGear": "Error deleting gear from activity",
|
||||
"errorMessageActivityNotFound": "Activity not found",
|
||||
"alertPrivacyMessage": "You have hidden information in this activity. You can see it, but others cannot.",
|
||||
"isHiddenMessage": "This activity is hidden. Probably because it is a duplicate or was hidden by the user."
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"headerType": "Type",
|
||||
"headerName": "Name",
|
||||
"headerLocation": "Location",
|
||||
"headerStartTime": "Start time",
|
||||
"headerDuration": "Duration",
|
||||
"headerDistance": "Distance",
|
||||
"headerPace": "Pace/Speed",
|
||||
"headerCalories": "Calories",
|
||||
"headerElevation": "Elevation",
|
||||
"headerAvgHr": "Avg HR"
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"subTitlePace": "Pace",
|
||||
"labelAvgPace": "Avg pace",
|
||||
"labelMovingTime": "Moving time",
|
||||
"labelElapsedTime": "Elapsed time",
|
||||
"subTitleSpeed": "Speed",
|
||||
"labelAvgSpeed": "Avg speed",
|
||||
"labelMaxSpeed": "Max speed",
|
||||
"subTitleHeartRate": "Heart rate",
|
||||
"labelAvgHeartRate": "Avg heart rate",
|
||||
"labelMaxHeartRate": "Max heart rate",
|
||||
"subTitlePower": "Power",
|
||||
"labelAvgPower": "Avg power",
|
||||
"labelMaxPower": "Max power",
|
||||
"labelNormalizedPower": "Normalized power",
|
||||
"subTitleCadence": "Cadence",
|
||||
"labelAvgCadence": "Avg cadence",
|
||||
"labelMaxCadence": "Max cadence",
|
||||
"subTitleElevation": "Elevation",
|
||||
"labelElevationGain": "Elevation gain",
|
||||
"labelElevationLoss": "Elevation loss",
|
||||
"subTitleStrokeRate": "Stroke rate",
|
||||
"labelAvgStrokeRate": "Avg stroke rate",
|
||||
"labelMaxStrokeRate": "Max stroke rate"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"labelLapNumber": "Lap",
|
||||
"labelLapIntensity": "Intensity",
|
||||
"labelLapDistance": "Distance",
|
||||
"labelLapTime": "Time",
|
||||
"labelLapPace": "Pace",
|
||||
"labelLapSpeed": "Speed",
|
||||
"labelLapElevation": "Elevation",
|
||||
"labelLapElev": "Elev",
|
||||
"labelLapAvgHr": "Avg heart rate",
|
||||
"labelLapHR": "HR",
|
||||
"labelLapStrokeRate": "Stroke rate",
|
||||
"labelLapSR": "SR"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"labelPillGraphs": "Graphs",
|
||||
"labelPillLaps": "Laps",
|
||||
"labelPillWorkoutSets": "Sets",
|
||||
"labelGraph": "Activity data graphs",
|
||||
"labelGraphHR": "Heart rate",
|
||||
"labelHRZones": "Heart rate zones",
|
||||
"labelGraphPower": "Power",
|
||||
"labelGraphCadence": "Cadence",
|
||||
"labelGraphElevation": "Elevation",
|
||||
"labelGraphVelocity": "Speed",
|
||||
"labelGraphPace": "Pace",
|
||||
"labelGraphHRZone": "Zone",
|
||||
"labelDownsampling": "Data downsampled to ~200 points",
|
||||
"errorMessageProcessingActivityStreams": "Error processing activity streams",
|
||||
"labelGraphStrokeRate": "Stroke rate"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"modalMediaDeleteTitle": "Delete media",
|
||||
"modalMediaDeleteBody1": "Are you sure you want to delete media with ID ",
|
||||
"modalMediaDeleteBody2": " and name ",
|
||||
"errorFetchingActivityStream": "Error fetching activity stream data",
|
||||
"mediaDeletedSuccessfully": "Media deleted successfully",
|
||||
"errorDeletingMedia": "Error deleting media"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"userNameHidden": "Hidden",
|
||||
"visibilityPublic": "Public",
|
||||
"visibilityFollowers": "Followers",
|
||||
"visibilityPrivate": "Private",
|
||||
"buttonDeleteActivity": "Delete activity",
|
||||
"buttonEditActivity": "Edit activity",
|
||||
"buttonAddActivityMedia": "Add media",
|
||||
"modalDeleteBody1": "Are you sure you want to delete activity ",
|
||||
"modalDeleteBody2": "This action cannot be undone.",
|
||||
"modalAddMediaTitle": "Add media",
|
||||
"modalAddMediaBody": "Upload .png, .jpg or .jpeg file",
|
||||
"processingMediaUpload": "Processing media upload...",
|
||||
"successMediaUpload": "Media uploaded successfully",
|
||||
"errorMediaUpload": "Error uploading media",
|
||||
"labelVirtual": "(Virtual) ",
|
||||
"privateNotes": "Private notes",
|
||||
"activityDistance": "Distance",
|
||||
"activityTime": "Time",
|
||||
"activityPace": "Pace",
|
||||
"activityAvgHR": "Avg HR",
|
||||
"activityMaxHR": "Max HR",
|
||||
"activityAvgPower": "Avg power",
|
||||
"activityAvgSpeed": "Avg speed",
|
||||
"activityEleGain": "Ele gain",
|
||||
"activityEleLoss": "Ele loss",
|
||||
"activityCalories": "Calories",
|
||||
"activityNoData": "No data",
|
||||
"errorFetchingUserById": "Error fetching user by id",
|
||||
"errorDeletingActivity": "Error deleting activity"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"labelWorkoutStepType": "Step type",
|
||||
"labelWorkoutStepTime": "Step time",
|
||||
"labelWorkoutStepReps": "Step reps",
|
||||
"labelWorkoutStepIntensity": "Intensity",
|
||||
"labelWorkoutStepNotes": "Notes",
|
||||
"labelWorkoutStepExerciseName": "Step name",
|
||||
"labelWorkoutStepExerciseWeight": "Weight",
|
||||
"labelWorkoutStepSwimStroke": "Step swim stroke",
|
||||
"labelWorkoutSetType": "Set type",
|
||||
"labelWorkoutSetTime": "Set time",
|
||||
"labelWorkoutSetReps": "Set reps",
|
||||
"labelWorkoutSetExerciseName": "Set name",
|
||||
"labelWorkoutSetExerciseWeight": "Set weight",
|
||||
"labelWorkoutSetTypeMobile": "Type",
|
||||
"labelWorkoutSetTimeMobile": "Time",
|
||||
"labelWorkoutSetRepsMobile": "Reps",
|
||||
"labelWorkoutSetExerciseNameMobile": "Name",
|
||||
"labelWorkoutSetExerciseWeightMobile": "Weight"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"modalLabelAddGear": "Add gear to activity",
|
||||
"modalLabelSelectGear": "Select gear",
|
||||
"modalButtonAddGear": "Add gear",
|
||||
"errorEditingGear": "Error editing gear"
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"modalEditActivityTitle": "Edit activity",
|
||||
"modalEditActivityDescriptionLabel": "Description",
|
||||
"modalEditActivityDescriptionPlaceholder": "Description (max 2500 characters)",
|
||||
"modalEditActivityPrivateNotesLabel": "Private notes",
|
||||
"modalEditActivityPrivateNotesPlaceholder": "Private notes (max 2500 characters)",
|
||||
"modalEditActivityNameLabel": "Name",
|
||||
"modalEditActivityNamePlaceholder": "Name (max 250 characters)",
|
||||
"modalEditActivityTypeLabel": "Type",
|
||||
"modalEditActivityTypeOption1": "Run",
|
||||
"modalEditActivityTypeOption2": "Trail run",
|
||||
"modalEditActivityTypeOption3": "Virtual run",
|
||||
"modalEditActivityTypeOption4": "Ride",
|
||||
"modalEditActivityTypeOption5": "Gravel ride",
|
||||
"modalEditActivityTypeOption6": "Mountain bike ride",
|
||||
"modalEditActivityTypeOption7": "Virtual ride",
|
||||
"modalEditActivityTypeOption8": "Swim",
|
||||
"modalEditActivityTypeOption9": "Open water swim",
|
||||
"modalEditActivityTypeOption10": "Workout",
|
||||
"modalEditActivityTypeOption11": "Walk",
|
||||
"modalEditActivityTypeOption12": "Hike",
|
||||
"modalEditActivityTypeOption13": "Rowing",
|
||||
"modalEditActivityTypeOption14": "Yoga",
|
||||
"modalEditActivityTypeOption15": "Alpine skiing",
|
||||
"modalEditActivityTypeOption16": "Nordic skiing",
|
||||
"modalEditActivityTypeOption17": "Snowboarding",
|
||||
"modalEditActivityTypeOption18": "Transition",
|
||||
"modalEditActivityTypeOption19": "Weight training",
|
||||
"modalEditActivityTypeOption20": "Crossfit",
|
||||
"modalEditActivityTypeOption21": "Tennis",
|
||||
"modalEditActivityTypeOption22": "Table tennis",
|
||||
"modalEditActivityTypeOption23": "Badminton",
|
||||
"modalEditActivityTypeOption24": "Squash",
|
||||
"modalEditActivityTypeOption25": "Racquetball",
|
||||
"modalEditActivityTypeOption26": "Pickleball",
|
||||
"modalEditActivityTypeOption27": "Commuting ride",
|
||||
"modalEditActivityTypeOption28": "Indoor ride",
|
||||
"modalEditActivityTypeOption29": "Mixed surface ride",
|
||||
"modalEditActivityTypeOption30": "Windsurf",
|
||||
"modalEditActivityTypeOption31": "Indoor walk",
|
||||
"modalEditActivityTypeOption32": "Stand up paddling",
|
||||
"modalEditActivityTypeOption33": "Surf",
|
||||
"modalEditActivityTypeOption34": "Track run",
|
||||
"modalEditActivityTypeOption35": "E-Bike ride",
|
||||
"modalEditActivityTypeOption36": "E-Bike mountain ride",
|
||||
"modalEditActivityTypeOption37": "Ice skate",
|
||||
"modalEditActivityTypeOption38": "Soccer",
|
||||
"modalEditActivityTypeOption39": "Padel",
|
||||
"modalEditActivityTypeOption40": "Treadmill run",
|
||||
"modalEditActivityVisibilityLabel": "Visibility",
|
||||
"modalEditActivityVisibilityOption0": "Public",
|
||||
"modalEditActivityVisibilityOption1": "Followers",
|
||||
"modalEditActivityVisibilityOption2": "Private",
|
||||
"modalEditActivityIsHiddenLabel": "Is hidden",
|
||||
"modalEditActivityHideStartTimeLabel": "Hide start time",
|
||||
"modalEditActivityHideLocationLabel": "Hide location",
|
||||
"modalEditActivityHideMapLabel": "Hide map",
|
||||
"modalEditActivityHideHrLabel": "Hide heart rate",
|
||||
"modalEditActivityHidePowerLabel": "Hide power",
|
||||
"modalEditActivityHideCadenceLabel": "Hide cadence",
|
||||
"modalEditActivityHideElevationLabel": "Hide elevation",
|
||||
"modalEditActivityHideSpeedLabel": "Hide speed",
|
||||
"modalEditActivityHidePaceLabel": "Hide pace",
|
||||
"modalEditActivityHideLapsLabel": "Hide laps",
|
||||
"modalEditActivityHideWorkoutSetsStepsLabel": "Hide workout sets/steps",
|
||||
"modalEditActivityHideGearLabel": "Hide gear",
|
||||
"successActivityEdit": "Activity edited successfully",
|
||||
"errorActivityEdit": "Error editing activity"
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"requestAccepted": "Accepted",
|
||||
"requestPending": "Request pending",
|
||||
"followingModalTitle": "Delete following",
|
||||
"followingModalBody": "Are you sure you want to delete following user ",
|
||||
"followerModalTitle": "Delete follower",
|
||||
"followerModalBody": "Are you sure you want to delete follower user ",
|
||||
"followerAcceptModalTitle": "Accept user request",
|
||||
"followerAcceptModalBody": "Are you sure you want to accept follow request from user ",
|
||||
"followerDeclineModalTitle": "Decline user request ",
|
||||
"followerDeclineModalBody": "Are you sure you want to decline follow request from user ",
|
||||
"errorDeleteFollowing": "Error deleting following",
|
||||
"errorDeleteFollower": "Error deleting follower",
|
||||
"errorUpdateFollower": "Error updating follower",
|
||||
"errorFetchingFollowersDetails": "Error fetching followers details"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"addEditGearComponentModalAddTitle": "Add gear component",
|
||||
"addEditGearComponentModalEditTitle": "Edit gear component",
|
||||
"addEditGearComponentModalAddEditTypeLabel": "Type",
|
||||
"addEditGearComponentModalAddEditBrandLabel": "Brand",
|
||||
"addEditGearComponentModalAddEditModelLabel": "Model",
|
||||
"addEditGearComponentModalAddEditPurchaseDateLabel": "Purchase date",
|
||||
"addEditGearComponentModalAddEditExpectedDistanceLabel": "Expected distance",
|
||||
"addEditGearComponentModalAddEditExpectedTimeLabel": "Expected time",
|
||||
"addEditGearComponentModalAddEditPurchaseValueLabel": "Purchase value",
|
||||
"addEditGearComponentModalAddEditRetiredDateLabel": "Retired date",
|
||||
"addEditGearComponentModalAddEditIsActiveLabel": "Is active",
|
||||
"successGearComponentAdded": "Gear component added successfully",
|
||||
"successGearComponentEdited": "Gear component edited successfully",
|
||||
"errorGearComponentAdd": "Error adding gear component",
|
||||
"gearComponentListGearEditSuccessMessage": "Gear component edited successfully",
|
||||
"gearComponentListGearEditErrorMessage": "Error editing gear component",
|
||||
"retiredDateAfterPurchaseDateError": "Retired date must be after purchase date"
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"gearComponentBackTire": "Back tire",
|
||||
"gearComponentFrontTire": "Front tire",
|
||||
"gearComponentBackTube": "Back tube",
|
||||
"gearComponentFrontTube": "Front tube",
|
||||
"gearComponentBackWheelValve": "Back wheel valve",
|
||||
"gearComponentFrontWheelValve": "Front wheel valve",
|
||||
"gearComponentBackTubelessSealant": "Back tubeless sealant",
|
||||
"gearComponentBackTubelessRimTape": "Back tubeless rim tape",
|
||||
"gearComponentFrontTubelessSealant": "Front tubeless sealant",
|
||||
"gearComponentFrontTubelessRimTape": "Front tubeless rim tape",
|
||||
"gearComponentBackWheel": "Back wheel",
|
||||
"gearComponentFrontWheel": "Front wheel",
|
||||
"gearComponentBackBreakRotor": "Back brake rotor",
|
||||
"gearComponentFrontBreakRotor": "Front brake rotor",
|
||||
"gearComponentBackBreakPads": "Back brake pads",
|
||||
"gearComponentFrontBreakPads": "Front brake pads",
|
||||
"gearComponentBackBreakOil": "Back brake oil",
|
||||
"gearComponentFrontBreakOil": "Front brake oil",
|
||||
"gearComponentCrankLeftPowerMeter": "Crank left power meter",
|
||||
"gearComponentCrankRightPowerMeter": "Crank right power meter",
|
||||
"gearComponentCranksetPowerMeter": "Crankset power meter",
|
||||
"gearComponentPedalsLeftPowerMeter": "Pedals left power meter",
|
||||
"gearComponentPedalsRightPowerMeter": "Pedals right power meter",
|
||||
"gearComponentPedalsPowerMeter": "Pedals power meter",
|
||||
"gearComponentPedals": "Pedals",
|
||||
"gearComponentCrankset": "Crankset",
|
||||
"gearComponentCassette": "Cassette",
|
||||
"gearComponentChain": "Chain",
|
||||
"gearComponentFrontShifter": "Front shifter",
|
||||
"gearComponentFrontDerailleur": "Front derailleur",
|
||||
"gearComponentRearShifter": "Rear shifter",
|
||||
"gearComponentRearDerailleur": "Rear derailleur",
|
||||
"gearComponentBottomBracket": "Bottom bracket",
|
||||
"gearComponentBottleCage": "Bottle cage",
|
||||
"gearComponentHandlebar": "Handlebar",
|
||||
"gearComponentHeadset": "Headset",
|
||||
"gearComponentComputerMount": "Computer mount",
|
||||
"gearComponentHandlebarTape": "Handlebar tape",
|
||||
"gearComponentGrips": "Grips",
|
||||
"gearComponentStem": "Stem",
|
||||
"gearComponentSeatpost": "Seatpost",
|
||||
"gearComponentSaddle": "Saddle",
|
||||
"gearComponentFork": "Fork",
|
||||
"gearComponentFrame": "Frame",
|
||||
"gearComponentCleats": "Cleats",
|
||||
"gearComponentInsoles": "Insoles",
|
||||
"gearComponentLaces": "Laces",
|
||||
"gearComponentBaseGrip": "Base grip",
|
||||
"gearComponentBumpers": "Bumpers",
|
||||
"gearComponentGrommets": "Grommets",
|
||||
"gearComponentOverGrip": "Over grip",
|
||||
"gearComponentStrings": "Strings",
|
||||
"gearComponentSail": "Sail",
|
||||
"gearComponentBoard": "Board",
|
||||
"gearComponentMast": "Mast",
|
||||
"gearComponentBoom": "Boom",
|
||||
"gearComponentMastExtension": "Mast extension",
|
||||
"gearComponentMastBase": "Mast base",
|
||||
"gearComponentMastUniversalJoint": "Mast universal joint",
|
||||
"gearComponentFin": "Fin",
|
||||
"gearComponentFootstraps": "Footstraps",
|
||||
"gearComponentHarnessLines": "Harness lines",
|
||||
"gearComponentRiggingLines": "Rigging lines",
|
||||
"gearComponentFootpad": "Footpad",
|
||||
"gearComponentImpactVest": "Impact vest",
|
||||
"gearComponentLifeguardVest": "Lifeguard vest",
|
||||
"gearComponentHelmet": "Helmet",
|
||||
"gearComponentWing": "Wing",
|
||||
"gearComponentFrontFoil": "Front foil",
|
||||
"gearComponentStabilizer": "Stabilizer",
|
||||
"gearComponentFuselage": "Fuselage",
|
||||
"gearComponentOf": " of ",
|
||||
"gearComponentListGearComponentIsInactiveBadge": "Inactive",
|
||||
"gearComponentListModalDeleteGearComponentTitle": "Delete gear component",
|
||||
"gearComponentListModalDeleteGearComponentBody": "Are you sure you want to delete gear component ",
|
||||
"gearComponentListGearDeleteSuccessMessage": "Gear component deleted successfully",
|
||||
"gearComponentListGearDeleteErrorMessage": "Error deleting gear component"
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"addEditGearModalEditTitle": "Edit gear",
|
||||
"addEditGearModalAddTitle": "Add gear",
|
||||
"addEditGearModalAddBrandLabel": "Brand",
|
||||
"addEditGearModalAddModelLabel": "Model",
|
||||
"addEditGearModalAddNicknameLabel": "Nickname",
|
||||
"addEditGearModalAddTypeLabel": "Gear type",
|
||||
"addEditGearModalAddTypeOption1": "Bike",
|
||||
"addEditGearModalAddTypeOption2": "Shoes",
|
||||
"addEditGearModalAddTypeOption3": "Wetsuit",
|
||||
"addEditGearModalAddTypeOption4": "Racquet",
|
||||
"addEditGearModalAddTypeOption5": "Skis",
|
||||
"addEditGearModalAddTypeOption6": "Snowboard",
|
||||
"addEditGearModalAddTypeOption7": "Windsurf",
|
||||
"addEditGearModalAddTypeOption8": "Water sports board",
|
||||
"addEditGearModalAddDateLabel": "Created date",
|
||||
"addEditGearModalAddIsActiveLabel": "Is active",
|
||||
"addEditGearModalAddIsActiveOption1": "Active",
|
||||
"addEditGearModalAddIsActiveOption0": "Inactive",
|
||||
"addEditGearModalAddIsInitialKmsLabel": "Initial kms",
|
||||
"addEditGearModalAddIsInitialMilesLabel": "Initial miles",
|
||||
"addEditGearModalAddEditPurchaseValueLabel": "Purchase value",
|
||||
"errorNicknameAlreadyExistsFeedback": "Nickname already exists",
|
||||
"errorNotPossibleToGetGearByNickname": "Is was not possible to get gear by nickname for validation",
|
||||
"successGearAdded": "Gear added successfully",
|
||||
"errorGearAdd": "Error adding gear",
|
||||
"successGearEdited": "Gear edited successfully",
|
||||
"errorGearEdit": "Error editing gear"
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"gearListTypeLabel": "Type",
|
||||
"gearListTypeOption1": "Bike",
|
||||
"gearListTypeOption2": "Shoes",
|
||||
"gearListTypeOption3": "Wetsuit",
|
||||
"gearListTypeOption4": "Racquet",
|
||||
"gearListTypeOption5": "Skis",
|
||||
"gearListTypeOption6": "Snowboard",
|
||||
"gearListTypeOption7": "Windsurf",
|
||||
"gearListTypeOption8": "Water sports board",
|
||||
"gearListGearIsInactiveBadge": "Inactive",
|
||||
"gearListModalDeleteGearTitle": "Delete gear",
|
||||
"gearListModalDeleteGearBody": "Are you sure you want to delete gear ",
|
||||
"gearListGearDeleteSuccessMessage": "Gear deleted successfully",
|
||||
"gearListGearDeleteErrorMessage": "Error deleting gear"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"weight": "Weight",
|
||||
"noWeightData": "No weight data",
|
||||
"noWeightTarget": "No weight target",
|
||||
"noHeightDefined": "No height defined for user",
|
||||
"bmi": "BMI",
|
||||
"bmiUnderweight": "Underweight",
|
||||
"bmiNormalWeight": "Normal weight",
|
||||
"bmiOverweight": "Overweight",
|
||||
"bmiObesityClass1": "Obesity (Class 1)",
|
||||
"bmiObesityClass2": "Obesity (Class 2)",
|
||||
"bmiObesityClass3": "Extreme Obesity (Class 3)"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"dashboardSection": "Dashboard",
|
||||
"weightSection": "Weight"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"addWeightModalTitle": "Add weight",
|
||||
"editWeightModalTitle": "Edit weight",
|
||||
"addWeightWeightLabel": "Weight",
|
||||
"addWeightDateLabel": "Date",
|
||||
"successAddWeight": "Weight added",
|
||||
"errorAddWeight": "Error adding weight"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"labelGarminConnect": "Garmin Connect",
|
||||
"modalDeleteWeightTitle": "Delete weight",
|
||||
"modalDeleteWeightBody": "Are you sure you want to delete weight entry for ",
|
||||
"successDeleteWeight": "Weight deleted",
|
||||
"errorDeleteWeight": "It was not possible to delete weight entry",
|
||||
"successEditWeight": "Weight edited",
|
||||
"errorEditWeight": "It was not possible to edit weight entry"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"buttonAddWeight": "Add weight",
|
||||
"labelNumberOfHealthDataWeight1": "There is a total of ",
|
||||
"labelNumberOfHealthDataWeight2": " weight measure(s) inserted (",
|
||||
"labelNumberOfHealthDataWeight3": " loaded):"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"home": "Home",
|
||||
"gear": "Gear",
|
||||
"health": "Health",
|
||||
"alerts": "Alerts",
|
||||
"menu": "Menu"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"search": "Search",
|
||||
"activities": "Activities",
|
||||
"activitiesList": "List",
|
||||
"summary": "Summary",
|
||||
"gear": "Gear",
|
||||
"health": "Health",
|
||||
"profile": "Profile",
|
||||
"settings": "Settings",
|
||||
"login": "Login",
|
||||
"logout": "Logout",
|
||||
"errorLogout": "Error logging out"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "Ops...",
|
||||
"subtitle": "No records found"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "New sign-up request",
|
||||
"subTitle": " has requested to sign-up"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"errorFetchingNotificationsPagination": "Error fetching notifications with pagination",
|
||||
"errorFetchingNotificationsNumber": "Error fetching notifications number",
|
||||
"errorFetchingNotificationById": "Error fetching notification by ID",
|
||||
"errorFetchingMessageFromWebSocket": "Error fetching message from WebSocket"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"newAcceptedRequestTitle": "New accepted request",
|
||||
"newAcceptedRequestSubTitle": " has accepted your follow request"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"newActivityDuplicateStartTimeTitle": "New activity with duplicated start time",
|
||||
"newActivityDuplicateStartTimeSubTitle": "A new activity has been added with a start time that overlaps with an existing activity. Please review it"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"newActivityTitle": "New activity",
|
||||
"newActivitySubTitle": "Good job! A new activity has been added!"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"newFollowerRequestTitle": "New follower request",
|
||||
"newFollowerRequestSubTitle": "You have a new follower request from "
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"formLabel": "Language"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"formLabel": "Theme",
|
||||
"themeLight": "Light",
|
||||
"themeDark": "Dark",
|
||||
"themeAuto": "Auto"
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"bulkImportIntegrationTitle": "Bulk import",
|
||||
"bulkImportIntegrationBody": "Bulk import activities from files (in the data/activity_files/bulk_import folder)",
|
||||
"buttonBulkImport": "Import activities",
|
||||
"loadingMessageBulkImport": "Importing activities from files...",
|
||||
"errorMessageUnableToImportActivities": "An error occurred while importing activities",
|
||||
"importTitle": "Import",
|
||||
"stravaGearImportTitle": "Strava gear import",
|
||||
"stravaGearImportBody": "Import gear from a Strava bulk export (in the data/activity_files/bulk_import folder)",
|
||||
"stravaGearImportbuttonBikes": "Import Strava bikes",
|
||||
"loadingMessageStravaBikesImport": "Importing Strava bikes from file...",
|
||||
"successMessageStravaBikesImport": "Strava bikes imported successfully",
|
||||
"errorMessageUnableToImportBikes": "An error occurred while importing Strava bikes",
|
||||
"stravaImportbuttonShoes": "Import Strava shoes",
|
||||
"loadingMessageStravaShoesImport": "Importing Strava shoes from file...",
|
||||
"successMessageStravaShoesImport": "Strava shoes imported successfully",
|
||||
"errorMessageUnableToImportShoes": "An error occurred while importing Strava shoes"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"garminConnectAuthModalTitle": "Link Garmin Connect account",
|
||||
"garminConnectAuthModalUsernameLabel": "Garmin Connect email",
|
||||
"garminConnectAuthModalUsernamePlaceholder": "Garmin Connect email",
|
||||
"garminConnectAuthModalPasswordLabel": "Garmin Connect password",
|
||||
"garminConnectAuthModalPasswordPlaceholder": "Garmin Connect password",
|
||||
"garminConnectAuthModalMfaCodeLabel": "MFA code",
|
||||
"garminConnectAuthModalMfaCodePlaceholder": "MFA code",
|
||||
"buttonSubmitMfaCode": "Submit MFA code",
|
||||
"garminConnectAuthModalLoginButton": "Login",
|
||||
"processingMessageLinkGarminConnect": "Linking Garmin Connect account...",
|
||||
"successMessageLinkGarminConnect": "Garmin Connect account linked",
|
||||
"errorMessageUnableToLinkGarminConnect": "Unable to link Garmin Connect account"
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"stravaIntegrationTitle": "Strava",
|
||||
"stravaIntegrationBody": "Strava is an American internet service for tracking physical exercise which incorporates social network features.",
|
||||
"buttonConnect": "Connect",
|
||||
"buttonDropdownOptions": "Options",
|
||||
"modalRetrieveActivitiesByDaysTitle": "Retrieve activities by days",
|
||||
"modalRetrieveActivitiesByDateRangeTitle": "Retrieve activities by date range",
|
||||
"modalRetrieveActivitiesByDaysLabel": "Days",
|
||||
"modalRetrieveActivitiesByDaysPlaceholder": "Days",
|
||||
"modalRetrieveButton": "Retrieve",
|
||||
"buttonRetrieveGear": "Retrieve gear",
|
||||
"buttonRelink": "Relink",
|
||||
"buttonUnlink": "Unlink",
|
||||
"modalRetrieveClientIdTitle": "Connect Strava",
|
||||
"modalRetrieveClientIdLabel": "Client ID",
|
||||
"modalRetrieveClientSecretLabel": "Client secret",
|
||||
"errorMessageUnableToLinkStrava": "Unable to link Strava account",
|
||||
"errorMessageUnableToUnsetStravaClientSettings": "Unable to unset Strava client and state settings after linking error",
|
||||
"successMessageStravaAccountLinked": "Strava account linked",
|
||||
"errorMessageUnableToUnSetStravaState": "Unable to unset Strava state",
|
||||
"errorMessageUnableToGetStravaActivities": "Unable to get Strava activities",
|
||||
"errorMessageUnableToGetStravaGear": "Unable to get Strava gear",
|
||||
"loadingMessageRetrievingStravaActivities": "Retrieving Strava activities",
|
||||
"loadingMessageRetrievingStravaGear": "Retrieving Strava gear",
|
||||
"processingMessageUnlinkStrava": "Unlinking Strava account...",
|
||||
"successMessageStravaUnlinked": "Strava account unlinked",
|
||||
"errorMessageUnableToUnlinkStrava": "Unable to unlink Strava account",
|
||||
"modalUnlinkStravaTitle": "Unlink Strava",
|
||||
"modalUnlinkStravaBody": "Are you sure you want to unlink your Strava account? Unlinking your Strava account will remove all your Strava activities and gear from Endurain.",
|
||||
"garminConnectIntegrationTitle": "Garmin Connect",
|
||||
"garminConnectIntegrationBody": "Garmin Connect is a health and fitness activity platform for users of Garmin devices",
|
||||
"loadingMessageRetrievingGarminConnectActivities": "Retrieving Garmin Connect activities",
|
||||
"errorMessageUnableToGetGarminConnectActivitiesDays": "Unable to get Garmin Connect activities by days",
|
||||
"errorMessageUnableToGetGarminConnectActivitiesDataRange": "Unable to get Garmin Connect activities using data range",
|
||||
"modalUnlinkGarminConnectTitle": "Unlink Garmin Connect",
|
||||
"modalUnlinkGarminConnectBody": "Are you sure you want to unlink your Garmin Connect account?",
|
||||
"processingMessageUnlinkGarminConnect": "Unlinking Garmin Connect account...",
|
||||
"successMessageGarminConnectUnlinked": "Garmin Connect account unlinked",
|
||||
"errorMessageUnableToUnlinkGarminConnect": "Unable to unlink Garmin Connect account",
|
||||
"errorMessageUnableToGetGarminConnectGear": "Unable to get Garmin Connect gear",
|
||||
"loadingMessageRetrievingGarminConnectGear": "Retrieving Garmin Connect gear",
|
||||
"modalRetrieveHealthDataByDaysTitle": "Retrieve health data by days",
|
||||
"modalRetrieveHealthDataByDateRangeTitle": "Retrieve health data by date range",
|
||||
"errorMessageUnableToGetGarminConnectHealthDataDays": "Unable to get Garmin Connect health data by days",
|
||||
"errorMessageUnableToGetGarminConnectHealthDataDateRange": "Unable to get Garmin Connect health data using date range",
|
||||
"loadingMessageRetrievingGarminConnectHealthData": "Retrieving Garmin Connect health data"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"subtitleChangePassword": "Change password",
|
||||
"changeUserPasswordBodyLabel": "Change password for user ",
|
||||
"changeUserPasswordPasswordLabel": "New password",
|
||||
"changeUserPasswordPasswordConfirmationLabel": "Confirm new password",
|
||||
"changeUserPasswordFeedbackLabel": "Password does not meet requirements",
|
||||
"changeUserPasswordPasswordsDoNotMatchFeedbackLabel": "Passwords do not match",
|
||||
"subtitleMFA": "Multi-Factor Authentication (MFA)",
|
||||
"mfaDisabledDescription": "MFA is currently disabled. Enable it to add an extra layer of security to your account.",
|
||||
"mfaEnabledDescription": "MFA is currently enabled. Your account is protected with two-factor authentication.",
|
||||
"enableMFAButton": "Enable MFA",
|
||||
"disableMFAButton": "Disable MFA",
|
||||
"mfaSetupModalTitle": "Setup Multi-Factor Authentication",
|
||||
"mfaSetupInstructions": "Scan the QR code below with your authenticator app (Google Authenticator, Authy, etc.) or manually enter the secret:",
|
||||
"mfaSecretLabel": "Secret Key",
|
||||
"mfaVerificationCodeLabel": "Verification Code",
|
||||
"mfaVerificationCodePlaceholder": "Enter 6-digit code",
|
||||
"mfaDisableModalTitle": "Disable Multi-Factor Authentication",
|
||||
"mfaDisableConfirmation": "Are you sure you want to disable MFA? This will reduce your account security.",
|
||||
"mfaEnabledSuccess": "MFA enabled successfully",
|
||||
"mfaDisabledSuccess": "MFA disabled successfully",
|
||||
"errorLoadMFAStatus": "Error loading MFA status",
|
||||
"errorSetupMFA": "Error setting up MFA",
|
||||
"errorEnableMFA": "Error enabling MFA",
|
||||
"errorDisableMFA": "Error disabling MFA",
|
||||
"subtitleMySessions": "My sessions",
|
||||
"userChangePasswordSuccessMessage": "Password changed successfully",
|
||||
"userChangePasswordErrorMessage": "Error changing password",
|
||||
"successDeleteSession": "Session deleted successfully",
|
||||
"errorDeleteSession": "Error deleting session"
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"defaultsTitle": "Defaults",
|
||||
"unitsLabel": "Default units",
|
||||
"unitsMetric": "Metric",
|
||||
"unitsImperial": "Imperial",
|
||||
"currencyLabel": "Default currency",
|
||||
"numRecordsLabel": "Number of records per page",
|
||||
"signupTitle": "Sign-up",
|
||||
"adminApprovalLabel": "Admin approval",
|
||||
"emailConfirmationLabel": "Email confirmation",
|
||||
"publicShareableLinksLabel": "Public shareable links",
|
||||
"enabledLabel": "Enabled",
|
||||
"serverSettingsPublicShareableLinksEnabledWarningAlert": "Enabling this will make all publicly posted activities viewable without authentication.",
|
||||
"publicShareableLinksShowUserInfoLabel": "Show user info",
|
||||
"serverSettingsPublicShareableLinksShowUserWarningAlert": "Enabling this will display user information on all public links",
|
||||
"photosLabel": "Photos",
|
||||
"loginPhotoLabel": "Login photo",
|
||||
"buttonAddPhoto": "Add photo",
|
||||
"logonPhotoAddLabel": "Login page photo (.png) with a size of 1000x1000 pixels.",
|
||||
"processingPhotoUpload": "Processing photo upload",
|
||||
"successPhotoUpload": "Photo uploaded successfully",
|
||||
"buttonDeleteLoginPhoto": "Delete login photo",
|
||||
"modalDeleteLoginPhotoBody": "Are you sure you want to delete the login photo?",
|
||||
"processingPhotoDelete": "Processing photo delete",
|
||||
"successPhotoDelete": "Photo deleted successfully",
|
||||
"successUpdateServerSettings": "Server settings updated successfully",
|
||||
"errorUpdateServerSettings": "Error updating server settings",
|
||||
"errorFetchingServerSettings": "Error fetching server settings"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"usersSection": "Users",
|
||||
"serverSettingsSection": "Server Settings",
|
||||
"generalSection": "General",
|
||||
"myProfileSection": "My Profile",
|
||||
"myGoals": "My Goals",
|
||||
"securitySection": "Security",
|
||||
"integrationsSection": "Integrations",
|
||||
"importSection": "Import"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"addNewGoal": "Add new goal",
|
||||
"labelNumberOfGoals1": "You have ",
|
||||
"labelNumberOfGoals2": " goal(s) set:",
|
||||
"successGoalDeleted": "Goal deleted successfully",
|
||||
"errorFetchingGoals": "Error fetching goals"
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"addEditGoalModalAddTitle": "Add Goal",
|
||||
"addEditGoalModalEditTitle": "Edit Goal",
|
||||
"addEditGoalModalGoalIntervalLabel": "Interval",
|
||||
"intervalOption1": "Daily",
|
||||
"intervalOption2": "Weekly",
|
||||
"intervalOption3": "Monthly",
|
||||
"intervalOption4": "Yearly",
|
||||
"addEditGoalModalGoalActivityTypeLabel": "Activity Type",
|
||||
"activityTypeRun": "Run",
|
||||
"activityTypeBike": "Bike",
|
||||
"activityTypeSwim": "Swim",
|
||||
"activityTypeWalk": "Walk",
|
||||
"activityTypeStrength": "Strength",
|
||||
"addEditGoalModalGoalTypeLabel": "Type",
|
||||
"addEditGoalModalCaloriesLabel": "Calories",
|
||||
"addEditGoalModalCaloriesPlaceholder": "Target calories",
|
||||
"addEditGoalModalActivitiesNumberLabel": "Activities number",
|
||||
"addEditGoalModalActivitiesNumberPlaceholder": "Target activities number",
|
||||
"addEditGoalModalDistanceLabel": "Distance",
|
||||
"addEditGoalModalDistancePlaceholder": "Target distance",
|
||||
"addEditGoalModalElevationLabel": "Elevation",
|
||||
"addEditGoalModalElevationPlaceholder": "Target elevation",
|
||||
"addEditGoalModalDurationLabel": "Duration",
|
||||
"addEditGoalModalDurationPlaceholder": "Target duration (ex: 1.5 equals 1h30m)",
|
||||
"addEditGoalModalSuccessAddGoal": "Goal added successfully",
|
||||
"addEditGoalModalErrorAddGoal": "Error adding goal",
|
||||
"addEditGoalModalSuccessEditGoal": "Goal edited successfully",
|
||||
"addEditGoalModalErrorEditGoal": "Error editing goal"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"modalDeleteGoalTitle": "Delete Goal",
|
||||
"modalDeleteGoalBody": "Are you sure you want to delete the goal with ID ",
|
||||
"goalDeleteErrorMessage": "Error deleting goal"
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
{
|
||||
"titleProfileInfo": "My profile",
|
||||
"buttonDeleteProfilePhoto": "Delete",
|
||||
"modalDeleteProfilePhotoBody": "Are you sure you want to delete your profile photo?",
|
||||
"buttonEditProfile": "Profile",
|
||||
"usernameLabel": "Username",
|
||||
"emailLabel": "Email",
|
||||
"cityLabel": "City",
|
||||
"birthdayLabel": "Birthday",
|
||||
"genderLabel": "Gender",
|
||||
"genderOption1": "Male",
|
||||
"genderOption2": "Female",
|
||||
"genderOption3": "Unspecified",
|
||||
"unitsLabel": "Units",
|
||||
"unitsOption1": "Metric",
|
||||
"unitsOption2": "Imperial",
|
||||
"currencyLabel": "Currency",
|
||||
"heightLabel": "Height",
|
||||
"preferredLanguageLabel": "Preferred language",
|
||||
"firstDayOfWeekLabel": "First day of week",
|
||||
"accessTypeLabel": "Access type",
|
||||
"accessTypeOption1": "Regular user",
|
||||
"accessTypeOption2": "Administrator",
|
||||
"userPhotoDeleteSuccess": "Profile photo deleted successfully",
|
||||
"userPhotoDeleteError": "Error deleting profile photo",
|
||||
"titleDefaultGear": "Default gear",
|
||||
"subTitleShoeActivities": "Shoe activities",
|
||||
"subTitleRun": "Run",
|
||||
"subTitleTrailRun": "Trail run",
|
||||
"subTitleVirtualRun": "Virtual run",
|
||||
"subTitleWalk": "Walk",
|
||||
"subTitleHike": "Hike",
|
||||
"subTitleBikeActivities": "Bike activities",
|
||||
"subTitleBike": "Bike",
|
||||
"subTitleMTBBike": "MTB bike",
|
||||
"subTitleGravelBike": "Gravel bike",
|
||||
"subTitleVirtualBike": "Virtual bike",
|
||||
"subTitleWaterActivities": "Water activities",
|
||||
"subTitleSwim": "Open water swim",
|
||||
"subTitleWindsurf": "Windsurf",
|
||||
"subTitleRacquetActivities": "Racquet activities",
|
||||
"subTitleTennis": "Tennis",
|
||||
"subTitleSnowActivities": "Snow activities",
|
||||
"subTitleAlpineSki": "Alpine ski",
|
||||
"subTitleNordicSki": "Nordic ski",
|
||||
"subTitleSnowboard": "Snowboard",
|
||||
"selectOptionNotDefined": "Not defined",
|
||||
"titlePrivacy": "Privacy",
|
||||
"defaultActivityVisibility": "Default activity visibility",
|
||||
"privacyOption1": "Public",
|
||||
"privacyOption2": "Followers",
|
||||
"privacyOption3": "Private",
|
||||
"defaultActivityStartTime": "Hide activity start time",
|
||||
"defaultActivityLocation": "Hide activity location",
|
||||
"defaultActivityMap": "Hide activity map",
|
||||
"defaultActivityHeartRate": "Hide activity heart rate",
|
||||
"defaultActivityPower": "Hide activity power",
|
||||
"defaultActivityCadence": "Hide activity cadence",
|
||||
"defaultActivityElevation": "Hide activity elevation",
|
||||
"defaultActivitySpeed": "Hide activity speed",
|
||||
"defaultActivityPace": "Hide activity pace",
|
||||
"defaultActivityLaps": "Hide activity laps",
|
||||
"defaultActivitySetsSteps": "Hide activity sets/steps",
|
||||
"defaultActivityGear": "Hide activity gear",
|
||||
"buttonChangeDefaultActivityVisibility": "Change default visibility",
|
||||
"buttonChangeUserActivitiesVisibility": "Change activities visibility",
|
||||
"changeUserActivitiesVisibilityModalVisibilityLabel": "Visibility",
|
||||
"changeUserActivitiesVisibilityModalButton": "Change",
|
||||
"successUpdateUserActivitiesVisibility": "Activities visibility updated successfully",
|
||||
"errorUpdateUserActivitiesVisibility": "Error updating activities visibility",
|
||||
"errorUnableToGetGear": "Unable to get gear",
|
||||
"errorUnableToGetDefaultGear": "Unable to get default gear",
|
||||
"successUpdateDefaultGear": "Default gear updated successfully",
|
||||
"errorUpdateDefaultGear": "Error updating default gear",
|
||||
"successUpdateUserPrivacySettings": "User privacy settings updated successfully",
|
||||
"errorUpdateUserPrivacySettings": "Error updating user privacy settings",
|
||||
"titleExportData": "Export and import data",
|
||||
"labelPasswordDisclaimer": "User password is not included in the import/export process. After import, update your password on security section.",
|
||||
"buttonExportData": "Export data",
|
||||
"buttonImportData": "Import data",
|
||||
"modalImportTitle": "Import backup file",
|
||||
"modalImportBody": "Select the .zip file you previously exported to restore your data.",
|
||||
"exportLoading": "Exporting data, this may take a few minutes...",
|
||||
"exportSuccess": "Export completed successfully",
|
||||
"exportError": "Error exporting data",
|
||||
"importLoading": "Importing data, this may take a few minutes...",
|
||||
"importSuccess": "Import completed",
|
||||
"importError": "Error importing data"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"badgeCurrentSession": "Current Session",
|
||||
"modalDeleteSessionTitle": "Delete Session",
|
||||
"modalDeleteSessionBody": "Are you sure you want to delete session "
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"addEditUserModalAddTitle": "Add user",
|
||||
"addEditUserModalEditTitle": "Edit user",
|
||||
"addEditUserModalEditProfileTitle": "Edit profile",
|
||||
"addEditUserModalDeleteUserPhotoButton": "Delete photo",
|
||||
"addEditUserModalUserPhotoLabel": "User photo",
|
||||
"addEditUserModalUsernameLabel": "Username",
|
||||
"addEditUserModalUsernamePlaceholder": "Username (max 45 characters)",
|
||||
"addEditUserModalErrorUsernameExists": "Username already exists",
|
||||
"addEditUserModalNameLabel": "Name",
|
||||
"addEditUserModalNamePlaceholder": "Name (max 45 characters)",
|
||||
"addEditUserModalEmailLabel": "Email",
|
||||
"addEditUserModalEmailPlaceholder": "Email (max 45 characters)",
|
||||
"addEditUserModalErrorEmailInvalid": "Email is not valid",
|
||||
"addEditUserModalErrorEmailExists": "Email already exists",
|
||||
"addEditUserModalPasswordLabel": "Password",
|
||||
"addEditUserModalPasswordPlaceholder": "Password",
|
||||
"addEditUserModalErrorPasswordInvalid": "Password does not meet requirements",
|
||||
"addEditUserModalCityLabel": "City",
|
||||
"addEditUserModalCityPlaceholder": "City (max 45 characters)",
|
||||
"addEditUserModalBirthdayLabel": "Birthday",
|
||||
"addEditUserModalGenderLabel": "Gender",
|
||||
"addEditUserModalUnitsLabel": "Units",
|
||||
"addEditUserModalUnitsOption1": "Metric",
|
||||
"addEditUserModalUnitsOption2": "Imperial",
|
||||
"addEditUserModalCurrencyLabel": "Currency",
|
||||
"addEditUserModalHeightLabel": "Height",
|
||||
"addEditUserModalHeightPlaceholder": "Height",
|
||||
"addEditUserModalFeetValidationLabel": "Invalid height. Please enter a valid height in feet.",
|
||||
"addEditUserModalInchesValidationLabel": "Invalid height. Please enter a valid height in inches.",
|
||||
"addEditUserModalUserPreferredLanguageLabel": "Preferred language",
|
||||
"addEditUserModalUserFirstDayOfWeekLabel": "First day of week",
|
||||
"addEditUserModalUserTypeLabel": "Access type",
|
||||
"addEditUserModalUserTypeOption1": "Regular user",
|
||||
"addEditUserModalUserTypeOption2": "Administrator",
|
||||
"addEditUserModalIsActiveLabel": "Is active",
|
||||
"addEditUserModalIsActiveOption1": "Yes",
|
||||
"addEditUserModalIsActiveOption2": "No",
|
||||
"addEditUserModalDefaultActivityVisibilityLabel": "Default activity visibility",
|
||||
"addEditUserModalDefaultActivityVisibilityOption1": "Public",
|
||||
"addEditUserModalDefaultActivityVisibilityOption2": "Followers",
|
||||
"addEditUserModalDefaultActivityVisibilityOption3": "Private",
|
||||
"addEditUserModalErrorFetchingUserByUsername": "Error fetching user by username",
|
||||
"addEditUserModalErrorFetchingUserByEmail": "Error fetching user by email",
|
||||
"addEditUserModalSuccessDeleteUserPhoto": "User photo deleted successfully",
|
||||
"addEditUserModalErrorDeleteUserPhoto": "Error deleting user photo",
|
||||
"addEditUserModalErrorUploadingUserPhoto": "Error uploading user photo",
|
||||
"addEditUserModalSuccessAddUser": "User added successfully",
|
||||
"addEditUserModalErrorAddUser": "Error adding user",
|
||||
"addEditUserModalSuccessEditUser": "User edited successfully",
|
||||
"addEditUserModalErrorEditUser": "Error editing user"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"modalChangeUserPasswordTitle": "Change user password",
|
||||
"modalChangeUserPasswordBodyLabel": "Change password for user ",
|
||||
"modalChangeUserPasswordPasswordLabel": "New password",
|
||||
"modalChangeUserPasswordPasswordConfirmationLabel": "Confirm new password",
|
||||
"modalChangeUserPasswordFeedbackLabel": "Password does not meet requirements",
|
||||
"modalChangeUserPasswordPasswordsDoNotMatchFeedbackLabel": "Passwords do not match",
|
||||
"userChangePasswordSuccessMessage": "Password changed successfully",
|
||||
"userChangePasswordErrorMessage": "Error changing password"
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"userListAccessTypeOption1": "Regular user",
|
||||
"userListAccessTypeOption2": "Administrator",
|
||||
"userListUserIsMeBadge": "Me",
|
||||
"userListUserIsAdminBadge": "Admin",
|
||||
"userListUserIsInactiveBadge": "Inactive",
|
||||
"userListUserHasUnverifiedEmailBadge": "Unverified email",
|
||||
"modalApproveSignUpTitle": "Approve user sign up",
|
||||
"modalApproveSignUpBody": "Are you sure you want to approve user ",
|
||||
"processingApproval": "Processing approval...",
|
||||
"userApproveSuccessMessage": "User approved successfully.",
|
||||
"userApproveErrorMessage": "Error approving user",
|
||||
"modalRejectSignUpTitle": "Reject user sign up",
|
||||
"modalRejectSignUpBody1": "Are you sure you want to reject user ",
|
||||
"modalRejectSignUpBody2": "The user will be deleted, this cannot be undone.",
|
||||
"userEditErrorMessage": "Error editing user",
|
||||
"modalDeleteUserTitle": "Delete user",
|
||||
"modalDeleteUserBody": "Are you sure you want to delete user ",
|
||||
"userListUserSessionsTitle": "User sessions",
|
||||
"userSessionDeleteSuccessMessage": "Session deleted successfully",
|
||||
"userSessionDeleteErrorMessage": "Error deleting session"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"passwordRequirementsTitle": "Password requirements includes:",
|
||||
"passwordCharacters": "- 8 characters;",
|
||||
"passwordCapitalLetters": "- 1 capital letter;",
|
||||
"passwordNumbers": "- 1 number;",
|
||||
"passwordSpecialCharacters": "- 1 special character;"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"buttonAddUser": "Add user",
|
||||
"labelSearchUsersByUsername": "Search users by username",
|
||||
"labelNumberOfUsers1": "There is a total of ",
|
||||
"labelNumberOfUsers2": " user(s) (",
|
||||
"labelNumberOfUsers3": " loaded):",
|
||||
"successUserAdded": "User added successfully",
|
||||
"successUserDeleted": "User deleted successfully",
|
||||
"errorFetchingUsers": "Error fetching users"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"thisWeekDistancesTitle": "Week top 3",
|
||||
"thisMonthDistancesTitle": "Month top 3"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"title": "Goals",
|
||||
"activityTypeRun": "Run",
|
||||
"activityTypeBike": "Bike",
|
||||
"activityTypeSwim": "Swim",
|
||||
"activityTypeWalk": "Walk",
|
||||
"activityTypeStrength": "Strength",
|
||||
"intervalOption1": "Daily",
|
||||
"intervalOption2": "Weekly",
|
||||
"intervalOption3": "Monthly",
|
||||
"intervalOption4": "Yearly",
|
||||
"activities": "activities"
|
||||
}
|
||||
8
frontend/app/src/i18n/sl/emailVerificationView.json
Normal file
8
frontend/app/src/i18n/sl/emailVerificationView.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"title1": "Handling verify email",
|
||||
"title2": "Please wait while your email is being verified. Do not refresh this page.",
|
||||
"emailVerified": "Email verified successfully!",
|
||||
"tokenNotFound": "Token not found",
|
||||
"tokenExpired": "Token expired",
|
||||
"verificationFailed": "Email verification failed"
|
||||
}
|
||||
31
frontend/app/src/i18n/sl/gears/gearView.json
Normal file
31
frontend/app/src/i18n/sl/gears/gearView.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"buttonAddComponent": "Add component",
|
||||
"buttonEditGear": "Edit gear",
|
||||
"buttonDeleteGear": "Delete gear",
|
||||
"modalDeleteGearBody1": "Are you sure you want to delete gear",
|
||||
"modalDeleteGearBody2": "This action cannot be undone.",
|
||||
"gearIsActiveBadge": "Active",
|
||||
"gearIsInactiveBadge": "Inactive",
|
||||
"gearTypeOption1": "Bike",
|
||||
"gearTypeOption2": "Shoes",
|
||||
"gearTypeOption3": "Wetsuit",
|
||||
"gearTypeOption4": "Racquet",
|
||||
"gearTypeOption5": "Skis",
|
||||
"gearTypeOption6": "Snowboard",
|
||||
"gearTypeOption7": "Windsurf",
|
||||
"gearTypeOption8": "Water sports board",
|
||||
"gearFromStrava": "Strava",
|
||||
"gearFromGarminConnect": "Garmin Connect",
|
||||
"labelBrand": "Brand",
|
||||
"labelModel": "Model",
|
||||
"labelPurchaseValue": "Purchase value",
|
||||
"labelTotalCost": "Total cost",
|
||||
"labelDistance": "Distance",
|
||||
"labelTime": "Time",
|
||||
"titleComponents": "Components",
|
||||
"showInactiveComponents": "Show inactive",
|
||||
"title": "Activities",
|
||||
"successGearEdited": "Gear edited successfully",
|
||||
"errorGearDelete": "Error deleting gear",
|
||||
"errorFetchingGears": "Error fetching gears"
|
||||
}
|
||||
13
frontend/app/src/i18n/sl/gears/gearsView.json
Normal file
13
frontend/app/src/i18n/sl/gears/gearsView.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"title": "Gear",
|
||||
"buttonAddGear": "Add Gear",
|
||||
"subTitleSearchGearByNickname": "Search gear by nickname",
|
||||
"placeholderSearchGearByNickname": "Nickname",
|
||||
"buttonSearchGear": "Search Gear",
|
||||
"displayUserNumberOfGears1": "There is a total of ",
|
||||
"displayUserNumberOfGears2": " gear(s) (",
|
||||
"displayUserNumberOfGears3": " loaded):",
|
||||
"successGearDeleted": "Gear deleted successfully",
|
||||
"errorGearNotFound": "Gear not found",
|
||||
"errorFetchingGears": "Error fetching gears"
|
||||
}
|
||||
79
frontend/app/src/i18n/sl/generalItems.json
Normal file
79
frontend/app/src/i18n/sl/generalItems.json
Normal file
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"buttonBack": "Back",
|
||||
"buttonClose": "Close",
|
||||
"true": "True",
|
||||
"false": "False",
|
||||
"yes": "Yes",
|
||||
"no": "No",
|
||||
"ofWithSpaces": " of ",
|
||||
"languageOption1": "English (US)",
|
||||
"languageOption2": "Catalan (CA)",
|
||||
"languageOption3": "Portuguese (PT)",
|
||||
"languageOption4": "German (DE)",
|
||||
"languageOption5": "French (FR)",
|
||||
"languageOption6": "Dutch (NL)",
|
||||
"languageOption7": "Spanish (ES)",
|
||||
"languageOption8": "Chinese (Simplified)",
|
||||
"languageOption9": "Chinese (Traditional)",
|
||||
"languageOption10": "Galician (GL)",
|
||||
"languageOption11": "Italian (IT)",
|
||||
"firstDayOfWeekOption0": "Sunday",
|
||||
"firstDayOfWeekOption1": "Monday",
|
||||
"firstDayOfWeekOption2": "Tuesday",
|
||||
"firstDayOfWeekOption3": "Wednesday",
|
||||
"firstDayOfWeekOption4": "Thursday",
|
||||
"firstDayOfWeekOption5": "Friday",
|
||||
"firstDayOfWeekOption6": "Saturday",
|
||||
"buttonlistAll": "List all",
|
||||
"requiredField": "Required fields",
|
||||
"labelNotApplicable": "N/A",
|
||||
"labelNoData": "No data",
|
||||
"unitsCm": "cm",
|
||||
"unitsCms": "cms",
|
||||
"unitsM": "m",
|
||||
"unitsKm": "km",
|
||||
"unitsKmH": "km/h",
|
||||
"unitsKg": "kg",
|
||||
"labelWeightInKg": "Weight in kg",
|
||||
"unitsInches": "inches",
|
||||
"unitsFeet": "feet",
|
||||
"unitsFeetShort": "ft",
|
||||
"unitsFeetInches": "feet, inches",
|
||||
"unitsMiles": "mi",
|
||||
"unitsYards": "yd",
|
||||
"unitsMph": "mph",
|
||||
"unitsLbs": "lbs",
|
||||
"labelWeightInLbs": "Weight in lbs",
|
||||
"unitsCalories": "kcal",
|
||||
"unitsBpm": "bpm",
|
||||
"labelHRinBpm": "Heart rate in bpm",
|
||||
"unitsWattsShort": "W",
|
||||
"labelPowerInWatts": "Power in watts",
|
||||
"labelCadenceInRpm": "Cadence in rpm",
|
||||
"unitsSpm": "spm",
|
||||
"labelElevationInMeters": "Elevation in meters",
|
||||
"labelElevationInFeet": "Elevation in feet",
|
||||
"labelVelocityInKmH": "Speed in km/h",
|
||||
"labelVelocityInMph": "Speed in mph",
|
||||
"labelPaceInMinKm": "Pace in min/km",
|
||||
"labelPaceInMin100m": "Pace in min/100m",
|
||||
"labelPaceInMinMile": "Pace in min/mile",
|
||||
"labelPaceInMin100yd": "Pace in min/100yd",
|
||||
"labelLaps": "Laps",
|
||||
"labelRest": "Rest",
|
||||
"labelStrokeRateInSpm": "Stroke rate in spm",
|
||||
"startDateLabel": "Start date",
|
||||
"endDateLabel": "End date",
|
||||
"cancel": "Cancel",
|
||||
"loading": "Loading",
|
||||
"betaTag": " (Beta)",
|
||||
"currencyEuro": "Euro",
|
||||
"currencyEuroSymbol": "€",
|
||||
"currencyDollar": "US Dollar",
|
||||
"currencyDollarSymbol": "$",
|
||||
"currencyPound": "British Pound",
|
||||
"currencyPoundSymbol": "£",
|
||||
"genderMale": "Male",
|
||||
"genderFemale": "Female",
|
||||
"genderUnspecified": "Unspecified"
|
||||
}
|
||||
5
frontend/app/src/i18n/sl/healthView.json
Normal file
5
frontend/app/src/i18n/sl/healthView.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"title": "Health",
|
||||
"errorFetchingHealthData": "Error fetching health data",
|
||||
"errorFetchingHealthTargets": "Error fetching health targets"
|
||||
}
|
||||
18
frontend/app/src/i18n/sl/homeView.json
Normal file
18
frontend/app/src/i18n/sl/homeView.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"title": "Endurain",
|
||||
"buttonAddActivity": "Add Activity",
|
||||
"fieldLabelUploadFileType": "Upload .gpx, .fit, .tcx or .gz file",
|
||||
"radioUserActivities": "My activities",
|
||||
"radioFollowerActivities": "Followers activities",
|
||||
"pillIsHidden": "Hidden",
|
||||
"successActivityAdded": "Activity added successfully",
|
||||
"errorActivityAdded": "Error adding activity",
|
||||
"refreshingActivities": "Refreshing activities from linked services",
|
||||
"successActivitiesRefreshed": "Activities refreshed successfully",
|
||||
"errorActivityNotFound": "Activity not found",
|
||||
"processingActivity": "Processing activity",
|
||||
"successActivityDeleted": "Activity deleted successfully",
|
||||
"errorFetchingUserStats": "Error fetching user stats",
|
||||
"errorFetchingUserActivities": "Error fetching user activities",
|
||||
"errorFetchingMedia": "Error fetching media for activity"
|
||||
}
|
||||
37
frontend/app/src/i18n/sl/loginView.json
Normal file
37
frontend/app/src/i18n/sl/loginView.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"sessionExpired": "User session expired",
|
||||
"logoutSuccess": "You have been successfully logged out",
|
||||
"error401": "Invalid username or password",
|
||||
"error403": "You do not have permission to access this resource",
|
||||
"error500": "It was not possible to connect to the server. Please try again later",
|
||||
"errorUndefined": "It was not possible to connect to the server. Please try again later",
|
||||
"subtitle": "Sign-in below",
|
||||
"username": "Username",
|
||||
"password": "Password",
|
||||
"mfaCode": "MFA Code",
|
||||
"mfaRequired": "Multi-factor authentication required. Please enter your 6-digit code.",
|
||||
"verifyMFAButton": "Verify MFA",
|
||||
"invalidMFACode": "Invalid MFA code. Please try again.",
|
||||
"neverExpires": "Remember me (do not tick this box if you are using a shared computer)",
|
||||
"signInButton": "Sign in",
|
||||
"signUpText": "Looking for signing up?",
|
||||
"signUpButton": "Sign up",
|
||||
"errorPublicActivityNotFound": "Public activity not found",
|
||||
"errorPublic_shareable_links": "Public shareable links are not allowed. To view this activity, you must be signed in",
|
||||
"forgotPassword": "Forgot your password?",
|
||||
"passwordResetInvalidLink": "No password reset token provided",
|
||||
"passwordResetSuccess": "Your password has been reset successfully",
|
||||
"forgotPasswordModalTitle": "Forgot Password",
|
||||
"forgotPasswordModalEmailLabel": "Email address",
|
||||
"forgotPasswordModalEmailHelp": "Enter the email address associated with your account. An email with a link to reset your password will be sent.",
|
||||
"forgotPasswordModalSubmitButton": "Send Reset Link",
|
||||
"forgotPasswordModalEmailRequired": "Email address is required",
|
||||
"forgotPasswordModalRequestSuccess": "If the email exists in the system, a password reset link will be sent to the provided email address",
|
||||
"forgotPasswordModalRequestError": "Failed to process password reset request",
|
||||
"forgotPasswordModalEmailNotConfigured": "Email service is not configured. Please contact the administrator",
|
||||
"forgotPasswordModalUnableToSendEmail": "Unable to send email. Please try again later or contact the administrator",
|
||||
"signUpLink": "Don't have an account? Sign up",
|
||||
"emailVerificationSent": "Please check your email for verification instructions",
|
||||
"adminApprovalRequired": "Your account is pending admin approval",
|
||||
"verifyEmailInvalidLink": "Invalid email verification link"
|
||||
}
|
||||
5
frontend/app/src/i18n/sl/notFoundView.json
Normal file
5
frontend/app/src/i18n/sl/notFoundView.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"title": "Oops! Page not found",
|
||||
"subTitle": "The page you are looking for does not exist or it was changed.",
|
||||
"backToHomeButton": "Back to home"
|
||||
}
|
||||
11
frontend/app/src/i18n/sl/resetPassword.json
Normal file
11
frontend/app/src/i18n/sl/resetPassword.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"title": "Reset Password",
|
||||
"newPasswordLabel": "New Password",
|
||||
"confirmPasswordLabel": "Confirm New Password",
|
||||
"submitButton": "Reset Password",
|
||||
"backToLogin": "Back to Login",
|
||||
"passwordComplexityError": "Password must be at least 8 characters long, include an uppercase letter, a number, and a special character",
|
||||
"passwordMismatchError": "Passwords do not match",
|
||||
"resetError": "Failed to reset password",
|
||||
"invalidOrExpiredToken": "Invalid or expired password reset token"
|
||||
}
|
||||
37
frontend/app/src/i18n/sl/searchView.json
Normal file
37
frontend/app/src/i18n/sl/searchView.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"searchSelectLabel": "Search",
|
||||
"searchSelectOptionActivity": "Activity",
|
||||
"searchSelectOptionUser": "User",
|
||||
"searchSelectOptionGear": "Gear",
|
||||
"searchSelectActivityType0": "All",
|
||||
"searchSelectActivityType1": "Run",
|
||||
"searchSelectActivityType2": "Ride",
|
||||
"searchSelectActivityType3": "Swim",
|
||||
"searchSelectActivityType4": "Workout",
|
||||
"searchSelectActivityType5": "Walk",
|
||||
"searchSelectActivityType6": "Hike",
|
||||
"searchSelectActivityType7": "Row",
|
||||
"searchSelectActivityType8": "Yoga",
|
||||
"searchSelectActivityType9": "Ski",
|
||||
"searchSelectActivityType10": "Snowboard",
|
||||
"searchSelectActivityType11": "Racquet sports",
|
||||
"searchSelectActivityType12": "Windsurf",
|
||||
"searchSelectActivityType13": "Stand up paddling",
|
||||
"searchSelectActivityType14": "Surf",
|
||||
"searchSelectActivityType15": "Ice skate",
|
||||
"searchSelectActivityType16": "Soccer",
|
||||
"searchSelectGearType0": "All",
|
||||
"searchSelectGearType1": "Bike",
|
||||
"searchSelectGearType2": "Shoes",
|
||||
"searchSelectGearType3": "Wetsuit",
|
||||
"searchSelectGearType4": "Racquet",
|
||||
"searchSelectGearType5": "Skis",
|
||||
"searchSelectGearType6": "Snowboard",
|
||||
"searchSelectGearType7": "Windsurf",
|
||||
"searchSelectGearType8": "Water sports board",
|
||||
"resultIsInactiveBadge": "Inactive",
|
||||
"searchInputPlaceholder": "Search text",
|
||||
"errorFetchingUserWithUsernameContains": "Error fetching user with username contains logic",
|
||||
"errorFetchingActivityWithNameContains": "Error fetching activity with name contains logic",
|
||||
"errorFetchingGearWithNicknameContains": "Error fetching gear with nickname contains logic"
|
||||
}
|
||||
3
frontend/app/src/i18n/sl/settingsView.json
Normal file
3
frontend/app/src/i18n/sl/settingsView.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"title": "Settings"
|
||||
}
|
||||
33
frontend/app/src/i18n/sl/signupView.json
Normal file
33
frontend/app/src/i18n/sl/signupView.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"title": "Sign up",
|
||||
"subtitle": "Create your account below",
|
||||
"name": "Full name",
|
||||
"username": "Username",
|
||||
"email": "Email address",
|
||||
"password": "Password",
|
||||
"optionalFields": " Optional fields",
|
||||
"preferredLanguage": "Preferred language",
|
||||
"city": "City",
|
||||
"birthdate": "Birth date",
|
||||
"gender": "Gender",
|
||||
"units": "Units",
|
||||
"metric": "Metric",
|
||||
"imperial": "Imperial",
|
||||
"height": "Height",
|
||||
"firstDayOfWeek": "First day of week",
|
||||
"currency": "Currency",
|
||||
"signUpButton": "Create account",
|
||||
"alreadyHaveAccount": "Already have an account? Sign in",
|
||||
"success": "Sign-up successful",
|
||||
"errorNameRequired": "Full name is required",
|
||||
"errorUsernameRequired": "Username is required",
|
||||
"errorEmailRequired": "Email address is required",
|
||||
"errorEmailInvalid": "Please enter a valid email address",
|
||||
"errorPasswordRequired": "Password is required",
|
||||
"errorPasswordTooShort": "Password must be at least 8 characters long",
|
||||
"errorUserExists": "A user with this email or username already exists",
|
||||
"errorSignupDisabled": "Sign-up is not enabled on this server",
|
||||
"errorValidation": "Please check your input and try again",
|
||||
"errorGeneral": "An error occurred during sign-up",
|
||||
"signupDisabled": "User sign-up is not enabled on this server"
|
||||
}
|
||||
4
frontend/app/src/i18n/sl/strava/stravaCallbackView.json
Normal file
4
frontend/app/src/i18n/sl/strava/stravaCallbackView.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"stravaCallbackViewTitle1": "Handling Strava callback",
|
||||
"stravaCallbackViewTitle2": "Please wait while Strava is being linked to your account. Do not refresh this page."
|
||||
}
|
||||
44
frontend/app/src/i18n/sl/summaryView.json
Normal file
44
frontend/app/src/i18n/sl/summaryView.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"title": "Activity summary",
|
||||
"filterLabelActivityType": "Type",
|
||||
"filterOptionAllTypes": "All types",
|
||||
"labelViewType": "View by",
|
||||
"optionDaily": "Daily",
|
||||
"optionWeekly": "Weekly",
|
||||
"optionMonthly": "Monthly",
|
||||
"optionYearly": "Yearly",
|
||||
"optionLifetime": "Lifetime",
|
||||
"labelSelectWeek": "Week",
|
||||
"labelSelectMonth": "Month",
|
||||
"labelSelectYear": "Year",
|
||||
"labelSelectPeriod": "Period",
|
||||
"buttonPreviousPeriod": "Previous",
|
||||
"buttonNextPeriod": "Next",
|
||||
"headerSummaryFor": "Summary for {period}",
|
||||
"headerBreakdown": "Breakdown",
|
||||
"headerActivitiesInPeriod": "Activities in period",
|
||||
"errorLoadingActivityTypes": "Error loading activity types",
|
||||
"errorLoadingSummary": "Error loading summary",
|
||||
"errorLoadingSummaryLoad": "Error loading summary on page load",
|
||||
"errorFetchingActivities": "Error fetching activities",
|
||||
"noDataForPeriod": "No data for this period.",
|
||||
"colDay": "Day",
|
||||
"colWeekNum": "Week #",
|
||||
"colMonth": "Month",
|
||||
"colDistance": "Distance",
|
||||
"colDuration": "Duration",
|
||||
"colElevation": "Elevation",
|
||||
"colCalories": "Calories",
|
||||
"colActivities": "Activities",
|
||||
"metricTotalDistance": "Total distance",
|
||||
"metricTotalDuration": "Total duration",
|
||||
"metricTotalElevation": "Total elevation",
|
||||
"metricTotalCalories": "Total calories",
|
||||
"metricTotalActivities": "Total activities",
|
||||
"invalidYearSelected": "Invalid year selected",
|
||||
"headerTypeBreakdown": "Breakdown by type",
|
||||
"colActivityType": "Type",
|
||||
"headerYear": "Year {year}",
|
||||
"headerWeekStarting": "Week of {date}",
|
||||
"colYear": "Year"
|
||||
}
|
||||
32
frontend/app/src/i18n/sl/userView.json
Normal file
32
frontend/app/src/i18n/sl/userView.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"thisMonthActivitiesNumber": "This month activities",
|
||||
"userFollowing": "Following",
|
||||
"userFollowers": "Followers",
|
||||
"navigationActivities": "Activities",
|
||||
"navigationFollowing": "Following",
|
||||
"navigationFollowers": "Followers",
|
||||
"navigationUserSettings": "User settings",
|
||||
"navigationFollow": "Follow",
|
||||
"modalFollowUserTitle": "Follow user",
|
||||
"modalFollowUserBody": "Are you sure you want to follow user ",
|
||||
"errorUnableToSendFollow": "Unable to send follow request to user",
|
||||
"successFollowRequestSent": "Follow request sent",
|
||||
"navigationRequestSent": "Request sent",
|
||||
"modalCancelFollowRequestTitle": "Cancel follow request",
|
||||
"modalCancelFollowRequestBody": "Are you sure you want to cancel follow request for user ",
|
||||
"errorUnableToCancelFollowRequest": "Unable to cancel follow request for user",
|
||||
"successFollowRequestCancelled": "Follow request cancelled",
|
||||
"navigationUnfollow": "Unfollow",
|
||||
"modalUnfollowUserTitle": "Unfollow user",
|
||||
"modalUnfollowUserBody": "Are you sure you want to unfollow user ",
|
||||
"errorUnableToUnfollow": "Unable to unfollow user",
|
||||
"successUserUnfollowed": "User unfollowed",
|
||||
"activitiesPaginationWeek0": "This week",
|
||||
"activitiesPaginationWeek51": "One year ago",
|
||||
"successFollowingDeleted": "Following deleted",
|
||||
"successFollowerDeleted": "Follower deleted",
|
||||
"successFollowerAccepted": "Follower accepted",
|
||||
"errorFetchingUserStats": "Error fetching user stats",
|
||||
"errorFetchingUserFollowers": "Error fetching user followers",
|
||||
"errorFetchingUserActivities": "Error fetching user activities"
|
||||
}
|
||||
@@ -17,6 +17,7 @@
|
||||
"languageOption9": "Chinese (Traditional)",
|
||||
"languageOption10": "Galician (GL)",
|
||||
"languageOption11": "Italian (IT)",
|
||||
"languageOption12": "Slovenian (SL)",
|
||||
"firstDayOfWeekOption0": "Sunday",
|
||||
"firstDayOfWeekOption1": "Monday",
|
||||
"firstDayOfWeekOption2": "Tuesday",
|
||||
@@ -76,4 +77,4 @@
|
||||
"genderMale": "Male",
|
||||
"genderFemale": "Female",
|
||||
"genderUnspecified": "Unspecified"
|
||||
}
|
||||
}
|
||||
@@ -129,6 +129,7 @@
|
||||
<option value="it">{{ $t('generalItems.languageOption11') }}</option>
|
||||
<option value="nl">{{ $t('generalItems.languageOption6') }}</option>
|
||||
<option value="pt">{{ $t('generalItems.languageOption3') }}</option>
|
||||
<option value="sl">{{ $t('generalItems.languageOption12') }}</option>
|
||||
<option value="es">{{ $t('generalItems.languageOption7') }}</option>
|
||||
<option value="us">{{ $t('generalItems.languageOption1') }}</option>
|
||||
</select>
|
||||
|
||||
Reference in New Issue
Block a user