Add SEO basics: separate EN/RU pages, sitemap, OG banner
Splits the landing page into / and /ru/ so each language can rank on its own, with hreflang links between them; boot.js/main.js now do a real navigation between the two instead of toggling text in place. Adds robots.txt and sitemap.xml, JSON-LD SoftwareApplication markup, Twitter Card tags, and a proper 1200x630 og-image.png in place of the SVG favicon for social previews. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+38
-6
@@ -3,25 +3,57 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>CursorLang — the keyboard layout at your cursor</title>
|
||||
<title data-title-en="CursorLang — the keyboard layout at your cursor"
|
||||
data-title-ru="CursorLang — раскладка клавиатуры у курсора">CursorLang — the keyboard layout at your cursor</title>
|
||||
<meta name="description" content="A tiny Windows tray app that names the keyboard layout you have just switched to — beside the text caret, beside the mouse pointer, or at a fixed point on the screen. Free, offline, under 9 MB."
|
||||
data-content-en="A tiny Windows tray app that names the keyboard layout you have just switched to — beside the text caret, beside the mouse pointer, or at a fixed point on the screen. Free, offline, under 9 MB."
|
||||
data-content-ru="Небольшая программа в трее Windows, называющая раскладку, на которую вы только что переключились, — у текстового курсора, у указателя мыши или в выбранной точке экрана. Бесплатно, без доступа в сеть, меньше 9 МБ.">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:title" content="CursorLang — the keyboard layout at your cursor">
|
||||
<meta property="og:description" content="Switch the layout and a small popup names it, right where you are typing. Free, offline, under 9 MB in the tray.">
|
||||
<meta property="og:url" content="https://cursor-lang.alrakis.kz/">
|
||||
<meta property="og:image" content="https://cursor-lang.alrakis.kz/favicon.svg">
|
||||
<meta property="og:image" content="https://cursor-lang.alrakis.kz/og-image.png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta property="og:locale:alternate" content="ru_RU">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="CursorLang — the keyboard layout at your cursor">
|
||||
<meta name="twitter:description" content="A tiny Windows tray app that names the keyboard layout you have just switched to — beside the text caret, beside the mouse pointer, or at a fixed point on the screen. Free, offline, under 9 MB.">
|
||||
<meta name="twitter:image" content="https://cursor-lang.alrakis.kz/og-image.png">
|
||||
<link rel="canonical" href="https://cursor-lang.alrakis.kz/">
|
||||
<link rel="alternate" hreflang="en" href="https://cursor-lang.alrakis.kz/">
|
||||
<link rel="alternate" hreflang="ru" href="https://cursor-lang.alrakis.kz/ru/">
|
||||
<link rel="alternate" hreflang="x-default" href="https://cursor-lang.alrakis.kz/">
|
||||
<meta name="theme-color" content="#fbfbfd" media="(prefers-color-scheme: light)">
|
||||
<meta name="theme-color" content="#0d0d10" media="(prefers-color-scheme: dark)">
|
||||
<link rel="icon" href="favicon.svg" type="image/svg+xml">
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
|
||||
<link rel="stylesheet" href="/styles.css">
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "SoftwareApplication",
|
||||
"name": "CursorLang",
|
||||
"url": "https://cursor-lang.alrakis.kz/",
|
||||
"image": "https://cursor-lang.alrakis.kz/og-image.png",
|
||||
"description": "A tiny Windows tray app that names the keyboard layout you have just switched to — beside the text caret, beside the mouse pointer, or at a fixed point on the screen. Free, offline, under 9 MB.",
|
||||
"applicationCategory": "UtilitiesApplication",
|
||||
"operatingSystem": "Windows 10 1809 and later, 64-bit",
|
||||
"offers": {
|
||||
"@type": "Offer",
|
||||
"price": "0",
|
||||
"priceCurrency": "USD"
|
||||
},
|
||||
"downloadUrl": "https://apps.microsoft.com/detail/9nvpp6h49kpp",
|
||||
"inLanguage": ["en", "ru"]
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- boot.js runs before the body is parsed, so the language and the theme of an
|
||||
earlier visit are in place for the first frame; everything else waits for
|
||||
the markup it works on -->
|
||||
<script src="boot.js"></script>
|
||||
<script src="main.js" defer></script>
|
||||
<script src="/boot.js"></script>
|
||||
<script src="/main.js" defer></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
Reference in New Issue
Block a user