mirror of
https://github.com/NotXia/notxia.github.io.git
synced 2025-12-14 19:01:51 +01:00
Improved locales handling
This commit is contained in:
22
src/App.vue
22
src/App.vue
@ -23,27 +23,9 @@
|
||||
import EastereggBanner from "@/components/easteregg-banner/EastereggBanner.vue";
|
||||
import { useRoute } from 'vue-router'
|
||||
import { useI18n } from "vue-i18n";
|
||||
import title_locale from "@/locales/title";
|
||||
|
||||
const { t, locale } = useI18n({ messages: {
|
||||
"en": {
|
||||
"title_home": "Hello",
|
||||
"title_about": "About",
|
||||
"title_projects": "Projects",
|
||||
"title_resume": "Résumé",
|
||||
"title_contacts": "Say hello",
|
||||
|
||||
"log_hello": "Hello 🐡"
|
||||
},
|
||||
"it": {
|
||||
"title_home": "Ciao",
|
||||
"title_about": "Chi sono",
|
||||
"title_projects": "Progetti",
|
||||
"title_resume": "CV",
|
||||
"title_contacts": "Salutami",
|
||||
|
||||
"log_hello": "Ciao 🐡"
|
||||
}
|
||||
} });
|
||||
const { t, locale } = useI18n({ messages: title_locale });
|
||||
|
||||
const route = useRoute()
|
||||
const easteregg = ref();
|
||||
|
||||
@ -29,29 +29,9 @@
|
||||
import { shouldShowCookie, acceptCookie, refuseCookie } from "@/utilities/cookie_handler";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { addFoundEasterEgg } from "@/utilities/easteregg_handler";
|
||||
import locale from "@/locales/cookie";
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
"en": {
|
||||
"cookie policy title": "Cookie policy",
|
||||
"cookie policy": "This website uses cookies but not for analysis purposes and they are not sent to third parties. " +
|
||||
"The only cookies here are those that I ate this morning, although I prefer a savory breakfast. " +
|
||||
"I don't know why you are reading this, but thanks for keeping me company, I wish you a great day. " +
|
||||
"If you would like some cookies too, do not hesitate to click on the following link:",
|
||||
"cookie policy link": "Click here to read the policy",
|
||||
"accept": "Accept",
|
||||
"reject": "Reject"
|
||||
},
|
||||
"it": {
|
||||
"cookie policy title": "Informativa cookie",
|
||||
"cookie policy": "Questo sito utilizza cookie ma non per fini di profilazione e non sono inviati a terze parti. " +
|
||||
"Gli unici cookie presenti sono quelli che ho mangiato questa mattina, anche se in realtà preferisco una colazione salata. " +
|
||||
"Non so perché stai leggendo questo, ma ti ringrazio per avermi fatto compagnia e ti auguro una buona giornata. " +
|
||||
"Se gradisci dei biscotti, non esitare a cliccare l'informativa al seguente link:",
|
||||
"cookie policy link": "Clicca qui per l'informativa cookie",
|
||||
"accept": "Accetta",
|
||||
"reject": "Rifiuta"
|
||||
}
|
||||
} });
|
||||
const { t } = useI18n({ messages: locale });
|
||||
|
||||
const container_cookie = ref();
|
||||
const canvas_cookie = ref();
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
import SomethingEgg from "./eggs/Something.vue";
|
||||
import PictureBrightEgg from "./eggs/PictureBright.vue";
|
||||
import PictureNoLightEgg from "./eggs/PictureNoLight.vue";
|
||||
import locale from "@/locales/easteregg";
|
||||
|
||||
const show_banner = ref(false);
|
||||
const easteregg = ref("");
|
||||
@ -42,16 +43,7 @@
|
||||
const total_eastereggs = ref(getTotalEasterEggsCount());
|
||||
const found_eastereggs = ref(getFoundEasterEggsCount());
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
"en": {
|
||||
"easter eggs found": "easter eggs found",
|
||||
"all easter eggs found": "You found all easter eggs 🥚"
|
||||
},
|
||||
"it": {
|
||||
"easter eggs found": "easter egg trovati",
|
||||
"all easter eggs found": "Hai trovato tutti gli easter egg 🥚"
|
||||
}
|
||||
} });
|
||||
const { t } = useI18n({ messages: locale });
|
||||
|
||||
|
||||
let current_dismiss_timeout:number|null = null;
|
||||
@ -59,7 +51,6 @@
|
||||
function show(easteregg_name:string) {
|
||||
easteregg.value = easteregg_name;
|
||||
found_eastereggs.value = getFoundEasterEggsCount();
|
||||
console.log(getFoundEasterEggsCount())
|
||||
show_banner.value = true;
|
||||
|
||||
if (current_dismiss_timeout) { clearTimeout(current_dismiss_timeout) }
|
||||
|
||||
@ -8,8 +8,8 @@
|
||||
</div>
|
||||
|
||||
<div class="flex-1 ml-2">
|
||||
<p class="font-bold text-base">{{ t("title") }}</p>
|
||||
<p>{{ t("description") }}</p>
|
||||
<p class="font-bold text-base">{{ t("cookie.title") }}</p>
|
||||
<p>{{ t("cookie.description") }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -18,15 +18,7 @@
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from "vue-i18n";
|
||||
import image from "@/assets/images/cookie.png";
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
"en": {
|
||||
"title": "Who wants a cookie?",
|
||||
"description": "It appears that you read the cookie policy"
|
||||
},
|
||||
"it": {
|
||||
"title": "Chi vuole un biscotto?",
|
||||
"description": "Sembra che hai letto l'informativa cookie"
|
||||
}
|
||||
} });
|
||||
import locale from "@/locales/easteregg";
|
||||
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -8,8 +8,8 @@
|
||||
</div>
|
||||
|
||||
<div class="flex-1 ml-2">
|
||||
<p class="font-bold text-base">{{ t("title") }}</p>
|
||||
<p>{{ t("description") }}</p>
|
||||
<p class="font-bold text-base">{{ t("future.title") }}</p>
|
||||
<p>{{ t("future.description") }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -18,15 +18,7 @@
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from "vue-i18n";
|
||||
import image from "@/assets/images/future.png";
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
"en": {
|
||||
"title": "What a wonderful future",
|
||||
"description": "What will happen next?"
|
||||
},
|
||||
"it": {
|
||||
"title": "Che bello il futuro",
|
||||
"description": "Cosa ci riserverà?"
|
||||
}
|
||||
} });
|
||||
import locale from "@/locales/easteregg";
|
||||
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -8,33 +8,22 @@
|
||||
</div>
|
||||
|
||||
<div class="flex-1 ml-2">
|
||||
<p class="font-bold text-base">{{ t("title") }}</p>
|
||||
<p>{{ t("description") }}</p>
|
||||
<p class="font-bold text-base">{{ t("bright.title") }}</p>
|
||||
<p v-if="!dark_unlocked">{{ t("bright.description") }}</p>
|
||||
<p v-if="dark_unlocked">{{ t("bright_either.description") }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import image from "@/assets/images/sun.png";
|
||||
import { getFoundEasterEggs } from "@/utilities/easteregg_handler";
|
||||
|
||||
let locale = {
|
||||
"en": {
|
||||
"title": "It's bright",
|
||||
"description": "I don't like the light"
|
||||
},
|
||||
"it": {
|
||||
"title": "È luminoso",
|
||||
"description": "Non mi piace la luce"
|
||||
}
|
||||
};
|
||||
|
||||
if (getFoundEasterEggs().includes("picture-nolights")) {
|
||||
locale["en"]["description"] = "I don't like the light either"
|
||||
locale["it"]["description"] = "Non mi piace nemmeno la luce"
|
||||
}
|
||||
import locale from "@/locales/easteregg";
|
||||
|
||||
const { t } = useI18n({ messages: locale });
|
||||
|
||||
const dark_unlocked = ref(getFoundEasterEggs().includes("picture-nolights"));
|
||||
</script>
|
||||
@ -8,33 +8,22 @@
|
||||
</div>
|
||||
|
||||
<div class="flex-1 ml-2">
|
||||
<p class="font-bold text-base">{{ t("title") }}</p>
|
||||
<p>{{ t("description") }}</p>
|
||||
<p class="font-bold text-base">{{ t("dark.title") }}</p>
|
||||
<p v-if="!light_unlocked">{{ t("dark.description") }}</p>
|
||||
<p v-if="light_unlocked">{{ t("dark_either.description") }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import image from "@/assets/images/moon.png";
|
||||
import { getFoundEasterEggs } from "@/utilities/easteregg_handler";
|
||||
|
||||
let locale = {
|
||||
"en": {
|
||||
"title": "It's dark",
|
||||
"description": "I don't like the dark"
|
||||
},
|
||||
"it": {
|
||||
"title": "È buio",
|
||||
"description": "Non mi piace il buio"
|
||||
}
|
||||
};
|
||||
|
||||
if (getFoundEasterEggs().includes("picture-bright")) {
|
||||
locale["en"]["description"] = "I don't like the dark either"
|
||||
locale["it"]["description"] = "Non mi piace nemmeno il buio"
|
||||
}
|
||||
import locale from "@/locales/easteregg";
|
||||
|
||||
const { t } = useI18n({ messages: locale });
|
||||
|
||||
const light_unlocked = ref(getFoundEasterEggs().includes("picture-bright"));
|
||||
</script>
|
||||
@ -8,8 +8,8 @@
|
||||
</div>
|
||||
|
||||
<div class="flex-1 ml-2">
|
||||
<p class="font-bold text-base">{{ t("title") }}</p>
|
||||
<p>{{ t("description") }}</p>
|
||||
<p class="font-bold text-base">{{ t("something.title") }}</p>
|
||||
<p>{{ t("something.description") }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -18,15 +18,7 @@
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from "vue-i18n";
|
||||
import image from "@/assets/images/sad.svg";
|
||||
import locale from "@/locales/easteregg";
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
"en": {
|
||||
"title": "You didn't like that?",
|
||||
"description": "I hope this one is better"
|
||||
},
|
||||
"it": {
|
||||
"title": "Non ti piaceva?",
|
||||
"description": "Spero che questo sia meglio"
|
||||
}
|
||||
} });
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -11,7 +11,7 @@
|
||||
<ul class="p-3 space-y-1 text-sm text-gray-700 dark:text-gray-200" aria-labelledby="button-dropdown-locales">
|
||||
|
||||
<li v-for="locale in $i18n.availableLocales" :key="`locale-${locale}`">
|
||||
<input :id="`radio-locale-${locale}`" type="radio" :value="locale" name="locale" class="hidden" v-model="$i18n.locale" :onChange="changeLocale">
|
||||
<input :id="`radio-locale-${locale}`" type="radio" :value="locale" name="locale" class="hidden" :onChange="changeLocale">
|
||||
<label :for="`radio-locale-${locale}`" class="text-sm font-medium uppercase text-gray-900 rounded dark:text-gray-300 ">
|
||||
<div class="flex items-center p-2 px-5 rounded hover:bg-gray-100 dark:hover:bg-gray-600">
|
||||
{{ locale }}
|
||||
@ -28,14 +28,19 @@
|
||||
import { initDropdowns } from "flowbite";
|
||||
import { setLocale } from "@/utilities/locale_handler";
|
||||
import { onMounted } from "vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
|
||||
import globe_icon from "@/assets/images/icons/globe.svg";
|
||||
|
||||
|
||||
let i18n = useI18n();
|
||||
|
||||
onMounted(() => {
|
||||
initDropdowns();
|
||||
})
|
||||
|
||||
function changeLocale(e:any) {
|
||||
setLocale(e.target.value);
|
||||
const locale = e.target.value;
|
||||
setLocale(locale, i18n);
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -41,7 +41,7 @@
|
||||
import LanguageSelector from "../language-selector/LanguageSelector.vue";
|
||||
import { initCollapses } from "flowbite";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import locale from "./locale.json";
|
||||
import locale from "@/locales/navbar";
|
||||
import { onMounted } from "vue";
|
||||
|
||||
import github_icon from "@/assets/images/icons/github.svg";
|
||||
|
||||
@ -25,21 +25,9 @@
|
||||
import picture_light from "@/assets/images/profile/picture-light.png";
|
||||
import picture_bright from "@/assets/images/profile/picture-bright.png";
|
||||
import picture_nolight from "@/assets/images/profile/picture-nolight.png";
|
||||
import profile_locale from "@/locales/profile-picture";
|
||||
|
||||
const { t, locale } = useI18n({ messages: {
|
||||
"en": {
|
||||
"that's bright": "That's bright",
|
||||
"better": "Better",
|
||||
"where lights": "Who turned off the lights?",
|
||||
"here lights": "Here they are"
|
||||
},
|
||||
"it": {
|
||||
"that's bright": "È luminoso",
|
||||
"better": "Meglio",
|
||||
"where lights": "Chi ha spento le luci?",
|
||||
"here lights": "Eccole"
|
||||
}
|
||||
} });
|
||||
const { t, locale } = useI18n({ messages: profile_locale });
|
||||
|
||||
const picture = ref(picture_dark);
|
||||
const message = ref("picture_dark");
|
||||
|
||||
@ -15,23 +15,9 @@
|
||||
import rock_image from "@/assets/images/rock.png";
|
||||
import coconut_image from "@/assets/images/coconut.png";
|
||||
import red_panda_image from "@/assets/images/red-panda.png";
|
||||
import locale from "@/locales/something";
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
"en": {
|
||||
"penguin": "This is a penguin",
|
||||
"llama": "This is a llama",
|
||||
"rock": "This is a rock",
|
||||
"coconut": "This is a coconut",
|
||||
"red panda": "This is a red panda"
|
||||
},
|
||||
"it": {
|
||||
"penguin": "Questo è un pinguino",
|
||||
"llama": "Questo è un lama",
|
||||
"rock": "Questo è un sasso",
|
||||
"coconut": "Questa è una noce di cocco",
|
||||
"red panda": "Questo è un panda rosso"
|
||||
}
|
||||
} });
|
||||
const { t } = useI18n({ messages: locale });
|
||||
|
||||
const things = [
|
||||
{ name: "penguin", image: penguin_image },
|
||||
|
||||
16
src/locales/about.ts
Normal file
16
src/locales/about.ts
Normal file
@ -0,0 +1,16 @@
|
||||
export default {
|
||||
"en": {
|
||||
"about me": "About me",
|
||||
"reading": "Currently I'm reading",
|
||||
|
||||
"that's bright": "That's bright",
|
||||
"thanks": "Thanks"
|
||||
},
|
||||
"it": {
|
||||
"about me": "Su di me",
|
||||
"reading": "Attualmente sto leggendo",
|
||||
|
||||
"that's bright": "È luminoso",
|
||||
"thanks": "Grazie"
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
{
|
||||
export default {
|
||||
"en": {
|
||||
"contacts": "Contacts"
|
||||
},
|
||||
22
src/locales/cookie.ts
Normal file
22
src/locales/cookie.ts
Normal file
@ -0,0 +1,22 @@
|
||||
export default{
|
||||
"en": {
|
||||
"cookie policy title": "Cookie policy",
|
||||
"cookie policy": "This website uses cookies but not for analysis purposes and they are not sent to third parties. " +
|
||||
"The only cookies here are those that I ate this morning, although I prefer a savory breakfast. " +
|
||||
"I don't know why you are reading this, but thanks for keeping me company, I wish you a great day. " +
|
||||
"If you would like some cookies too, do not hesitate to click on the following link:",
|
||||
"cookie policy link": "Click here to read the policy",
|
||||
"accept": "Accept",
|
||||
"reject": "Reject"
|
||||
},
|
||||
"it": {
|
||||
"cookie policy title": "Informativa cookie",
|
||||
"cookie policy": "Questo sito utilizza cookie ma non per fini di profilazione e non sono inviati a terze parti. " +
|
||||
"Gli unici cookie presenti sono quelli che ho mangiato questa mattina, anche se in realtà preferisco una colazione salata. " +
|
||||
"Non so perché stai leggendo questo, ma ti ringrazio per avermi fatto compagnia e ti auguro una buona giornata. " +
|
||||
"Se gradisci dei biscotti, non esitare a cliccare l'informativa al seguente link:",
|
||||
"cookie policy link": "Clicca qui per l'informativa cookie",
|
||||
"accept": "Accetta",
|
||||
"reject": "Rifiuta"
|
||||
}
|
||||
}
|
||||
44
src/locales/easteregg.ts
Normal file
44
src/locales/easteregg.ts
Normal file
@ -0,0 +1,44 @@
|
||||
export default {
|
||||
"en": {
|
||||
"easter eggs found": "easter eggs found",
|
||||
"all easter eggs found": "You found all easter eggs 🥚",
|
||||
|
||||
"cookie.title": "Who wants a cookie?",
|
||||
"cookie.description": "It appears that you read the cookie policy",
|
||||
|
||||
"future.title": "What a wonderful future",
|
||||
"future.description": "What will happen next?",
|
||||
|
||||
"bright.title": "It's bright",
|
||||
"bright.description": "I don't like the light",
|
||||
"bright_either.description": "I don't like the light either",
|
||||
|
||||
"dark.title": "It's dark",
|
||||
"dark.description": "I don't like the dark",
|
||||
"dark_either.description": "I don't like the dark either",
|
||||
|
||||
"something.title": "You didn't like that?",
|
||||
"something.description": "I hope this one is better",
|
||||
},
|
||||
"it": {
|
||||
"easter eggs found": "easter egg trovati",
|
||||
"all easter eggs found": "Hai trovato tutti gli easter egg 🥚",
|
||||
|
||||
"cookie.title": "Chi vuole un biscotto?",
|
||||
"cookie.description": "Sembra che hai letto l'informativa cookie",
|
||||
|
||||
"future.title": "Che bello il futuro",
|
||||
"future.description": "Cosa ci riserverà?",
|
||||
|
||||
"bright.title": "È luminoso",
|
||||
"bright.description": "Non mi piace la luce",
|
||||
"bright_either.description": "Non mi piace nemmeno la luce",
|
||||
|
||||
"dark.title": "È buio",
|
||||
"dark.description": "Non mi piace il buio",
|
||||
"dark_either.description": "Non mi piace nemmeno il buio",
|
||||
|
||||
"something.title": "Non ti piaceva?",
|
||||
"something.description": "Spero che questo sia meglio",
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
{
|
||||
export default {
|
||||
"en": {
|
||||
"i am a": "I'm a",
|
||||
"cs student": "Computer Science Student",
|
||||
@ -1,4 +1,4 @@
|
||||
{
|
||||
export default {
|
||||
"it": {
|
||||
"open nav": "Apri menù di navigazione",
|
||||
"home": "Home",
|
||||
14
src/locales/profile-picture.ts
Normal file
14
src/locales/profile-picture.ts
Normal file
@ -0,0 +1,14 @@
|
||||
export default {
|
||||
"en": {
|
||||
"that's bright": "That's bright",
|
||||
"better": "Better",
|
||||
"where lights": "Who turned off the lights?",
|
||||
"here lights": "Here they are"
|
||||
},
|
||||
"it": {
|
||||
"that's bright": "È luminoso",
|
||||
"better": "Meglio",
|
||||
"where lights": "Chi ha spento le luci?",
|
||||
"here lights": "Eccole"
|
||||
}
|
||||
}
|
||||
98
src/locales/projects.ts
Normal file
98
src/locales/projects.ts
Normal file
@ -0,0 +1,98 @@
|
||||
export default {
|
||||
en: {
|
||||
"projects": "Projects",
|
||||
"wip": "Currently I'm working on",
|
||||
"completed": "Completed projects",
|
||||
|
||||
"unibo_20-21": "University of Bologna, A.Y. 2020-2021",
|
||||
"unibo_21-22": "University of Bologna, A.Y. 2021-2022",
|
||||
"unibo_22-23": "University of Bologna, A.Y. 2022-2023",
|
||||
|
||||
|
||||
"notxia.github.io.description": "Here's a secret preview of my website.",
|
||||
"no recursion": "Recursion out of service, sorry for the inconvenience.",
|
||||
|
||||
"wirefilter.description":
|
||||
"Virtual Distributed Ethernet (VDE) is an open source project that allows the creation of virtual networks through a set of plugins.\n" +
|
||||
"Wirefilter is a plugin that allows to manipulate packet flow by changing the parameters of the virtual cable.",
|
||||
|
||||
"tweet_analysis.description":
|
||||
"Project for the Software Engineering course.\n" +
|
||||
"Twitter client with analytics features developed using the Scrum methodology.",
|
||||
|
||||
"animalhouse.description":
|
||||
"Project for the Web Technology course.\n" +
|
||||
"Web app with three sections:",
|
||||
"animalhouse.description.game": "Game: area with games and facts about animals",
|
||||
"animalhouse.description.frontoffice": "Frontoffice: area to access services as a logged user",
|
||||
"animalhouse.description.backoffice": "Backoffice: administration panel",
|
||||
|
||||
"pandos+.description":
|
||||
"Project for the Operating Systems course.\n" +
|
||||
"Minimal operating system for the MIPS architecture.",
|
||||
|
||||
"imaging.description":
|
||||
"Project for the Numerical Computing course.\n" +
|
||||
"Image deblurring solved as a minimization problem.",
|
||||
|
||||
"mnk.description":
|
||||
"Project for the Algorithms and Data Structures course.\n" +
|
||||
"Algorithm able to efficiently play a generalized version of tic-tac-toe.",
|
||||
|
||||
"platform.description":
|
||||
"Project for the Programmin course.\n" +
|
||||
"Text based platform game with randomly generated levels.",
|
||||
|
||||
"pathfinding_visualizer.description": "Visualizer of some graph search algorithms.",
|
||||
|
||||
"sort_visualizer.description": "Visualizer of some sorting algorithms.",
|
||||
},
|
||||
it: {
|
||||
"projects": "Progetti",
|
||||
"wip": "Attualmente sto lavorando a",
|
||||
"completed": "Progetti completati",
|
||||
|
||||
"unibo_20-21": "Università di Bologna, A.A. 2020-2021",
|
||||
"unibo_21-22": "Università di Bologna, A.A. 2021-2022",
|
||||
"unibo_22-23": "Università di Bologna, A.A. 2022-2023",
|
||||
|
||||
|
||||
"notxia.github.io.description": "Ecco un'anteprima segreta del mio sito.",
|
||||
"no recursion": "Ricorsione fuori servizio, mi scuso per il disagio.",
|
||||
|
||||
"wirefilter.description":
|
||||
"Virtual Distributed Ethernet (VDE) è un progetto open source che consente di creare reti virtuali tramite l'utilizzo modulare di plugin.\n" +
|
||||
"Wirefilter è un plugin che consente di manipolare il flusso dei pacchetti in transito impostando parametri per il cavo virtuale.",
|
||||
|
||||
"tweet_analysis.description":
|
||||
"Progetto per il corso di Ingegneria del Software.\n" +
|
||||
"Webapp per l'analisi di tweet sviluppata con metodologia Scrum.",
|
||||
|
||||
"animalhouse.description":
|
||||
"Progetto per il corso di Tecnologie Web.\n" +
|
||||
"Web app suddivisa in tre sezioni:",
|
||||
"animalhouse.description.game": "Game: area con giochi e curiosità sugli animali",
|
||||
"animalhouse.description.frontoffice": "Frontoffice: area con servizi per gli utenti autenticati",
|
||||
"animalhouse.description.backoffice": "Backoffice: pannello di amministrazione",
|
||||
|
||||
"pandos+.description":
|
||||
"Progetto per il corso di Sistemi Operativi.\n" +
|
||||
"Sistema operativo minimale per architettura MIPS.",
|
||||
|
||||
"imaging.description":
|
||||
"Progetto per il corso di Calcolo Numerico.\n" +
|
||||
"Deblurring di immagini risolto come problema di minimizzazione.",
|
||||
|
||||
"mnk.description":
|
||||
"Progetto per il corso di Algoritmi e Strutture Dati.\n" +
|
||||
"Algoritmo in grado di giocare in modo efficiente ad una versione generalizzata del tris.",
|
||||
|
||||
"platform.description":
|
||||
"Progetto per il corso di Programmazione.\n" +
|
||||
"Gioco platform su terminale con livelli generati casualmente.",
|
||||
|
||||
"pathfinding_visualizer.description": "Visualizzazione di alcuni algoritmi di ricerca su grafi.",
|
||||
|
||||
"sort_visualizer.description": "Visualizzazione di alcuni algoritmi di ordinamento.",
|
||||
}
|
||||
}
|
||||
@ -1,3 +1,8 @@
|
||||
import cv_it from "@/assets/cv/it.pdf";
|
||||
import cv_en from "@/assets/cv/en.pdf";
|
||||
import cv_it_color from "@/assets/cv/it_color.pdf";
|
||||
import cv_en_color from "@/assets/cv/en_color.pdf";
|
||||
|
||||
export default ({
|
||||
"en": {
|
||||
"education": "Education",
|
||||
@ -7,6 +12,11 @@ export default ({
|
||||
"other": "Other activities",
|
||||
"link to certificate": "Link to certificate",
|
||||
"future": "What will happen?",
|
||||
"like timelines": "I like timelines",
|
||||
|
||||
"cv_link": cv_en,
|
||||
"cv_link_color": cv_en_color,
|
||||
"with_colors": "but colored",
|
||||
|
||||
"january": "January", "february": "February", "march": "March", "april": "April", "may": "May", "june": "June",
|
||||
"july": "July", "august": "August", "september": "September", "october": "October", "november": "November", "december": "December",
|
||||
@ -25,9 +35,11 @@ export default ({
|
||||
"data analysis": "Data analysis",
|
||||
"other programming languages": "Other programming languages",
|
||||
|
||||
|
||||
"cisco it essentials description": "Maintenance and administration of IT systems.\n" +
|
||||
"Configuration and management of network devices.",
|
||||
"cs50 ai description": "Problem solving through algorithms based on graphs, statistics, optimization and machine learning.",
|
||||
|
||||
"cs50 ai description": "Problem solving through algorithms based on graphs, statistics, optimization and machine learning.",
|
||||
|
||||
|
||||
"pcto toyota": "IT/IS Office, Internship",
|
||||
@ -35,6 +47,7 @@ export default ({
|
||||
"IT support, maintenance and initial setup of network devices.\n" +
|
||||
"SQL programming, automation with bash and batch scripts.",
|
||||
|
||||
|
||||
"ois": "Informatics Olympiad in Teams",
|
||||
"ois description": "Team based programming competition.",
|
||||
|
||||
@ -50,6 +63,11 @@ export default ({
|
||||
"other": "Altre attività",
|
||||
"link to certificate": "Link al certificato",
|
||||
"future": "Chissà cosa succederà",
|
||||
"like timelines": "Mi piacciono le linee del tempo",
|
||||
|
||||
"cv_link": cv_it,
|
||||
"cv_link_color": cv_it_color,
|
||||
"with_colors": "ma colorato",
|
||||
|
||||
"january": "Gennaio", "february": "Febbraio", "march": "Marzo", "april": "Aprile", "may": "Maggio", "june": "Giugno",
|
||||
"july": "Luglio", "august": "Agosto", "september": "Settembre", "october": "Ottobre", "november": "Novembre", "december": "Dicembre",
|
||||
@ -68,8 +86,10 @@ export default ({
|
||||
"data analysis": "Data analysis",
|
||||
"other programming languages": "Altri linguaggi di programmazione",
|
||||
|
||||
|
||||
"cisco it essentials description": "Manutenzione e amministrazione di sistemi informatici.\n" +
|
||||
"Configurazione e gestione di apparati di rete.",
|
||||
|
||||
"cs50 ai description": "Risoluzione di problemi con algoritmi basati su grafi, statistica, ottimizzazione e machine learning.",
|
||||
|
||||
|
||||
16
src/locales/something.ts
Normal file
16
src/locales/something.ts
Normal file
@ -0,0 +1,16 @@
|
||||
export default {
|
||||
"en": {
|
||||
"penguin": "This is a penguin",
|
||||
"llama": "This is a llama",
|
||||
"rock": "This is a rock",
|
||||
"coconut": "This is a coconut",
|
||||
"red panda": "This is a red panda"
|
||||
},
|
||||
"it": {
|
||||
"penguin": "Questo è un pinguino",
|
||||
"llama": "Questo è un lama",
|
||||
"rock": "Questo è un sasso",
|
||||
"coconut": "Questa è una noce di cocco",
|
||||
"red panda": "Questo è un panda rosso"
|
||||
}
|
||||
}
|
||||
20
src/locales/title.ts
Normal file
20
src/locales/title.ts
Normal file
@ -0,0 +1,20 @@
|
||||
export default {
|
||||
"en": {
|
||||
"title_home": "Hello",
|
||||
"title_about": "About",
|
||||
"title_projects": "Projects",
|
||||
"title_resume": "Résumé",
|
||||
"title_contacts": "Say hello",
|
||||
|
||||
"log_hello": "Hello 🐡"
|
||||
},
|
||||
"it": {
|
||||
"title_home": "Ciao",
|
||||
"title_about": "Chi sono",
|
||||
"title_projects": "Progetti",
|
||||
"title_resume": "CV",
|
||||
"title_contacts": "Salutami",
|
||||
|
||||
"log_hello": "Ciao 🐡"
|
||||
}
|
||||
}
|
||||
@ -2,6 +2,9 @@ export function getLocale():string {
|
||||
return localStorage.getItem("locale") ?? window.navigator.language.split("-")[0];
|
||||
}
|
||||
|
||||
export function setLocale(locale:string):void {
|
||||
export function setLocale(locale:string, i18n:any):void {
|
||||
localStorage.setItem("locale", locale);
|
||||
|
||||
i18n.locale.value = locale;
|
||||
document?.querySelector("html")?.setAttribute("lang", locale);
|
||||
}
|
||||
@ -81,23 +81,9 @@
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { type ComputedRef, computed, onMounted, watch, ref } from "vue";
|
||||
import { initPopovers } from "flowbite";
|
||||
import about_locale from "@/locales/about";
|
||||
|
||||
const { t, locale } = useI18n({ messages: {
|
||||
"en": {
|
||||
"about me": "About me",
|
||||
"reading": "Currently I'm reading",
|
||||
|
||||
"that's bright": "That's bright",
|
||||
"thanks": "Thanks"
|
||||
},
|
||||
"it": {
|
||||
"about me": "Su di me",
|
||||
"reading": "Attualmente sto leggendo",
|
||||
|
||||
"that's bright": "È luminoso",
|
||||
"thanks": "Grazie"
|
||||
}
|
||||
} });
|
||||
const { t, locale } = useI18n({ messages: about_locale });
|
||||
|
||||
const current_locale = ref(locale.value);
|
||||
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
import Navbar from "@/components/navbar/Navbar.vue";
|
||||
import ScreenCenter from "@/components/screen-center/ScreenCenter.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import locale from "./locale.json";
|
||||
import locale from "@/locales/contacts";
|
||||
import ContactLink from "./ContactLink.vue";
|
||||
|
||||
import mail_icon from "@/assets/images/icons/mail.svg";
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
import ScreenCenter from "@/components/screen-center/ScreenCenter.vue";
|
||||
import RandomSomething from "@/components/random-something/RandomSomething.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import locale from "./locale.json";
|
||||
import locale from "@/locales/home";
|
||||
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -39,7 +39,7 @@
|
||||
import AnimalHouse from "./cards/AnimalHouse.vue";
|
||||
import TweetAnalysis from "./cards/TweetAnalysis.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import locale from "./locale.json";
|
||||
import locale from "@/locales/projects";
|
||||
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -6,12 +6,12 @@
|
||||
{ label: 'Repository', url: 'https://github.com/NotXia/animal-house' }
|
||||
]">
|
||||
|
||||
<p class="text-center">{{ t("unibo") }}</p>
|
||||
<p>{{ t('description') }}</p>
|
||||
<p class="text-center">{{ t("unibo_21-22") }}</p>
|
||||
<p>{{ t('animalhouse.description') }}</p>
|
||||
<ul class="list-inside list-['-_']">
|
||||
<li>{{ t('description game') }}</li>
|
||||
<li>{{ t('description frontoffice') }}</li>
|
||||
<li>{{ t('description backoffice') }}</li>
|
||||
<li>{{ t('animalhouse.description.game') }}</li>
|
||||
<li>{{ t('animalhouse.description.frontoffice') }}</li>
|
||||
<li>{{ t('animalhouse.description.backoffice') }}</li>
|
||||
</ul>
|
||||
</ProjectCard>
|
||||
</template>
|
||||
@ -21,26 +21,7 @@
|
||||
import ProjectCard from "../ProjectCard.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import image from "@/assets/images/projects/animal-house.png";
|
||||
import locale from "@/locales/projects";
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
en: {
|
||||
"unibo": "University of Bologna, A.Y. 2021-2022",
|
||||
"description":
|
||||
"Project for the Web Technology course.\n" +
|
||||
"Web app with three sections:",
|
||||
"description game": "Game: area with games and facts about animals",
|
||||
"description frontoffice": "Frontoffice: area to access services as a logged user",
|
||||
"description backoffice": "Backoffice: administration panel"
|
||||
|
||||
},
|
||||
it: {
|
||||
"unibo": "Università di Bologna, A.A. 2021-2022",
|
||||
"description":
|
||||
"Progetto per il corso di Tecnologie Web.\n" +
|
||||
"Web app suddivisa in tre sezioni:",
|
||||
"description game": "Game: area con giochi e curiosità sugli animali",
|
||||
"description frontoffice": "Frontoffice: area con servizi per gli utenti autenticati",
|
||||
"description backoffice": "Backoffice: pannello di amministrazione"
|
||||
}
|
||||
} });
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -6,8 +6,8 @@
|
||||
{ label: 'Repository', url: 'https://github.com/NotXia/imaging' }
|
||||
]">
|
||||
|
||||
<p class="text-center">{{ t("unibo") }}</p>
|
||||
<p>{{ t('description') }}</p>
|
||||
<p class="text-center">{{ t("unibo_21-22") }}</p>
|
||||
<p>{{ t('imaging.description') }}</p>
|
||||
</ProjectCard>
|
||||
</template>
|
||||
|
||||
@ -16,19 +16,7 @@
|
||||
import ProjectCard from "../ProjectCard.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import image from "@/assets/images/projects/imaging.png";
|
||||
import locale from "@/locales/projects";
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
en: {
|
||||
unibo: "University of Bologna, A.Y. 2021-2022",
|
||||
description:
|
||||
"Project for the Numerical Computing course.\n" +
|
||||
"Image deblurring solved as a minimization problem."
|
||||
},
|
||||
it: {
|
||||
unibo: "Università di Bologna, A.A. 2021-2022",
|
||||
description:
|
||||
"Progetto per il corso di Calcolo Numerico.\n" +
|
||||
"Deblurring di immagini risolto come problema di minimizzazione."
|
||||
}
|
||||
} });
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -6,8 +6,8 @@
|
||||
{ label: 'Repository', url: 'https://github.com/NotXia/MNKGame' }
|
||||
]">
|
||||
|
||||
<p class="text-center">{{ t("unibo") }}</p>
|
||||
<p>{{ t('description') }}</p>
|
||||
<p class="text-center">{{ t("unibo_20-21") }}</p>
|
||||
<p>{{ t('mnk.description') }}</p>
|
||||
</ProjectCard>
|
||||
</template>
|
||||
|
||||
@ -16,19 +16,7 @@
|
||||
import ProjectCard from "../ProjectCard.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import image from "@/assets/images/projects/mnkgame.png";
|
||||
import locale from "@/locales/projects";
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
en: {
|
||||
unibo: "University of Bologna, A.Y. 2020-2021",
|
||||
description:
|
||||
"Project for the Algorithms and Data Structures course.\n" +
|
||||
"Algorithm able to efficiently play a generalized version of tic-tac-toe."
|
||||
},
|
||||
it: {
|
||||
unibo: "Università di Bologna, A.A. 2020-2021",
|
||||
description:
|
||||
"Progetto per il corso di Algoritmi e Strutture Dati.\n" +
|
||||
"Algoritmo in grado di giocare in modo efficiente ad una versione generalizzata del tris."
|
||||
}
|
||||
} });
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -5,7 +5,7 @@
|
||||
{ label: 'Repository', url: 'https://github.com/NotXia/notxia.github.io' },
|
||||
]">
|
||||
|
||||
<p v-if="!show_recursive_message">{{ t('description') }}</p>
|
||||
<p v-if="!show_recursive_message">{{ t('notxia.github.io.description') }}</p>
|
||||
|
||||
<div class="w-full h-72 relative">
|
||||
<div role="status" v-if="!iframe_loaded && !show_recursive_message" class="absolute top-0 left-0 w-full h-full flex justify-center items-center">
|
||||
@ -29,6 +29,7 @@
|
||||
import ProjectCard from "../ProjectCard.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { ref, onMounted } from "vue";
|
||||
import locale from "@/locales/projects";
|
||||
|
||||
const iframe_loaded = ref(false);
|
||||
const show_recursive_message = ref(false);
|
||||
@ -42,14 +43,5 @@
|
||||
catch (err) { show_recursive_message.value = false; }
|
||||
});
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
en: {
|
||||
description: "Here's a secret preview of my website.",
|
||||
"no recursion": "Recursion out of service, sorry for the inconvenience."
|
||||
},
|
||||
it: {
|
||||
description: "Ecco un'anteprima segreta del mio sito.",
|
||||
"no recursion": "Ricorsione fuori servizio, mi scuso per il disagio."
|
||||
}
|
||||
} });
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -6,8 +6,8 @@
|
||||
{ label: 'Repository', url: 'https://github.com/NotXia/pandos-plus' }
|
||||
]">
|
||||
|
||||
<p class="text-center">{{ t("unibo") }}</p>
|
||||
<p>{{ t('description') }}</p>
|
||||
<p class="text-center">{{ t("unibo_21-22") }}</p>
|
||||
<p>{{ t('pandos+.description') }}</p>
|
||||
</ProjectCard>
|
||||
</template>
|
||||
|
||||
@ -15,19 +15,7 @@
|
||||
<script setup lang="ts">
|
||||
import ProjectCard from "../ProjectCard.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import locale from "@/locales/projects";
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
en: {
|
||||
unibo: "University of Bologna, A.Y. 2021-2022",
|
||||
description:
|
||||
"Project for the Operating Systems course.\n" +
|
||||
"Minimal operating system for the MIPS architecture."
|
||||
},
|
||||
it: {
|
||||
unibo: "Università di Bologna, A.A. 2021-2022",
|
||||
description:
|
||||
"Progetto per il corso di Sistemi Operativi.\n" +
|
||||
"Sistema operativo minimale per architettura MIPS."
|
||||
}
|
||||
} });
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -7,7 +7,7 @@
|
||||
{ label: 'Demo', url: 'https://notxia.github.io/pathfinding-visualizer/' }
|
||||
]">
|
||||
|
||||
{{ t('description') }}
|
||||
{{ t('pathfinding_visualizer.description') }}
|
||||
</ProjectCard>
|
||||
</template>
|
||||
|
||||
@ -16,15 +16,7 @@
|
||||
import ProjectCard from "../ProjectCard.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import image from "@/assets/images/projects/pathfinding-visualizer.png";
|
||||
import locale from "@/locales/projects";
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
en: {
|
||||
description:
|
||||
"Visualizer of some graph search algorithms."
|
||||
},
|
||||
it: {
|
||||
description:
|
||||
"Visualizzazione di alcuni algoritmi di ricerca su grafi."
|
||||
}
|
||||
} });
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -6,8 +6,8 @@
|
||||
{ label: 'Repository', url: 'https://github.com/NotXia/platform-game' }
|
||||
]">
|
||||
|
||||
<p class="text-center">{{ t("unibo") }}</p>
|
||||
<p>{{ t('description') }}</p>
|
||||
<p class="text-center">{{ t("unibo_20-21") }}</p>
|
||||
<p>{{ t('platform.description') }}</p>
|
||||
</ProjectCard>
|
||||
</template>
|
||||
|
||||
@ -16,19 +16,7 @@
|
||||
import ProjectCard from "../ProjectCard.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import image from "@/assets/images/projects/platform.png";
|
||||
import locale from "@/locales/projects";
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
en: {
|
||||
unibo: "University of Bologna, A.Y. 2020-2021",
|
||||
description:
|
||||
"Project for the Programmin course.\n" +
|
||||
"Text based platform game with randomly generated levels."
|
||||
},
|
||||
it: {
|
||||
unibo: "Università di Bologna, A.A. 2020-2021",
|
||||
description:
|
||||
"Progetto per il corso di Programmazione.\n" +
|
||||
"Gioco platform su terminale con livelli generati casualmente."
|
||||
}
|
||||
} });
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -7,7 +7,7 @@
|
||||
{ label: 'Demo', url: 'https://notxia.github.io/sorting-visualizer/' }
|
||||
]">
|
||||
|
||||
{{ t('description') }}
|
||||
{{ t('sort_visualizer.description') }}
|
||||
</ProjectCard>
|
||||
</template>
|
||||
|
||||
@ -16,15 +16,7 @@
|
||||
import ProjectCard from "../ProjectCard.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import image from "@/assets/images/projects/sorting-visualizer.png";
|
||||
import locale from "@/locales/projects";
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
en: {
|
||||
description:
|
||||
"Visualizer of some sorting algorithms."
|
||||
},
|
||||
it: {
|
||||
description:
|
||||
"Visualizzazione di alcuni algoritmi di ordinamento."
|
||||
}
|
||||
} });
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -6,8 +6,8 @@
|
||||
{ label: 'Repository', url: 'https://github.com/NotXia/tweet-analysis' }
|
||||
]">
|
||||
|
||||
<p class="text-center">{{ t("unibo") }}</p>
|
||||
<p>{{ t('description') }}</p>
|
||||
<p class="text-center">{{ t("unibo_22-23") }}</p>
|
||||
<p>{{ t('tweet_analysis.description') }}</p>
|
||||
</ProjectCard>
|
||||
</template>
|
||||
|
||||
@ -16,19 +16,7 @@
|
||||
import ProjectCard from "../ProjectCard.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import image from "@/assets/images/projects/tweet-analysis.png";
|
||||
import locale from "@/locales/projects";
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
en: {
|
||||
unibo: "University of Bologna, A.Y. 2022-2023",
|
||||
description:
|
||||
"Project for the Software Engineering course.\n" +
|
||||
"Twitter client with analytics features developed using the Scrum methodology."
|
||||
},
|
||||
it: {
|
||||
unibo: "Università di Bologna, A.A. 2022-2023",
|
||||
description:
|
||||
"Progetto per il corso di Ingegneria del Software.\n" +
|
||||
"Webapp per l'analisi di tweet sviluppata con metodologia Scrum."
|
||||
}
|
||||
} });
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -6,8 +6,8 @@
|
||||
{ label: 'VirtualSquare', url: 'http://wiki.virtualsquare.org/#!index.md' }
|
||||
]">
|
||||
|
||||
<p class="text-center">{{ t("unibo") }}</p>
|
||||
<p>{{ t('description') }}</p>
|
||||
<p class="text-center">{{ t("unibo_22-23") }}</p>
|
||||
<p>{{ t("wirefilter.description") }}</p>
|
||||
</ProjectCard>
|
||||
</template>
|
||||
|
||||
@ -15,19 +15,7 @@
|
||||
<script setup lang="ts">
|
||||
import ProjectCard from "../ProjectCard.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import locale from "@/locales/projects";
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
en: {
|
||||
unibo: "University of Bologna, A.Y. 2022-2023",
|
||||
description:
|
||||
"Virtual Distributed Ethernet (VDE) is an open source project that allows the creation of virtual networks through a set of plugins.\n" +
|
||||
"Wirefilter is a plugin that allows to manipulate packet flow by changing the parameters of the virtual cable."
|
||||
},
|
||||
it: {
|
||||
unibo: "Università di Bologna, A.A. 2022-2023",
|
||||
description:
|
||||
"Virtual Distributed Ethernet (VDE) è un progetto open source che consente di creare reti virtuali tramite l'utilizzo modulare di plugin.\n" +
|
||||
"Wirefilter è un plugin che consente di manipolare il flusso dei pacchetti in transito impostando parametri per il cavo virtuale."
|
||||
}
|
||||
} });
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -1,12 +0,0 @@
|
||||
{
|
||||
"en": {
|
||||
"projects": "Projects",
|
||||
"wip": "Currently I'm working on",
|
||||
"completed": "Completed projects"
|
||||
},
|
||||
"it": {
|
||||
"projects": "Progetti",
|
||||
"wip": "Attualmente sto lavorando a",
|
||||
"completed": "Progetti completati"
|
||||
}
|
||||
}
|
||||
@ -44,23 +44,9 @@
|
||||
import Work from "./sections/Work.vue";
|
||||
import Other from "./sections/Other.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import locale from "@/locales/resume";
|
||||
|
||||
import pdf_image from "@/assets/images/icons/pdf.svg";
|
||||
import cv_it from "@/assets/cv/it.pdf";
|
||||
import cv_en from "@/assets/cv/en.pdf";
|
||||
import cv_it_color from "@/assets/cv/it_color.pdf";
|
||||
import cv_en_color from "@/assets/cv/en_color.pdf";
|
||||
|
||||
const { t } = useI18n({ messages: {
|
||||
"en": {
|
||||
"cv_link": cv_en,
|
||||
"cv_link_color": cv_en_color,
|
||||
"with_colors": "but colored"
|
||||
},
|
||||
"it": {
|
||||
"cv_link": cv_it,
|
||||
"cv_link_color": cv_it_color,
|
||||
"with_colors": "ma colorato"
|
||||
}
|
||||
} });
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -17,8 +17,7 @@
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from "vue-i18n";
|
||||
import ActivityParagraph from "../components/ActivityParagraph.vue";
|
||||
import locale from "../locale.js";
|
||||
import locale from "@/locales/resume";
|
||||
|
||||
// @ts-ignore
|
||||
const { t } = useI18n({ messages: locale});
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -15,8 +15,7 @@
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from "vue-i18n";
|
||||
import ActivityParagraph from "../components/ActivityParagraph.vue";
|
||||
import locale from "../locale.js";
|
||||
import locale from "@/locales/resume";
|
||||
|
||||
// @ts-ignore
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -49,19 +49,12 @@
|
||||
<script setup lang="ts">
|
||||
import Timeline from "@/components/timeline/Timeline.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import locale from "../locale.js";
|
||||
import { initTooltips } from "flowbite";
|
||||
import { onMounted } from "vue";
|
||||
import { addFoundEasterEgg } from "@/utilities/easteregg_handler";
|
||||
import locale from "@/locales/resume";
|
||||
|
||||
const timeline_locale = locale;
|
||||
// @ts-ignore
|
||||
timeline_locale.en["like timelines"] = "I like timelines";
|
||||
// @ts-ignore
|
||||
timeline_locale.it["like timelines"] = "Mi piacciono le linee del tempo";
|
||||
|
||||
// @ts-ignore
|
||||
const { t } = useI18n({ messages: timeline_locale});
|
||||
const { t } = useI18n({ messages: locale });
|
||||
|
||||
const january = 0, february = 1, march = 2, april = 3, may = 4, june = 5, july = 6, august = 7, september = 8, october = 9, november = 10, december = 11;
|
||||
|
||||
|
||||
@ -16,8 +16,7 @@
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from "vue-i18n";
|
||||
import ActivityParagraph from "../components/ActivityParagraph.vue";
|
||||
import locale from "../locale.js";
|
||||
import locale from "@/locales/resume";
|
||||
|
||||
// @ts-ignore
|
||||
const { t } = useI18n({ messages: locale});
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -75,7 +75,7 @@
|
||||
import { useI18n } from "vue-i18n";
|
||||
import ActivityParagraph from "../components/ActivityParagraph.vue";
|
||||
import ProgrammingLogo from "../components/ProgrammingLogo.vue";
|
||||
import locale from "../locale.js";
|
||||
import locale from "@/locales/resume";
|
||||
|
||||
import nodejs_logo from "@/assets/images/icons/nodejs.svg";
|
||||
import php_logo from "@/assets/images/icons/php.svg";
|
||||
@ -109,6 +109,5 @@
|
||||
import python_logo from "@/assets/images/icons/python.svg";
|
||||
import cpu_logo from "@/assets/images/icons/cpu.svg";
|
||||
|
||||
// @ts-ignore
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
@ -13,8 +13,7 @@
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from "vue-i18n";
|
||||
import ActivityParagraph from "../components/ActivityParagraph.vue";
|
||||
import locale from "../locale.js";
|
||||
import locale from "@/locales/resume";
|
||||
|
||||
// @ts-ignore
|
||||
const { t } = useI18n({ messages: locale });
|
||||
</script>
|
||||
Reference in New Issue
Block a user