diff --git a/src/i18n.ts b/src/i18n.ts index e87ccae..f96f7e6 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -8,6 +8,7 @@ import soft_skills from './pages/cv/data/soft_skills'; import summary from './pages/cv/data/summary'; import info from './pages/cv/data/info'; import tech_skills from './pages/cv/data/tech_skills'; +import publications from './pages/cv/data/publications'; i18n.use(initReactI18next).init({ resources: { @@ -36,6 +37,11 @@ i18n.use(initReactI18next).init({ content: projects.en, }, + publications: { + title: 'Publications', + content: publications.en, + }, + tech_skills: { title: 'Technical skills', languages: 'Programming languages', @@ -98,6 +104,11 @@ i18n.use(initReactI18next).init({ content: education.ru, }, + publications: { + title: 'Публикации', + content: publications.ru, + }, + languages: { title: 'Языки', content: languages.ru, diff --git a/src/pages/cv/CVDocument.tsx b/src/pages/cv/CVDocument.tsx index db1eae2..ce0a7e5 100644 --- a/src/pages/cv/CVDocument.tsx +++ b/src/pages/cv/CVDocument.tsx @@ -32,6 +32,7 @@ import type { LanguageProficiency } from './data/languages'; import type { WorkEntryId, WorkExperience } from './data/work'; import type { Education, EducationId } from './data/education'; import type { ProgrammingLanguageId, TechSkillId } from './data/tech_skills'; +import { Publication, PublicationId } from './data/publications'; const CVDocument = () => { const [allTags, setTags] = useState>(new Set(['Frontend', 'Backend'])); @@ -163,7 +164,7 @@ const CVDocument = () => { ).map(([id, project]) => ( - + {project.name} @@ -178,6 +179,28 @@ const CVDocument = () => { ))} +
+ + {Object.entries( + t('sections.publications.content', { returnObjects: true }) as Record< + PublicationId, + Publication + >, + ).map(([id, publication]) => ( + + + + + {publication.name} + + + {publication.type} + {publication.date} + + + ))} + +
diff --git a/src/pages/cv/data/publications.ts b/src/pages/cv/data/publications.ts new file mode 100644 index 0000000..ecf2722 --- /dev/null +++ b/src/pages/cv/data/publications.ts @@ -0,0 +1,31 @@ +import merge from './merge'; + +export interface Publication { + name: string; + type: string; + date: string; + url: string; +} + +const publication_ids = ['kiosk'] as const; +export type PublicationId = (typeof publication_ids)[number]; + +const publications = merge({ + en: { + kiosk: { + name: 'Development of software for an interactive information kiosk', + url: 'https://dx.doi.org/10.13140/RG.2.2.24800.25609', + type: "Bachelor's Thesis", + date: 'July 2023', + }, + }, + ru: { + kiosk: { + name: 'Разработка программного обеспечения для информационного киоска', + type: 'Бакалаврская работа', + date: 'Июль 2023', + }, + }, +}); + +export default publications;