From 890e57ed5ac257b0d7511dc01a72424d40e4c3b1 Mon Sep 17 00:00:00 2001 From: Bugo Date: Sat, 23 Mar 2024 13:09:21 +0500 Subject: [PATCH] Translate guide/i18n.md --- docs/ru/guide/i18n.md | 113 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 docs/ru/guide/i18n.md diff --git a/docs/ru/guide/i18n.md b/docs/ru/guide/i18n.md new file mode 100644 index 00000000..ee00d680 --- /dev/null +++ b/docs/ru/guide/i18n.md @@ -0,0 +1,113 @@ +# Интернационализация {#internationalization} + +Чтобы использовать встроенные функции i18n, необходимо создать следующую структуру каталогов: + +``` +docs/ +├─ es/ +│ ├─ foo.md +├─ ru/ +│ ├─ foo.md +├─ foo.md +``` + +Затем в `docs/.vitepress/config.ts`: + +```ts +import { defineConfig } from 'vitepress' + +export default defineConfig({ + // общие свойства и другие вещи верхнего уровня... + + locales: { + root: { + label: 'English', + lang: 'en' + }, + ru: { + label: 'Русский', + lang: 'ru', // необязательный, будет добавлен как атрибут `lang` в тег `html` + link: '/ru/guide' // по умолчанию /ru/ -- отображается в меню переводов на панели навигации, может быть внешним + + // другие свойства, специфичные для локали... + } + } +}) +``` + +Следующие свойства могут быть переопределены для каждой локали (включая корневую): + +```ts +interface LocaleSpecificConfig { + lang?: string + dir?: string + title?: string + titleTemplate?: string | boolean + description?: string + head?: HeadConfig[] // будут объединены с существующими записями в заголовке, дублирующие метатеги будут автоматически удалены + themeConfig?: ThemeConfig // будут неглубоко объединены, общие вещи можно поместить в запись themeConfig верхнего уровня +} +``` + +Подробнее о настройке текстов-заготовок темы по умолчанию см. в интерфейсе [`DefaultTheme.Config`](https://github.com/vuejs/vitepress/blob/main/types/default-theme.d.ts). Не переопределяйте `themeConfig.algolia` или `themeConfig.carbonAds` на локальном уровне. Использование многоязычного поиска описано в разделе [Поиск Algolia](../reference/default-theme-search#algolia-search-i18n). + +**Совет:** Конфигурационный файл можно хранить и в `docs/.vitepress/config/index.ts`. Это может помочь вам организовать работу, создав конфигурационный файл для каждой локали, а затем объединить и экспортировать их из `index.ts`. + +## Отдельный каталог для каждой локали {#separate-directory-for-each-locale} + +Пример многоязычной структуры: + +``` +docs/ +├─ en/ +│ ├─ foo.md +├─ es/ +│ ├─ foo.md +├─ ru/ + ├─ foo.md +``` + +Однако по умолчанию VitePress не будет перенаправлять `/` на `/en/`. Для этого вам нужно будет настроить свой сервер. Например, в Netlify вы можете добавить файл `docs/public/_redirects` следующим образом: + +``` +/* /es/:splat 302 Language=es +/* /ru/:splat 302 Language=ru +/* /en/:splat 302 +``` + +**Совет:** Если вы используете описанный выше подход, вы можете использовать куки `nf_lang`, чтобы сохранить выбор языка пользователя: + +```ts +// docs/.vitepress/theme/index.ts +import DefaultTheme from 'vitepress/theme' +import Layout from './Layout.vue' + +export default { + extends: DefaultTheme, + Layout +} +``` + +```vue + + + + +``` + +## Поддержка RTL (экспериментально) {#rtl-support-experimental} + +Для поддержки языков с написанием справа налево укажите `dir: 'rtl'` в конфиге и используйте какой-нибудь плагин RTLCSS PostCSS, например , или . Вам нужно настроить плагин PostCSS на использование `:where([dir="ltr"])` и `:where([dir="rtl"])` в качестве префиксов, чтобы избежать проблем со спецификой CSS.