mirror of
https://github.com/ArthurDanjou/artchat.git
synced 2026-01-14 11:54:03 +01:00
feat: enhance navigation and content structure across chat and project components
This commit is contained in:
@@ -80,6 +80,11 @@ function goHome() {
|
||||
clearMessages()
|
||||
router.push('/')
|
||||
}
|
||||
|
||||
const route = useRoute()
|
||||
function isRoute(name: string): boolean {
|
||||
return route.path.includes(name) && route.name !== '/'
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -206,6 +211,40 @@ function goHome() {
|
||||
@click.prevent="goHome"
|
||||
/>
|
||||
</UTooltip>
|
||||
<UTooltip
|
||||
v-if="isRoute('/projects')"
|
||||
:text="t('palette.tooltip.writings')"
|
||||
arrow
|
||||
:content="toolTipContent"
|
||||
:delay-duration="0"
|
||||
>
|
||||
<UButton
|
||||
:label="t('palette.cmd.writings')"
|
||||
variant="outline"
|
||||
color="neutral"
|
||||
size="xl"
|
||||
icon="i-ph-books-duotone"
|
||||
class="rounded-lg cursor-pointer p-2 w-full justify-center"
|
||||
href="/writings"
|
||||
/>
|
||||
</UTooltip>
|
||||
<UTooltip
|
||||
v-if="isRoute('/writings')"
|
||||
:text="t('palette.tooltip.projects')"
|
||||
arrow
|
||||
:content="toolTipContent"
|
||||
:delay-duration="0"
|
||||
>
|
||||
<UButton
|
||||
:label="t('palette.cmd.projects')"
|
||||
variant="outline"
|
||||
color="neutral"
|
||||
size="xl"
|
||||
icon="i-ph-code-duotone"
|
||||
class="rounded-lg cursor-pointer p-2 w-full justify-center"
|
||||
href="/projects"
|
||||
/>
|
||||
</UTooltip>
|
||||
</UFieldGroup>
|
||||
<ClientOnly>
|
||||
<UFieldGroup class="flex items-center justify-center">
|
||||
|
||||
@@ -19,7 +19,7 @@ const props = defineProps<{
|
||||
message: ChatMessage
|
||||
}>()
|
||||
|
||||
const { t, locale, locales } = useI18n()
|
||||
const { locale, locales, t } = useI18n()
|
||||
const currentLocale = computed(() => locales.value.find(l => l.code === locale.value))
|
||||
const formatDate = computed(() => useDateFormat(props.message.createdAt, 'D MMMM YYYY, HH:mm', { locales: currentLocale.value?.code ?? 'en' }).value)
|
||||
|
||||
@@ -73,9 +73,31 @@ const dynamicComponent = computed(() => componentMap[props.message.type])
|
||||
v-if="dynamicComponent"
|
||||
:type="message.type"
|
||||
/>
|
||||
<div v-else-if="message.type === ChatType.INIT">
|
||||
{{ t(message.content || '') }}
|
||||
</div>
|
||||
<i18n-t v-else-if="message.type === ChatType.INIT" :keypath="message.content || ''" tag="div">
|
||||
<template #space>
|
||||
<br>
|
||||
</template>
|
||||
<template #links>
|
||||
<div class="inline-flex items-center gap-2 mb-2">
|
||||
<UButton
|
||||
:label="t('tool.projects.link')"
|
||||
to="/projects"
|
||||
icon="i-ph-code-duotone"
|
||||
variant="outline"
|
||||
size="sm"
|
||||
class="cursor-pointer translate-y-1"
|
||||
/>
|
||||
<UButton
|
||||
:label="t('tool.writings.link')"
|
||||
to="/writings"
|
||||
icon="i-ph-books-duotone"
|
||||
variant="outline"
|
||||
size="sm"
|
||||
class="cursor-pointer translate-y-1"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</i18n-t>
|
||||
<div v-else>
|
||||
{{ message }}
|
||||
</div>
|
||||
|
||||
@@ -20,7 +20,7 @@ const { t } = useI18n()
|
||||
icon="i-ph-linkedin-logo-duotone"
|
||||
label="LinkedIn"
|
||||
target="_blank"
|
||||
class="inline-flex items-start gap-1 transform translate-y-1"
|
||||
class="translate-y-1"
|
||||
/>
|
||||
</template>
|
||||
<template #github>
|
||||
@@ -29,7 +29,7 @@ const { t } = useI18n()
|
||||
icon="i-ph-github-logo-duotone"
|
||||
label="GitHub"
|
||||
target="_blank"
|
||||
class="inline-flex items-start gap-1 transform translate-y-1"
|
||||
class="translate-y-1"
|
||||
/>
|
||||
</template>
|
||||
<template #comment>
|
||||
|
||||
@@ -22,7 +22,7 @@ defineProps({
|
||||
<NuxtLink
|
||||
:href="href"
|
||||
:target="blanked ? '_blank' : '_self'"
|
||||
class="sofia flex gap-1 items-center group"
|
||||
class="sofia group inline-flex items-center gap-1"
|
||||
>
|
||||
<Icon
|
||||
v-if="icon"
|
||||
25
app/components/post/Title.vue
Normal file
25
app/components/post/Title.vue
Normal file
@@ -0,0 +1,25 @@
|
||||
<script lang="ts" setup>
|
||||
defineProps({
|
||||
title: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
description: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<h1
|
||||
class="text-3xl font-bold tracking-tight text-zinc-800 dark:text-zinc-100"
|
||||
>
|
||||
{{ title }}
|
||||
</h1>
|
||||
<p class="mt-4 text-muted">
|
||||
{{ description }}
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
@@ -1,5 +1,5 @@
|
||||
<script lang="ts" setup>
|
||||
const { locale, locales } = useI18n()
|
||||
const { locale, locales, t } = useI18n()
|
||||
const currentLocale = computed(() => locales.value.find(l => l.code === locale.value))
|
||||
|
||||
const { data: projects } = await useAsyncData('projects-index', async () => await queryCollection('projects').where('favorite', '=', true).select('title', 'description', 'id', 'publishedAt', 'tags', 'slug').all())
|
||||
@@ -10,9 +10,17 @@ const date = (date: string) => useDateFormat(new Date(date), 'DD MMMM YYYY', { l
|
||||
<section>
|
||||
<div class="prose dark:prose-invert">
|
||||
<PostAlert class="mb-2" />
|
||||
<i18n-t keypath="tool.projects" tag="p">
|
||||
<template #canva>
|
||||
CANVA
|
||||
<i18n-t keypath="tool.projects.main" tag="p">
|
||||
<template #projects>
|
||||
<UButton
|
||||
:label="t('tool.projects.link')"
|
||||
color="neutral"
|
||||
variant="link"
|
||||
size="lg"
|
||||
trailing-icon="i-ph-code-duotone"
|
||||
to="/projects"
|
||||
class="cursor-pointer px-0 py-0.5"
|
||||
/>
|
||||
</template>
|
||||
<template #space>
|
||||
<br>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script lang="ts" setup>
|
||||
const { locale, locales } = useI18n()
|
||||
const { locale, locales, t } = useI18n()
|
||||
const currentLocale = computed(() => locales.value.find(l => l.code === locale.value))
|
||||
|
||||
const { data: writings } = await useAsyncData('writings-index', async () => await queryCollection('writings').order('publishedAt', 'DESC').select('title', 'description', 'id', 'publishedAt', 'tags', 'slug').limit(2).all())
|
||||
@@ -10,9 +10,17 @@ const date = (date: string) => useDateFormat(new Date(date), 'DD MMMM YYYY', { l
|
||||
<section>
|
||||
<div class="prose dark:prose-invert">
|
||||
<PostAlert class="mb-2" />
|
||||
<i18n-t keypath="tool.writings" tag="p">
|
||||
<template #canva>
|
||||
CANVA
|
||||
<i18n-t keypath="tool.writings.main" tag="p">
|
||||
<template #writings>
|
||||
<UButton
|
||||
:label="t('tool.writings.link')"
|
||||
color="neutral"
|
||||
variant="link"
|
||||
size="lg"
|
||||
trailing-icon="i-ph-books-duotone"
|
||||
to="/writings"
|
||||
class="cursor-pointer px-0 py-0.5"
|
||||
/>
|
||||
</template>
|
||||
<template #space>
|
||||
<br>
|
||||
|
||||
78
app/pages/projects/index.vue
Normal file
78
app/pages/projects/index.vue
Normal file
@@ -0,0 +1,78 @@
|
||||
<script lang="ts" setup>
|
||||
const { t } = useI18n()
|
||||
useSeoMeta({
|
||||
title: 'My Projects',
|
||||
description: t('projects.description'),
|
||||
})
|
||||
|
||||
const { data: projects } = await useAsyncData('all-projects', () => {
|
||||
return queryCollection('projects')
|
||||
.order('favorite', 'DESC')
|
||||
.order('publishedAt', 'DESC')
|
||||
.all()
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<UContainer class="space-y-12 mb-20 mt-16 md:mb-32 relative">
|
||||
<PostTitle
|
||||
:description="t('projects.description')"
|
||||
:title="t('projects.title')"
|
||||
/>
|
||||
<PostAlert />
|
||||
<ul class="grid grid-cols-1 sm:grid-cols-2 gap-8">
|
||||
<NuxtLink
|
||||
v-for="(project, id) in projects"
|
||||
:key="id"
|
||||
:to="project.path"
|
||||
>
|
||||
<li
|
||||
class="flex flex-col h-full group hover:bg-neutral-200/50 duration-300 p-2 rounded-lg dark:hover:bg-neutral-800/50 transition-colors justify-center"
|
||||
>
|
||||
<article class="space-y-2">
|
||||
<div
|
||||
class="flex flex-col"
|
||||
>
|
||||
<div class="flex items-center gap-2">
|
||||
<h1 class="font-bold duration-300 text-neutral-600 dark:text-neutral-400 group-hover:text-neutral-900 dark:group-hover:text-white">
|
||||
{{ project.title }}
|
||||
</h1>
|
||||
<UIcon
|
||||
v-if="project.favorite"
|
||||
name="i-ph-star-duotone"
|
||||
size="16"
|
||||
class="text-amber-500 hover:rotate-360 duration-500"
|
||||
/>
|
||||
</div>
|
||||
<h3 class="text-md text-neutral-500 dark:text-neutral-400 italic">
|
||||
{{ project.description }}
|
||||
</h3>
|
||||
</div>
|
||||
</article>
|
||||
<div class="flex flex-col sm:flex-row sm:items-center mt-1">
|
||||
<div
|
||||
class="text-sm text-neutral-500 duration-300 flex items-center gap-1"
|
||||
>
|
||||
<ClientOnly>
|
||||
<p>{{ useDateFormat(project.publishedAt, 'DD MMM YYYY').value }} </p>
|
||||
</ClientOnly>
|
||||
<span class="w-2" />
|
||||
<div class="flex gap-2 flex-wrap">
|
||||
<ClientOnly>
|
||||
<UBadge
|
||||
v-for="tag in project.tags.sort((a: any, b: any) => a.localeCompare(b))"
|
||||
:key="tag"
|
||||
variant="soft"
|
||||
size="sm"
|
||||
>
|
||||
{{ tag }}
|
||||
</UBadge>
|
||||
</ClientOnly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</NuxtLink>
|
||||
</ul>
|
||||
</UContainer>
|
||||
</template>
|
||||
90
app/pages/writings/index.vue
Normal file
90
app/pages/writings/index.vue
Normal file
@@ -0,0 +1,90 @@
|
||||
<script lang="ts" setup>
|
||||
const { t } = useI18n()
|
||||
useSeoMeta({
|
||||
title: 'My Shelf',
|
||||
description: t('writings.description'),
|
||||
})
|
||||
|
||||
const { data: writings } = await useAsyncData('all-writings', () => {
|
||||
return queryCollection('writings')
|
||||
.order('publishedAt', 'DESC')
|
||||
.all()
|
||||
})
|
||||
|
||||
const groupedWritings = computed(() => {
|
||||
const grouped: Record<string, any[]> = {}
|
||||
writings.value!.forEach((writing: any) => {
|
||||
const year = new Date(writing.publishedAt).getFullYear().toString()
|
||||
if (!grouped[year]) {
|
||||
grouped[year] = []
|
||||
}
|
||||
grouped[year].push(writing)
|
||||
})
|
||||
return Object.entries(grouped).reverse()
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<UContainer class="space-y-12 mb-20 mt-16 md:mb-32 relative">
|
||||
<PostTitle
|
||||
:description="t('writings.description')"
|
||||
:title="t('writings.title')"
|
||||
/>
|
||||
<PostAlert />
|
||||
<div class="space-y-8">
|
||||
<div v-for="year in groupedWritings" :key="year[0]" class="lg:space-y-6 relative">
|
||||
<h2 class="text-4xl lg:absolute top-2 -left-16 font-bold opacity-10 select-none pointer-events-none lg:[writing-mode:vertical-rl] lg:[text-orientation:upright] pl-1 lg:pl-0">
|
||||
{{ year[0] }}
|
||||
</h2>
|
||||
<ul class="relative grid grid-cols-1 gap-2">
|
||||
<NuxtLink
|
||||
v-for="(writing, id) in year[1]"
|
||||
:key="id"
|
||||
:to="writing.path"
|
||||
>
|
||||
<li
|
||||
class="h-full group hover:bg-neutral-200/50 duration-300 p-1 lg:p-2 rounded-lg dark:hover:bg-neutral-800/50 transition-colors"
|
||||
>
|
||||
<h1
|
||||
class="font-bold text-lg duration-300 text-neutral-600 dark:text-neutral-400 group-hover:text-neutral-900 dark:group-hover:text-white"
|
||||
>
|
||||
{{ writing.title }}
|
||||
</h1>
|
||||
<h3 class="text-neutral-600 dark:text-neutral-400 italic">
|
||||
{{ writing.description }}
|
||||
</h3>
|
||||
<div class="flex flex-col sm:flex-row sm:items-center justify-between mt-1">
|
||||
<div
|
||||
class="text-sm text-neutral-500 duration-300 flex items-center gap-1"
|
||||
>
|
||||
<ClientOnly>
|
||||
<p>{{ useDateFormat(writing.publishedAt, 'DD MMM').value }} </p>
|
||||
</ClientOnly>
|
||||
<span>·</span>
|
||||
<p>{{ writing.readingTime }}min</p>
|
||||
<span class="w-2" />
|
||||
<div class="flex gap-2 flex-wrap">
|
||||
<ClientOnly>
|
||||
<UBadge
|
||||
v-for="tag in writing.tags.sort((a: any, b: any) => a.localeCompare(b))"
|
||||
:key="tag"
|
||||
variant="soft"
|
||||
size="sm"
|
||||
>
|
||||
{{ tag }}
|
||||
</UBadge>
|
||||
</ClientOnly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</NuxtLink>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</UContainer>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -6,6 +6,8 @@ readingTime: 5
|
||||
publishedAt: 2025/04/06
|
||||
tags:
|
||||
- ai
|
||||
- automation
|
||||
- agents
|
||||
---
|
||||
|
||||
In the rapidly evolving world of artificial intelligence, the combination of Large Language Models (LLMs), AI agents, and Retrieval-Augmented Generation (RAG) is driving new possibilities for autonomous systems. These components, when integrated, create intelligent systems capable of performing complex tasks, reasoning, and interacting with the world around them. In this post, we'll dive into each of these elements and explore their synergy.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"main": {
|
||||
"question": "Awesome! Tell me a bit more about you.",
|
||||
"about": "I'm a student in Mathematics and Statistics at Université Paris-Dauphine in France. With a deep understanding of emerging technologies, I'm at the heart of a rapidly expanding field. My background in mathematics gives me an edge in understanding the concepts and theories behind these technologies and designing them effectively.",
|
||||
"about": "I'm a student in Mathematics and Statistics at Université Paris-Dauphine in France. With a deep understanding of emerging technologies, I'm at the heart of a rapidly expanding field. My background in mathematics gives me an edge in understanding the concepts and theories behind these technologies and designing them effectively. {space} Access the other pages directly: {links}",
|
||||
"powered": "Powered by Nuxt"
|
||||
},
|
||||
"palette": {
|
||||
@@ -15,14 +15,18 @@
|
||||
"placeholder": "Use the arrow keys to navigate through the preset prompts. Press Enter to send the message.",
|
||||
"send": "Send new message",
|
||||
"sending": "Sending...",
|
||||
"chat": "Return to Artchat"
|
||||
"chat": "ArtChat",
|
||||
"writings": "See articles",
|
||||
"projects": "See projects"
|
||||
},
|
||||
"tooltip": {
|
||||
"send": "Send a new predefined message",
|
||||
"clear": "Delete all messages",
|
||||
"theme": "Change the theme",
|
||||
"language": "Change the language",
|
||||
"chat": "Go back to ArtChat to resume the conversation"
|
||||
"chat": "Go back to ArtChat to resume the conversation",
|
||||
"writings": "Read more articles",
|
||||
"projects": "Discover other projects"
|
||||
}
|
||||
},
|
||||
"command": {
|
||||
@@ -179,8 +183,14 @@
|
||||
"humidity": "Humidity",
|
||||
"wind": "Wind"
|
||||
},
|
||||
"projects": "A selection of my projects developed in R, Python, and web development, covering diverse areas such as data analysis, machine learning, and web applications. These projects highlight my skills in coding, problem-solving, and solution design. {space}Here, I present the three projects I am most proud of, but you can explore all my projects directly on the {canva}.",
|
||||
"writings": "I share my reflections on mathematics, artificial intelligence, development and my passions, by organizing them to follow the evolution of my ideas and projects. {space}Here you will find the two most recent articles, but all my writings are accessible on the {canva}, to explore my universe more in depth, Maths and AI.",
|
||||
"projects": {
|
||||
"main": "A selection of my projects developed in R, Python, and web development, covering diverse areas such as data analysis, machine learning, and web applications. These projects highlight my skills in coding, problem-solving, and solution design. {space}Here, I present the three projects I am most proud of, but you can explore all my projects directly in the {projects} page.",
|
||||
"link": "Projects"
|
||||
},
|
||||
"writings": {
|
||||
"main": "I share my reflections on mathematics, artificial intelligence, development and my passions, by organizing them to follow the evolution of my ideas and projects. {space}Here you will find the two most recent articles, but all my writings are accessible in the {writings} page, to explore my universe more in depth, Maths and AI.",
|
||||
"link": "Articles"
|
||||
},
|
||||
"hobbies": "Outside of programming and my technical projects, I dedicate much of my free time to my passions: sports, music, traveling, and spending time with friends. Sports teach me discipline and perseverance, music fuels my creativity, and traveling opens me up to new cultures and ways of thinking, which also nurtures my intellectual curiosity.\nThese passions help me maintain balance and strengthen the qualities I bring to both my studies and my career: curiosity, commitment, autonomy, and a constant desire to improve. They make me someone who is motivated, adaptable, and always ready to take on new challenges."
|
||||
},
|
||||
"error": {
|
||||
@@ -204,5 +214,13 @@
|
||||
},
|
||||
"canva": {
|
||||
"title": "Loading the canva ..."
|
||||
},
|
||||
"writings": {
|
||||
"description": "All my reflections on programming, mathematics, the conception of artificial intelligence, etc., are put in chronological order.",
|
||||
"title": "Writings on math, artificial intelligence, development, and my passions."
|
||||
},
|
||||
"projects": {
|
||||
"description": "A collection of my projects using R, Python, or web development technologies. These projects span various domains, including data analysis, machine learning, and web applications, showcasing my skills in coding, problem-solving, and project development.",
|
||||
"title": "All my projects I have worked on, both academic and personal"
|
||||
}
|
||||
}
|
||||
|
||||
208
locales/es.json
208
locales/es.json
@@ -1,208 +1,6 @@
|
||||
{
|
||||
"main": {
|
||||
"question": "¡Genial! Háblame un poco más sobre ti.",
|
||||
"about": "Soy estudiante de Matemáticas y Estadísticas en la Universidad Paris-Dauphine en Francia. Con una comprensión profunda de las tecnologías emergentes, estoy en el corazón de un campo en rápida expansión. Mi formación en matemáticas me da una ventaja para comprender los conceptos y teorías detrás de estas tecnologías y para diseñarlas de manera efectiva.",
|
||||
"powered": "Impulsado por Nuxt"
|
||||
},
|
||||
"palette": {
|
||||
"clear": {
|
||||
"cancel": "Cancelar",
|
||||
"submit": "Eliminar",
|
||||
"title": "¿Estás seguro de que deseas eliminar esta conversación?",
|
||||
"description": "Esta acción no se puede deshacer."
|
||||
},
|
||||
"cmd": {
|
||||
"placeholder": "Use las flechas para navegar entre los prefacios de inmediato. Presione Entrar para enviar el mensaje.",
|
||||
"send": "Enviar un nuevo mensaje",
|
||||
"sending": "Enviando...",
|
||||
"chat": "Regresar a Artchat"
|
||||
},
|
||||
"tooltip": {
|
||||
"send": "Enviar un nuevo mensaje predefinido",
|
||||
"clear": "Eliminar todos los mensajes",
|
||||
"theme": "Cambiar el tema",
|
||||
"language": "Cambiar la language",
|
||||
"chat": "Vuelve a ArtChat para reanudar la conversación"
|
||||
}
|
||||
},
|
||||
"command": {
|
||||
"actions": "Componentes",
|
||||
"arthur": "Más sobre Arthur",
|
||||
"interface": "Cambiar la interfaz",
|
||||
"theme": {
|
||||
"label": "Cambiar tema",
|
||||
"prompt": "¿Cómo puedo cambiar el tema?"
|
||||
},
|
||||
"stats": {
|
||||
"label": "Estadística de desarrollo",
|
||||
"prompt": "¿Cómo puedo ver las estadísticas sobre Arthur?"
|
||||
},
|
||||
"weather": {
|
||||
"label": "Clima",
|
||||
"prompt": "¿Cómo puedo ver las condiciones climáticas cerca de Arthur?"
|
||||
},
|
||||
"location": {
|
||||
"label": "Ubicación",
|
||||
"prompt": "¿Cómo puedo ver la ubicación de Arthur?"
|
||||
},
|
||||
"language": {
|
||||
"label": "Cambiar idioma",
|
||||
"prompt": "¿Cómo puedo cambiar el idioma del chat?"
|
||||
},
|
||||
"activity": {
|
||||
"label": "Actividad",
|
||||
"prompt": "¿Qué estás haciendo actualmente?"
|
||||
},
|
||||
"about": {
|
||||
"label": "Sobre Arthur",
|
||||
"prompt": "Quiero que me hables de ti."
|
||||
},
|
||||
"projects": {
|
||||
"label": "Proyectos",
|
||||
"prompt": "Háblame de tus proyectos."
|
||||
},
|
||||
"writings": {
|
||||
"label": "Escritos",
|
||||
"prompt": "¿Cuáles son tus últimos artículos?"
|
||||
},
|
||||
"experiences": {
|
||||
"label": "Experiencias",
|
||||
"prompt": "¿Qué experiencias tienes en tu carrera?"
|
||||
},
|
||||
"skills": {
|
||||
"label": "Habilidades",
|
||||
"prompt": "¿Cuáles son tus habilidades?"
|
||||
},
|
||||
"status": {
|
||||
"label": "Estado del homelab",
|
||||
"prompt": "Vi que tienes un homelab, ¿está funcionando actualmente?"
|
||||
},
|
||||
"resume": {
|
||||
"label": "CV",
|
||||
"prompt": "¿Puedes enviarme tu CV?"
|
||||
},
|
||||
"contact": {
|
||||
"label": "Contacto",
|
||||
"prompt": "¿Cómo puedo contactarte?"
|
||||
},
|
||||
"hobbies": {
|
||||
"label": "Pasatiempos y pasiones",
|
||||
"prompt": "¿Cuáles son tus pasatiempos? ¿Tus pasiones? ¿Tus intereses?"
|
||||
},
|
||||
"credits": {
|
||||
"label": "Créditos",
|
||||
"prompt": "¿Cómo se ha hecho este chat?"
|
||||
},
|
||||
"hardware": {
|
||||
"label": "Hardware",
|
||||
"prompt": "¿Cómo puedo ver la configuración de hardware de Arthur?"
|
||||
},
|
||||
"homelab": {
|
||||
"label": "Cosas de Homelab",
|
||||
"prompt": "¿Cómo puedo ver el Homelab de Arthur?"
|
||||
},
|
||||
"ide": {
|
||||
"label": "IDEs y fuente",
|
||||
"prompt": "¿Cuéntame más sobre el IDE y la fuente que usa Arthur?"
|
||||
},
|
||||
"software": {
|
||||
"label": "Softwares y aplicaciones",
|
||||
"prompt": "¿Qué software y aplicaciones usa Arthur?"
|
||||
}
|
||||
},
|
||||
"chat": {
|
||||
"state": {
|
||||
"thinking": "Pensando...",
|
||||
"fetching": "Obteniendo los datos...",
|
||||
"generating": "Generando el componente...",
|
||||
"done": "¡Hecho!",
|
||||
"checking": "Comprobación del currículum ..."
|
||||
},
|
||||
"welcome": "Bienvenido en Artchat",
|
||||
"ask": "Pregúntame cualquier cosa sobre Arthur Danjou"
|
||||
},
|
||||
"tool": {
|
||||
"language": {
|
||||
"change": "Cambiar idioma",
|
||||
"response": {
|
||||
"control": "He añadido el control de cambio de idioma arriba para que puedas cambiar directamente.",
|
||||
"choose": "Elige Inglés, Francés o Español",
|
||||
"kbd": "Presiona {kbd} en tu teclado"
|
||||
}
|
||||
},
|
||||
"activity": {
|
||||
"offline": "Ahora mismo estoy desconectado. Vuelve más tarde para ver en lo que estoy trabajando. {maths}",
|
||||
"working": "Estoy trabajando en línea. ¡Mira lo que estoy haciendo justo debajo!",
|
||||
"idling": "Estoy en reposo en mi ordenador con {editor} en segundo plano.",
|
||||
"maths": "Estoy probablemente haciendo matemáticas o durmiendo.",
|
||||
"response": "Las estadísticas son propulsadas y registradas por WakaTime.",
|
||||
"tooltip": {
|
||||
"online": "Estoy conectado 👋",
|
||||
"offline": "Estoy desconectado 🫥",
|
||||
"idling": "Estoy durmiendo 😴"
|
||||
},
|
||||
"started": "Comenzó {ago}, el {date} en {hour}",
|
||||
"secret": "Proyecto Secreto"
|
||||
},
|
||||
"location": "Actualmente estoy basado en {location}. Consulta más detalles a continuación.",
|
||||
"contact": "Existen diferentes formas de contactarme. Aquí hay una lista:",
|
||||
"duplicated": {
|
||||
"title": "⚠️ He detectado mensajes duplicados",
|
||||
"description": "Por lo tanto, eliminé los mensajes duplicados más antiguos para aligerar la aplicación."
|
||||
},
|
||||
"stats": {
|
||||
"main": "Recopilo datos desde hace {time} años, empecé el {date}. He programado durante un total de {hours} horas.",
|
||||
"editors": "Mis mejores editores son {editors}.",
|
||||
"os": "Mi mejor OS es {os}.",
|
||||
"languages": "Mis lenguajes favoritos son {languages}.",
|
||||
"separator": " y ",
|
||||
"tooltip": {
|
||||
"date": "hace tato tiempo…🫣",
|
||||
"hours": "es mucho 😮"
|
||||
}
|
||||
},
|
||||
"theme": {
|
||||
"switch": "Cambiar tema",
|
||||
"light": "Claro",
|
||||
"dark": "Oscuro",
|
||||
"response": {
|
||||
"control": "He añadido el control de alternancia de tema arriba para que puedas cambiar directamente.",
|
||||
"choose": "Elige Claro (icono de sol) u Oscuro (icono de luna)",
|
||||
"kbd": "Presiona {kbd} en tu teclado"
|
||||
}
|
||||
},
|
||||
"weather": {
|
||||
"main": "Tiempo",
|
||||
"powered_by": "Impulsado por OpenWeatherMap",
|
||||
"low": "Bajo",
|
||||
"high": "Alto",
|
||||
"humidity": "Humedad",
|
||||
"wind": "Viento"
|
||||
},
|
||||
"writings": "Comparto mis reflexiones sobre matemáticas, inteligencia artificial, desarrollo y mis pasiones, organizándolas para seguir la evolución de mis ideas y proyectos. {space}Aquí encontrará los dos artículos más recientes, pero todos mis escritos son accesibles en el {canva}, para explorar mi universo más en profundidad, matemáticas y IA.",
|
||||
"projects": "Una selección de mis proyectos realizados en R, Python y desarrollo web, que abarcan áreas diversas como el análisis de datos, el aprendizaje automático y las aplicaciones web. Estos proyectos destacan mis habilidades en programación, resolución de problemas y diseño de soluciones. {space}Aquí presento los tres proyectos de los que estoy más orgulloso, pero puedes consultar todos mis proyectos directamente en el {canva}.",
|
||||
"hobbies": "Además de la programación y mis proyectos técnicos, dedico una gran parte de mi tiempo libre a mis pasiones: deporte, música, viajes y momentos compartidos con amigos. El deporte me trae rigor y perseverancia, la música estimula mi creatividad y el viaje me abre a otras culturas, a otras formas de pensar, lo que también nutre mi curiosidad intelectual. Estas pasiones me ayudan a mantener un buen equilibrio y fortalecer las cualidades que movilizo en mis estudios y en mi carrera: curiosidad, compromiso, autonomía y voluntad constante para progresar. Me hacen alguien motivado, adaptable y siempre listo para asumir nuevos desafíos."
|
||||
},
|
||||
"error": {
|
||||
"main": "Creo que estás perdido, volvamos a la",
|
||||
"redirect": "página de inicio"
|
||||
},
|
||||
"skills": {
|
||||
"main": "Como ingeniero de software y estudiante de matemáticas, combino el rigor científico con el pragmatismo técnico para diseñar soluciones adaptadas a los desafíos de proyectos de datos y matemáticos. Mi enfoque se centra en una comprensión profunda de las necesidades, desde la preparación de datos hasta su implementación, pasando por la modelización y la optimización del rendimiento.Apasionado por la inteligencia artificial y la ciencia de datos, me esfuerzo por equilibrar la innovación con la robustez estadística. Siempre en busca de aprendizaje, exploro tanto los avances tecnológicos como los retos emprendedores o financieros. Curioso y entusiasta, disfruto compartiendo conocimientos y descubriendo nuevos conceptos, ya sean teoremas o tecnologías emergentes."
|
||||
},
|
||||
"post": {
|
||||
"footer": {
|
||||
"thanks": "¡Gracias por leer! Me llamo {name} y me encanta escribir sobre inteligencia artificial, ciencia de datos y todo lo que se encuentra en la intersección entre las matemáticas y la programación. {jump} Llevo años programando y explorando las matemáticas, y cada día aprendo algo nuevo — ya sea autoalojando herramientas en mi homelab, experimentando con modelos de aprendizaje automático o profundizando en métodos estadísticos. {jump} Comparto mis conocimientos aquí porque sé lo valiosos que pueden ser los recursos claros, prácticos y accesibles, especialmente cuando uno está empezando o explorando temas técnicos en profundidad. {jump} Si tienes alguna pregunta o simplemente quieres charlar, no dudes en dejar un comentario abajo o contactarme por {linkedin} o {github}. {jump} Espero que este artículo te haya gustado y que hayas aprendido algo útil. Si es así, {comment} — ¡me ayuda mucho y significa mucho para mí!",
|
||||
"comment": "considera compartirlo"
|
||||
},
|
||||
"link": {
|
||||
"copied": "Link copiado",
|
||||
"copy": "Copiar link"
|
||||
},
|
||||
"top": "Ir arriba"
|
||||
},
|
||||
"alert": "Por falta de tiempo, no tuve tiempo para traducir este contenido al francés. Gracias por su comprensión.",
|
||||
"canva": {
|
||||
"title": "Cargando el lienzo ..."
|
||||
"projects": {
|
||||
"description": "Una colección de mis proyectos realizados en R, Python o tecnologías de desarrollo web. Estos proyectos abarcan diversos campos, como análisis de datos, aprendizaje automático y aplicaciones web, mostrando mis habilidades en programación, resolución de problemas y desarrollo de proyectos.",
|
||||
"title": "Todos mis proyectos en los que he trabajado, académicos y personales"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"main": {
|
||||
"question": "Génial ! Parle moi un peu plus de toi.",
|
||||
"about": "Je suis étudiant en Mathématiques et en Statistiques à l'Université Paris-Dauphine en France. Avec une compréhension approfondie des technologies émergentes, je suis au cœur d'un domaine en pleine expansion. Mon parcours en mathématiques me donne un avantage pour comprendre les concepts et les théories derrière ces technologies et pour les concevoir efficacement.",
|
||||
"about": "Je suis étudiant en Mathématiques et en Statistiques à l'Université Paris-Dauphine en France. Avec une compréhension approfondie des technologies émergentes, je suis au cœur d'un domaine en pleine expansion. Mon parcours en mathématiques me donne un avantage pour comprendre les concepts et les théories derrière ces technologies et pour les concevoir efficacement. {space} Accédez directement aux autres pages: {links}",
|
||||
"powered": "Propulsé par Nuxt"
|
||||
},
|
||||
"palette": {
|
||||
@@ -15,14 +15,18 @@
|
||||
"placeholder": "Utilisez les flèches pour naviguer parmi les prompts préfaits. Appuyez sur Entrer pour envoyer le message.",
|
||||
"send": "Envoyer un nouveau message",
|
||||
"sending": "Envoi en cours...",
|
||||
"chat": "Retourner sur ArtChat"
|
||||
"chat": "ArtChat",
|
||||
"writings": "Voir les articles",
|
||||
"projects": "Voir les projets"
|
||||
},
|
||||
"tooltip": {
|
||||
"send": "Envoyer un nouveau message prédéfini",
|
||||
"clear": "Supprimer tous les messages",
|
||||
"theme": "Changer le thème",
|
||||
"language": "Changer la langue",
|
||||
"chat": "Retourner sur ArtChat pour reprendre la conversation"
|
||||
"chat": "Retourner sur ArtChat pour reprendre la conversation",
|
||||
"writings": "Lire plus d'articles",
|
||||
"projects": "Découvrir les autres projets"
|
||||
}
|
||||
},
|
||||
"command": {
|
||||
@@ -179,8 +183,14 @@
|
||||
"humidity": "Humidité",
|
||||
"wind": "Vent"
|
||||
},
|
||||
"projects": "Une sélection de mes projets réalisés en R, Python et développement web, couvrant des domaines variés comme l'analyse de données, l'apprentissage automatique et les applications web. Ces projets mettent en lumière mes compétences en codage, résolution de problèmes et conception de solutions. {space} Ici, je présente les trois projets dont je suis le plus fier, mais vous pouvez découvrir tous mes projets directement sur le {canva}.",
|
||||
"writings": "Je partage mes réflexions sur les mathématiques, l’intelligence artificielle, le développement et mes passions, en les organisant pour suivre l’évolution de mes idées et projets. {space}Ici, vous trouverez les deux articles les plus récents, mais tous mes écrits sont accessibles sur le {canva}, pour explorer plus en profondeur mon univers entre code, maths et IA.",
|
||||
"projects": {
|
||||
"main": "Une sélection de mes projets réalisés en R, Python et développement web, couvrant des domaines variés comme l'analyse de données, l'apprentissage automatique et les applications web. Ces projets mettent en lumière mes compétences en codage, résolution de problèmes et conception de solutions. {space} Ici, je présente les trois projets dont je suis le plus fier, mais vous pouvez découvrir tous mes projets directement sur la page des {projects}.",
|
||||
"link": "Projets"
|
||||
},
|
||||
"writings": {
|
||||
"main": "Je partage mes réflexions sur les mathématiques, l'intelligence artificielle, le développement et mes passions, en les organisant pour suivre l’évolution de mes idées et projets. {space}Ici, vous trouverez les deux articles les plus récents, mais tous mes écrits sont accessibles sur la page des {writings}, pour explorer plus en profondeur mon univers entre code, maths et IA.",
|
||||
"link": "Articles"
|
||||
},
|
||||
"hobbies": "En dehors de la programmation et de mes projets techniques, je consacre une grande partie de mon temps libre à mes passions : le sport, la musique, les voyages et les moments partagés entre amis. Le sport m'apporte rigueur et persévérance, la musique stimule ma créativité, et voyager m'ouvre à d'autres cultures, à d'autres façons de penser, ce qui nourrit aussi ma curiosité intellectuelle. Ces passions m'aident à garder un bon équilibre et renforcent les qualités que je mobilise dans mes études et ma carrière: curiosité, engagement, autonomie et volonté constante de progresser. Elles font de moi quelqu'un de motivé, adaptable, et toujours prêt à relever de nouveaux défis."
|
||||
},
|
||||
"error": {
|
||||
@@ -188,7 +198,7 @@
|
||||
"redirect": "page d'accueil"
|
||||
},
|
||||
"skills": {
|
||||
"main": "En tant qu’ingénieur logiciel et étudiant en mathématiques, j’allie rigueur scientifique et pragmatisme technique pour concevoir des solutions adaptées aux enjeux des projets data et mathématiques. Mon approche repose sur une compréhension approfondie des besoins, de la préparation des données à la mise en production, en passant par la modélisation et l’optimisation des performances. Passionné par l’intelligence artificielle et la data science, je m’attache à concilier innovation et robustesse statistique. Toujours en quête d’apprentissage, je m’intéresse autant aux avancées technologiques qu’aux défis entrepreneuriaux ou financiers. Curieux et enthousiaste, j’aime partager mes connaissances et explorer de nouveaux concepts, qu’il s’agisse de théorèmes ou de technologies émergentes."
|
||||
"main": "En tant qu'ingénieur logiciel et étudiant en mathématiques, j'allie rigueur scientifique et pragmatisme technique pour concevoir des solutions adaptées aux enjeux des projets data et mathématiques. Mon approche repose sur une compréhension approfondie des besoins, de la préparation des données à la mise en production, en passant par la modélisation et l’optimisation des performances. Passionné par l’intelligence artificielle et la data science, je m’attache à concilier innovation et robustesse statistique. Toujours en quête d’apprentissage, je m’intéresse autant aux avancées technologiques qu’aux défis entrepreneuriaux ou financiers. Curieux et enthousiaste, j’aime partager mes connaissances et explorer de nouveaux concepts, qu’il s’agisse de théorèmes ou de technologies émergentes."
|
||||
},
|
||||
"alert": "Par manque de temps, je n'ai pas eu le temps de traduire ce contenu en français. Merci de votre compréhension.",
|
||||
"post": {
|
||||
@@ -204,5 +214,13 @@
|
||||
},
|
||||
"canva": {
|
||||
"title": "Chargement du canva..."
|
||||
},
|
||||
"writings": {
|
||||
"description": "Toutes mes réflexions sur la programmation, les mathématiques, la conception de l'intelligence artificielle, etc., sont mises en ordre chronologique.",
|
||||
"title": "Écrits sur les maths, l'intelligence artificielle, le développement et mes passions."
|
||||
},
|
||||
"projects": {
|
||||
"description": "Une collection de mes projets réalisés en R, Python, ou en développement web. Ces projets couvrent divers domaines, y compris l'analyse de données, l'apprentissage automatique et les applications web, mettant en avant mes compétences en codage, résolution de problèmes et développement de projets.",
|
||||
"title": "Tous mes projets auxquels j'ai travaillé, académiques et personnels"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user