Merged PR 113: i18n into main
This commit is contained in:
@@ -1,5 +1,54 @@
|
||||
{
|
||||
"general": {
|
||||
"yes": "yes",
|
||||
"no": "no"
|
||||
},
|
||||
"banner": {
|
||||
"subscription": "Subscriptions"
|
||||
},
|
||||
"footer": {
|
||||
"allRightsReserved": "All rights reserved"
|
||||
},
|
||||
"sitemenu": {
|
||||
"HelpUs": "Help us",
|
||||
"About": "About",
|
||||
"ContentPolicy": "Content Policy",
|
||||
"CreatorGuide": "Creator Guide",
|
||||
"FAQ": "FAQ",
|
||||
"HelpAndContact": "Help and Contact",
|
||||
"Pricing": "Pricing",
|
||||
"TermsAndConditions": "Terms and conditions"
|
||||
},
|
||||
"sidebar": {
|
||||
"subscriptionTitle": "Subscription"
|
||||
},
|
||||
"subscribebutton": {
|
||||
"subscribe": "Subscribe",
|
||||
"unsubscribe": "Unsubscribe"
|
||||
},
|
||||
"profilemenu": {
|
||||
"creator": "Creator",
|
||||
"user": "User",
|
||||
"accountmanagement": "Account Management",
|
||||
"security": "security"
|
||||
},
|
||||
"header": {
|
||||
"myprofile": "My profile",
|
||||
"wallet": "Wallet",
|
||||
"Signout": "Sign out"
|
||||
},
|
||||
"message": {
|
||||
"edit" : "Edit",
|
||||
"delete": "Delete",
|
||||
"report": "Report",
|
||||
"yourcomment": "Your comment..."
|
||||
},
|
||||
"contentCard": {
|
||||
"commenttitle": "comments",
|
||||
"edit" : "Edit",
|
||||
"delete" : "delete",
|
||||
"report" : "report",
|
||||
"deletecontenttitle": "Delete this content?",
|
||||
"deeletecontentwarning": "Are you sure you want to delete the content?"
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,54 @@
|
||||
{
|
||||
"general": {
|
||||
"yes": "oui",
|
||||
"no": "non"
|
||||
},
|
||||
"banner": {
|
||||
"subscription": "Abonnés"
|
||||
},
|
||||
"footer": {
|
||||
"allRightsReserved": "Tout droits réservés"
|
||||
},
|
||||
"sitemenu": {
|
||||
"HelpUs": "Aidez-nous",
|
||||
"About": "À propos",
|
||||
"ContentPolicy": "Politique de contenu",
|
||||
"CreatorGuide": "Guide pour les créateurs",
|
||||
"FAQ": "FAQ",
|
||||
"HelpAndContact": "Aide & Contact",
|
||||
"Pricing": "Frais",
|
||||
"TermsAndConditions": "Conditions générales"
|
||||
},
|
||||
"sidebar": {
|
||||
"subscriptionTitle": "Abonnements"
|
||||
},
|
||||
"subscribebutton": {
|
||||
"subscribe": "S'abonner",
|
||||
"unsubscribe": "Se désabonner"
|
||||
},
|
||||
"profilemenu": {
|
||||
"creator": "Créateur",
|
||||
"user": "utilisateur",
|
||||
"accountmanagement": "Gestion de comptes",
|
||||
"security": "Sécurité"
|
||||
},
|
||||
"header": {
|
||||
"myprofile": "Mon profil",
|
||||
"wallet": "PorteFeuille",
|
||||
"Signout": "se déconnecter"
|
||||
},
|
||||
"message": {
|
||||
"edit" : "Modifier",
|
||||
"delete": "Effacer",
|
||||
"report": "Signaler",
|
||||
"yourcomment": "Votre commentaire..."
|
||||
},
|
||||
"contentCard": {
|
||||
"commenttitle": "commentaires",
|
||||
"edit" : "Modifier",
|
||||
"delete" : "Effacer",
|
||||
"report" : "signaler",
|
||||
"deletecontenttitle": " Supprimer ce contenu?",
|
||||
"deeletecontentwarning": "Êtes-vous sûr de vouloir supprimer le contenu?"
|
||||
}
|
||||
}
|
||||
@@ -110,7 +110,7 @@
|
||||
}">
|
||||
<div class="flex items-center justify-between py-4 text-2xl font-bold border-b mb-2">
|
||||
<div class="flex-1 text-center">
|
||||
Supprimer ce contenu ?
|
||||
{{$t('contentCard.deletecontenttitle')}}
|
||||
</div>
|
||||
|
||||
<v-btn icon @click="openDeleteConfirmationModal = false" class="ml-auto mr-2" variant="text">
|
||||
|
||||
@@ -26,13 +26,13 @@
|
||||
</template>
|
||||
<v-list>
|
||||
<v-list-item v-if="creatorIsCurrentUser" @click="editContent">
|
||||
<v-list-item-title>Modifier le contenu</v-list-item-title>
|
||||
<v-list-item-title>{{$t('contentCard.edit')}}</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item v-if="creatorIsCurrentUser" @click="openDeleteConfirmationDialog">
|
||||
<v-list-item-title>Effacer le contenu</v-list-item-title>
|
||||
<v-list-item-title>{{$t('contentCard.delete')}}</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item @click="reportContent">
|
||||
<v-list-item-title>Reporter le contenu</v-list-item-title>
|
||||
<v-list-item-title>{{$t('contentCard.report')}}</v-list-item-title>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
@@ -85,7 +85,7 @@
|
||||
</div>
|
||||
|
||||
<div :class="{'hidden': !messagesVisible}">
|
||||
<h2 class="font-sans font-semibold mt-2">Commentaires</h2>
|
||||
<h2 class="font-sans font-semibold mt-2">{{ $t('contentCard.commenttitle') }}</h2>
|
||||
<message-list
|
||||
:subject-id="props.content.id"
|
||||
:messages="messages"
|
||||
@@ -110,7 +110,7 @@
|
||||
}">
|
||||
<div class="flex items-center justify-between py-4 text-2xl font-bold border-b mb-2">
|
||||
<div class="flex-1 text-center">
|
||||
Supprimer ce contenu ?
|
||||
{{$t('contentCard.deletecontenttitle')}}
|
||||
</div>
|
||||
|
||||
<v-btn icon @click="openDeleteConfirmationModal = false" class="ml-auto mr-2" variant="text">
|
||||
@@ -120,17 +120,17 @@
|
||||
</div>
|
||||
|
||||
<div class=" mr-2">
|
||||
Êtes-vous sûr de vouloir supprimer le contenu ?
|
||||
{{$t('contentCard.deeletecontentwarning')}}
|
||||
</div>
|
||||
|
||||
<div class="py-2 space-x-3">
|
||||
<v-btn variant="flat"
|
||||
@click="deleteContent()" class=" mt-5">
|
||||
Oui
|
||||
{{$t('general.yes')}}
|
||||
</v-btn>
|
||||
<v-btn variant="outlined"
|
||||
@click="openDeleteConfirmationModal = false" class=" mt-5">
|
||||
Non
|
||||
{{$t('general.no')}}
|
||||
</v-btn>
|
||||
</div>
|
||||
</v-card>
|
||||
|
||||
@@ -26,13 +26,13 @@
|
||||
</template>
|
||||
<v-list>
|
||||
<v-list-item v-if="creatorIsCurrentUser" @click="editContent">
|
||||
<v-list-item-title>Modifier le contenu</v-list-item-title>
|
||||
<v-list-item-title>{{ $t('contentCard.edit') }}</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item v-if="creatorIsCurrentUser" @click="openDeleteConfirmationDialog">
|
||||
<v-list-item-title>Effacer le contenu</v-list-item-title>
|
||||
<v-list-item-title>{{ $t('contentCard.delete') }}</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item @click="reportContent">
|
||||
<v-list-item-title>Reporter le contenu</v-list-item-title>
|
||||
<v-list-item-title>{{ $t('contentCard.report') }}</v-list-item-title>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
@@ -85,7 +85,7 @@
|
||||
</div>
|
||||
|
||||
<div :class="{'hidden': !messagesVisible}">
|
||||
<h2 class="font-sans font-semibold ">Commentaires</h2>
|
||||
<h2 class="font-sans font-semibold ">{{ $t('contentCard.commenttitle') }}</h2>
|
||||
<message-list
|
||||
:subject-id="props.content.id"
|
||||
:messages="messages"
|
||||
@@ -110,7 +110,7 @@
|
||||
}">
|
||||
<div class="flex items-center justify-between py-4 text-2xl font-bold border-b mb-2">
|
||||
<div class="flex-1 text-center">
|
||||
Supprimer ce contenu ?
|
||||
{{$t('contentCard.deletecontenttitle')}}
|
||||
</div>
|
||||
|
||||
<v-btn icon @click="openDeleteConfirmationModal = false" class="ml-auto mr-2" variant="text">
|
||||
@@ -120,17 +120,17 @@
|
||||
</div>
|
||||
|
||||
<div class=" mr-2">
|
||||
Êtes-vous sûr de vouloir supprimer le contenu ?
|
||||
{{$t('contentCard.deeletecontentwarning')}}
|
||||
</div>
|
||||
|
||||
<div class="py-2 space-x-3">
|
||||
<v-btn variant="flat"
|
||||
@click="deleteContent()" class=" mt-5">
|
||||
Oui
|
||||
{{$t('general.yes')}}
|
||||
</v-btn>
|
||||
<v-btn variant="outlined"
|
||||
@click="openDeleteConfirmationModal = false" class=" mt-5">
|
||||
Non
|
||||
{{$t('general.no')}}
|
||||
</v-btn>
|
||||
</div>
|
||||
</v-card>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="flex h-[calc(100vh-118px)] -mt-2">
|
||||
<div class="flex h-[calc(100vh-118px)] -mt-2 w-full">
|
||||
<!-- Homemade carousel -->
|
||||
<div class="flex-1 flex items-center justify-center bg-neutral-500 max-h-screen relative">
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ function unsubscribeFromCreator() {
|
||||
@click="subscribeToCreator"
|
||||
color="white"
|
||||
>
|
||||
S'ABONNER
|
||||
{{ $t('subscribebutton.subscribe') }}
|
||||
</v-btn>
|
||||
</template>
|
||||
|
||||
@@ -44,7 +44,7 @@ function unsubscribeFromCreator() {
|
||||
style="transition: background-color 0.3s ease;"
|
||||
color="white"
|
||||
>
|
||||
SE DESABONNER
|
||||
{{ $t('subscribebutton.unsubscribe') }}
|
||||
</v-btn>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<div class="ml-60 text-white mr-10">
|
||||
<div>
|
||||
<p class="capitalize text-3xl font-bold ">{{ creator.name }}</p>
|
||||
<div>{{ creator.subscriberCount }} Abonnés</div>
|
||||
<div>{{ creator.subscriberCount }} {{ $t('banner.subscription') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<div class="flex justify-between">
|
||||
<div>
|
||||
<p class="capitalize text-2xl font-bold">{{ creator.name }}</p>
|
||||
<div>{{ creator.subscriberCount }} Abonnés</div>
|
||||
<div>{{ creator.subscriberCount }} {{ $t('banner.subscription') }}</div>
|
||||
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
<div class="flex flex-column text-white capitalize px-2 mt-1">
|
||||
<p class="capitalize text-2xl font-bold">{{ creator.name }}</p>
|
||||
<div>{{ creator.subscriberCount }} Abonnés</div>
|
||||
<div>{{ creator.subscriberCount }} {{ $t('banner.subscription')}}</div>
|
||||
</div>
|
||||
|
||||
<div class="flex ml-auto text-right text-white text-lg px-3 mt-2">
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<div class="ml-60 text-white mr-10">
|
||||
<div>
|
||||
<p class="capitalize text-3xl font-bold ">{{ creator.name }}</p>
|
||||
<div>{{ creator.subscriberCount }} Abonnés</div>
|
||||
<div>{{ creator.subscriberCount }} {{ $t('banner.subscription') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -7,7 +7,16 @@
|
||||
<v-app-bar-nav-icon @click.stop="sideBarStore.toggle()">
|
||||
</v-app-bar-nav-icon>
|
||||
|
||||
<RouterLink to="/">
|
||||
<RouterLink class="d-sm-block d-md-block d-lg-none" to="/">
|
||||
<v-img
|
||||
src="/images/usersmedia/HutopyProfile/profilepictures/profileHutopyProfile01.png"
|
||||
ref="popupButtonRef"
|
||||
alt="Hutopy Logo"
|
||||
class="w-10"
|
||||
></v-img>
|
||||
</RouterLink>
|
||||
|
||||
<RouterLink class="d-none d-lg-flex" to="/">
|
||||
<v-img
|
||||
src="/medias/hutopy.png"
|
||||
ref="popupButtonRef"
|
||||
@@ -68,10 +77,9 @@
|
||||
<v-icon class="mx-2 cursor-pointer" @click.stop="toggleSearch">mdi-magnify</v-icon>
|
||||
</template>
|
||||
|
||||
<v-icon class="mx-2">mdi-bell-outline</v-icon>
|
||||
|
||||
<v-btn variant="text" @click="changeLanguage('fr')">Français</v-btn>
|
||||
<v-btn variant="text" class="mx-2" @click="changeLanguage('en')">English</v-btn>
|
||||
<v-btn variant="text" style="margin:0" @click="toggleLanguage">
|
||||
{{ selectedLanguage === 'fr' ? 'Fr' : 'En' }}
|
||||
</v-btn>
|
||||
|
||||
<div class="text-center">
|
||||
<v-menu open-on-hover>
|
||||
@@ -114,17 +122,17 @@
|
||||
|
||||
<v-list-item class="nav-button">
|
||||
<v-list-item-title>
|
||||
<v-btn to="/profile" class="w-100" variant="plain">Mon profil</v-btn>
|
||||
<v-btn to="/profile" class="w-100" variant="plain">{{ $t('header.myprofile') }}</v-btn>
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item class="nav-button">
|
||||
<v-list-item-title>
|
||||
<v-btn to="/wallet" class="w-100" variant="plain">Portefeuille</v-btn>
|
||||
<v-btn to="/wallet" class="w-100" variant="plain">{{ $t('header.wallet') }}</v-btn>
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item class="nav-button">
|
||||
<v-list-item-title>
|
||||
<v-btn @click="authStore.logout" class="w-100" variant="plain">Déconnexion</v-btn>
|
||||
<v-btn @click="authStore.logout" class="w-100" variant="plain">{{ $t('header.Signout') }}</v-btn>
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
</template>
|
||||
@@ -136,25 +144,24 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {ref, onBeforeUnmount, onBeforeMount} from "vue";
|
||||
import {useRouter} from 'vue-router';
|
||||
import {useSideBarStore} from '@/stores/sideBarStore.js';
|
||||
import {useUserStore} from "@/stores/userStore.js";
|
||||
import {useAuthStore} from "@/stores/authStore.js";
|
||||
import { ref, onBeforeUnmount, onBeforeMount } from "vue";
|
||||
import { useRouter } from 'vue-router';
|
||||
import { useSideBarStore } from '@/stores/sideBarStore.js';
|
||||
import { useUserStore } from "@/stores/userStore.js";
|
||||
import { useAuthStore } from "@/stores/authStore.js";
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const { locale } = useI18n();
|
||||
const authStore = useAuthStore()
|
||||
const userStore = useUserStore()
|
||||
const sideBarStore = useSideBarStore()
|
||||
const authStore = useAuthStore();
|
||||
const userStore = useUserStore();
|
||||
const sideBarStore = useSideBarStore();
|
||||
|
||||
const router = useRouter();
|
||||
const searchQuery = ref("");
|
||||
const showSearch = ref(false);
|
||||
|
||||
let selectedLanguage = ref('fr');
|
||||
let selectedLanguage = ref(locale.value);
|
||||
initializeLocale();
|
||||
|
||||
const onSearch = () => {
|
||||
const query = searchQuery.value.trim();
|
||||
if (!query) {
|
||||
@@ -164,7 +171,7 @@ const onSearch = () => {
|
||||
if (words.length === 1) {
|
||||
router.push(`/@${words[0]}`);
|
||||
} else {
|
||||
router.push({name: "browse", query: {q: query}});
|
||||
router.push({ name: "browse", query: { q: query } });
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -197,7 +204,8 @@ function initializeLocale(){
|
||||
locale.value = selectedLanguage.value;
|
||||
}
|
||||
|
||||
function changeLanguage(lang) {
|
||||
function toggleLanguage() {
|
||||
const lang = selectedLanguage.value === 'fr' ? 'en' : 'fr';
|
||||
locale.value = lang;
|
||||
selectedLanguage.value = lang;
|
||||
localStorage.setItem('preferredLocale', lang);
|
||||
|
||||
@@ -12,8 +12,8 @@ const authStore = useAuthStore()
|
||||
<nav class="h-full grid grid-rows-[60px_1fr_auto]">
|
||||
<div></div>
|
||||
|
||||
<div v-if="authStore.isAuthenticated" class="pt-4 px-4">
|
||||
<h2>Abonnements</h2>
|
||||
<div v-if="authStore.isAuthenticated" class="pt-4 px-5">
|
||||
{{ $t('sidebar.subscriptionTitle') }}
|
||||
<subscription-list>
|
||||
<template v-slot:default>
|
||||
<span>Aucun abonnement</span>
|
||||
|
||||
@@ -17,17 +17,17 @@
|
||||
</div>
|
||||
|
||||
<div class="py-4">
|
||||
<RouterLink class="nav-button font-weight-bold" to="/join">Aidez-nous</RouterLink>
|
||||
<RouterLink class="nav-button font-weight-bold" to="/join">{{ $t('sitemenu.HelpUs') }}</RouterLink>
|
||||
</div>
|
||||
|
||||
<div class="text-center ">
|
||||
<RouterLink class="nav-button" to="/helpandcontact">Aide & Contact</RouterLink>
|
||||
<RouterLink class="nav-button" to="/faq">FAQ</RouterLink>
|
||||
<RouterLink class="nav-button" to="/guideforcreators">Guide pour les créateurs</RouterLink>
|
||||
<RouterLink class="nav-button" to="/termsandconditions">Conditions générales</RouterLink>
|
||||
<RouterLink class="nav-button" to="/contentpolicy">Politique de Contenu</RouterLink>
|
||||
<RouterLink class="nav-button" to="/about">À Propos</RouterLink>
|
||||
<RouterLink class="nav-button" to="/pricing">Frais</RouterLink>
|
||||
<RouterLink class="nav-button" to="/helpandcontact">{{ $t('sitemenu.HelpAndContact') }}</RouterLink>
|
||||
<RouterLink class="nav-button" to="/faq">{{ $t('sitemenu.FAQ') }}</RouterLink>
|
||||
<RouterLink class="nav-button" to="/guideforcreators">{{ $t('sitemenu.CreatorGuide') }}</RouterLink>
|
||||
<RouterLink class="nav-button" to="/termsandconditions">{{ $t('sitemenu.TermsAndConditions') }}</RouterLink>
|
||||
<RouterLink class="nav-button" to="/contentpolicy">{{ $t('sitemenu.ContentPolicy') }}</RouterLink>
|
||||
<RouterLink class="nav-button" to="/about">{{ $t('sitemenu.About') }}</RouterLink>
|
||||
<RouterLink class="nav-button" to="/pricing">{{ $t('sitemenu.Pricing') }}</RouterLink>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -35,13 +35,13 @@
|
||||
</template>
|
||||
<v-list>
|
||||
<v-list-item @click="editMessage(message)">
|
||||
<v-list-item-title>Edit</v-list-item-title>
|
||||
<v-list-item-title>{{ $t('message.edit') }}</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item @click="deleteMessage(message)">
|
||||
<v-list-item-title>Delete</v-list-item-title>
|
||||
<v-list-item-title>{{ $t('message.delete') }}</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item @click="reportMessage(message)">
|
||||
<v-list-item-title>Report</v-list-item-title>
|
||||
<v-list-item-title>{{ $t('message.report') }}</v-list-item-title>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
v-model="value"
|
||||
density="compact"
|
||||
variant="underlined"
|
||||
placeholder="Votre commentaire..."
|
||||
:placeholder="$t('message.yourcomment')"
|
||||
hide-details
|
||||
auto-grow
|
||||
rows="1"
|
||||
@@ -72,6 +72,7 @@ const props = defineProps({
|
||||
|
||||
const emits = defineEmits(['message-posted'])
|
||||
|
||||
|
||||
const loginModal = ref(false);
|
||||
const client = useClient()
|
||||
const value = ref("")
|
||||
|
||||
@@ -24,22 +24,22 @@
|
||||
|
||||
<v-btn variant="text" @click="currentComponent = 'CreatorPage'">
|
||||
<v-icon class="mr-2">mdi-file-edit-outline</v-icon>
|
||||
Créateur
|
||||
{{ $t('profilemenu.creator') }}
|
||||
</v-btn>
|
||||
|
||||
<v-btn variant="text" @click="currentComponent = 'PersonnalInfo'">
|
||||
<v-icon class="mr-2">mdi-information</v-icon>
|
||||
Utilisateur
|
||||
{{ $t('profilemenu.user') }}
|
||||
</v-btn>
|
||||
|
||||
<v-btn variant="text" @click="currentComponent = 'ManageAccount'">
|
||||
<v-icon class="mr-2">mdi-account</v-icon>
|
||||
Gestion de Comptes
|
||||
{{ $t('profilemenu.accountmanagement') }}
|
||||
</v-btn>
|
||||
|
||||
<v-btn variant="text" @click="currentComponent = 'AccountSecurity'">
|
||||
<v-icon class="mr-2">mdi-security</v-icon>
|
||||
Sécurité
|
||||
{{ $t('profilemenu.security') }}
|
||||
</v-btn>
|
||||
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user