Как установить язык документа в TanStack Start v1
Укажите язык страницы для браузеров и экранных читалок
Проблема
Веб-страницы должны указывать основной язык, чтобы корректно работать в разных пользовательских агентах. Без явного указания языка в корневом HTML-элементе браузеры не могут определить язык содержимого и вынуждены угадывать. Это приводит к тому, что программы чтения с экрана используют язык системы пользователя по умолчанию, что вызывает неправильное произношение, если язык содержимого отличается. Браузеры не могут предложить точные функции перевода, так как у них нет информации о языке исходного текста. Поисковые системы испытывают трудности с индексированием контента для соответствующей языковой аудитории, что снижает его обнаруживаемость для пользователей, ищущих на этом языке.
Решение
Добавьте атрибут lang в тег html, чтобы установить язык страницы по умолчанию. В TanStack Start HTML-оболочка определяется в shellComponent корневого маршрута, который рендерит структуру документа, включая элемент <html>. Добавив атрибут lang с соответствующим кодом языка к этому элементу, вы информируете браузеры, вспомогательные технологии и поисковые системы о языке содержимого, что позволяет им правильно обрабатывать и отображать его.
Шаги
1. Определите текущую локаль
Свойство shellComponent корневого маршрута определяет HTML-оболочку, которая оборачивает весь контент маршрутов и всегда рендерится на стороне сервера. Определите текущую локаль с помощью механизма определения локали вашего приложения, например, параметров маршрута, cookies или заголовков.
import type { ReactNode } from "react";
import {
Outlet,
createRootRoute,
HeadContent,
Scripts,
} from "@tanstack/react-router";
export const Route = createRootRoute({
shellComponent: RootDocument,
component: RootComponent,
});
function RootComponent() {
return <Outlet />;
}
function RootDocument({ children }: { children: ReactNode }) {
const locale = "en";
return (
<html>
<head>
<HeadContent />
</head>
<body>
{children}
<Scripts />
</body>
</html>
);
}
Это устанавливает структуру оболочки, в которую вы добавите атрибут языка.
2. Добавьте атрибут lang к элементу html
Установите атрибут lang в элементе <html> с использованием значения локали. Используйте допустимый языковой тег BCP 47, который соответствует языку вашего контента.
function RootDocument({ children }: { children: ReactNode }) {
const locale = "en";
return (
<html lang={locale}>
<head>
<HeadContent />
</head>
<body>
{children}
<Scripts />
</body>
</html>
);
}
Теперь атрибут lang указывает язык документа, что позволяет браузерам и вспомогательным технологиям корректно обрабатывать содержимое.
3. Используйте динамические значения локали
Если ваше приложение поддерживает несколько локалей, получите текущую локаль из вашей системы маршрутизации или управления состоянием и передайте её в оболочку компонента.
function RootDocument({ children }: { children: ReactNode }) {
const locale = getCurrentLocale();
return (
<html lang={locale}>
<head>
<HeadContent />
</head>
<body>
{children}
<Scripts />
</body>
</html>
);
}
function getCurrentLocale(): string {
return "en";
}
Теперь язык документа обновляется в зависимости от активной локали, гарантируя, что атрибут lang всегда отражает текущий язык содержимого.