From 9acfdafc2e15fbcf12bcb2615182fb1c91bcab49 Mon Sep 17 00:00:00 2001
From: Ilya Y <75578537+ilya-bkv@users.noreply.github.com>
Date: Wed, 13 Dec 2023 13:39:31 +0300
Subject: [PATCH] Feature/og meta tags (#329)
Add SEO metatags
---
package-lock.json | 32 +-
package.json | 4 +-
public/locales/en/translation.json | 39 +-
public/locales/ru/translation.json | 37 +-
public/robots.txt | 2 +-
src/components/Article/FullArticle.tsx | 26 +-
src/components/Discours/Footer.tsx | 4 +-
.../Feed/ArticleCard/ArticleCard.tsx | 5 +-
.../Feed/Sidebar/Sidebar.module.scss | 15 +-
.../Nav/ConfirmModal/ConfirmModal.module.scss | 1 +
.../ProfileSettings/ProfileSettings.tsx | 2 +-
src/components/Topic/Card.tsx | 2 +-
src/components/Views/AllAuthors.tsx | 205 ++++----
src/components/Views/AllTopics.tsx | 190 +++----
src/components/Views/Author/Author.tsx | 18 +
src/components/Views/Feed.tsx | 20 +
.../ProfileSubscriptions.tsx | 2 +-
src/components/Views/StaticPage.tsx | 13 +-
src/components/Views/Topic.tsx | 198 ++++----
.../_shared/SolidSwiper/ImageSwiper.tsx | 2 +-
.../_shared/SolidSwiper/Swiper.module.scss | 1 +
src/context/profile.tsx | 2 +-
src/pages/about/discussionRules.page.tsx | 211 ++++----
src/pages/about/dogma.page.tsx | 109 ++--
src/pages/about/guide.page.tsx | 394 ++++++++-------
src/pages/about/help.page.tsx | 220 ++++----
src/pages/about/manifest.page.tsx | 265 +++++-----
src/pages/about/partners.page.tsx | 24 +-
src/pages/about/principles.page.tsx | 325 ++++++------
src/pages/about/termsOfUse.page.tsx | 476 ++++++++----------
src/pages/about/thanks.page.tsx | 112 +++--
src/pages/allAuthors.page.tsx | 7 +-
src/pages/allTopics.page.tsx | 9 +-
src/pages/author.page.tsx | 1 +
src/pages/create.page.tsx | 17 +-
src/pages/topic.page.tsx | 25 +-
src/utils/meta.ts | 20 +-
37 files changed, 1645 insertions(+), 1390 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index b1e5a7ef..7f88e173 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -105,7 +105,7 @@
"prosemirror-view": "1.30.2",
"rollup": "3.21.6",
"sass": "1.69.5",
- "solid-js": "1.8.5",
+ "solid-js": "1.8.7",
"solid-popper": "0.3.0",
"solid-tiptap": "0.6.0",
"solid-transition-group": "0.2.3",
@@ -120,7 +120,7 @@
"typescript": "5.2.2",
"typograf": "7.1.0",
"uniqolor": "1.1.0",
- "vike": "0.4.146",
+ "vike": "0.4.148",
"vite": "4.5.0",
"vite-plugin-mkcert": "1.16.0",
"vite-plugin-sass-dts": "1.3.11",
@@ -1434,9 +1434,9 @@
"dev": true
},
"node_modules/@brillout/picocolors": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/@brillout/picocolors/-/picocolors-1.0.9.tgz",
- "integrity": "sha512-Lt/W5JsA75hcDJ2cOAlE4TqSMl6c9K+rXGRo/cU2fApnmhbRcNdkR4UHQDAwtWfZyUKWaxdwSui+jp+74J1pZg==",
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/@brillout/picocolors/-/picocolors-1.0.10.tgz",
+ "integrity": "sha512-dh+JJlsBf3QYX+91Ezma8RLKNOjGDoBBmORv/NzRpQuasdyzwQCMXGGjsDu12ZhGz92TqQbL9pv79rvbheI21A==",
"dev": true
},
"node_modules/@brillout/require-shim": {
@@ -16994,9 +16994,9 @@
}
},
"node_modules/seroval": {
- "version": "0.12.3",
- "resolved": "https://registry.npmjs.org/seroval/-/seroval-0.12.3.tgz",
- "integrity": "sha512-5WDeMpv7rmEylsypRj1iwRVHE/QLsMLiZ+9savlNNQEVdgGia1iRMb7qyaAagY0wu/7+QTe6d2wldk/lgaLb6g==",
+ "version": "0.15.1",
+ "resolved": "https://registry.npmjs.org/seroval/-/seroval-0.15.1.tgz",
+ "integrity": "sha512-OPVtf0qmeC7RW+ScVX+7aOS+xoIM7pWcZ0jOWg2aTZigCydgRB04adfteBRbecZnnrO1WuGQ+C3tLeBBzX2zSQ==",
"dev": true,
"engines": {
"node": ">=10"
@@ -17186,13 +17186,13 @@
}
},
"node_modules/solid-js": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.5.tgz",
- "integrity": "sha512-xvtJvzJzWbsn35oKFhW9kNwaxG1Z/YLMsDp4tLVcYZTMPzvzQ8vEZuyDQ6nt7xDArVgZJ7TUFrJUwrui/oq53A==",
+ "version": "1.8.7",
+ "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.7.tgz",
+ "integrity": "sha512-9dzrSVieh2zj3SnJ02II6xZkonR6c+j/91b7XZUNcC6xSaldlqjjGh98F1fk5cRJ8ZTkzqF5fPIWDxEOs6QZXA==",
"dev": true,
"dependencies": {
"csstype": "^3.1.0",
- "seroval": "^0.12.0"
+ "seroval": "^0.15.1"
}
},
"node_modules/solid-popper": {
@@ -18596,14 +18596,14 @@
}
},
"node_modules/vike": {
- "version": "0.4.146",
- "resolved": "https://registry.npmjs.org/vike/-/vike-0.4.146.tgz",
- "integrity": "sha512-1vaktcDy/eitSzVaUppKJWu+6vfwxKC4kV6uzAqj3RIK+WgteH3vF6IMZ0jnjjzCpeDRCIByN8PF4c0CtzRfHA==",
+ "version": "0.4.148",
+ "resolved": "https://registry.npmjs.org/vike/-/vike-0.4.148.tgz",
+ "integrity": "sha512-2KkrY6zB+fTVwQzzcr5zAxpIT2buezDcUP5u4oFzDdxhqcV7r5CGq2PWQ3/ALA8jP/Agz0ZdiMbXUNGJFI+uVw==",
"dev": true,
"dependencies": {
"@brillout/import": "0.2.3",
"@brillout/json-serializer": "^0.5.8",
- "@brillout/picocolors": "^1.0.9",
+ "@brillout/picocolors": "^1.0.10",
"@brillout/require-shim": "^0.1.2",
"@brillout/vite-plugin-import-build": "^0.2.20",
"acorn": "^8.8.2",
diff --git a/package.json b/package.json
index 3ce3e90e..52328787 100644
--- a/package.json
+++ b/package.json
@@ -126,7 +126,7 @@
"prosemirror-view": "1.30.2",
"rollup": "3.21.6",
"sass": "1.69.5",
- "solid-js": "1.8.5",
+ "solid-js": "1.8.7",
"solid-popper": "0.3.0",
"solid-tiptap": "0.6.0",
"solid-transition-group": "0.2.3",
@@ -141,7 +141,7 @@
"typescript": "5.2.2",
"typograf": "7.1.0",
"uniqolor": "1.1.0",
- "vike": "0.4.146",
+ "vike": "0.4.148",
"vite": "4.5.0",
"vite-plugin-mkcert": "1.16.0",
"vite-plugin-sass-dts": "1.3.11",
diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json
index d93d00b4..ee37c254 100644
--- a/public/locales/en/translation.json
+++ b/public/locales/en/translation.json
@@ -1,4 +1,5 @@
{
+ "A guide to horizontal editorial: how an open journal works": "A guide to horizontal editorial: how an open journal works",
"About": "About",
"About the project": "About the project",
"Add a few topics so that the reader knows what your content is about and can find it on pages of topics that interest them. Topics can be swapped, the first topic becomes the title": "Add a few topics so that the reader knows what your content is about and can find it on pages of topics that interest them. Topics can be swapped, the first topic becomes the title",
@@ -17,7 +18,7 @@
"Add signature": "Add signature",
"Add subtitle": "Add subtitle",
"Add url": "Add url",
- "Address on Discourse": "Address on Discourse",
+ "Address on Discours": "Address on Discours",
"Album name": "Название aльбома",
"Alignment center": "Alignment center",
"Alignment left": "Alignment left",
@@ -71,8 +72,11 @@
"Comment successfully deleted": "Comment successfully deleted",
"Comments": "Comments",
"Communities": "Communities",
+ "Community Discussion Rules": "Community Discussion Rules",
"Community Principles": "Community Principles",
+ "Community values and rules of engagement for the open editorial team": "Community values and rules of engagement for the open editorial team",
"Confirm": "Confirm",
+ "Contribute to free samizdat. Support Discours - an independent non-profit publication that works only for you. Become a pillar of the open newsroom": "Contribute to free samizdat. Support Discours - an independent non-profit publication that works only for you. Become a pillar of the open newsroom",
"Cooperate": "Cooperate",
"Copy": "Copy",
"Copy link": "Copy link",
@@ -97,11 +101,13 @@
"Delete userpic": "Delete userpic",
"Description": "Description",
"Discours": "Discours",
+ "Discours Manifest": "Discours Manifest",
+ "Discours Partners": "Discours Partners",
"Discours is an intellectual environment, a web space and tools that allows authors to collaborate with readers and come together to co-create publications and media projects": "Discours is an intellectual environment, a web space and tools that allows authors to collaborate with readers and come together to co-create publications and media projects.
We are convinced that one voice is good, but many is better. We create the most amazing stories together",
"Discours is created with our common effort": "Discours exists because of our common effort",
+ "Discours – an open magazine about culture, science and society": "Discours – an open magazine about culture, science and society",
"Discussing": "Discussing",
"Discussion rules": "Discussion rules",
- "Discussion rules in social networks": "Discussion rules",
"Discussions": "Discussions",
"Do you really want to reset all changes?": "Do you really want to reset all changes?",
"Dogma": "Dogma",
@@ -152,7 +158,7 @@
"Help": "Помощь",
"Help to edit": "Help to edit",
"Here you can customize your profile the way you want.": "Here you can customize your profile the way you want.",
- "Here you can manage all your Discourse subscriptions": "Here you can manage all your Discourse subscriptions",
+ "Here you can manage all your Discours subscriptions": "Here you can manage all your Discours subscriptions",
"Here you can upload your photo": "Here you can upload your photo",
"Hide table of contents": "Hide table of contents",
"Highlight": "Highlight",
@@ -160,11 +166,13 @@
"Horizontal collaborative journalistic platform": "Horizontal collaborative journalism platform",
"Hot topics": "Hot topics",
"Hotkeys": "Горячие клавиши",
+ "How Discours works": "How Discours works",
"How can I help/skills": "How can I help/skills",
"How it works": "How it works",
"How to help": "How to help?",
"How to write a good article": "Как написать хорошую статью",
"How to write an article": "How to write an article",
+ "Hundreds of people from different countries and cities share their knowledge and art on the Discours. Join us!": "Hundreds of people from different countries and cities share their knowledge and art on the Discours. Join us!",
"I have an account": "I have an account!",
"I have no account yet": "I don't have an account yet",
"I know the password": "I know the password",
@@ -173,6 +181,7 @@
"Inbox": "Inbox",
"Incut": "Incut",
"Independant magazine with an open horizontal cooperation about culture, science and society": "Independant magazine with an open horizontal cooperation about culture, science and society",
+ "Independent media project about culture, science, art and society with horizontal editing": "Independent media project about culture, science, art and society with horizontal editing",
"Insert footnote": "Insert footnote",
"Insert video link": "Insert video link",
"Interview": "Interview",
@@ -195,13 +204,14 @@
"Let's log in": "Let's log in",
"Link copied": "Link copied",
"Link sent, check your email": "Link sent, check your email",
+ "List of authors of the open editorial community": "List of authors of the open editorial community",
"Lists": "Lists",
"Literature": "Literature",
"Load more": "Show more",
"Loading": "Loading",
"Logout": "Logout",
"Looks like you forgot to upload the video": "Looks like you forgot to upload the video",
- "Manifest": "Manifest",
+ "Manifest of samizdat: principles and mission of an open magazine with a horizontal editorial board": "Manifest of samizdat: principles and mission of an open magazine with a horizontal editorial board",
"Manifesto": "Manifesto",
"Many files, choose only one": "Many files, choose only one",
"Mark as read": "Mark as read",
@@ -236,6 +246,7 @@
"Ordered list": "Ordered list",
"Our regular contributor": "Our regular contributor",
"Paragraphs": "Абзацев",
+ "Participate in the Discours: share information, join the editorial team": "Участвуйте в Дискурсе: делитесь информацией, присоединяйтесь к редакции",
"Participating": "Participating",
"Participation": "Participation",
"Partners": "Partners",
@@ -261,6 +272,7 @@
"Popular": "Popular",
"Popular authors": "Popular authors",
"Principles": "Community principles",
+ "Professional principles that the open editorial team follows in its work": "Professional principles that the open editorial team follows in its work",
"Profile": "Profile",
"Profile settings": "Profile settings",
"Publications": "Publications",
@@ -281,6 +293,7 @@
"Required": "Required",
"Resend code": "Send confirmation",
"Restore password": "Restore password",
+ "Rules of the journal Discours": "Rules of the journal Discours",
"Save draft": "Save draft",
"Save settings": "Save settings",
"Saving...": "Saving...",
@@ -291,6 +304,7 @@
"Sections": "Sections",
"Security": "Security",
"Select": "Select",
+ "Self-publishing exists thanks to the help of wonderful people from all over the world. Thank you!": "Samizdat exists thanks to the help of wonderful people from all over the world. Thank you!",
"Send": "Send",
"Send link again": "Send link again",
"Settings": "Settings",
@@ -325,12 +339,17 @@
"Success": "Success",
"Successfully authorized": "Authorization successful",
"Suggest an idea": "Suggest an idea",
+ "Support Discours": "Support Discours",
"Support the project": "Support the project",
- "Support us": "Help the magazine",
"Terms of use": "Site rules",
"Text checking": "Text checking",
"Thank you": "Thank you",
+ "Thank you!": "Thank you!",
"The address is already taken": "The address is already taken",
+ "The most interesting publications on the topic": "The most interesting publications on the topic {topicName}",
+ "Thematic table of contents of the magazine. Here you can find all the topics that community authors have written about.": "Thematic table of contents of the magazine. Here you can find all the topics that community authors have written about.",
+ "Thematic table of contents of the magazine. Here you can find all the topics that the community authors wrote about": "Thematic table of contents of the magazine. Here you can find all the topics that the community authors wrote about",
+ "Themes and plots": "Themes and plots",
"Theory": "Theory",
"There are unsaved changes in your profile settings. Are you sure you want to leave the page without saving?": "There are unsaved changes in your profile settings. Are you sure you want to leave the page without saving?",
"There are unsaved changes in your publishing settings. Are you sure you want to leave the page without saving?": "There are unsaved changes in your publishing settings. Are you sure you want to leave the page without saving?",
@@ -379,8 +398,9 @@
"Welcome to Discours to subscribe to new publications": "Welcome to Discours to subscribe to new publications",
"Welcome to Discours to vote": "Welcome to Discours to vote",
"Where": "From",
+ "Why you can earn a hole in your karma and how to receive rays of gratitude for your contribution to discussions in samizdat communities": "Why you can earn a hole in your karma and how to receive rays of gratitude for your contribution to discussions in samizdat communities",
"Words": "Слов",
- "Work with us": "Cooperate with Discourse",
+ "Work with us": "Cooperate with Discours",
"Write a comment...": "Write a comment...",
"Write a short introduction": "Write a short introduction",
"Write about the topic": "Write about the topic",
@@ -411,7 +431,8 @@
"community": "community",
"contents": "contents",
"delimiter": "delimiter",
- "discussion": "discourse",
+ "discussion": "Discours",
+ "dogma keywords": "Discours.io, dogma, editorial principles, code of ethics, journalism, community",
"drafts": "drafts",
"earlier": "earlier",
"email not confirmed": "email not confirmed",
@@ -427,6 +448,7 @@
"italic": "italic",
"journal": "journal",
"jpg, .png, max. 10 mb.": "jpg, .png, макс. 10 мб.",
+ "keywords": "Discours.io, Discours magazine, Discours, culture, science, art, society, independent journalism, literature, music, cinema, video, photography",
"literature": "literature",
"marker list": "marker list",
"min. 1400×1400 pix": "мин. 1400×1400 пикс.",
@@ -436,6 +458,7 @@
"or sign in with social networks": "or sign in with social networks",
"personal data usage and email notifications": "to process personal data and receive email notifications",
"post": "post",
+ "principles keywords": "Discours.io, communities, values, editorial rules, polyphony, creation",
"register": "register",
"repeat": "repeat",
"shout": "post",
@@ -450,7 +473,9 @@
"subscription_rp": "subscription",
"subscriptions": "subscriptions",
"terms of use": "terms of use",
+ "terms of use keywords": "Discours.io, site rules, terms of use",
"today": "today",
+ "topicKeywords": "{topic}, Discours.io, articles, journalism, research",
"topics": "topics",
"user already exist": "user already exists",
"video": "video",
diff --git a/public/locales/ru/translation.json b/public/locales/ru/translation.json
index edecc10d..560ff2b6 100644
--- a/public/locales/ru/translation.json
+++ b/public/locales/ru/translation.json
@@ -1,4 +1,5 @@
{
+ "A guide to horizontal editorial: how an open journal works": "Гид по горизонтальной редакции: как работает открытый журнал",
"A short introduction to keep the reader interested": "Добавьте вступление, чтобы заинтересовать читателя",
"About": "О себе",
"About the project": "О проекте",
@@ -19,7 +20,7 @@
"Add subtitle": "Добавить подзаголовок",
"Add to bookmarks": "Добавить в закладки",
"Add url": "Добавить ссылку",
- "Address on Discourse": "Адрес на Дискурсе",
+ "Address on Discours": "Адрес на Дискурсе",
"Album name": "Название альбома",
"Alignment center": "По центру",
"Alignment left": "По левому краю",
@@ -75,8 +76,11 @@
"Comment successfully deleted": "Комментарий успешно удален",
"Comments": "Комментарии",
"Communities": "Сообщества",
+ "Community Discussion Rules": "Правила дискуссий в сообществе",
"Community Principles": "Принципы сообщества",
+ "Community values and rules of engagement for the open editorial team": "Ценности сообщества и правила взаимодействия открытой редакции",
"Confirm": "Подтвердить",
+ "Contribute to free samizdat. Support Discours - an independent non-profit publication that works only for you. Become a pillar of the open newsroom": "Внесите вклад в свободный самиздат. Поддержите Дискурс — независимое некоммерческое издание, которое работает только для вас. Станьте опорой открытой редакции",
"Cooperate": "Соучаствовать",
"Copy": "Скопировать",
"Copy link": "Скопировать ссылку",
@@ -101,11 +105,14 @@
"Delete userpic": "Удалить аватар",
"Description": "Описание",
"Discours": "Дискурс",
+ "Discours Manifest": "Манифест Дискурса",
+ "Discours Partners": "Партнеры Дискурса",
"Discours is an intellectual environment, a web space and tools that allows authors to collaborate with readers and come together to co-create publications and media projects": "Дискурс — это интеллектуальная среда, веб-пространство и инструменты, которые позволяют авторам сотрудничать с читателями и объединяться для совместного создания публикаций и медиапроектов.
Мы убеждены, один голос хорошо, а много — лучше. Самые потрясающиe истории мы создаём вместе.",
"Discours is created with our common effort": "Дискурс существует благодаря нашему общему вкладу",
+ "Discours – an open magazine about culture, science and society": "Дискурс – открытый журнал о культуре, науке и обществе",
+ "Discours_theme": "Тема дискурса",
"Discussing": "Обсуждаемое",
"Discussion rules": "Правила дискуссий",
- "Discussion rules in social networks": "Правила сообществ самиздата в соцсетях",
"Discussions": "Дискуссии",
"Do you really want to reset all changes?": "Вы действительно хотите сбросить все изменения?",
"Dogma": "Догма",
@@ -160,7 +167,7 @@
"Help": "Помощь",
"Help to edit": "Помочь редактировать",
"Here you can customize your profile the way you want.": "Здесь можно настроить свой профиль так, как вы хотите.",
- "Here you can manage all your Discourse subscriptions": "Здесь можно управлять всеми своими подписками на Дискурсе",
+ "Here you can manage all your Discours subscriptions": "Здесь можно управлять всеми своими подписками на Дискурсе",
"Here you can upload your photo": "Здесь вы можете загрузить свою фотографию",
"Hide table of contents": "Скрыть главление",
"Highlight": "Подсветка",
@@ -168,11 +175,13 @@
"Horizontal collaborative journalistic platform": "Открытая платформа
для независимой журналистики",
"Hot topics": "Горячие темы",
"Hotkeys": "Горячие клавиши",
+ "How Discours works": "Как устроен Дискурс",
"How can I help/skills": "Чем могу помочь/навыки",
"How it works": "Как это работает",
"How to help": "Как помочь?",
"How to write a good article": "Как написать хорошую статью",
"How to write an article": "Как написать статью",
+ "Hundreds of people from different countries and cities share their knowledge and art on the Discours. Join us!": "Сотни людей из разных стран и городов делятся своими знаниями и искусством на Дискурсе. Присоединяйтесь!",
"I have an account": "У меня есть аккаунт!",
"I have no account yet": "У меня еще нет аккаунта",
"I know the password": "Я знаю пароль!",
@@ -181,6 +190,7 @@
"Inbox": "Входящие",
"Incut": "Подверстка",
"Independant magazine with an open horizontal cooperation about culture, science and society": "Независимый журнал с открытой горизонтальной редакцией о культуре, науке и обществе",
+ "Independent media project about culture, science, art and society with horizontal editing": "Независимый медиапроект о культуре, науке, искусстве и обществе с горизонтальной редакцией",
"Insert footnote": "Вставить сноску",
"Insert video link": "Вставить ссылку на видео",
"Interview": "Интервью",
@@ -205,13 +215,14 @@
"Let's log in": "Давайте авторизуемся",
"Link copied": "Ссылка скопирована",
"Link sent, check your email": "Ссылка отправлена, проверьте почту",
+ "List of authors of the open editorial community": "Список авторов сообщества открытой редакции",
"Lists": "Списки",
"Literature": "Литература",
"Load more": "Показать ещё",
"Loading": "Загрузка",
"Logout": "Выход",
"Looks like you forgot to upload the video": "Похоже, что вы забыли загрузить видео",
- "Manifest": "Манифест",
+ "Manifest of samizdat: principles and mission of an open magazine with a horizontal editorial board": "Манифест самиздата: принципы и миссия открытого журнала с горизонтальной редакцией",
"Manifesto": "Манифест",
"Many files, choose only one": "Много файлов, выберете один",
"Mark as read": "Отметить прочитанным",
@@ -247,6 +258,7 @@
"Ordered list": "Нумерованный список",
"Our regular contributor": "Наш постоянный автор",
"Paragraphs": "Абзацев",
+ "Participate in the Discours: share information, join the editorial team": "Participate in the Discours: share information, join the editorial team",
"Participating": "Участвовать",
"Participation": "Соучастие",
"Partners": "Партнёры",
@@ -273,6 +285,7 @@
"Popular authors": "Популярные авторы",
"Preview": "Предпросмотр",
"Principles": "Принципы сообщества",
+ "Professional principles that the open editorial team follows in its work": "Профессиональные принципы, которым открытая редакция следует в работе",
"Profile": "Профиль",
"Profile settings": "Настройки профиля",
"Profile successfully saved": "Профиль успешно сохранён",
@@ -297,6 +310,7 @@
"Required": "Поле обязательно для заполнения",
"Resend code": "Выслать подтверждение",
"Restore password": "Восстановить пароль",
+ "Rules of the journal Discours": "Правила журнала Дискурс",
"Save": "Сохранить",
"Save draft": "Сохранить черновик",
"Save settings": "Сохранить настройки",
@@ -308,6 +322,7 @@
"Sections": "Разделы",
"Security": "Безопасность",
"Select": "Выбрать",
+ "Self-publishing exists thanks to the help of wonderful people from all over the world. Thank you!": "Самиздат существуют благодаря помощи замечательных людей со всего мира. Спасибо Вам!",
"Send": "Отправить",
"Send link again": "Прислать ссылку ещё раз",
"Settings": "Настройки",
@@ -344,12 +359,17 @@
"Success": "Успешно",
"Successfully authorized": "Авторизация успешна",
"Suggest an idea": "Предложить идею",
+ "Support Discours": "Поддержите Дискурс",
"Support the project": "Поддержать проект",
- "Support us": "Помочь журналу",
"Terms of use": "Правила сайта",
"Text checking": "Проверка текста",
"Thank you": "Благодарности",
+ "Thank you!": "Спасибо Вам!",
"The address is already taken": "Адрес уже занят",
+ "The most interesting publications on the topic": "Самые интересные публикации по теме {topicName}",
+ "Thematic table of contents of the magazine. Here you can find all the topics that community authors have written about.": "Тематическое оглавление журнала. Здесь можно найти все темы, о которых писали авторы сообщества.",
+ "Thematic table of contents of the magazine. Here you can find all the topics that the community authors wrote about": "Тематическое оглавление журнала. Здесь можно найти все темы, о которых писали авторы сообщества",
+ "Themes and plots": "Темы и сюжеты",
"Theory": "Теории",
"There are unsaved changes in your profile settings. Are you sure you want to leave the page without saving?": "В настройках вашего профиля есть несохраненные изменения. Уверены, что хотите покинуть страницу без сохранения?",
"There are unsaved changes in your publishing settings. Are you sure you want to leave the page without saving?": "В настройках публикации есть несохраненные изменения. Уверены, что хотите покинуть страницу без сохранения?",
@@ -399,6 +419,7 @@
"Welcome to Discours to vote": "Войдите в Дискурс, чтобы голосовать",
"Welcome!": "Добро пожаловать!",
"Where": "Откуда",
+ "Why you can earn a hole in your karma and how to receive rays of gratitude for your contribution to discussions in samizdat communities": "За что можно заслужить дырку в карме и как получить лучи благодарности за вклад в дискуссии в сообществах самиздата",
"Words": "Слов",
"Work with us": "Сотрудничать с Дискурсом",
"Write a comment...": "Написать комментарий...",
@@ -434,8 +455,8 @@
"create_chat": "Создать чат",
"create_group": "Создать группу",
"delimiter": "разделитель",
- "discourse_theme": "Тема дискурса",
"discussion": "дискурс",
+ "dogma keywords": "Discours.io, догма, редакционные принципы, этический кодекс, журналистика, сообщество",
"drafts": "черновики",
"earlier": "ранее",
"email not confirmed": "email не подтвержден",
@@ -451,6 +472,7 @@
"italic": "курсив",
"journal": "журнал",
"jpg, .png, max. 10 mb.": "jpg, .png, макс. 10 мб.",
+ "keywords": "Discours.io, журнал Дискурс, Дискурс, культура, наука, искусство, общество, независимая журналистика, литература, музыка, кино, видео, фотографии",
"literature": "литература",
"marker list": "маркир. список",
"min. 1400×1400 pix": "мин. 1400×1400 пикс.",
@@ -461,6 +483,7 @@
"or sign in with social networks": "или войдите через соцсеть",
"personal data usage and email notifications": "на обработку персональных данных и на получение почтовых уведомлений",
"post": "пост",
+ "principles keywords": "Discours.io, сообщества, ценности, правила редакции, многоголосие, созидание",
"register": "зарегистрируйтесь",
"repeat": "повторить",
"shout": "пост",
@@ -475,7 +498,9 @@
"subscribers": "подписчиков",
"subscribing...": "Подписка...",
"terms of use": "правилами пользования сайтом",
+ "terms of use keywords": "Discours.io, правила сайта, terms of use",
"today": "сегодня",
+ "topicKeywords": "{topic}, Discours.io, статьи, журналистика, исследования",
"topics": "темы",
"user already exist": "пользователь уже существует",
"video": "видео",
diff --git a/public/robots.txt b/public/robots.txt
index 1f53798b..c2a49f4f 100644
--- a/public/robots.txt
+++ b/public/robots.txt
@@ -1,2 +1,2 @@
User-agent: *
-Disallow: /
+Allow: /
diff --git a/src/components/Article/FullArticle.tsx b/src/components/Article/FullArticle.tsx
index c3d2a161..4c628601 100644
--- a/src/components/Article/FullArticle.tsx
+++ b/src/components/Article/FullArticle.tsx
@@ -2,7 +2,7 @@ import type { Author, Shout } from '../../graphql/types.gen'
import { getPagePath } from '@nanostores/router'
import { createPopper } from '@popperjs/core'
-import { Link } from '@solidjs/meta'
+import { Link, Meta } from '@solidjs/meta'
import { clsx } from 'clsx'
import { createEffect, For, createMemo, onMount, Show, createSignal, onCleanup } from 'solid-js'
import { isServer } from 'solid-js/web'
@@ -13,7 +13,7 @@ import { useSession } from '../../context/session'
import { MediaItem } from '../../pages/types'
import { DEFAULT_HEADER_OFFSET, router, useRouter } from '../../stores/router'
import { getImageUrl } from '../../utils/getImageUrl'
-import { getDescription } from '../../utils/meta'
+import { getDescription, getKeywords } from '../../utils/meta'
import { Icon } from '../_shared/Icon'
import { Image } from '../_shared/Image'
import { Lightbox } from '../_shared/Lightbox'
@@ -283,8 +283,26 @@ export const FullArticle = (props: Props) => {
}
}
+ const ogImage = props.article.cover
+ ? getImageUrl(props.article.cover, { width: 1200 })
+ : getImageUrl('production/image/logo_image.png')
+ const description = getDescription(props.article.description || body())
+ const ogTitle = props.article.title
+ const keywords = getKeywords(props.article)
+
return (
<>
+
+
+
+
+
+
+
+
+
+
+
{t('Subscribe who you like to tune your personal feed')}
-{t('Subscribe who you like to tune your personal feed')}
+