Is hutopy finally trilangual

This commit is contained in:
2025-04-19 01:56:59 -04:00
parent af71c5e952
commit b1681252cc
140 changed files with 5441 additions and 1085 deletions

View File

@@ -1,23 +0,0 @@
{
"personal": {
"informations": "Personal Information",
"fullname": "Full Name",
"alias": "Alias",
"contact": "Contact Details",
"email": "Email"
},
"creator": {
"informations": "Creator Information",
"name": "Name",
"slug": "URL",
"title": "Title",
"stripeAccountId": "Stripe Account ID",
"socialnetwork": "Social Networks"
},
"danger": {
"title": "Danger Zone",
"warning": "WARNING: This will delete your creator page and suspend all tips and donations.",
"delete": "DELETE PAGE",
"restore": "RESTORE PAGE"
}
}

View File

@@ -1,23 +0,0 @@
{
"personal": {
"informations": "Información personal",
"fullname": "Nombre completo",
"alias": "Alias",
"contact": "Detalles de contacto",
"email": "Correo electrónico"
},
"creator": {
"informations": "Información del creador",
"name": "Nombre",
"slug": "URL",
"title": "Título",
"stripeAccountId": "ID de cuenta Stripe",
"socialnetwork": "Redes sociales"
},
"danger": {
"title": "Zona de peligro",
"warning": "PRECAUCIÓN: Esto eliminará tu página de creador y suspenderá todos los propinas y donaciones.",
"delete": "ELIMINAR PÁGINA",
"restore": "RESTAURAR PÁGINA"
}
}

View File

@@ -1,23 +0,0 @@
{
"personal": {
"informations": "Informations personnelles",
"fullname": "Nom complet",
"alias": "Pseudonyme",
"contact": "Coordonnées",
"email": "Email"
},
"creator": {
"informations": "Informations du créateur",
"name": "Nom",
"slug": "URL",
"title": "Titre",
"stripeAccountId": "ID du compte Stripe",
"socialnetwork": "Réseaux sociaux"
},
"danger": {
"title": "Zone de danger",
"warning": "ATTENTION : Cela supprimera votre page de créateur et suspendra tous les pourboires et dons.",
"delete": "SUPPRIMER LA PAGE",
"restore": "RESTAURER LA PAGE"
}
}

View File

