1.0.0 (#26)
Build / Build [amd64] (push) Has been cancelled
Build / Build [arm64] (push) Has been cancelled
Build / Publish (push) Has been cancelled

* bump outline to 1.0.0-2

* update translation.json

* update readme.*

* update Dockerfile*

* bump outline to 1.0.0-test8

* reorganize repo, add git hook

* bump version to 1.0.0

* update translations
This commit is contained in:
Evgeny
2025-10-27 17:47:11 +05:00
committed by GitHub
parent 7bcf8279e2
commit daa7561aff
12 changed files with 210 additions and 99 deletions
+11
View File
@@ -0,0 +1,11 @@
#!/usr/bin/env bash
WORKDIR="$(dirname "$(readlink -f "${0}")")"
if ! git diff --cached --quiet --submodule=diff -- ./outline; then
python "$WORKDIR/update_readme.py"
git add ./README.md
exit 0
else
exit 0
fi
@@ -19,13 +19,13 @@ def get_version(path):
def replace_version(path, version):
with open(path, 'r') as file:
content = file.read()
pattern = re.compile(r'(\d+\.\d+\.\d+)')
pattern = re.compile(r'(\d+\.\d+\.\d+(-\w+)?)')
check = lambda x: ignore if ignore == x.group(0) else version
with open(path, 'w') as file:
file.write(pattern.sub(check, content))
version = get_version(resolve('../outline/package.json'))
version = get_version(resolve('../../outline/package.json'))
replace_version(resolve('../README.md'), version)
replace_version(resolve('../../README.md'), version)
+2 -2
View File
@@ -1,2 +1,2 @@
tools/*.json
!tools/translation.json
translation/*.json
!translation/ru.json
+2 -2
View File
@@ -1,4 +1,4 @@
FROM node:20 AS base
FROM node:22 AS base
ARG APP_PATH
ARG SRC_PATH
WORKDIR $APP_PATH
@@ -19,7 +19,7 @@ RUN yarn install --no-optional --frozen-lockfile --network-timeout 1000000 && \
yarn cache clean
COPY ${SRC_PATH} .
COPY --from=deps $APP_PATH/node_modules ./node_modules
COPY ./tools/patches/* .
COPY ./patches/* .
RUN for patch in $(ls *.patch); do patch -p1 < $patch; done
RUN cat <<EOF > /entrypoint.sh
npx yarn concurrently -n "dev,i18n" \
+7 -7
View File
@@ -1,4 +1,4 @@
FROM node:20 AS base
FROM node:22 AS base
ARG APP_PATH
ARG SRC_PATH
WORKDIR $APP_PATH
@@ -18,9 +18,9 @@ ENV NODE_OPTIONS="--max-old-space-size=24000"
RUN yarn install --no-optional --frozen-lockfile --network-timeout 1000000 && \
yarn cache clean
COPY ${SRC_PATH} .
COPY ./tools/patches/lang.patch .
RUN for patch in $(ls *.patch); do patch -p1 < $patch; done
COPY ./tools/translation.json ./shared/i18n/locales/ru_RU/translation.json
COPY ./patches/lang.patch .
RUN patch -p1 < lang.patch
COPY ./translation/ru.json ./shared/i18n/locales/ru_RU/translation.json
ARG CDN_URL
RUN yarn build && rm -rf node_modules
@@ -32,10 +32,10 @@ ARG DATA_PATH=/var/lib/outline/data
ARG USER=nodejs
ARG APP_PATH
WORKDIR $APP_PATH
RUN useradd -m -U ${USER} && \
RUN addgroup --gid 1001 ${USER} && \
adduser --uid 1001 --ingroup ${USER} ${USER} && \
mkdir -p ${DATA_PATH} && \
chown -R ${USER}:${USER} ${APP_PATH} ${DATA_PATH}/.. && \
chmod 1777 ${DATA_PATH}
chown -R ${USER}:${USER} ${DATA_PATH}/..
COPY --chown=${USER} --from=deps $APP_PATH/node_modules ./node_modules
COPY --chown=${USER} --from=build $APP_PATH/build ./build
COPY --chown=${USER} --from=build $APP_PATH/server ./server
+53 -41
View File
@@ -20,8 +20,8 @@
```yaml
services:
outline:
image: flameshikari/outline-ru:0.87.3
# image: ghcr.io/flameshikari/outline-ru:0.87.3
image: flameshikari/outline-ru:1.0.0
# image: ghcr.io/flameshikari/outline-ru:1.0.0
env_file: ./docker.env
expose:
- 3000
@@ -38,60 +38,72 @@ services:
### Ключевые файлы
- русский перевод — [tools/translation.json](./tools/translation.json)
- русский перевод — [translation/ru.json](./translation/ru.json)
- английский перевод — [outline/shared/i18n/locales/en_US/translation.json](https://github.com/outline/outline/blob/main/shared/i18n/locales/en_US/translation.json)
- временный файл — [tools/translation.tmp.json]() (существует только локально)
- временный файл — [translation/tmp.json]() (существует только локально)
### Быстрый старт
### Описание работы скрипта
0. Клонирование репозитория с подмодулем:
```sh
git clone --recurse-submodules git@github.com:flameshikari/outline-ru.git
```
1. Пулл изменений в подмодуле и переключение на коммит с целевой версией:
```sh
cd outline
git pull --rebase --tags
git checkout v0.87.3
cd -
```
2. Запуск контейнеров:
```sh
docker compose up -d --build
```
Веб-интерфейс Outline будет доступен по [этой ссылке](http://localhost:10240); входить с помощью OpenID Connect под логином/паролем `outline`.
3. Формирование временного файла с помощью [tools/diff.py](./tools/diff.py):
```sh
python tools/diff.py
```
После можно приступить к переводу сфомированного временного файла. После перевода временного файла скопируйте его в файл русского перевода. Любые изменения в русском переводе обновят [открытую веб-страницу](http://localhost:10240) через пару секунд.
### Описание
Скрипт [tools/diff.py](./tools/diff.py) используется для объединения английского и русского переводов во временный файл. Скрипт не имеет интерактивного режима и каких-либо аргументов/опций, он просто запускается (с выводом некоторой полезной информации) и делает следующее:
Скрипт [translation/merge.py](./translation/merge.py) используется для объединения английского и русского переводов во временный файл. Скрипт не имеет интерактивного режима и каких-либо аргументов/опций, он просто запускается (с выводом некоторой полезной информации) и делает следующее:
- сохраняет актуальные переведённые строки
- удаляет неактуальные переведённые строки
- если в русском переводе есть одинаковые key/value пары, то они считаются исключениями (например, `HTML` или `API`) и переносятся как есть
- новые непереведённые строки добавляются в конец
> Если во временном файле присутствуют две одинаковые непереведённые строки, но одна из них с суффиксом `_plural` (множественное число), например:
> Также скрипт конвертирует строки с суффиксом `_plural` (англ. множественное число) в строки с числовыми суффиксами, поддерживающие склонение по падежам. Например, имеем исходные данные:
>
> ```json
> ```jsonc
> {
> // ...
> "{{ count }} comment": "{{ count }} comment",
> "{{ count }} comment_plural": "{{ count }} comments"
> // ...
> }
> ```
> …то нужно заменить эти строки на следующие (для справки: [множественное число](https://www.i18next.com/translation-function/plurals#languages-with-multiple-plurals) в [i18next](https://www.i18next.com) с [JSON-форматом версии 3](https://www.i18next.com/misc/json-format#i18next-json-v3)):
>
> ```json
> Строки после конвертации скриптом:
> ```jsonc
> {
> "{{ count }} comment_0": "{{ count }} комментарий",
> "{{ count }} comment_1": "{{ count }} комментария",
> "{{ count }} comment_2": "{{ count }} комментариев"
> // ...
> "{{ count }} comment_0": "[NOT TRANSLATED]",
> "{{ count }} comment_1": "[NOT TRANSLATED]",
> "{{ count }} comment_2": "[NOT TRANSLATED]"
> // ...
> }
> ```
> Конвертированные строки после перевода:
> ```jsonc
> {
> // ...
> "{{ count }} comment_0": "{{ count }} комментарий", // ед. число, им. падеж
> "{{ count }} comment_1": "{{ count }} комментария", // ед. число, род. падеж
> "{{ count }} comment_2": "{{ count }} комментариев" // мн. число, род. падеж
> // ...
> }
> ```
> Документация: [множественное число](https://www.i18next.com/translation-function/plurals#languages-with-multiple-plurals) в [i18next](https://www.i18next.com) с [JSON-форматом версии 3](https://www.i18next.com/misc/json-format#i18next-json-v3)
### Быстрый старт
1. Клонирование репозитория с подмодулем:
```sh
git clone --recurse-submodules git@github.com:flameshikari/outline-ru.git
```
2. Пулл изменений в подмодуле и переключение на последний доступный тег:
```sh
git submodule foreach 'git pull --rebase --tags && git checkout v1.0.0'
```
3. Запуск контейнеров:
```sh
docker compose up -d --build
```
Веб-интерфейс Outline будет доступен по [этой ссылке](http://localhost:10240); входить с помощью OpenID Connect под логином/паролем `outline`.
4. Формирование временного файла с помощью [translation/merge.py](./translation/merge.py):
```sh
python translation/merge.py
```
После можно приступить к переводу сфомированного временного файла. После перевода временного файла скопируйте его в файл русского перевода. Любые изменения в русском переводе обновят [открытую веб-страницу](http://localhost:10240) через пару секунд.
+1 -1
View File
@@ -22,7 +22,7 @@ services:
- outline-redis
- outline-oidc
volumes:
- ./tools/translation.json:/opt/outline/shared/i18n/locales/ru_RU/translation.json
- ./translation/ru.json:/opt/outline/shared/i18n/locales/ru_RU/translation.json
outline-oidc:
extends:
+1 -1
Submodule outline updated: 5d871beee2...3551d16bd8
+2 -2
View File
@@ -10,9 +10,9 @@ def resolve(path):
en_json_path = resolve('../outline/shared/i18n/locales/en_US/translation.json')
ru_json_path = resolve('./translation.json')
ru_json_path = resolve('./ru.json')
out_json_name = 'translation.tmp.json'
out_json_name = 'tmp.json'
out_json_path = resolve(out_json_name)
translated_lines = {}
+128 -40
View File
@@ -12,6 +12,11 @@
"Permissions": "Права доступа",
"Collection permissions": "Права доступа к коллекции",
"Share this collection": "Поделиться этой коллекцией",
"Import document": "Импорт документа",
"Sort in sidebar": "Сортировка в боковой панели",
"A-Z sort": "Сортировка А–Я",
"Z-A sort": "Сортировка А–Я",
"Manual sort": "Ручная сортировка",
"Search in collection": "Поиск в коллекции",
"Star": "Добавить в избранное",
"Unstar": "Убрать из избранного",
@@ -83,7 +88,6 @@
"Search in document": "Поиск в документе",
"Print": "Печать",
"Print document": "Печать документа",
"Import document": "Импорт документа",
"Templatize": "Шаблонизировать",
"Create template": "Создать шаблон",
"Open random document": "Открыть случайный документ",
@@ -175,6 +179,7 @@
"currently viewing": "сейчас просматривается",
"previously edited": "ранее отредактировано",
"You": "Вы",
"Avatar of {{ name }}": "Аватар {{ name }}",
"Viewers": "Наблюдатели",
"Collections are used to group documents and choose permissions": "Коллекции используются для группировки документов и выбора разрешений",
"Name": "Имя",
@@ -205,7 +210,6 @@
"Move document": "Переместить документ",
"Moving": "Идет перемещение",
"Moving the document <em>{{ title }}</em> to the {{ newCollectionName }} collection will change permission for all workspace members from <em>{{ prevPermission }}</em> to <em>{{ newPermission }}</em>.": "Перемещение документа <em>{{ title }}</em> в коллекцию {{ newCollectionName }} изменит права доступа для всех участников рабочего пространства с <em>{{ prevPermission }}</em> на <em>{{ newPermission }}</em>.",
"Submenu": "Подменю",
"Collections could not be loaded, please reload the app": "Не удалось загрузить коллекции, пожалуйста, перезагрузите приложение",
"Start view": "Начать просмотр",
"Install now": "Установить сейчас",
@@ -216,7 +220,6 @@
"Deleted Collection": "Удаленная коллекция",
"Untitled": "Без названия",
"Unpin": "Открепить",
"{{ minutes }}m read": "{{ minutes }} минут чтения",
"Select a location to copy": "Выберите место для копирования",
"Document copied": "Документ скопирован",
"Couldnt copy the document, try again?": "Не удалось скопировать документ. Попробовать снова?",
@@ -288,6 +291,7 @@
"{{count}} more user_0": "Ещё {{count}} пользователь",
"{{count}} more user_1": "Ещё {{count}} пользователя",
"{{count}} more user_2": "Ещё {{count}} пользователей",
"Filter options": "Параметры фильтра",
"Filter": "Фильтр",
"No results": "Ничего не найденo",
"{{authorName}} created <3></3>": "{{authorName}} создал <3></3>",
@@ -319,7 +323,15 @@
"Permission": "Право доступа",
"Change Language": "Сменить язык",
"Dismiss": "Убрать",
"Unable to download image": "Не удалось скачать изображение",
"Lightbox": "Лайтбокс",
"View, navigate, or download images in the document": "Просмотр, навигация или загрузка изображений в документе",
"Zoom in": "Приблизить",
"Zoom out": "Отдалить",
"Close": "Закрыть",
"Previous": "Предыдущий",
"Next": "Следующий",
"Image failed to load": "Ошибка загрузки изображения",
"Youre offline.": "Вы не в сети.",
"Sorry, an error occurred.": "К сожалению, произошла ошибка.",
"Click to retry": "Кликните, чтобы повторить",
@@ -328,6 +340,7 @@
"Mark all as read": "Отметить все как прочитанное",
"You're all caught up": "Вы в теме",
"Icon": "Иконка",
"OAuth client icon": "Иконка OAuth-клиента",
"My App": "Мое приложение",
"Tagline": "Слоган",
"A short description": "Краткое описание",
@@ -343,6 +356,7 @@
"Reaction picker": "Выбор реакции",
"Could not load reactions": "Не удалось загрузить реакции",
"Reaction": "Реакция",
"{{ minutes }}m read": "{{ minutes }} минут чтения",
"Revision deleted": "Ревизия удалена",
"Current version": "Текущая версия",
"{{userName}} edited": "{{userName}} отредактировал",
@@ -364,6 +378,8 @@
"Disable this setting to discourage search engines from indexing the page": "Отключите этот параметр, чтобы запретить поисковым системам индексировать страницу",
"Show last modified": "Показать последний изменённый",
"Display the last modified timestamp on the shared page": "Показывать метки времени последнего изменения на общей странице",
"Show table of contents": "Показать оглавление",
"Display the table of contents on documents by default": "Показывать оглавление в документах по умолчанию",
"All documents in this collection will be shared on the web, including any new documents added later": "Все документы этой коллекции будут опубликованы в Интернете, включая любые новые документы, добавленные позже",
"Invite": "Приглашение",
"{{ userName }} was added to the collection": "{{ userName }} добавлен в коллекцию",
@@ -410,17 +426,22 @@
"{{ count }} groups added to the document_1": "{{ count }} группы были добавлены в документ",
"{{ count }} groups added to the document_2": "{{ count }} групп были добавлена в документ",
"Logo": "Логотип",
"Expand sidebar": "Развернуть боковую панель",
"Collapse sidebar": "Свернуть боковую панель",
"Archived collections": "Архивированные коллекции",
"New doc": "Новый документ",
"Empty": "Пусто",
"No collections": "Нет коллекций",
"Collapse": "Свернуть",
"Expand": "Развернуть",
"Document not supported try Markdown, Plain text, HTML, or Word": "Документ не поддерживается — попробуйте Markdown, HTML, простой текст или Word",
"Import files": "Импорт файлов",
"Go back": "Назад",
"Go forward": "Вперед",
"Could not load shared documents": "Не удалось загрузить общие документы",
"Shared with me": "Поделился со мной",
"Show more": "Развернуть",
"Link options": "Параметры ссылки",
"Could not load starred documents": "Не удалось загрузить избранные документы",
"Starred": "Избранное",
"Up to date": "Последняя версия",
@@ -455,7 +476,6 @@
"New email": "Новое письмо",
"Email can't be empty": "Письмо не может быть пустым",
"Your import completed": "Ваш импорт завершен",
"Sorry, invalid embed link": "Извините, неверная встраиваемая ссылка",
"Previous match": "Предыдущее совпадение",
"Next match": "Следующее совпадение",
"Find and replace": "Найти и заменить",
@@ -466,12 +486,24 @@
"Replacement": "Замена",
"Replace": "Заменить",
"Replace all": "Заменить все",
"Image width": "Ширина изображения",
"Width": "Ширина",
"Image height": "Высота изображения",
"Height": "Высота",
"Profile picture": "Фото профиля",
"Create a new doc": "Создать новый документ",
"{{ userName }} won't be notified, as they do not have access to this document": "{{ userName }} не будет уведомлен, так как у него нет доступа к этому документу",
"Keep as link": "Сохранить как ссылку",
"Mention": "Упоминание",
"Embed": "Вставить",
"More options": "Больше параметров",
"Rename": "Переименовать",
"Insert after": "Вставить после",
"Insert before": "Вставить до",
"Move up": "Сдвинуть вверх",
"Move down": "Сдвинуть вниз",
"Move left": "Сдвинуть влево",
"Move right": "Сдвинуть вправо",
"Align center": "По центру",
"Align left": "По левому краю",
"Align right": "По правому краю",
@@ -549,7 +581,6 @@
"Video": "Видео",
"None": "Никто",
"Delete embed": "Удалить вставку",
"Rename": "Переименовать",
"Could not import file": "Не удалось импортировать файл",
"Unsubscribed from document": "Отписаться от документа",
"Unsubscribed from collection": "Отменена подписка на коллекцию",
@@ -567,10 +598,6 @@
"Integrations": "Интеграции",
"API key": "Ключ API",
"Show path to document": "Показать путь к документу",
"Sort in sidebar": "Сортировка в боковой панели",
"A-Z sort": "Сортировка А–Я",
"Z-A sort": "Сортировка А–Я",
"Manual sort": "Ручная сортировка",
"Collection menu": "Меню коллекции",
"Comment options": "Настройки комментариев",
"Enable viewer insights": "Включить подробности о наблюдателях",
@@ -676,8 +703,11 @@
"You may have lost access to this document, try reloading": "Возможно, вы потеряли доступ к этому документу, попробуйте перезагрузить страницу",
"Too many users connected to document": "К документу подключено слишком много пользователей",
"Your edits will sync once other users leave the document": "Ваши изменения будут синхронизированы, как только другие пользователи покинут документ",
"New version available": "Новая версия доступна",
"Please reload the page to update to the latest version": "Пожалуйста, перезагрузите страницу, чтобы обновить её до последней версии",
"Server connection lost": "Потеряна связь с сервером",
"Edits you make will sync once youre online": "Правки, которые вы делаете, будут синхронизированы после того, как вы будете в сети",
"Offline": "Не в сети",
"Document restored": "Документ восстановлен",
"Images are still uploading.\nAre you sure you want to discard them?": "Изображения все еще загружаются.\nВы уверены, что хотите прервать загрузку?",
"{{ count }} comment_0": "{{ count }} комментарий",
@@ -687,6 +717,7 @@
"only you": "только вами",
"person": "человек",
"people": "люди",
"Document title": "Заголовок документа",
"Last updated": "Последнее обновление",
"Type '/' to insert, or start writing…": "Введите '/' для вставки блока или просто начните писать…",
"Hide contents": "Скрыть содержимое",
@@ -702,6 +733,7 @@
"Created": "Создан",
"Imported from {{ source }}": "Импортировано из {{ source }}",
"Stats": "Статистика",
"{{ number }} minute read": "{{ number }} минут чтения",
"{{ number }} words_0": "{{ number }} слово",
"{{ number }} words_1": "{{ number }} слова",
"{{ number }} words_2": "{{ number }} слов",
@@ -758,7 +790,6 @@
"Please request access from the document owner.": "Пожалуйста, запросите доступ у владельца документа.",
"Not found": "Не найдено",
"The page youre looking for cannot be found. It might have been deleted or the link is incorrect.": "Страница, которую вы ищете, не найдена. Возможно, она была удалена или ссылка неверна.",
"Offline": "Не в сети",
"We were unable to load the document while offline.": "Не удалось загрузить документ без сети.",
"Your account has been suspended": "Ваш аккаунт отключён",
"Warning Sign": "Предупреждающий знак",
@@ -769,7 +800,9 @@
"Weird, this shouldnt ever be empty": "Думаю, это не должно быть пустым",
"You havent created any documents yet": "Вы еще не создали ни одного документа",
"Documents youve recently viewed will be here for easy access": "Документы, которые вы недавно просматривали, будут здесь для быстрого доступа",
"We sent out your invites!": "Мы отправили ваши приглашения!",
"{{ count }} invites sent_0": "{{ count }} приглашение отправлено",
"{{ count }} invites sent_1": "{{ count }} приглашения отправлено",
"{{ count }} invites sent_2": "{{ count }} приглашений отправлено",
"Those email addresses are already invited": "Эти адреса почты уже приглашены",
"Sorry, you can only send {{MAX_INVITES}} invites at a time": "Извините, вы можете отправлять только {{MAX_INVITES}} за раз",
"Invited {{roleName}} will receive access to": "Приглашённый участник получит доступ к",
@@ -936,6 +969,7 @@
"Rotate secret": "Обновить секретный ключ",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Обновление секретного ключа клиента аннулирует текущий ключ. Обязательно обновите все приложения, использующие эти учетные данные.",
"Displayed to users when authorizing": "Отображается пользователям при авторизации",
"Application icon": "Иконка приложения",
"Developer information shown to users when authorizing": "Информация о разработчике, показываемая пользователям при авторизации",
"Developer name": "Имя разработчика",
"Developer URL": "URL разработчика",
@@ -999,6 +1033,7 @@
"Search people": "Поиск людей",
"No people matching your search": "Нет людей, соответствующих вашему запросу",
"No people left to add": "Не осталось людей для добавления",
"Group admin": "Администратор группы",
"Member": "Участник",
"Admins": "Администраторы",
"Date created": "Дата создания",
@@ -1043,6 +1078,7 @@
"These settings affect the way that your workspace appears to everyone on the team.": "Эти настройки влияют на то, как ваше рабочее пространство будет отображаться для всех участников команды.",
"Display": "Отображение",
"The logo is displayed at the top left of the application.": "Логотип, который отображается в левом верхнем углу приложения.",
"Workspace logo": "Логотип рабочего пространства",
"The workspace name, usually the same as your company name.": "Название рабочего пространства обычно совпадает с названием компании.",
"Description": "Описание",
"A short description of your workspace.": "Краткое описание вашего рабочего пространства.",
@@ -1193,6 +1229,7 @@
"Expires today": "Истёк сегодня",
"Expires tomorrow": "Истечёт завтра",
"Expires {{ date }}": "Истечёт {{ date }}",
"Sorry, invalid embed link": "Извините, неверная встраиваемая ссылка",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Вам нужно принять разрешения в GitHub, чтобы подключить {{appName}} к вашему рабочему пространству. Попробуйте еще раз?",
"Something went wrong while authenticating your request. Please try logging in again.": "Что-то пошло не так во время обработки вашего запроса. Пожалуйста, попробуйте войти еще раз.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "Владельцу аккаунта GitHub было предложено установить приложение GitHub {{githubAppName}}. Предпросмотр будет доступен для соответствующих ссылок после одобрения.",
@@ -1273,34 +1310,85 @@
"{{ user }} updated {{ timeAgo }}": "{{ user }} обновлен {{ timeAgo }}",
"You created {{ timeAgo }}": "Вы создали {{ timeAgo }}",
"{{ user }} created {{ timeAgo }}": "{{ user }} создан {{ timeAgo }}",
"Error loading data": "Ошибка загрузки данных",
"Avatar of {{ name }}": "Аватар {{ name }}",
"More options": "Больше параметров",
"Filter options": "Параметры фильтра",
"Lightbox": "Лайтбокс",
"View, navigate, or download images in the document": "Просмотр, навигация или загрузка изображений в документе",
"Previous": "Предыдущий",
"Next": "Следующий",
"Image failed to load": "Ошибка загрузки изображения",
"OAuth client icon": "Иконка OAuth-клиента",
"Expand sidebar": "Развернуть боковую панель",
"Collapse sidebar": "Свернуть боковую панель",
"Import files": "Импорт файлов",
"Image width": "Ширина изображения",
"Width": "Ширина",
"Image height": "Высота изображения",
"Height": "Высота",
"Insert after": "Вставить после",
"Insert before": "Вставить до",
"Move up": "Сдвинуть вверх",
"Move down": "Сдвинуть вниз",
"Move left": "Сдвинуть влево",
"Move right": "Сдвинуть вправо",
"Document title": "Заголовок документа",
"{{ number }} minute read": "{{ number }} минут чтения",
"Application icon": "Иконка приложения",
"Group admin": "Администратор группы",
"Workspace logo": "Логотип рабочего пространства",
"Caption": "Подпись",
"Open": "Открыть"
"Open": "Открыть",
"Error loading data": "Ошибка загрузки данных",
"Include private collections": "Включить приватные коллекции",
"Members of \"{{ groupName }}\" that have access to this document will be notified": "Участники группы «{{ groupName }}», имеющие доступ к этому документу, будут уведомлены",
"Edit image URL": "Редактировать URL изображения",
"Upload an image": "Загрузить изображение",
"mentioned your group in": "упомянул вашу группу в",
"Disable mentions": "Отключить упоминания",
"Prevent this group from being mentionable in documents or comments": "Запретить упоминание этой группы в документах или комментариях",
"Group mentions": "Упоминания группы",
"Receive a notification when someone mentions a group you are a member of in a document or comment": "Получать уведомление, когда кто-то упоминает группу, участником которой вы являетесь, в документе или комментарии",
"New attribute": "Новый атрибут",
"Paper size": "Размер бумаги",
"Ask AI \"{{question}}\"": "Спросить ИИ «{{question}}»",
"Are you sure you want to delete?": "Вы уверены, что хотите удалить?",
"Deleting this version of the document will permanently and irrevocably remove it from the history.": "Удаление этой версии документа навсегда и безвозвратно удалит её из истории.",
"Format": "Формат",
"Add option": "Добавить опцию",
"Optional": "Опционально",
"Choose a size for your exported document": "Выберите размер для экспортируемого документа",
"Revision renamed": "Ревизия переименована",
"Failed to save revision": "Не удалось сохранить ревизию",
"Invite to document": "Пригласить к документу",
"Data Attributes": "Атрибуты данных",
"Edit attribute": "Редактировать атрибут",
"Property": "Свойство",
"Yes": "Да",
"No": "Нет",
"Search or ask a question": "Искать или задать вопрос",
"Invited {{roleName}} will not receive access to any collections or documents unless explicitly shared.": "Приглашённый {{roleName}} не получит доступ к коллекциям или документам, если они не будут явно предоставлены.",
"Can view only what is explicitly shared": "Может просматривать только то, что явно предоставлено",
"SAML assertion was invalid or missing fields, please check your configuration": "SAML-утверждение недействительно или отсутствуют поля, проверьте вашу конфигурацию",
"AI generated answer based on related documents in your workspace": "Ответ, сгенерированный ИИ на основе связанных документов в вашем рабочем пространстве",
"References": "Ссылки",
"Enable AI answers to get direct answers to searched questions.": "Включите ответы ИИ, чтобы получать прямые ответы на поисковые вопросы.",
"Go to settings": "Перейти к настройкам",
"Where do I find the file?": "Где найти файл?",
"In a Confluence space, navigate to <em>Space Settings -> Manage space -> Export space</em> and choose to export as HTML with the \"Normal Export\" option.": "В пространстве Confluence перейдите в <em>Настройки пространства -> Управление пространством -> Экспорт пространства</em> и выберите экспорт в HTML с опцией «Обычный экспорт».",
"Drag and drop the zip file from Confluence's HTML export option, or click to upload": "Перетащите zip-файл из опции экспорта HTML в Confluence или нажмите для загрузки",
"Guests": "Гости",
"New Attribute": "Новый атрибут",
"Attributes allow you to define data to be stored with your documents. They can be used to store custom properties, metadata, or any other structured information that is common across documents.": "Атрибуты позволяют определять данные, которые будут храниться вместе с вашими документами. Их можно использовать для хранения пользовательских свойств, метаданных или любой другой структурированной информации, общей для документов.",
"Custom domain": "Пользовательский домен",
"AI answers": "Ответы ИИ",
"Use AI to directly answer searched questions using content in your workspace.": "Используйте ИИ для прямых ответов на поисковые вопросы, используя контент в вашем рабочем пространстве.",
"API access": "Доступ к API",
"Allow members to create API keys for programmatic access": "Разрешить участникам создавать API-ключи для программного доступа",
"Public document embedding": "Встраивание публичных документов",
"When enabled, publicly shared documents can be embedded in third-party websites": "Когда включено, публично предоставленные документы могут быть встроены на сторонние веб-сайты",
"Include previews in emails": "Включать предпросмотр в письмах",
"When enabled, email notifications will include content previews": "Когда включено, почтовые уведомления будут содержать предпросмотр контента",
"Boolean": "Логическое значение",
"Number": "Число",
"Text": "Текст",
"List": "Список",
"Could not load events": "Не удалось загрузить события",
"Audit Log": "Журнал аудита",
"The audit log details the history of security related and other events across your knowledge base.": "Журнал аудита содержит историю событий безопасности и других событий в вашей базе знаний.",
"IP address": "IP-адрес",
"Actor": "Исполнитель",
"Event": "Событие",
"Timestamp": "Временная метка",
"IP": "IP",
"a group": "группа",
"All users": "Все пользователи",
"Private": "Приватный",
"View and edit": "Просмотр и редактирование",
"Sharing enabled": "Совместный доступ включён",
"Date archived": "Дата архивирования",
"Could not load collections": "Не удалось загрузить коллекции",
"Manage the permissions and settings of all collections in the knowledge base. As a workspace admin you can also administer private collections.": "Управляйте разрешениями и настройками всех коллекций в базе знаний. Как администратор рабочего пространства вы также можете администрировать приватные коллекции.",
"Automatically index and search document content from {{appName}} inside <4>Glean</4> in realtime.": "Автоматически индексировать и искать содержимое документов из {{appName}} внутри <4>Glean</4> в реальном времени.",
"API Endpoint": "Конечная точка API",
"API Secret": "Секретный ключ API",
"Datasource": "Источник данных",
"Details of the current {{appName}} license. To arrange contract renewal as expiry or seat limits approach or increase licensed seats please contact your account manager or email <4>priority@getoutline.com</4>.": "Сведения о текущей лицензии {{appName}}. Чтобы договориться о продлении контракта по мере приближения срока действия или лимитов мест или увеличить количество лицензированных мест, свяжитесь с вашим менеджером по работе с клиентами или напишите на <4>priority@getoutline.com</4>.",
"Sorry, an answer could not be found in the collection, try widening your search.": "К сожалению, ответ не найден в коллекции, попробуйте расширить поиск.",
"Sorry, an answer could not be found in the workspace, try widening your search.": "К сожалению, ответ не найден в рабочем пространстве, попробуйте расширить поиск.",
"Looking for answers": "Поиск ответов",
"Answer to \"{{ query }}\"": "Ответ на «{{ query }}»"
}