diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index dffdc08..15ca149 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -7,48 +7,124 @@ on:
- dev
paths:
- .github/workflows/*
- - shared
- - src
+ - shared/**
+ - src/**
- Dockerfile
workflow_dispatch:
jobs:
build:
- name: Build
- runs-on: ubuntu-latest
+ name: Build [${{ matrix.arch }}]
+ runs-on: ${{ contains(matrix.arch, 'arm') && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }}
+ outputs:
+ version: ${{ steps.version.outputs.version }}
permissions:
contents: read
packages: write
+ strategy:
+ matrix:
+ arch:
+ - amd64
+ - arm64
+ # - ppc64le
+ # - s390x
+ # - arm/v7
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
submodules: recursive
- - name: Extract Version
- run: |
- echo "VERSION=$(jq -r '.version' src/package.json)" | tee -a $GITHUB_ENV
-
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
- - if: ${{ github.ref == 'refs/heads/master' }}
- name: Login to the GitHub Container Registry
+ - name: Login to Docker Hub
+ uses: docker/login-action@v3
+ with:
+ username: ${{ github.actor }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Login to GitHub CR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- - if: ${{ github.ref == 'refs/heads/master' }}
- name: Login to Docker Hub
+ - name: Set Version
+ id: version
+ run: |
+ echo "version=$(jq -r '.version' src/package.json)" | tee -a $GITHUB_OUTPUT
+
+ - name: Set Metadata
+ uses: docker/metadata-action@v5
+ id: metadata
+ with:
+ images: |
+ ${{ github.repository }}
+ ghcr.io/${{ github.repository }}
+
+ - name: Build Image
+ uses: docker/build-push-action@v6
+ id: build
+ with:
+ cache-from: type=gha,scope=build-${{ matrix.arch }}
+ cache-to: type=gha,mode=max,scope=build-${{ matrix.arch }}
+ platforms: linux/${{ matrix.arch }}
+ labels: ${{ steps.metadata.outputs.labels }}
+ outputs: type=image,"name=${{ github.repository }},ghcr.io/${{ github.repository }}",push-by-digest=true,name-canonical=true,push=true
+
+ - name: Export Digests
+ if: ${{ github.ref == 'refs/heads/master' }}
+ run: |
+ mkdir -p ${{ runner.temp }}/digests
+ digest="${{ steps.build.outputs.digest }}"
+ touch "${{ runner.temp }}/digests/${digest#sha256:}"
+
+ - name: Upload Digests
+ uses: actions/upload-artifact@v4
+ if: ${{ github.ref == 'refs/heads/master' }}
+ with:
+ name: digests-linux-${{ matrix.arch }}
+ path: ${{ runner.temp }}/digests/*
+ if-no-files-found: error
+ retention-days: 1
+
+ publish:
+ name: Publish
+ runs-on: ubuntu-24.04
+ needs: build
+ if: ${{ github.ref == 'refs/heads/master' }}
+ permissions:
+ contents: read
+ packages: write
+ env:
+ version: ${{ needs.build.outputs.version }}
+ steps:
+ - name: Download Digests
+ uses: actions/download-artifact@v4
+ with:
+ path: ${{ runner.temp }}/digests
+ pattern: digests-*
+ merge-multiple: true
+
+ - name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ github.actor }}
password: ${{ secrets.DOCKER_PASSWORD }}
- - name: Extract Metadata
- id: meta
+ - name: Login to GitHub CR
+ uses: docker/login-action@v3
+ with:
+ registry: ghcr.io
+ username: ${{ github.actor }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Setup Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Set Metadata
uses: docker/metadata-action@v5
with:
images: |
@@ -56,23 +132,20 @@ jobs:
ghcr.io/${{ github.repository }}
tags: |
type=raw,value=latest
- type=raw,value=${{ env.VERSION }}
+ type=raw,value=${{ env.version }}
- - name: Build Image
- uses: docker/build-push-action@v5
- with:
- context: .
- platforms: linux/amd64,linux/arm64
- push: ${{ github.ref == 'refs/heads/master' }}
- cache-from: type=gha
- cache-to: type=gha,mode=max
- tags: ${{ steps.meta.outputs.tags }}
+ - name: Create Manifest & Push
+ working-directory: ${{ runner.temp }}/digests
+ run: |
+ docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
+ $(printf '${{ github.repository }}@sha256:%s ' *)
+ docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
+ $(printf 'ghcr.io/${{ github.repository }}@sha256:%s ' *)
- - if: ${{ github.ref == 'refs/heads/master' }}
- name: Create Release
+ - name: Create Release
uses: softprops/action-gh-release@v2
with:
- name: ${{ env.VERSION }}
- tag_name: ${{ env.VERSION }}
- body: "[Изменения в ${{ env.VERSION }}](https://github.com/outline/outline/releases/tag/v${{ env.VERSION }})"
+ name: ${{ env.version }}
+ tag_name: ${{ env.version }}
+ body: "[Изменения в ${{ env.version }}](https://github.com/outline/outline/releases/tag/v${{ env.version }})"
token: ${{ secrets.TOKEN }}
diff --git a/.gitmodules b/.gitmodules
index 77ecb0f..6ed23e2 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
[submodule "src"]
path = src
- url = git@github.com:outline/outline.git
+ url = https://github.com/outline/outline.git
diff --git a/LICENSE b/LICENSE
index 6d3c7e8..b8cf886 100644
--- a/LICENSE
+++ b/LICENSE
@@ -3,8 +3,8 @@ Business Source License 1.1
Parameters
Licensor: General Outline, Inc.
-Licensed Work: Outline 0.80.1
- The Licensed Work is (c) 2024 General Outline, Inc.
+Licensed Work: Outline 0.82.0-0
+ The Licensed Work is (c) 2025 General Outline, Inc.
Additional Use Grant: You may make use of the Licensed Work, provided that
you may not use the Licensed Work for a Document
Service.
@@ -15,7 +15,7 @@ Additional Use Grant: You may make use of the Licensed Work, provided that
Licensed Work by creating teams and documents
controlled by such third parties.
-Change Date: 2028-09-22
+Change Date: 2029-01-31
Change License: Apache License, Version 2.0
diff --git a/shared/i18n/locales/ru_RU/translation.json b/shared/i18n/locales/ru_RU/translation.json
index 0f41fd6..8c83367 100644
--- a/shared/i18n/locales/ru_RU/translation.json
+++ b/shared/i18n/locales/ru_RU/translation.json
@@ -12,8 +12,12 @@
"Star": "Добавить в избранное",
"Unstar": "Убрать из избранного",
"Archive": "Архив",
+ "Archive collection": "Архив коллекций",
+ "Collection archived": "Коллекция архивирована",
"Archiving": "Архивирование",
+ "Archiving this collection will also archive all documents within it. Documents from the collection will no longer be visible in search results.": "Архивация этой коллекции также архивирует все документы в ней. Документы из коллекции больше не будут видны в результатах поиска.",
"Restore": "Восстановить",
+ "Collection restored": "Коллекция восстановлена",
"Delete": "Удалить",
"Delete collection": "Удалить коллекцию",
"New template": "Новый шаблон",
@@ -21,6 +25,8 @@
"Mark as resolved": "Отметить как решённое",
"Thread resolved": "Обсуждение решено",
"Mark as unresolved": "Отметить как нерешённое",
+ "View reactions": "Посмотреть реакции",
+ "Reactions": "Реакции",
"Copy ID": "Скопировать ID",
"Clear IndexedDB cache": "Очистить кэш IndexedDB",
"IndexedDB cache cleared": "Кэш IndexedDB очищен",
@@ -88,6 +94,9 @@
"Insights": "Подробности",
"Disable viewer insights": "Отключить подробности о наблюдателях",
"Enable viewer insights": "Включить подробности о наблюдателях",
+ "Leave document": "Покинуть документ",
+ "You have left the shared document": "Вы покинули общий документ",
+ "Could not leave document": "Не удалось покинуть документ",
"Home": "Домашняя страница",
"Drafts": "Черновики",
"Trash": "Корзина",
@@ -129,6 +138,7 @@
"Collection": "Коллекция",
"Debug": "Отладка",
"Document": "Документ",
+ "Documents": "Документы",
"Recently viewed": "Недавно просмотренные",
"Revision": "Версия",
"Navigation": "Навигация",
@@ -157,18 +167,18 @@
"Also, {{collectionName}} is being used as the start view – deleting it will reset the start view to the Home page.": "Кроме того, {{collectionName}} используется в качестве стартового экрана — его удаление приведет к сбросу стартового экрана на домашнюю страницу.",
"Sorry, an error occurred saving the collection": "К сожалению, при сохранении коллекции произошла ошибка",
"Add a description": "Добавить описание",
- "Collapse": "Свернуть",
- "Expand": "Развернуть",
"Type a command or search": "Введите команду или выполните поиск",
"Choose a template": "Выберите шаблон",
"Are you sure you want to permanently delete this entire comment thread?": "Вы уверены, что хотите НАВСЕГДА удалить эту ветку комментариев?",
"Are you sure you want to permanently delete this comment?": "Вы уверены, что хотите НАВСЕГДА удалить этот комментарий?",
"Confirm": "Подтвердить",
+ "manage access": "управлять доступом",
"view and edit access": "доступ для просмотра и редактирования",
"view only access": "доступ только для просмотра",
"no access": "нет доступа",
"Move document": "Переместить документ",
"Moving": "Идет перемещение",
+ "Moving the document {{ title }} to the {{ newCollectionName }} collection will change permission for all workspace members from {{ prevPermission }} to {{ newPermission }}.": "Перемещение документа {{ title }} в коллекцию {{ newCollectionName }} изменит права доступа для всех участников рабочего пространства с {{ prevPermission }} на {{ newPermission }}.",
"Document is too large": "Документ слишком большой",
"This document has reached the maximum size and can no longer be edited": "Этот документ достиг максимального размера и больше не может быть отредактирован.",
"Authentication failed": "Аутентификация не удалась",
@@ -184,10 +194,16 @@
"Default collection": "Коллекция по умолчанию",
"Install now": "Установить сейчас",
"Deleted Collection": "Удаленная коллекция",
+ "Untitled": "Без названия",
"Unpin": "Открепить",
+ "{{ minutes }}m read": "{{ minutes }} минут прочитано",
+ "Select a location to copy": "Выберите место для копирования",
+ "Document copied": "Документ скопирован",
+ "Couldn’t copy the document, try again?": "Не удалось скопировать документ. Попробовать снова?",
+ "Include nested documents": "Включить вложенные документы",
+ "Copy to {{ location }}": "Скопировать в {{ location }}",
"Search collections & documents": "Искать коллекции & документы",
"No results found": "Ничего не найдено",
- "Untitled": "Без названия",
"New": "Новое",
"Only visible to you": "Видно только Вам",
"Draft": "Черновик",
@@ -216,9 +232,6 @@
"Currently editing": "Сейчас редактируется",
"Currently viewing": "Сейчас просматривается",
"Viewed {{ timeAgo }}": "Просмотрено {{ timeAgo }}",
- "Copy of {{ documentName }}": "Копия {{ documentName }}",
- "Title": "Заголовок",
- "Include nested documents": "Включить вложенные документы",
"Module failed to load": "Произошла ошибка во время загрузки модуля",
"Loading Failed": "Ошибка загрузки",
"Sorry, part of the application failed to load. This may be because it was updated since you opened the tab or because of a failed network request. Please try reloading.": "К сожалению, части приложения не удалось загрузиться. Это могло произойти из-за того, что страница обновилась с тех пор, как была открыта или из-за проблем в отправке сетевого запроса. Пожалуйста, попробуйте перезагрузить страницу.",
@@ -251,9 +264,6 @@
"Including uploaded images and files in the exported data": "Включение загруженных изображений и файлов в экспортируемые данные",
"Filter": "Фильтр",
"No results": "Ничего не найденo",
- "{{ count }} member": "{{ count }} участник",
- "{{ count }} member_plural": "{{ count }} участников",
- "Group members": "Участники группы",
"{{authorName}} created <3>3>": "{{authorName}} создал <3>3>",
"{{authorName}} opened <3>3>": "{{authorName}} открыл <3>3>",
"Search emoji": "Поиск эмодзи",
@@ -292,12 +302,21 @@
"Unknown": "Неизвестно",
"Mark all as read": "Отметить все как прочитанное",
"You're all caught up": "Вы в теме",
- "Documents": "Документы",
+ "{{ username }} reacted with {{ emoji }}": "{{ username }} оставил реакцию {{ emoji }}",
+ "{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} и {{ secondUsername }} оставили реакцию {{ emoji }}",
+ "{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} и {{ count }} других оставили реакцию {{ emoji }}",
+ "{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}_plural": "{{ firstUsername }} и {{ count }} оставили реакцию {{ emoji }}",
+ "Add reaction": "Добавить реакцию",
+ "Reaction picker": "Выбор реакции",
+ "Could not load reactions": "Не удалось загрузить реакции",
+ "Reaction": "Реакция",
"Results": "Результаты",
"No results for {{query}}": "По запросу «{{query}}» ничего не найдено",
"Manage": "Управлять",
"All members": "Все участники",
"Everyone in the workspace": "Все в рабочем пространстве",
+ "{{ count }} member": "{{ count }} участник",
+ "{{ count }} member_plural": "{{ count }} участников",
"Invite": "Приглашение",
"{{ userName }} was added to the collection": "{{ userName }} добавлен в коллекцию",
"{{ count }} people added to the collection": "{{ count }} человек добавлен в коллекцию",
@@ -335,6 +354,8 @@
"Anyone with the link can access because the parent document, <2>{{documentTitle}}2>, is shared": "Доступ может получить любой, у кого есть ссылка, поскольку родительский документ <2>{{documentTitle}2> является общим",
"Allow anyone with the link to access": "Разрешить доступ всем, у кого есть ссылка",
"Publish to internet": "Опубликовать в Интернете",
+ "Search engine indexing": "Индексация поисковой системы",
+ "Disable this setting to discourage search engines from indexing the page": "Отключите этот параметр, чтобы запретить поисковым системам индексировать страницу",
"Nested documents are not shared on the web. Toggle sharing to enable access, this will be the default behavior in the future": "Вложенные документы не публикуются в Интернете. Переключите опцию общего доступа, чтобы включить доступ. В будущем это будет поведение по умолчанию.",
"{{ userName }} was added to the document": "{{ userName }} был добавлен в документ",
"{{ count }} people added to the document": "{{ count }} человек был добавлен в документ",
@@ -342,10 +363,12 @@
"{{ count }} groups added to the document": "{{ count }} группа была добавлена в документ",
"{{ count }} groups added to the document_plural": "{{ count }} групп была добавлено в документ",
"Logo": "Логотип",
+ "Archived collections": "Архивированные коллекции",
"New doc": "Новый документ",
- "You can't reorder documents in an alphabetically sorted collection": "Вы не можете изменить порядок документов в коллекции, отсортированной по алфавиту",
"Empty": "Пусто",
"Collections": "Коллекции",
+ "Collapse": "Свернуть",
+ "Expand": "Развернуть",
"Document not supported – try Markdown, Plain text, HTML, or Word": "Документ не поддерживается — попробуйте Markdown, простой текст или Word",
"Go back": "Назад",
"Go forward": "Вперед",
@@ -357,12 +380,12 @@
"Up to date": "Последняя версия",
"{{ releasesBehind }} versions behind": "{{ releasesBehind }} версий позади",
"{{ releasesBehind }} versions behind_plural": "{{ releasesBehind }} версий позади",
+ "Change permissions?": "Изменить права доступа?",
+ "You can't reorder documents in an alphabetically sorted collection": "Вы не можете изменить порядок документов в коллекции, отсортированной по алфавиту",
"Return to App": "Вернуться в приложение",
"Installation": "Установка",
"Unstar document": "Убрать документ из избранного",
"Star document": "Добавить документ в избранное",
- "Previous page": "Предыдущая страница",
- "Next page": "Следующая страница",
"Template created, go ahead and customize it": "Шаблон создан, теперь Вы можете перейти к нему и продолжить настройку",
"Creating a template from {{titleWithDefault}} is a non-destructive action – we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Создание шаблона из {{titleWithDefault}} не уничтожит Ваш документ — мы сделаем копию и превратим ее в шаблон, который можно будет использовать в качестве отправной точки для новых документов.",
"Published": "Опубликовано",
@@ -377,6 +400,12 @@
"Are you sure you want to suspend {{ userName }}? Suspended users will be prevented from logging in.": "Вы уверены, что хотите приостановить {{ userName }}? Заблокированные пользователи не смогут войти в систему.",
"New name": "Новое имя",
"Name can't be empty": "Имя не может быть пустым",
+ "Check your email to verify the new address.": "Проверьте свою эл. почту для подтверждения нового адреса.",
+ "The email will be changed once verified.": "Адрес эл. почты будет изменён после подтверждения.",
+ "You will receive an email to verify your new address. It must be unique in the workspace.": "Вы получите письмо для подтверждения Вашего нового адреса эл. почты. Он должен быть уникальным в рабочем пространстве.",
+ "A confirmation email will be sent to the new address before it is changed.": "Перед изменением адреса эл. почты на него будет отправлено письмо с подтверждением.",
+ "New email": "Новое письмо",
+ "Email can't be empty": "Письмо не может быть пустым",
"Your import completed": "Ваш импорт завершен",
"Previous match": "Предыдущее совпадение",
"Next match": "Следующее совпадение",
@@ -389,6 +418,10 @@
"Replace": "Заменить",
"Replace all": "Заменить все",
"Profile picture": "Фото профиля",
+ "Create a new doc": "Создать новый документ",
+ "{{ userName }} won't be notified, as they do not have access to this document": "{{ userName }} не будет уведомлен, так как у него нет доступа к этому документу",
+ "Keep as link": "Сохранить как ссылку",
+ "Embed": "Вставить",
"Add column after": "Добавить колонку после",
"Add column before": "Добавить колонку перед",
"Add row after": "Добавить строку после",
@@ -406,7 +439,6 @@
"Comment": "Комментировать",
"Create link": "Создать ссылку",
"Sorry, an error occurred creating the link": "К сожалению, при создании ссылки возникла ошибка",
- "Create a new doc": "Создать новый документ",
"Create a new child doc": "Создать новый дочерний документ",
"Delete table": "Удалить таблицу",
"Delete file": "Удалить файл",
@@ -418,10 +450,11 @@
"Italic": "Курсив",
"Sorry, that link won’t work for this embed type": "К сожалению, эта ссылка не работает для такого типа встраивания",
"File attachment": "Прикрепленные файлы",
- "Paste a link, search, or create": "Вставить ссылку, искать или создать",
+ "Enter a link": "Введите ссылку",
"Big heading": "Большой заголовок",
"Medium heading": "Средний заголовок",
"Small heading": "Малый заголовок",
+ "Extra small heading": "Очень маленький заголовок",
"Heading": "Заголовок",
"Divider": "Разделитель",
"Image": "Картинка",
@@ -450,6 +483,7 @@
"Sort ascending": "Сортировка по возрастанию",
"Sort descending": "Сортировка по убыванию",
"Table": "Таблица",
+ "Export as CSV": "Экспортировать в CSV",
"Toggle header": "Переключить заголовок",
"Math inline (LaTeX)": "Встроенная математика (LaTeX)",
"Math block (LaTeX)": "Математический блок (LaTeX)",
@@ -469,7 +503,7 @@
"Could not import file": "Не удалось импортировать файл",
"Unsubscribed from document": "Отписаться от документа",
"Account": "Аккаунт",
- "API": "API",
+ "API Keys": "Ключи API",
"Details": "Детали",
"Security": "Безопасность",
"Features": "Дополнительно",
@@ -487,6 +521,8 @@
"Export collection": "Экспорт коллекции",
"Rename": "Переименовать",
"Sort in sidebar": "Сортировка в боковой панели",
+ "A-Z sort": "Сортировка A-Z",
+ "Z-A sort": "Сортировка Z-A",
"Manual sort": "Ручная сортировка",
"Comment options": "Настройки комментариев",
"Show document menu": "Показать меню документа",
@@ -495,6 +531,7 @@
"Choose a collection": "Выберите коллекцию",
"Enable embeds": "Включить встраивание",
"Export options": "Параметры экспорта",
+ "Group members": "Участники группы",
"Edit group": "Редактировать группу",
"Delete group": "Удалить группу",
"Group options": "Параметры группы",
@@ -513,6 +550,7 @@
"Headings you add to the document will appear here": "Здесь появятся заголовки, которые Вы добавляете в документ",
"Table of contents": "Оглавление",
"Change name": "Изменить имя",
+ "Change email": "Изменить адрес эл. почты",
"Suspend user": "Заблокировать пользователя",
"An error occurred while sending the invite": "Произошла ошибка при отправке приглашения",
"User options": "Настройки пользователя",
@@ -527,10 +565,13 @@
"created the collection": "создана коллекция",
"mentioned you in": "упомянул Вас в",
"left a comment on": "оставил комментарий в",
+ "resolved a comment on": "решил комментарий в",
"shared": "поделенный",
"invited you to": "пригласил Вас в",
"Choose a date": "Выбрать дату",
- "Name your key something that will help you to remember it's use in the future, for example \"local development\" or \"continuous integration\".": "Назовите свой ключ так, чтобы не забыть о его предназначении в будущем. Например. «локальная разработка» или «непрерывная интеграция».",
+ "API key created. Please copy the value now as it will not be shown again.": "API-ключ создан. Пожалуйста, скопируйте значение сейчас, так как оно больше не будет показано.",
+ "Scopes": "Области видимости",
+ "Space-separated scopes restrict the access of this API key to specific parts of the API. Leave blank for full access": "Разделенные пробелами области видимости ограничивают доступ этого ключа API к определенным частям API. Оставьте пустым для полного доступа",
"Expiration": "Срок действия",
"Never expires": "Никогда не истекает",
"7 days": "7 дней",
@@ -568,6 +609,13 @@
"Upload image": "Загрузить изображение",
"No resolved comments": "Нет решённых комментариев",
"No comments yet": "Пока нет комментариев",
+ "New comments": "Новые комментарии",
+ "Sort comments": "Сортировать комментарии",
+ "Most recent": "Недавние",
+ "Order in doc": "Порядок в документе",
+ "Resolved": "Решено",
+ "Show {{ count }} reply": "Показать {{ count }} ответ",
+ "Show {{ count }} reply_plural": "Показать {{ count }} ответов",
"Error updating comment": "При обновлении комментария произошла ошибка",
"Document restored": "Документ восстановлен",
"Images are still uploading.\nAre you sure you want to discard them?": "Изображения все еще загружаются.\nВы уверены, что хотите прервать загрузку?",
@@ -653,27 +701,6 @@
"Your account has been suspended": "Ваш аккаунт отключён",
"Warning Sign": "Предупреждающий знак",
"A workspace admin ({{ suspendedContactEmail }}) has suspended your account. To re-activate your account, please reach out to them directly.": "Администратор рабочего пространства ({{ suspendedContactEmail }}) отключил Ваш аккаунт. Свяжитесь с ним, чтобы получить доступ.",
- "Are you sure about that? Deleting the {{groupName}} group will cause its members to lose access to collections and documents that it is associated with.": "Вы уверены? Удаление группы {{groupName}} приведет к тому, что ее участники потеряют доступ к коллекциям и документам, с которыми она связана.",
- "You can edit the name of this group at any time, however doing so too often might confuse your team mates.": "Вы можете изменить название этой группы в любое время, однако зачастую это может сбить с толку участников Вашей команды.",
- "{{userName}} was added to the group": "{{userName}} добавлен в группу",
- "Could not add user": "Не удалось добавить пользователя",
- "Add members below to give them access to the group. Need to add someone who’s not yet a member?": "Добавьте участников ниже, чтобы предоставить им доступ к группе. Нужно добавить кого-то, кто еще не зарегистрирован?",
- "Invite them to {{teamName}}": "Пригласить их в {{teamName}}",
- "Ask an admin to invite them first": "Попросите администратора сначала пригласить их",
- "Search by name": "Поиск по имени",
- "Search people": "Поиск людей",
- "No people matching your search": "Нет людей, соответствующих Вашему запросу",
- "No people left to add": "Не осталось людей для добавления",
- "Admin": "Администратор",
- "{{userName}} was removed from the group": "{{userName}} удален из группы",
- "Add and remove members to the {{groupName}} group. Members of the group will have access to any collections this group has been added to.": "Добавляйте и удаляйте участников в группу {{groupName}}. Участники группы будут иметь доступ ко всем коллекциям, в которые была добавлена эта группа.",
- "Add people": "Добавить людей",
- "Listing members of the {{groupName}} group.": "Список участников группы {{groupName}}.",
- "This group has no members.": "В этой группе нет участников.",
- "Add people to {{groupName}}": "Добавить пользователей в {{groupName}}",
- "Groups are for organizing your team. They work best when centered around a function or a responsibility — Support or Engineering for example.": "Группы предназначены для организации Вашей команды. Они работают лучше всего, когда сосредоточены вокруг какой-то одной функции или компетенции — например служба поддержки или разработки.",
- "You’ll be able to add people to the group next.": "Далее Вы сможете добавить участников в Вашу группу.",
- "Continue": "Продолжить",
"Created by me": "Созданные мной",
"Weird, this shouldn’t ever be empty": "Думаю, это не должно быть пустым",
"You haven’t created any documents yet": "Вы еще не создали ни одного документа",
@@ -683,6 +710,7 @@
"Sorry, you can only send {{MAX_INVITES}} invites at a time": "Извините, Вы можете отправлять только {{MAX_INVITES}} за раз",
"Invited {{roleName}} will receive access to": "Приглашённый {{roleName}} получит доступ к",
"{{collectionCount}} collections": "{{collectionCount}} коллекций",
+ "Admin": "Администратор",
"Can manage all workspace settings": "Может управлять всеми настройками рабочего пространства",
"Can create, edit, and delete documents": "Может создавать, редактировать и удалять документы",
"Can view and comment": "Может просматривать и комментировать",
@@ -735,6 +763,10 @@
"LaTeX block": "Блок LaTeX",
"Inline code": "Встроенный код",
"Inline LaTeX": "Встроенный LaTeX",
+ "Triggers": "Триггеры",
+ "Mention user or document": "Упомянуть пользователя или документ",
+ "Emoji": "Эмодзи",
+ "Insert block": "Вставить блок",
"Sign In": "Войти",
"Continue with Email": "Продолжить с почтой",
"Continue with {{ authProviderName }}": "Продолжить с {{ authProviderName }}",
@@ -742,6 +774,7 @@
"The workspace could not be found": "Рабочее пространство не найдено",
"To continue, enter your workspace’s subdomain.": "Чтобы продолжить, введите поддомен Вашего рабочего пространства.",
"subdomain": "поддомен",
+ "Continue": "Продолжить",
"The domain associated with your email address has not been allowed for this workspace.": "Домен, связанный с Вашим адресом эл. почты, не разрешен для этого рабочего пространства.",
"Unable to sign-in. Please navigate to your workspace's custom URL, then try to sign-in again.<1>1>If you were invited to a workspace, you will find a link to it in the invite email.": "Невозможно войти. Перейдите по пользовательскому URL-адресу своего рабочего пространства и попробуйте войти еще раз.<1>1>Если Вас пригласили в рабочее пространство, Вы найдете ссылку с приглашением в письме на эл. почте.",
"Sorry, a new account cannot be created with a personal Gmail address.<1>1>Please use a Google Workspaces account instead.": "К сожалению, нельзя создать новый аккаунт с личным адресом Gmail.<1>1> Пожалуйста, используйте аккаунт Google Workspaces.",
@@ -757,7 +790,7 @@
"This workspace has been suspended. Please contact support to restore access.": "Это рабочее пространтсво заблокировано. Обратитесь в службу поддержки для восстановления доступа.",
"Authentication failed – this login method was disabled by a team admin.": "Аутентификация не удалась: этот метод входа отключён администратором команды.",
"The workspace you are trying to join requires an invite before you can create an account.<1>1>Please request an invite from your workspace admin and try again.": "Прежде чем Вы сможете создать аккаунт, для создания рабочего пространства, к которому Вы пытаетесь присоединиться, требуется приглашение.<1>1>Пожалуйста, запросите приглашение у администратора рабочего пространства и повторите попытку.",
- "Sorry, your domain is not allowed. Please try again with an allowed workspace domain.": "К сожалению, Ваш домен не разрешен. Повторите попытку, указав разрешенный домен рабочего пространства.",
+ "Sorry, an unknown error occurred.": "Извините, произошла неизвестная ошибка.",
"Login": "Логин",
"Error": "Ошибка",
"Failed to load configuration.": "Не удалось загрузить конфигурацию.",
@@ -791,11 +824,13 @@
"Something went wrong": "Что-то пошло не так",
"Please try again or contact support if the problem persists": "Пожалуйста, попробуйте ещё раз или обратитесь в поддержку, если проблема осталась",
"No documents found for your search filters.": "Не найдено документов по Вашим фильтрам поиска.",
- "API key copied to clipboard": "Ключ API скопирован в буфер обмена",
- "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the developer documentation.": "Создавайте ключи API для аутентификации с помощью API и программируемого управления\n данными Вашего рабочего пространства. Ключи API имеют те же разрешения, что и Ваш аккаунт пользователя.\n Более подробную информацию смотрите в документации разработчика.",
- "Personal keys": "Персональные ключи",
+ "API": "API",
+ "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the developer documentation.": "Ключи API можно использовать для аутентификации с помощью API и программного управления\n данными Вашего рабочего пространства. Более подробную информацию смотрите в документации разработчика.",
+ "by {{ name }}": "{{ name }}",
"Last used": "Последний раз использован",
"No expiry": "Нет срока истечения",
+ "Restricted scope": "Ограниченная область видимости",
+ "API key copied to clipboard": "Ключ API скопирован в буфер обмена",
"Copied": "Скопировано",
"Revoking": "Отзыв",
"Are you sure you want to revoke the {{ tokenName }} token?": "Вы уверены, что хотите отозвать токен {{ tokenName }}?",
@@ -824,6 +859,26 @@
"Deleting this import will also delete all collections and documents that were created from it. This cannot be undone.": "Удаление этого импорта также приведет к удалению всех коллекций и документов, созданных на его основе. Это не может быть отменено.",
"Check server logs for more details.": "Проверьте журналы сервера для получения полной информации.",
"{{userName}} requested": "Запрошено {{userName}}",
+ "Groups are for organizing your team. They work best when centered around a function or a responsibility — Support or Engineering for example.": "Группы предназначены для организации Вашей команды. Они работают лучше всего, когда сосредоточены вокруг какой-то одной функции или компетенции — например служба поддержки или разработки.",
+ "You’ll be able to add people to the group next.": "Далее Вы сможете добавить участников в Вашу группу.",
+ "You can edit the name of this group at any time, however doing so too often might confuse your team mates.": "Вы можете изменить название этой группы в любое время, однако зачастую это может сбить с толку участников Вашей команды.",
+ "Are you sure about that? Deleting the {{groupName}} group will cause its members to lose access to collections and documents that it is associated with.": "Вы уверены? Удаление группы {{groupName}} приведет к тому, что ее участники потеряют доступ к коллекциям и документам, с которыми она связана.",
+ "Add people to {{groupName}}": "Добавить пользователей в {{groupName}}",
+ "{{userName}} was removed from the group": "{{userName}} удален из группы",
+ "Add and remove members to the {{groupName}} group. Members of the group will have access to any collections this group has been added to.": "Добавляйте и удаляйте участников в группу {{groupName}}. Участники группы будут иметь доступ ко всем коллекциям, в которые была добавлена эта группа.",
+ "Add people": "Добавить людей",
+ "Listing members of the {{groupName}} group.": "Список участников группы {{groupName}}.",
+ "This group has no members.": "В этой группе нет участников.",
+ "{{userName}} was added to the group": "{{userName}} добавлен в группу",
+ "Could not add user": "Не удалось добавить пользователя",
+ "Add members below to give them access to the group. Need to add someone who’s not yet a member?": "Добавьте участников ниже, чтобы предоставить им доступ к группе. Нужно добавить кого-то, кто еще не зарегистрирован?",
+ "Invite them to {{teamName}}": "Пригласить их в {{teamName}}",
+ "Ask an admin to invite them first": "Попросите администратора сначала пригласить их",
+ "Search by name": "Поиск по имени",
+ "Search people": "Поиск людей",
+ "No people matching your search": "Нет людей, соответствующих Вашему запросу",
+ "No people left to add": "Не осталось людей для добавления",
+ "Date created": "Дата создания",
"Upload": "Загрузить",
"How does this work?": "Как это работает?",
"You can import a zip file that was previously exported from the JSON option in another instance. In {{ appName }}, open Export in the Settings sidebar and click on Export Data.": "Вы можете импортировать ZIP-архив, который ранее был экспортирован с помощью параметра JSON, в другой экземпляр. В {{ appName }} откройте Экспорт на боковой панели настроек и нажмите Экспорт данных.",
@@ -873,17 +928,17 @@
"Danger": "Опасность",
"You can delete this entire workspace including collections, documents, and users.": "Вы можете удалить всё рабочее пространство, включая коллекции, документы и пользователей.",
"Export data": "Экспорт данных",
- "A full export might take some time, consider exporting a single document or collection. The exported data is a zip of your documents in Markdown format. You may leave this page once the export has started – if you have notifications enabled, we will email a link to {{ userEmail }} when it’s complete.": "Полный экспорт может занять некоторое время. Рассмотрите возможность экспорта одного документа или коллекции. Экспортированные данные представляют собой ZIP-архив Ваших документов в формате Markdown. Вы можете покинуть эту страницу после того, как экспорт начнется — если у Вас включены уведомления, мы отправим ссылку на почту {{ userEmail }}, когда он будет завершен.",
"Recent exports": "Недавний экспорт",
"Manage optional and beta features. Changing these settings will affect the experience for all members of the workspace.": "Управление дополнительными и бета-функциями. Изменение этих параметров повлияет на работу всех участников рабочего пространства.",
"Separate editing": "Разделить редактирование",
"When enabled documents have a separate editing mode by default instead of being always editable. This setting can be overridden by user preferences.": "Когда эта функция включена, документы по умолчанию имеют отдельный режим редактирования, а не всегда доступны для редактирования. Этот параметр может быть переопределен предпочтениями пользователя.",
"Commenting": "Комментарий",
"When enabled team members can add comments to documents.": "Если эта функция включена, участники команды могут добавлять комментарии к документам.",
+ "Create a group": "Создать группу",
+ "Could not load groups": "Не удалось загрузить группы",
"New group": "Новая группа",
"Groups can be used to organize and manage the people on your team.": "Группы могут быть использованы для организации и управления людьми в Вашей команде.",
"No groups have been created yet": "Пока что не создано ни одной группы",
- "Create a group": "Создать группу",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Быстро переносите существующие документы, страницы и файлы из других инструментов и сервисов в {{appName}}. Вы также можете перетаскивать любые документы HTML, Markdown и текстовые документы непосредственно в Коллекции в приложении.",
"Import a zip file of Markdown documents (exported from version 0.67.0 or earlier)": "Импорт ZIP-архива или документов Markdown (экспортированный из 0.67.0 или более ранней версии)",
"Import data": "Импорт данных",
@@ -892,6 +947,7 @@
"Import pages from a Confluence instance": "Импорт страниц из Confluence",
"Enterprise": "Корпоративная версия",
"Recent imports": "Недавно импортированное",
+ "Could not load members": "Не удалось загрузить участников",
"Everyone that has signed into {{appName}} is listed here. It’s possible that there are other users who have access through {{signinMethods}} but haven’t signed in yet.": "Здесь перечислены все, кто вошел в {{appName}}. Возможно, есть другие пользователи, у которых есть доступ через {{signinMethods}}, но они еще не вошли в систему.",
"Receive a notification whenever a new document is published": "Получать уведомление каждый раз, когда опубликован новый документ",
"Document updated": "Документ обновлен",
@@ -900,6 +956,7 @@
"Receive a notification when a document you are subscribed to or a thread you participated in receives a comment": "Получать уведомление, когда документ, на который Вы подписаны, или обсуждение, в которой Вы участвовали, получает комментарий",
"Mentioned": "Упомянут",
"Receive a notification when someone mentions you in a document or comment": "Получать уведомление, когда кто-то упоминает Вас в документе или комментарии",
+ "Receive a notification when a comment thread you were involved in is resolved": "Получить уведомление, когда обсуждение, в котором вы принимали участие, будет решено",
"Collection created": "Коллекция создана",
"Receive a notification whenever a new collection is created": "Получать уведомление каждый раз, когда создана новая коллекция",
"Invite accepted": "Приглашение принято",
@@ -917,9 +974,9 @@
"Notifications saved": "Уведомления сохранены",
"Unsubscription successful. Your notification settings were updated": "Вы успешно отписались. Ваши настройки уведомлений обновлены",
"Manage when and where you receive email notifications.": "Управляйте, когда и где Вы будете получать email уведомления.",
- "Email address": "Адрес эл. почты",
- "Your email address should be updated in your SSO provider.": "Ваш адрес эл. почты должен быть обновлен провайдером SSO.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "Интеграция с эл. почтой в настоящее время отключена. Установите соответствующие переменные среды и перезапустите сервер, чтобы включить уведомления.",
+ "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the developer documentation.": "Создавайте ключи API для аутентификации с помощью API и программируемого управления\n данными Вашего рабочего пространства. Ключи API имеют те же разрешения, что и Ваш аккаунт пользователя.\n Более подробную информацию смотрите в документации разработчика.",
+ "Personal keys": "Персональные ключи",
"Preferences saved": "Настройки сохранены",
"Delete account": "Удалить аккаунт",
"Manage settings that affect your personal experience.": "Настройте параметры, которые влияют на Ваш пользовательский опыт.",
@@ -933,6 +990,8 @@
"When enabled, documents have a separate editing mode. When disabled, documents are always editable when you have permission.": "Если этот параметр включен, документы имеют отдельный режим редактирования. Если этот параметр отключен, документы всегда можно редактировать, если у Вас есть разрешение.",
"Remember previous location": "Запомнить предыдущее местонахождение",
"Automatically return to the document you were last viewing when the app is re-opened.": "Автоматически возвращаться к документу, который Вы просматривали в последний раз, при повторном открытии приложения.",
+ "Smart text replacements": "Умные замены текста",
+ "Auto-format text by replacing shortcuts with symbols, dashes, smart quotes, and other typographical elements.": "Автоматическая замена сокращений в тексте на символы, тире, кавычки и другие типографские элементы.",
"You may delete your account at any time, note that this is unrecoverable": "Удалить аккаунт можно в любое время — но вернуть данные не получится",
"Profile saved": "Профиль сохранен",
"Profile picture updated": "Фото профиля обновлено",
@@ -941,6 +1000,7 @@
"Photo": "Фото",
"Choose a photo or image to represent yourself.": "Выберите фотографию или картинку, чтобы представить себя.",
"This could be your real name, or a nickname — however you’d like people to refer to you.": "Это может быть Ваше настоящее имя или псевдоним — как бы Вы хотели, чтобы люди обращались к Вам.",
+ "Email address": "Адрес эл. почты",
"Are you sure you want to require invites?": "Вы уверены, что хотите требовать приглашений?",
"New users will first need to be invited to create an account. Default role and Allowed domains will no longer apply.": "Новым пользователям нужно будет получать приглашение для создания аккаунта. Роль по умолчанию и Разрешенные домены больше не будут применяться.",
"Settings that impact the access, security, and content of your workspace.": "Настройки, влияющие на доступ, безопасность и содержимое Вашего рабочего пространства.",
@@ -970,6 +1030,7 @@
"Add your self-hosted draw.io installation url here to enable automatic embedding of diagrams within documents.": "Добавьте здесь адрес Вашего экземпляра draw.io для автоматического встраивания диаграмм в документы.",
"Grist deployment": "Деплоймент Grist",
"Add your self-hosted grist installation URL here.": "Добавьте здесь адрес Вашего экземпляра Grist.",
+ "Could not load shares": "Не удалось загрузить поделённое",
"Sharing is currently disabled.": "В настоящий момент общий доступ отключен.",
"You can globally enable and disable public document sharing in the security settings.": "Вы можете глобально включить и отключить общий доступ к документам в настройках безопасности.",
"Documents that have been shared are listed below. Anyone that has the public link can access a read-only version of the document until the link has been revoked.": "Документы, к которым был предоставлен доступ, перечислены ниже. Любой, у кого есть общедоступная ссылка, может получить доступ к версии документа только для чтения, пока ссылка не будет отозвана.",
@@ -1076,39 +1137,9 @@
"You created {{ timeAgo }}": "Вы создали {{ timeAgo }}",
"{{ user }} created {{ timeAgo }}": "{{ user }} создан {{ timeAgo }}",
"Uploading": "Идёт загрузка",
- "Archive collection": "Архив коллекций",
- "Collection archived": "Коллекция архивирована",
- "Archiving this collection will also archive all documents within it. Documents from the collection will no longer be visible in search results.": "Архивация этой коллекции также архивирует все документы в ней. Документы из коллекции больше не будут видны в результатах поиска.",
- "Collection restored": "Коллекция восстановлена",
- "View reactions": "Посмотреть реакции",
- "Reactions": "Реакции",
- "Leave document": "Покинуть документ",
- "You have left the shared document": "Вы покинули общий документ",
- "Could not leave document": "Не удалось покинуть документ",
- "manage access": "управлять доступом",
- "Moving the document {{ title }} to the {{ newCollectionName }} collection will change permission for all workspace members from {{ prevPermission }} to {{ newPermission }}.": "Перемещение документа {{ title }} в коллекцию {{ newCollectionName }} изменит права доступа для всех участников рабочего пространства с {{ prevPermission }} на {{ newPermission }}.",
- "{{ username }} reacted with {{ emoji }}": "{{ username }} оставил реакцию {{ emoji }}",
- "{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} и {{ secondUsername }} оставили реакцию {{ emoji }}",
- "{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} и {{ count }} других оставили реакцию {{ emoji }}",
- "{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}_plural": "{{ firstUsername }} и {{ count }} оставили реакцию {{ emoji }}",
- "Reaction picker": "Выбор реакции",
- "Could not load reactions": "Не удалось загрузить реакции",
- "Reaction": "Реакция",
- "Search engine indexing": "Индексация поисковой системы",
- "Disable this setting to discourage search engines from indexing the page": "Отключите этот параметр, чтобы запретить поисковым системам индексировать страницу",
- "Archived collections": "Архивированные коллекции",
- "Change permissions?": "Изменить права доступа?",
- "{{ userName }} won't be notified, as they do not have access to this document": "{{ userName }} не будет уведомлен, так как у него нет доступа к этому документу",
- "Extra small heading": "Очень маленький заголовок",
- "Export as CSV": "Экспортировать в CSV",
- "A-Z sort": "Сортировка A-Z",
- "Z-A sort": "Сортировка Z-A",
- "API key created. Please copy the value now as it will not be shown again.": "API-ключ создан. Пожалуйста, скопируйте значение сейчас, так как оно больше не будет показано.",
- "New comments": "Новые комментарии",
- "Sort comments": "Сортировать комментарии",
- "Most recent": "Недавние",
- "Order in doc": "Порядок в документе",
- "Resolved": "Решено",
- "Smart text replacements": "Умные замены текста",
- "Auto-format text by replacing shortcuts with symbols, dashes, smart quotes, and other typographical elements.": "Автоматическая замена сокращений в тексте на символы, тире, кавычки и другие типографские элементы."
+ "You do not have permission to move {{ documentName }} to the {{ collectionName }} collection": "У Вас нет разрешения на перемещение {{ documentName }} в коллекцию {{ collectionName }}",
+ "{{ documentName }} cannot be moved within {{ parentDocumentName }}": "{{ documentName }} не может быть перемещён внутри {{ parentDocumentName }}",
+ "The {{ documentName }} cannot be moved here": "{{ documentName }} не может быть перемещён сюда",
+ "Overview": "Обзор",
+ "A full export might take some time, consider exporting a single document or collection. You may leave this page once the export has started – if you have notifications enabled, we will email a link to {{ userEmail }} when it’s complete.": "Полный экспорт может занять некоторое время, рассмотрите возможность экспорта одного документа или коллекции. Вы можете покинуть эту страницу после начала экспорта — если у Вас включены уведомления, Вам будет отправлена ссылка на эл. почту, когда экспорт завершится."
}
diff --git a/src b/src
index ae926c6..7bc687b 160000
--- a/src
+++ b/src
@@ -1 +1 @@
-Subproject commit ae926c6f091f34c7f4b7a3c91cee8bab951d4e98
+Subproject commit 7bc687b6bfa5f79687275d0585f14c054060c3c3