login register comlated

This commit is contained in:
nabijonovdavronbek619@gmail.com
2026-04-01 18:26:25 +05:00
parent 9414ce0c8a
commit 7b76901f5f
23 changed files with 576 additions and 102 deletions

View File

@@ -174,7 +174,9 @@
"sending": "Sending…",
"sendCode": "Login",
"registerPrompt": "Don't have an account?",
"registerLink": "Register"
"registerLink": "Register",
"passwordLabel": "Password",
"passwordPlaceholder": "Must be at least 8 characters"
},
"Register": {
"successTitle": "You're registered",
@@ -189,7 +191,9 @@
"surnamePlaceholder": "Karimov",
"terms": "I agree to the Terms of Service and Privacy Policy",
"submitButton": "Create account",
"loginPrompt": "Already have an account?"
"loginPrompt": "Already have an account?",
"passwordLabel": "Password",
"passwordPlaceholder": "Must be at least 8 characters"
}
},
"Payment": {

View File

@@ -174,7 +174,9 @@
"sending": "Отправка…",
"sendCode": "Вход",
"registerPrompt": "Нет аккаунта?",
"registerLink": "Зарегистрироваться"
"registerLink": "Зарегистрироваться",
"passwordLabel": "Пароль",
"passwordPlaceholder": "8 символов или более"
},
"Register": {
"successTitle": "Вы зарегистрированы",
@@ -189,7 +191,9 @@
"surnamePlaceholder": "Каримов",
"terms": "Я согласен с Условиями обслуживания и Политикой конфиденциальности",
"submitButton": "Создать аккаунт",
"loginPrompt": "Уже есть аккаунт?"
"loginPrompt": "Уже есть аккаунт?",
"passwordLabel": "Пароль",
"passwordPlaceholder": "8 символов или более"
}
},
"Payment": {

View File

@@ -178,6 +178,8 @@ declare const messages: {
sendCode: 'Kirish';
registerPrompt: "Hisobingiz yo'qmi?";
registerLink: "Ro'yxatdan o'tish";
passwordLabel: 'Parol';
passwordPlaceholder: "8 ta belgidan iborat bo'lsin";
};
Register: {
successTitle: "Siz ro'yxatdan o'tdingiz";
@@ -193,6 +195,8 @@ declare const messages: {
terms: "Men Xizmat ko'rsatish shartlari va Maxfiylik siyosatiga roziman";
submitButton: 'Hisob yaratish';
loginPrompt: 'Hisobingiz bormi?';
passwordLabel: 'Parol';
passwordPlaceholder: "8 ta belgidan iborat bo'lsin";
};
};
Payment: {

View File

@@ -174,7 +174,9 @@
"sending": "Yuborilmoqda…",
"sendCode": "Kirish",
"registerPrompt": "Hisobingiz yo'qmi?",
"registerLink": "Ro'yxatdan o'tish"
"registerLink": "Ro'yxatdan o'tish",
"passwordLabel": "Parol",
"passwordPlaceholder": "8 ta belgidan iborat bo'lsin"
},
"Register": {
"successTitle": "Siz ro'yxatdan o'tdingiz",
@@ -189,7 +191,9 @@
"surnamePlaceholder": "Karimov",
"terms": "Men Xizmat ko'rsatish shartlari va Maxfiylik siyosatiga roziman",
"submitButton": "Hisob yaratish",
"loginPrompt": "Hisobingiz bormi?"
"loginPrompt": "Hisobingiz bormi?",
"passwordLabel": "Parol",
"passwordPlaceholder": "8 ta belgidan iborat bo'lsin"
}
},
"Payment": {

View File

@@ -0,0 +1,80 @@
/**
* JsonLd — injects structured data (schema.org) into <head>.
* Helps Google understand your site type, sitelinks searchbox, etc.
*
* Usage in layout.tsx (inside <head> or anywhere in the tree):
* import { JsonLd } from '@/shared/components/JsonLd';
* ...
* <JsonLd locale={locale} />
*/
const SITE_URL = process.env.NEXT_PUBLIC_SITE_URL ?? 'https://antiplagiat.uz';
interface Props {
locale: string;
}
export function JsonLd({ locale }: Props) {
const schema = {
'@context': 'https://schema.org',
'@graph': [
// ── Organization ──────────────────────────────────────────────────────
{
'@type': 'Organization',
'@id': `${SITE_URL}/#organization`,
name: 'AntiPlagiat.uz',
url: SITE_URL,
logo: {
'@type': 'ImageObject',
url: `${SITE_URL}/icons/icon-512.png`,
width: 512,
height: 512,
},
sameAs: [
// Add your social profile URLs here
// 'https://t.me/antiplagiatuz',
],
contactPoint: {
'@type': 'ContactPoint',
contactType: 'customer support',
availableLanguage: ['Uzbek', 'Russian', 'English'],
},
},
// ── WebSite (enables Google Sitelinks Searchbox) ──────────────────────
{
'@type': 'WebSite',
'@id': `${SITE_URL}/#website`,
url: SITE_URL,
name: 'AntiPlagiat.uz',
publisher: { '@id': `${SITE_URL}/#organization` },
inLanguage: [locale],
potentialAction: {
'@type': 'SearchAction',
target: {
'@type': 'EntryPoint',
urlTemplate: `${SITE_URL}/search?q={search_term_string}`,
},
'query-input': 'required name=search_term_string',
},
},
// ── WebPage ───────────────────────────────────────────────────────────
{
'@type': 'WebPage',
'@id': `${SITE_URL}/${locale}/#webpage`,
url: `${SITE_URL}/${locale}`,
isPartOf: { '@id': `${SITE_URL}/#website` },
about: { '@id': `${SITE_URL}/#organization` },
inLanguage: locale,
},
],
};
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
);
}

