diff --git a/docs/translation.md b/docs/translation.md
index 9c54be8..fd31134 100644
--- a/docs/translation.md
+++ b/docs/translation.md
@@ -16,9 +16,10 @@
- `src/pages/.en.html` — английский override. Если файла нет, берётся русский.
- В сборке базовый walk **исключает** `*.en.html`, чтобы они не собирались как отдельные страницы.
3. **Partials**: для не-дефолтной локали инклуд `{{> name}}` сначала ищет `src/partials/name.en.html`, иначе `name.html`. Так переводятся частично захардкоженные partials (например, `projects-section.en.html`).
-4. **`assetPrefix`**: относительный префикс к ассетам. Для `en` к значению из `baseVars` добавляется один уровень `../`, потому что страницы лежат в подпапке `public/en/`. Навигационные ссылки `{{casesPrefix}}cases/...` остаются относительными и для `en` корректно ведут в `/en/cases/...`.
-5. **Статик-ассеты** (css/js/vendor/favicon) в partials (`head-links.html`, `head-scripts.html`, `theme-init-script.html`, `head-plyr.html`, `page-scripts.html`) прописаны **root-absolute** (`/css/...`, `/js/...`, `/vendor/...`, `/assets/shared/...`). Причина: dev-сервер (`serve-dev.mjs`) отдаёт `index.html` (200) для отсутствующих файлов, маскируя 404, поэтому относительные `{{assetPrefix}}css` на `/en/` ломались бы. Держи статик-ссылки root-absolute.
-6. `` подменяется на текущую локаль (``).
+4. **`assetPrefix`**: относительный префикс к ассетам. Для `en` к значению из `baseVars` добавляется один уровень `../`, потому что страницы лежат в подпапке `public/en/`. Используй только для путей к ассетам (css/js/изображения).
+5. **`pagePrefix`**: префикс до **корня локали** (`/en/` для en), без en-сдвига. Используй его для ВСЕХ навигационных ссылок (лого, «назад», футер, якоря `#section`, ссылки на другие страницы), чтобы они вели в ту же локаль, а не в корень сайта. `assetPrefix` предназначен только для путей к ассетам — для навигации он «перепрыгивает» через `/en/` и ведёт на ru, поэтому в навигационных `href` его НЕ применяй.
+6. **Статик-ассеты** (css/js/vendor/favicon) в partials (`head-links.html`, `head-scripts.html`, `theme-init-script.html`, `head-plyr.html`, `page-scripts.html`) прописаны **root-absolute** (`/css/...`, `/js/...`, `/vendor/...`, `/assets/shared/...`). Причина: dev-сервер (`serve-dev.mjs`) отдаёт `index.html` (200) для отсутствующих файлов, маскируя 404, поэтому относительные `{{assetPrefix}}css` на `/en/` ломались бы. Держи статик-ссылки root-absolute.
+7. `` подменяется на текущую локаль (``).
> Видимый контент страниц переводится через отдельные `*.en.html` исходники, а НЕ тысячами `{{i18n:}}`-токенов — так проще править большие тексты.
diff --git a/scripts/build-pages.mjs b/scripts/build-pages.mjs
index ab3da67..151a642 100644
--- a/scripts/build-pages.mjs
+++ b/scripts/build-pages.mjs
@@ -165,6 +165,9 @@ function build() {
const source = readUtf8(sourcePath);
const vars = baseVars(relNorm, depth);
+ // Префикс до КОРНЯ ЛОКАЛИ (без en-сдвига) — для навигационных ссылок,
+ // чтобы они вели в ту же локаль (/en/), а не в корень сайта (/).
+ vars.pagePrefix = vars.assetPrefix;
// Для не-дефолтной локали всё содержимое уходит на уровень глубже (public//),
// поэтому к assetPrefix добавляем один ../, а пустой casesPrefix — в ../cases/.
if (!isDefault) {
diff --git a/src/pages/cases/design-system.html b/src/pages/cases/design-system.html
index 3e44d52..feedfd3 100644
--- a/src/pages/cases/design-system.html
+++ b/src/pages/cases/design-system.html
@@ -667,9 +667,9 @@
Навыки: мозаика на широком экране — см.
- главную, #skills. Портфолио: карусель на
+ главную, #skills. Портфолио: карусель на
100vw с --projects-card-width и JS-прокруткой — на главной
- #projects.
+ #projects.
Wide в кейсах
diff --git a/src/pages/cookie-policy.en.html b/src/pages/cookie-policy.en.html
index 22c244f..e36786f 100644
--- a/src/pages/cookie-policy.en.html
+++ b/src/pages/cookie-policy.en.html
@@ -70,7 +70,7 @@
Nikolai Mamadaev
is the operator of the Site. For questions regarding data processing, please use the contact information in the “Contacts” section on
- the home page
+ the home page
(Telegram, VKontakte, Yandex, and email by copying the address using the button).
@@ -126,7 +126,7 @@
Changes
- The text of the policy may be updated as technologies on the site change. The current version is published on the “Cookie Policy” page at /cookie-policy.html relative to the site root.
+ The text of the policy may be updated as technologies on the site change. The current version is published on the “Cookie Policy” page at /cookie-policy.html relative to the site root.
diff --git a/src/pages/cookie-policy.html b/src/pages/cookie-policy.html
index 5f773de..af9b52e 100644
--- a/src/pages/cookie-policy.html
+++ b/src/pages/cookie-policy.html
@@ -68,7 +68,7 @@
Кто отвечает за сайт
Оператором сайта является Николай Мамадаев. По вопросам обработки данных используйте контакты в блоке «Контакты» на
- главной странице
+ главной странице
(Telegram, ВКонтакте, Яндекс и почта через копирование адреса кнопкой).
@@ -124,7 +124,7 @@
Изменения
- Текст политики может обновляться при изменении технологий на сайте. Актуальная версия публикуется на странице «Политика cookie» по адресу /cookie-policy.html относительно корня сайта.
+ Текст политики может обновляться при изменении технологий на сайте. Актуальная версия публикуется на странице «Политика cookie» по адресу /cookie-policy.html относительно корня сайта.
diff --git a/src/partials/cookie-notice.en.html b/src/partials/cookie-notice.en.html
index e206cc8..d983956 100644
--- a/src/partials/cookie-notice.en.html
+++ b/src/partials/cookie-notice.en.html
@@ -1,7 +1,7 @@