@@ -18,9 +18,9 @@ import Linkedin from "@/views/svg/Linkedin.vue";
import Tiktok from "@/views/svg/Tiktok.vue";
import Instagram from "@/views/svg/Instagram.vue";
import Facebook from "@/views/svg/Facebook.vue";
import { useTranslations } from "@/translations/translations";
import { useI18n } from 'vue-i18n';
const t = useTranslations();
const { t } = useI18n();
const userProfileStore = useUserProfileStore()
// ### Fullname
@@ -134,14 +134,14 @@ const closeDialog = () => {
<div class="card">
<div class="card-title">
{{ t('personal.informations') }}
{{ t('personalInfo') }}
</div>
<div class="content">
<button
class="action"
@click="openEditFullname">
<span class="label">{{ t('personal.fullname') }}</span>
<span class="label">{{ t('fullName') }}</span>
<span class="value">{{ userProfileStore.fullname }}</span>
<span class="chevron"><v-icon>mdi-chevron-right</v-icon></span>
</button>
@@ -149,7 +149,7 @@ const closeDialog = () => {
<button
class="action"
@click="openEditAlias">
<span class="label">{{ t('personal.alias') }}</span>
<span class="label">{{ t('alias') }}</span>
<span class="value">{{ userProfileStore.user.alias }}</span>
<span class="chevron"><v-icon>mdi-chevron-right</v-icon></span>
</button>
@@ -160,12 +160,12 @@ const closeDialog = () => {
<div class="card">
<div class="card-title">
{{ t('personal.contact') }}
{{ t('contactInfo') }}
</div>
<div class="content">
<button class="action" @click="openDialog('EmailDialog')">
<span class="label">{{ t('personal.email') }}</span>
<span class="label">{{ t('email') }}</span>
<span class="value">{{ userProfileStore.user.email }}</span>
<span class="chevron"><v-icon>mdi-chevron-right</v-icon></span>
</button>
@@ -176,33 +176,33 @@ const closeDialog = () => {
<template v-if="creatorProfileStore.creator !== undefined">
<div class="card">
<div class="card-title">
{{ t('creator.informations') }}
{{ t('creatorInfo') }}
</div>
<div class="content">
<!-- NAME -->
<button class="action" @click="openDialog('ChangeNameDialog')">
<span class="label">{{ t('creator.name') }}</span>
<span class="label">{{ t('name') }}</span>
<span class="value">{{ creatorProfileStore.creator.name }}</span>
<span class="chevron"><v-icon>mdi-chevron-right</v-icon></span>
</button>
<button class="action" @click="openDialog('ChangeSlugDialog')">
<span class="label">{{ t('creator.slug') }}</span>
<span class="label">{{ t('username') }}</span>
<span class="value">@{{ creatorProfileStore.creator.slug }}</span>
<span class="chevron"><v-icon>mdi-chevron-right</v-icon></span>
</button>
<!-- TITLE -->
<button class="action" @click="openDialog('ChangeTitleDialog')">
<span class="label">{{ t('creator.title') }}</span>
<span class="label">{{ t('title') }}</span>
<span class="value">{{ creatorProfileStore.creator.title }}</span>
<span class="chevron"><v-icon>mdi-chevron-right</v-icon></span>
</button>
<!-- STRIPE -->
<button class="action" @click="openDialog('ChangeStripeIdDialog')">
<span class="label">{{ t('creator.stripeAccountId') }}</span>
<span class="label">{{ t('stripeAccountId') }}</span>
<span class="value">{{ creatorProfileStore.creator.stripeId }}</span>
<span class="chevron"><v-icon>mdi-chevron-right</v-icon></span>
</button>
@@ -212,7 +212,7 @@ const closeDialog = () => {
<div class="card">
<div class="card-title">
{{ t('creator.socialnetwork') }}
{{ t('socialNetworks') }}
</div>
<div>
@@ -248,7 +248,7 @@ const closeDialog = () => {
<span class="value">{{ creatorProfileStore.creator.socials?.linkedInUrl }}</span>
<span class="chevron"><v-icon>mdi-chevron-right</v-icon></span>
</button>
<button class="action" @click="openDialog('SocialsDialog')">
<span class="label">
<tiktok class="social-icon"></tiktok>
@@ -285,20 +285,20 @@ const closeDialog = () => {
</div>
<div class="card">
<div class="card-title">{{ t('danger.title') }}</div>
<div class="card-title">{{ t('dangerZone') }}</div>
<div class="content">
<p>
{{ t('danger.warning') }}
{{ t('deleteWarning') }}
</p>
<button v-if="!creatorProfileStore.creator.isDeleted"
class="danger-action"
@click="creatorProfileStore.removeCreatorPage()">
{{ t('danger.delete') }}
{{ t('deleteCreatorPage') }}
</button>
<button v-else
class="safe-action"
@click="creatorProfileStore.restoreCreatorPage()">
{{ t('danger.restore') }}
{{ t('restoreCreatorPage') }}
</button>
</div>
</div>
@@ -309,7 +309,6 @@ const closeDialog = () => {
</template>
<style scoped>
.card {
@apply bg-hBackground rounded-lg p-4 w-full max-w-2xl;
}
@@ -355,4 +354,42 @@ const closeDialog = () => {
@apply mt-4;
@apply bg-green-800 hover:bg-green-700 active:bg-green-600;
}
</style>
</style>
<i18n>
{
"en": {
"personalInfo": "Personal Information",
"fullName": "Full Name",
"alias": "Alias",
"contactInfo": "Contact Information",
"email": "Email",
"creatorInfo": "Creator Information",
"dangerZone": "Danger Zone",
"deleteWarning": "Are you sure you want to delete your creator page? This action cannot be undone.",
"restoreWarning": "Are you sure you want to restore your creator page? This will make your page visible again."
},
"fr": {
"personalInfo": "Informations Personnelles",
"fullName": "Nom Complet",
"alias": "Alias",
"contactInfo": "Informations de Contact",
"email": "Email",
"creatorInfo": "Informations du Créateur",
"dangerZone": "Zone de Danger",
"deleteWarning": "Êtes-vous sûr de vouloir supprimer votre page de créateur ? Cette action est irréversible.",
"restoreWarning": "Êtes-vous sûr de vouloir restaurer votre page de créateur ? Cela rendra votre page à nouveau visible."
},
"es": {
"personalInfo": "Información Personal",
"fullName": "Nombre Completo",
"alias": "Alias",
"contactInfo": "Información de Contacto",
"email": "Correo Electrónico",
"creatorInfo": "Información del Creador",
"dangerZone": "Zona de Peligro",
"deleteWarning": "¿Estás seguro de que quieres eliminar tu página de creador? Esta acción no se puede deshacer.",
"restoreWarning": "¿Estás seguro de que quieres restaurar tu página de creador? Esto hará que tu página sea visible nuevamente."
}
}
</i18n>

View File

@@ -1,4 +0,0 @@
{
"title": "Address",
"label": "Your address"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Dirección",
"label": "Tu dirección"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Adresse",
"label": "Votre adresse"
}

View File

@@ -25,9 +25,9 @@
<script setup>
import {ref} from 'vue';
import { useTranslations } from "@/translations/translations";
import { useI18n } from 'vue-i18n';
const t = useTranslations();
const { t } = useI18n();
const props = defineProps(['address'])
const emit = defineEmits(['close', 'save'])
@@ -36,3 +36,20 @@ const address = ref(props.address);
const requestClose = () => emit('close')
const requestSave = () => emit('save', address.value)
</script>
<i18n>
{
"en": {
"title": "Address",
"label": "Your address"
},
"fr": {
"title": "Adresse",
"label": "Votre adresse"
},
"es": {
"title": "Dirección",
"label": "Tu dirección"
}
}
</i18n>

View File

@@ -1,4 +0,0 @@
{
"title": "Alias",
"label": "Your alias"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Alias",
"label": "Tu alias"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Pseudonyme",
"label": "Votre pseudonyme"
}

View File

@@ -34,9 +34,9 @@
<script setup>
import {ref} from 'vue';
import { useTranslations } from "@/translations/translations";
import { useI18n } from 'vue-i18n';
const t = useTranslations();
const { t } = useI18n();
const props = defineProps(['alias'])
const emit = defineEmits(['close', 'save'])
@@ -46,4 +46,21 @@ const requestClose = () => emit('close')
const requestSave = () => emit('save', alias.value)
</script>
<i18n>
{
"en": {
"title": "Alias",
"label": "Your alias"
},
"fr": {
"title": "Alias",
"label": "Votre alias"
},
"es": {
"title": "Alias",
"label": "Tu alias"
}
}
</i18n>

View File

@@ -1,4 +0,0 @@
{
"title": "Birthday",
"label": "Your birthday"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Fecha de nacimiento",
"label": "Tu fecha de nacimiento"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Date de naissance",
"label": "Votre date de naissance"
}

View File

@@ -25,9 +25,9 @@
<script setup>
import {ref} from 'vue';
import { useTranslations } from "@/translations/translations";
import {useI18n} from 'vue-i18n';
const t = useTranslations();
const {t} = useI18n();
const props = defineProps(['birthDate'])
const emit = defineEmits(['close', 'save'])
@@ -36,3 +36,20 @@ const birthDate = ref(props.birthDate)
const requestClose = () => emit('close')
const requestSave = () => emit('save', birthDate.value)
</script>
<i18n>
{
"en": {
"title": "Birthday",
"label": "Your birthday"
},
"fr": {
"title": "Date de naissance",
"label": "Votre date de naissance"
},
"es": {
"title": "Fecha de nacimiento",
"label": "Tu fecha de nacimiento"
}
}
</i18n>

View File

@@ -1,4 +0,0 @@
{
"title": "Email",
"label": "Your email"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Correo electrónico",
"label": "Tu correo electrónico"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Email",
"label": "Votre email"
}

View File

@@ -28,9 +28,9 @@
<script setup>
import {ref} from 'vue';
import {useClient} from "@/plugins/api.js";
import { useTranslations } from "@/translations/translations";
import { useI18n } from 'vue-i18n';
const t = useTranslations();
const { t } = useI18n();
const props = defineProps({
email: {
required: true,
@@ -66,4 +66,21 @@ const cancel = () => {
};
</script>
<i18n>
{
"en": {
"title": "Change your Email",
"label": "Your email"
},
"fr": {
"title": "Changez votre Courriel",
"label": "Votre email"
},
"es": {
"title": "Cambia tu correo electrónico",
"label": "Tu correo electrónico"
}
}
</i18n>

View File

@@ -1,5 +0,0 @@
{
"title": "Full Name",
"firstname": "First Name",
"lastname": "Last Name"
}

View File

@@ -1,5 +0,0 @@
{
"title": "Nombre completo",
"firstname": "Nombre",
"lastname": "Apellido"
}

View File

@@ -1,5 +0,0 @@
{
"title": "Nom complet",
"firstname": "Prénom",
"lastname": "Nom"
}

View File

@@ -1,8 +1,8 @@
<script setup>
import {ref} from 'vue';
import { useTranslations } from "@/translations/translations";
import { useI18n } from 'vue-i18n';
const t = useTranslations();
const { t } = useI18n();
const props = defineProps(['firstname', 'lastname'])
const emit = defineEmits(['close', 'save'])
@@ -47,4 +47,24 @@ const requestSave = () => emit('save', firstname.value, lastname.value)
</button>
</div>
</div>
</template>
</template>
<i18n>
{
"en": {
"title": "Full Name",
"firstname": "First Name",
"lastname": "Last Name"
},
"fr": {
"title": "Nom complet",
"firstname": "Prénom",
"lastname": "Nom"
},
"es": {
"title": "Nombre completo",
"firstname": "Nombre",
"lastname": "Apellido"
}
}
</i18n>

View File

@@ -1,4 +0,0 @@
{
"title": "Phone Number",
"label": "Your phone number"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Número de teléfono",
"label": "Tu número de teléfono"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Numéro de téléphone",
"label": "Votre numéro de téléphone"
}

View File

@@ -25,9 +25,9 @@
<script setup>
import {ref} from 'vue';
import { useTranslations } from "@/translations/translations";
import { useI18n } from 'vue-i18n';
const t = useTranslations();
const { t } = useI18n();
const props = defineProps(['phone'])
const emit = defineEmits(['close', 'save'])
@@ -35,4 +35,21 @@ const phone = ref(props.phone)
const requestClose = () => emit('close')
const requestSave = () => emit('save', phone.value)
</script>
</script>
<i18n>
{
"en": {
"title": "Phone Number",
"label": "Your phone number"
},
"fr": {
"title": "Numéro de téléphone",
"label": "Votre numéro de téléphone"
},
"es": {
"title": "Número de teléfono",
"label": "Tu número de teléfono"
}
}
</i18n>

View File

@@ -1,5 +0,0 @@
{
"title": "Portrait",
"label": "Select an image",
"preview": "Portrait preview"
}

View File

@@ -1,5 +0,0 @@
{
"title": "Retrato",
"label": "Selecciona una imagen",
"preview": "Vista previa del retrato"
}

View File

@@ -1,5 +0,0 @@
{
"title": "Portrait",
"label": "Sélectionnez une image",
"preview": "Aperçu du portrait"
}

View File

@@ -34,9 +34,9 @@
<script setup>
import {ref} from 'vue';
import { useTranslations } from "@/translations/translations";
import { useI18n } from 'vue-i18n';
const t = useTranslations();
const { t } = useI18n();
const props = defineProps(['portraitUrl'])
const emit = defineEmits(['close', 'save'])
@@ -58,3 +58,23 @@ const onSelectedFileChanged = () => {
const requestClose = () => emit('close')
const requestSave = () => emit('save', selectedFile.value)
</script>
<i18n>
{
"en": {
"title": "Profile Picture",
"preview": "Profile picture preview",
"label": "Choose a profile picture"
},
"fr": {
"title": "Photo de profil",
"preview": "Aperçu de la photo de profil",
"label": "Choisir une photo de profil"
},
"es": {
"title": "Foto de perfil",
"preview": "Vista previa de la foto de perfil",
"label": "Elegir una foto de perfil"
}
}
</i18n>

View File

@@ -1,8 +0,0 @@
{
"title": "Social Networks",
"facebook": "Facebook URL",
"instagram": "Instagram URL",
"twitter": "Twitter URL",
"youtube": "YouTube URL",
"tiktok": "TikTok URL"
}

View File

@@ -1,8 +0,0 @@
{
"title": "Redes sociales",
"facebook": "URL de Facebook",
"instagram": "URL de Instagram",
"twitter": "URL de Twitter",
"youtube": "URL de YouTube",
"tiktok": "URL de TikTok"
}

View File

@@ -1,8 +0,0 @@
{
"title": "Réseaux sociaux",
"facebook": "URL Facebook",
"instagram": "URL Instagram",
"twitter": "URL Twitter",
"youtube": "URL YouTube",
"tiktok": "URL TikTok"
}

View File

@@ -49,9 +49,9 @@
<script setup>
import {ref} from 'vue';
import { useTranslations } from "@/translations/translations";
import {useI18n} from 'vue-i18n';
const t = useTranslations();
const {t} = useI18n();
const props = defineProps(['socials'])
const emit = defineEmits(['close', 'save'])
@@ -69,4 +69,33 @@ const requestSave = () => emit('save', {
youtubeUrl: youtubeUrl.value,
tiktokUrl: tiktokUrl.value
})
</script>
</script>
<i18n>
{
"en": {
"title": "Social Media Links",
"facebook": "Facebook URL",
"instagram": "Instagram URL",
"twitter": "Twitter URL",
"youtube": "YouTube URL",
"tiktok": "TikTok URL"
},
"fr": {
"title": "Liens des réseaux sociaux",
"facebook": "URL Facebook",
"instagram": "URL Instagram",
"twitter": "URL Twitter",
"youtube": "URL YouTube",
"tiktok": "URL TikTok"
},
"es": {
"title": "Enlaces de redes sociales",
"facebook": "URL de Facebook",
"instagram": "URL de Instagram",
"twitter": "URL de Twitter",
"youtube": "URL de YouTube",
"tiktok": "URL de TikTok"
}
}
</i18n>

View File

@@ -1,4 +0,0 @@
{
"title": "Change Name",
"label": "Your name"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Cambiar Nombre",
"label": "Tu nombre"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Modifier le Nom",
"label": "Votre nom"
}

View File

@@ -1,9 +1,9 @@
<script setup>
import {ref} from 'vue';
import {useClient} from '@/plugins/api.js';
import { useTranslations } from "@/translations/translations";
import { useI18n } from 'vue-i18n';
const t = useTranslations();
const { t } = useI18n();
const props = defineProps({
creator: {
required: true
@@ -68,3 +68,20 @@ const cancel = () => {
<style scoped>
</style>
<i18n>
{
"en": {
"title": "Change Name",
"label": "Your name"
},
"fr": {
"title": "Modifier le nom",
"label": "Votre nom"
},
"es": {
"title": "Cambiar nombre",
"label": "Tu nombre"
}
}
</i18n>

View File

@@ -1,4 +0,0 @@
{
"title": "Change URL",
"label": "Your URL"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Cambiar URL",
"label": "Tu URL"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Modifier l'URL",
"label": "Votre URL"
}

View File

@@ -1,9 +1,9 @@
<script setup>
import {computed, ref} from 'vue';
import { useCreatorProfileStore } from '@/stores/creatorProfileStore.js';
import { useClient } from "@/plugins/api.js";
import {useCreatorProfileStore} from '@/stores/creatorProfileStore.js';
import {useClient} from "@/plugins/api.js";
import NameEditor from "@/views/creators/NameEditor.vue";
import { useTranslations } from '@/translations/translations';
import {useI18n} from 'vue-i18n';
const props = defineProps({
creator: {
@@ -15,7 +15,7 @@ const emit = defineEmits(['closeRequested']);
const creatorProfileStore = useCreatorProfileStore();
const client = useClient();
const t = useTranslations();
const {t} = useI18n();
const newSlug = ref(props.creator.slug);
const slugReservationId = ref(undefined);
@@ -32,11 +32,11 @@ async function save() {
try {
isOperationPending.value = true;
errorMessage.value = '';
await client.put(`/api/creators/${props.creator.id}/slug`, {
slugReservationId: slugReservationId.value
});
await creatorProfileStore.fetchCreatorProfile();
emit('closeRequested');
} catch (error) {
@@ -65,7 +65,7 @@ const cancel = () => {
<p class="mb-4">
{{ t('label') }} <strong>@{{ creator.slug }}</strong>
</p>
<name-editor
v-model:name="newSlug"
:creator-name-reservation-id="slugReservationId"
@@ -96,4 +96,21 @@ const cancel = () => {
</template>
<style scoped>
</style>
</style>
<i18n>
{
"en": {
"title": "Change URL",
"label": "Your current URL is"
},
"fr": {
"title": "Modifier l'URL",
"label": "Votre URL actuelle est"
},
"es": {
"title": "Cambiar URL",
"label": "Tu URL actual es"
}
}
</i18n>

View File

@@ -1,4 +0,0 @@
{
"title": "Change Stripe ID",
"label": "Your Stripe ID"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Cambiar ID de Stripe",
"label": "Tu ID de Stripe"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Modifier l'ID Stripe",
"label": "Votre ID Stripe"
}

View File

@@ -1,7 +1,7 @@
<script setup>
import {useClient} from '@/plugins/api.js';
import {ref} from 'vue';
import { useTranslations } from '@/translations/translations';
import { useI18n } from 'vue-i18n';
const props = defineProps({
creator: {
@@ -12,7 +12,7 @@ const props = defineProps({
const emits = defineEmits(['closeRequested']);
const stripeId = ref(props.creator.stripeId);
const t = useTranslations();
const { t } = useI18n();
const client = useClient();
@@ -65,3 +65,20 @@ const cancel = () => {
<style scoped>
</style>
<i18n>
{
"en": {
"title": "Change Stripe ID",
"label": "Your Stripe ID"
},
"fr": {
"title": "Modifier l'ID Stripe",
"label": "Votre ID Stripe"
},
"es": {
"title": "Cambiar ID de Stripe",
"label": "Tu ID de Stripe"
}
}
</i18n>

View File

@@ -1,4 +0,0 @@
{
"title": "Change Title",
"label": "Your title"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Cambiar Título",
"label": "Tu título"
}

View File

@@ -1,4 +0,0 @@
{
"title": "Modifier le Titre",
"label": "Votre titre"
}

View File

@@ -1,7 +1,7 @@
<script setup>
import {ref} from 'vue';
import {useClient} from '@/plugins/api.js';
import { useTranslations } from '@/translations/translations';
import { useI18n } from 'vue-i18n';
const props = defineProps({
creator: {
@@ -12,7 +12,7 @@ const props = defineProps({
const emits = defineEmits(['closeRequested']);
const title = ref(props.creator.title);
const t = useTranslations();
const { t } = useI18n();
const client = useClient();
@@ -69,3 +69,20 @@ const cancel = () => {
<style scoped>
</style>
<i18n>
{
"en": {
"title": "Change Title",
"label": "Your title"
},
"fr": {
"title": "Modifier le titre",
"label": "Votre titre"
},
"es": {
"title": "Cambiar título",
"label": "Tu título"
}
}
</i18n>

View File

@@ -1,11 +0,0 @@
{
"title": "Social Networks",
"facebook": "Facebook Link",
"instagram": "Instagram Link",
"linkedin": "LinkedIn Link",
"reddit": "Reddit Link",
"tiktok": "TikTok Link",
"website": "Website Link",
"x": "X Link",
"youtube": "YouTube Link"
}

View File

@@ -1,11 +0,0 @@
{
"title": "Redes Sociales",
"facebook": "Enlace de Facebook",
"instagram": "Enlace de Instagram",
"linkedin": "Enlace de LinkedIn",
"reddit": "Enlace de Reddit",
"tiktok": "Enlace de TikTok",
"website": "Enlace del sitio web",
"x": "Enlace de X",
"youtube": "Enlace de Youtube"
}

View File

@@ -1,11 +0,0 @@
{
"title": "Réseaux Sociaux",
"facebook": "Lien Facebook",
"instagram": "Lien Instagram",
"linkedin": "Lien LinkedIn",
"reddit": "Lien Reddit",
"tiktok": "Lien TikTok",
"website": "Lien site web",
"x": "Lien X",
"youtube": "Lien Youtube"
}

View File

@@ -9,9 +9,9 @@ import Youtube from "@/views/svg/Youtube.vue";
import Linkedin from "@/views/svg/Linkedin.vue";
import Instagram from "@/views/svg/Instagram.vue";
import Facebook from "@/views/svg/Facebook.vue";
import { useTranslations } from "@/translations/translations";
import { useI18n } from 'vue-i18n';
const t = useTranslations();
const { t } = useI18n();
const props = defineProps({
creator: {
required: true
@@ -194,3 +194,17 @@ const cancel = () => {
}
</style>
<i18n>
{
"en": {
"title": "Social Media Links"
},
"fr": {
"title": "Liens des réseaux sociaux"
},
"es": {
"title": "Enlaces de redes sociales"
}
}
</i18n>