View File

@@ -0,0 +1,76 @@
// ─── SEO Metadata per locale ───────────────────────────────────────────────────
// Used by generateMetadata() in layout.tsx
export type SupportedLocale = 'uz' | 'ru' | 'en';
interface LocaleSeoData {
siteName: string;
title: string;
titleTemplate: string;
description: string;
keywords: string[];
ogTitle: string;
ogDescription: string;
}
export const SEO_DATA: Record<SupportedLocale, LocaleSeoData> = {
uz: {
siteName: 'AntiPlagiat.uz',
title: 'AntiPlagiat.uz — Plagiat tekshiruvi onlayn',
titleTemplate: '%s | AntiPlagiat.uz',
description:
"Dissertatsiya, kurs ishi va ilmiy maqolalaringizni tezkor va ishonchli plagiat tekshiruvidan o'tkazing. Natija daqiqalar ichida tayyor.",
keywords: [
'plagiat tekshiruvi',
'antiplagiat',
'dissertatsiya tekshiruvi',
'kurs ishi plagiat',
'ilmiy maqola tekshiruvi',
'onlayn plagiat',
"o'zbekiston antiplagiat",
],
ogTitle: 'AntiPlagiat.uz — Tezkor plagiat tekshiruvi',
ogDescription:
'Ishingizni bir necha daqiqada plagiatga tekshiring. Sertifikat bilan natija oling.',
},
ru: {
siteName: 'AntiPlagiat.uz',
title: 'AntiPlagiat.uz — Проверка на плагиат онлайн',
titleTemplate: '%s | AntiPlagiat.uz',
description:
'Быстрая и надёжная проверка диссертаций, курсовых работ и научных статей на плагиат. Результат готов за несколько минут.',
keywords: [
'проверка на плагиат',
'антиплагиат',
'проверка диссертации',
'курсовая плагиат',
'проверка научной статьи',
'онлайн антиплагиат',
'антиплагиат узбекистан',
],
ogTitle: 'AntiPlagiat.uz — Быстрая проверка на плагиат',
ogDescription:
'Проверьте вашу работу на плагиат за несколько минут. Получите результат с сертификатом.',
},
en: {
siteName: 'AntiPlagiat.uz',
title: 'AntiPlagiat.uz — Online Plagiarism Checker',
titleTemplate: '%s | AntiPlagiat.uz',
description:
'Fast and reliable plagiarism detection for dissertations, coursework, and research papers. Get your results in minutes.',
keywords: [
'plagiarism checker',
'anti-plagiarism',
'dissertation plagiarism check',
'coursework plagiarism',
'research paper checker',
'online plagiarism detection',
'uzbekistan plagiarism',
],
ogTitle: 'AntiPlagiat.uz — Fast Plagiarism Checker',
ogDescription:
'Check your work for plagiarism in minutes. Receive your result with an official certificate.',
},
};