Files
securebit-chat/sitemap.xml
T
lockbitchat 98d42ac2fb
CodeQL Analysis / Analyze CodeQL (push) Canceled after 0s
Deploy Application / deploy (push) Canceled after 0s
Mirror to Codeberg / mirror (push) Canceled after 0s
Mirror to PrivacyGuides / mirror (push) Canceled after 0s
feat(i18n): nine languages, each at its own address; release v6.3.0
The site now speaks German, French, Spanish, Ukrainian, Russian, Chinese,
Korean and Hindi alongside English — 623 strings per language, 5,607
translations, covering the landing page, the key exchange, the chat, group
calls and every error along the way.

Each locale is a real page at a real URL (/de/, /fr/, …), generated at build
time from locales/*.json. That is the whole point: the app is client-rendered,
so a language that only swaps strings at runtime has no address for a crawler
to index and no link anyone can share. Each page carries its own canonical, a
reciprocal hreflang cluster and translated schema.org.

The URL decides the language, always. A stored preference only applies where
the address does not say, and nothing ever redirects on Accept-Language —
that is how sites become invisible to search engines outside one country.

robots.txt and sitemap.xml did not exist before; both are generated now.

Bugs found on the way, each with a test that would have caught it:
  - partner logos used page-relative paths and 404'd from any /xx/ page
  - post-build stamped ?v= only into the root shell, leaving locales behind
  - "Back online" appeared on every page load, not just after being offline
  - update timestamps were hard-coded to US format for every reader
  - t() threw on a partial window, taking whole components down with it
2026-08-29 12:46:15 -04:00

140 lines
9.0 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://securebit.chat/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://securebit.chat/"/>
<xhtml:link rel="alternate" hreflang="de" href="https://securebit.chat/de/"/>
<xhtml:link rel="alternate" hreflang="fr" href="https://securebit.chat/fr/"/>
<xhtml:link rel="alternate" hreflang="es" href="https://securebit.chat/es/"/>
<xhtml:link rel="alternate" hreflang="uk" href="https://securebit.chat/uk/"/>
<xhtml:link rel="alternate" hreflang="ru" href="https://securebit.chat/ru/"/>
<xhtml:link rel="alternate" hreflang="zh-Hans" href="https://securebit.chat/zh/"/>
<xhtml:link rel="alternate" hreflang="ko" href="https://securebit.chat/ko/"/>
<xhtml:link rel="alternate" hreflang="hi" href="https://securebit.chat/hi/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://securebit.chat/"/>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://securebit.chat/de/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://securebit.chat/"/>
<xhtml:link rel="alternate" hreflang="de" href="https://securebit.chat/de/"/>
<xhtml:link rel="alternate" hreflang="fr" href="https://securebit.chat/fr/"/>
<xhtml:link rel="alternate" hreflang="es" href="https://securebit.chat/es/"/>
<xhtml:link rel="alternate" hreflang="uk" href="https://securebit.chat/uk/"/>
<xhtml:link rel="alternate" hreflang="ru" href="https://securebit.chat/ru/"/>
<xhtml:link rel="alternate" hreflang="zh-Hans" href="https://securebit.chat/zh/"/>
<xhtml:link rel="alternate" hreflang="ko" href="https://securebit.chat/ko/"/>
<xhtml:link rel="alternate" hreflang="hi" href="https://securebit.chat/hi/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://securebit.chat/"/>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://securebit.chat/fr/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://securebit.chat/"/>
<xhtml:link rel="alternate" hreflang="de" href="https://securebit.chat/de/"/>
<xhtml:link rel="alternate" hreflang="fr" href="https://securebit.chat/fr/"/>
<xhtml:link rel="alternate" hreflang="es" href="https://securebit.chat/es/"/>
<xhtml:link rel="alternate" hreflang="uk" href="https://securebit.chat/uk/"/>
<xhtml:link rel="alternate" hreflang="ru" href="https://securebit.chat/ru/"/>
<xhtml:link rel="alternate" hreflang="zh-Hans" href="https://securebit.chat/zh/"/>
<xhtml:link rel="alternate" hreflang="ko" href="https://securebit.chat/ko/"/>
<xhtml:link rel="alternate" hreflang="hi" href="https://securebit.chat/hi/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://securebit.chat/"/>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://securebit.chat/es/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://securebit.chat/"/>
<xhtml:link rel="alternate" hreflang="de" href="https://securebit.chat/de/"/>
<xhtml:link rel="alternate" hreflang="fr" href="https://securebit.chat/fr/"/>
<xhtml:link rel="alternate" hreflang="es" href="https://securebit.chat/es/"/>
<xhtml:link rel="alternate" hreflang="uk" href="https://securebit.chat/uk/"/>
<xhtml:link rel="alternate" hreflang="ru" href="https://securebit.chat/ru/"/>
<xhtml:link rel="alternate" hreflang="zh-Hans" href="https://securebit.chat/zh/"/>
<xhtml:link rel="alternate" hreflang="ko" href="https://securebit.chat/ko/"/>
<xhtml:link rel="alternate" hreflang="hi" href="https://securebit.chat/hi/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://securebit.chat/"/>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://securebit.chat/uk/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://securebit.chat/"/>
<xhtml:link rel="alternate" hreflang="de" href="https://securebit.chat/de/"/>
<xhtml:link rel="alternate" hreflang="fr" href="https://securebit.chat/fr/"/>
<xhtml:link rel="alternate" hreflang="es" href="https://securebit.chat/es/"/>
<xhtml:link rel="alternate" hreflang="uk" href="https://securebit.chat/uk/"/>
<xhtml:link rel="alternate" hreflang="ru" href="https://securebit.chat/ru/"/>
<xhtml:link rel="alternate" hreflang="zh-Hans" href="https://securebit.chat/zh/"/>
<xhtml:link rel="alternate" hreflang="ko" href="https://securebit.chat/ko/"/>
<xhtml:link rel="alternate" hreflang="hi" href="https://securebit.chat/hi/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://securebit.chat/"/>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://securebit.chat/ru/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://securebit.chat/"/>
<xhtml:link rel="alternate" hreflang="de" href="https://securebit.chat/de/"/>
<xhtml:link rel="alternate" hreflang="fr" href="https://securebit.chat/fr/"/>
<xhtml:link rel="alternate" hreflang="es" href="https://securebit.chat/es/"/>
<xhtml:link rel="alternate" hreflang="uk" href="https://securebit.chat/uk/"/>
<xhtml:link rel="alternate" hreflang="ru" href="https://securebit.chat/ru/"/>
<xhtml:link rel="alternate" hreflang="zh-Hans" href="https://securebit.chat/zh/"/>
<xhtml:link rel="alternate" hreflang="ko" href="https://securebit.chat/ko/"/>
<xhtml:link rel="alternate" hreflang="hi" href="https://securebit.chat/hi/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://securebit.chat/"/>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://securebit.chat/zh/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://securebit.chat/"/>
<xhtml:link rel="alternate" hreflang="de" href="https://securebit.chat/de/"/>
<xhtml:link rel="alternate" hreflang="fr" href="https://securebit.chat/fr/"/>
<xhtml:link rel="alternate" hreflang="es" href="https://securebit.chat/es/"/>
<xhtml:link rel="alternate" hreflang="uk" href="https://securebit.chat/uk/"/>
<xhtml:link rel="alternate" hreflang="ru" href="https://securebit.chat/ru/"/>
<xhtml:link rel="alternate" hreflang="zh-Hans" href="https://securebit.chat/zh/"/>
<xhtml:link rel="alternate" hreflang="ko" href="https://securebit.chat/ko/"/>
<xhtml:link rel="alternate" hreflang="hi" href="https://securebit.chat/hi/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://securebit.chat/"/>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://securebit.chat/ko/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://securebit.chat/"/>
<xhtml:link rel="alternate" hreflang="de" href="https://securebit.chat/de/"/>
<xhtml:link rel="alternate" hreflang="fr" href="https://securebit.chat/fr/"/>
<xhtml:link rel="alternate" hreflang="es" href="https://securebit.chat/es/"/>
<xhtml:link rel="alternate" hreflang="uk" href="https://securebit.chat/uk/"/>
<xhtml:link rel="alternate" hreflang="ru" href="https://securebit.chat/ru/"/>
<xhtml:link rel="alternate" hreflang="zh-Hans" href="https://securebit.chat/zh/"/>
<xhtml:link rel="alternate" hreflang="ko" href="https://securebit.chat/ko/"/>
<xhtml:link rel="alternate" hreflang="hi" href="https://securebit.chat/hi/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://securebit.chat/"/>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://securebit.chat/hi/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://securebit.chat/"/>
<xhtml:link rel="alternate" hreflang="de" href="https://securebit.chat/de/"/>
<xhtml:link rel="alternate" hreflang="fr" href="https://securebit.chat/fr/"/>
<xhtml:link rel="alternate" hreflang="es" href="https://securebit.chat/es/"/>
<xhtml:link rel="alternate" hreflang="uk" href="https://securebit.chat/uk/"/>
<xhtml:link rel="alternate" hreflang="ru" href="https://securebit.chat/ru/"/>
<xhtml:link rel="alternate" hreflang="zh-Hans" href="https://securebit.chat/zh/"/>
<xhtml:link rel="alternate" hreflang="ko" href="https://securebit.chat/ko/"/>
<xhtml:link rel="alternate" hreflang="hi" href="https://securebit.chat/hi/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://securebit.chat/"/>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
</urlset>