mirror of
https://github.com/flameshikari/outline-ru.git
synced 2026-08-03 13:27:09 +03:00
+1
-1
@@ -6,7 +6,7 @@
|
||||
|
||||
## Примечания
|
||||
|
||||
За основу взят перевод из [данного коммита](https://github.com/outline/outline/commit/228d1faa9fd3cbb82409d98e1443fed65adc5715), который впоследствии улучшается и переводится здесь. Перевод наверняка не самый точный; буду рад помощи в его улучшении.
|
||||
За основу взят перевод из [данного коммита](https://github.com/outline/outline/commit/228d1faa9fd3cbb82409d98e1443fed65adc5715), который впоследствии улучшается и переводится здесь. Буду рад помощи в улучшении перевода или сборки; сообщить о некорректном переводе можно [здесь](https://github.com/flameshikari/outline-ru/discussions/8).
|
||||
|
||||
Из доступных архитектур контейнера имеются только `amd64` и `arm64`, потому что мультиплатформерная сборка на GitHub Actions с помощью QEMU очень медленная: остальные архитектуры собираются часами либо вовсе зависают намертво.
|
||||
|
||||
|
||||
@@ -4,8 +4,13 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
paths:
|
||||
- .github
|
||||
- shared
|
||||
- src
|
||||
- Dockerfile
|
||||
workflow_dispatch:
|
||||
|
||||
|
||||
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
@@ -65,11 +70,11 @@ jobs:
|
||||
cache-to: type=gha,mode=max
|
||||
tags:
|
||||
${{ steps.meta.outputs.tags }}
|
||||
|
||||
|
||||
- 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 }}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
name: Dry Build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- dev
|
||||
paths:
|
||||
- .github
|
||||
- shared
|
||||
- src
|
||||
- Dockerfile
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Dry Build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Setup Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Build Image
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64
|
||||
push: false
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
+10
-4
@@ -1,23 +1,29 @@
|
||||
ARG APP_PATH=/opt/outline
|
||||
|
||||
FROM node:20-slim as base
|
||||
FROM node:20-slim AS base
|
||||
ARG APP_PATH
|
||||
WORKDIR $APP_PATH
|
||||
|
||||
FROM base AS build
|
||||
COPY ./src/package.json ./src/yarn.lock ./
|
||||
COPY ./src/patches ./patches
|
||||
RUN apt-get update && \
|
||||
apt-get install -y wget && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
RUN yarn install --no-optional --frozen-lockfile --network-timeout 1000000 && \
|
||||
yarn cache clean
|
||||
COPY src .
|
||||
COPY shared ./shared
|
||||
ARG CDN_URL
|
||||
RUN yarn build
|
||||
RUN rm -rf node_modules
|
||||
RUN yarn install --production=true --frozen-lockfile --network-timeout 1000000 && \
|
||||
yarn cache clean
|
||||
ENV PORT=3000
|
||||
HEALTHCHECK CMD wget -qO- http://localhost:${PORT}/_health | grep -q "OK" || exit 1
|
||||
|
||||
FROM base AS release
|
||||
ENV NODE_ENV production
|
||||
ENV NODE_ENV=production
|
||||
COPY --from=build $APP_PATH/build ./build
|
||||
COPY --from=build $APP_PATH/server ./server
|
||||
COPY --from=build $APP_PATH/public ./public
|
||||
@@ -29,11 +35,11 @@ RUN addgroup --gid 1001 nodejs && \
|
||||
chown -R nodejs:nodejs $APP_PATH/build && \
|
||||
mkdir -p /var/lib/outline && \
|
||||
chown -R nodejs:nodejs /var/lib/outline
|
||||
ENV FILE_STORAGE_LOCAL_ROOT_DIR /var/lib/outline/data
|
||||
ENV FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data
|
||||
RUN mkdir -p "$FILE_STORAGE_LOCAL_ROOT_DIR" && \
|
||||
chown -R nodejs:nodejs "$FILE_STORAGE_LOCAL_ROOT_DIR" && \
|
||||
chmod 1777 "$FILE_STORAGE_LOCAL_ROOT_DIR"
|
||||
VOLUME /var/lib/outline/data
|
||||
USER nodejs
|
||||
EXPOSE 3000
|
||||
CMD ["yarn", "start"]
|
||||
CMD ["yarn", "start"]
|
||||
|
||||
+11
-3
@@ -1,6 +1,10 @@
|
||||
// Note: Updating the available languages? Make sure to also update the
|
||||
// locales array in shared/utils/date.ts to enable translation for timestamps.
|
||||
export const languageOptions = [
|
||||
{
|
||||
label: "Русский (Russian)",
|
||||
value: "ru_RU",
|
||||
},
|
||||
{
|
||||
label: "English (US)",
|
||||
value: "en_US",
|
||||
@@ -45,6 +49,10 @@ export const languageOptions = [
|
||||
label: "Nederland (Dutch, Netherlands)",
|
||||
value: "nl_NL",
|
||||
},
|
||||
{
|
||||
label: "Norsk Bokmål (Norwegian)",
|
||||
value: "nb_NO",
|
||||
},
|
||||
{
|
||||
label: "Português (Portuguese, Brazil)",
|
||||
value: "pt_BR",
|
||||
@@ -62,8 +70,8 @@ export const languageOptions = [
|
||||
value: "fa_IR",
|
||||
},
|
||||
{
|
||||
label: "Русский (Russian)",
|
||||
value: "ru_RU",
|
||||
label: "Svenska (Swedish)",
|
||||
value: "sv_SE",
|
||||
},
|
||||
{
|
||||
label: "Türkçe (Turkish)",
|
||||
@@ -79,4 +87,4 @@ export const languageOptions = [
|
||||
},
|
||||
];
|
||||
|
||||
export const languages: string[] = languageOptions.map((i) => i.value);
|
||||
export const languages = languageOptions.map((i) => i.value);
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"Unstar": "Убрать из избранного",
|
||||
"Delete": "Удалить",
|
||||
"Delete collection": "Удалить коллекцию",
|
||||
"New template": "Новый шаблон",
|
||||
"Delete comment": "Удалить комментарий",
|
||||
"Copy ID": "Скопировать ID",
|
||||
"Clear IndexedDB cache": "Очистить кэш IndexedDB",
|
||||
"IndexedDB cache cleared": "Кэш IndexedDB очищен",
|
||||
@@ -60,7 +62,6 @@
|
||||
"Print document": "Печать документа",
|
||||
"Import document": "Импорт документа",
|
||||
"Templatize": "Шаблонизировать",
|
||||
"New template": "Новый шаблон",
|
||||
"Create template": "Создать шаблон",
|
||||
"Open random document": "Открыть случайный документ",
|
||||
"Search documents for \"{{searchQuery}}\"": "Поиск документов для {{searchQuery}}»",
|
||||
@@ -186,8 +187,6 @@
|
||||
"{{ userName }} created": "{{ userName }} создан",
|
||||
"You published": "Вы опубликовали",
|
||||
"{{ userName }} published": "{{ userName }} опубликован",
|
||||
"You saved": "Вы сохранили",
|
||||
"{{ userName }} saved": "{{ userName }} сохранен",
|
||||
"Never viewed": "Не просмотрено",
|
||||
"Viewed": "Просмотрено",
|
||||
"in": "в",
|
||||
@@ -207,8 +206,6 @@
|
||||
"Title": "Заголовок",
|
||||
"Published": "Опубликовано",
|
||||
"Include nested documents": "Включить вложенные документы",
|
||||
"Emoji Picker": "Выбор эмодзи",
|
||||
"Remove": "Удалить",
|
||||
"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.": "К сожалению, части приложения не удалось загрузиться. Это могло произойти из-за того, что страница обновилась с тех пор, как была открыта или из-за проблем в отправке сетевого запроса. Пожалуйста, попробуйте перезагрузить страницу.",
|
||||
@@ -245,10 +242,11 @@
|
||||
"{{authorName}} created <3></3>": "{{authorName}} создал <3></3>",
|
||||
"{{authorName}} opened <3></3>": "{{authorName}} открыл <3></3>",
|
||||
"Show menu": "Показать меню",
|
||||
"Choose an icon": "Выберите значок",
|
||||
"Filter": "Фильтр",
|
||||
"Loading": "Загрузка",
|
||||
"Remove": "Удалить",
|
||||
"All": "Все",
|
||||
"Search Results": "Результаты поиска",
|
||||
"Select a color": "Выберите цвет",
|
||||
"Loading": "Загрузка",
|
||||
"Search": "Поиск",
|
||||
"Permission": "Право доступа",
|
||||
"View only": "Только просмотр",
|
||||
@@ -454,7 +452,6 @@
|
||||
"Sort in sidebar": "Сортировка в боковой панели",
|
||||
"Alphabetical sort": "Сортировка по алфавиту",
|
||||
"Manual sort": "Ручная сортировка",
|
||||
"Delete comment": "Удалить комментарий",
|
||||
"Comment options": "Настройки комментариев",
|
||||
"Document restored": "Документ восстановлен",
|
||||
"Document options": "Параметры документа",
|
||||
@@ -466,8 +463,8 @@
|
||||
"Delete group": "Удалить группу",
|
||||
"Group options": "Параметры группы",
|
||||
"Member options": "Параметры участников",
|
||||
"New child document": "Новый вложенный документ",
|
||||
"New document in <em>{{ collectionName }}</em>": "Новый документ в <em>{{ collectionName }}</em>",
|
||||
"New child document": "Новый вложенный документ",
|
||||
"Notification settings": "Настройки уведомлений",
|
||||
"Revision options": "Настройка версии",
|
||||
"Share link revoked": "Ссылка общего доступа отозвана",
|
||||
@@ -495,7 +492,6 @@
|
||||
"left a comment on": "оставил комментарий в",
|
||||
"shared": "поделенный",
|
||||
"invited you to": "пригласил Вас в",
|
||||
"API Key created": "Ключ API создан",
|
||||
"Name your key something that will help you to remember it's use in the future, for example \"local development\" or \"continuous integration\".": "Назовите свой ключ так, чтобы не забыть о его предназначении в будущем. Например. «локальная разработка» или «непрерывная интеграция».",
|
||||
"The document archive is empty at the moment.": "Архив документов на данный момент пуст.",
|
||||
"Collection menu": "Меню коллекции",
|
||||
@@ -755,11 +751,7 @@
|
||||
"We were unable to find the page you’re looking for.": "Нам не удалось найти нужную вам страницу.",
|
||||
"Search titles only": "Искать только в названиях",
|
||||
"No documents found for your search filters.": "Не найдено документов по вашим фильтрам поиска.",
|
||||
"Search Results": "Результаты поиска",
|
||||
"API Keys": "Ключи 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 <em>developer documentation</em>.": "Создавайте ключи API для аутентификации с помощью API и программируемого управления\n данными Вашего рабочего пространства. Ключи API имеют те же разрешения, что и Ваш аккаунт пользователя.\n Более подробную информацию смотрите в <em>документации разработчика</em>.",
|
||||
"Active": "Активный",
|
||||
"API token copied to clipboard": "Токен API скопирован в буфер обмена",
|
||||
"Copied": "Скопировано",
|
||||
"Revoking": "Отзыв",
|
||||
"Are you sure you want to revoke the {{ tokenName }} token?": "Вы уверены, что хотите отозвать токен {{ tokenName }}?",
|
||||
@@ -808,6 +800,7 @@
|
||||
"Admins": "Администраторы",
|
||||
"Editors": "Редакторы",
|
||||
"All status": "Все статусы",
|
||||
"Active": "Активный",
|
||||
"Settings saved": "Настройки сохранены",
|
||||
"Logo updated": "Логотип обновлен",
|
||||
"Unable to upload new logo": "Не удалось загрузить новый логотип",
|
||||
@@ -842,7 +835,6 @@
|
||||
"New group": "Новая группа",
|
||||
"Groups can be used to organize and manage the people on your team.": "Группы могут быть использованы для организации и управления людьми в Вашей команде.",
|
||||
"No groups have been created yet": "Пока что не создано ни одной группы",
|
||||
"All": "Все",
|
||||
"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 или более ранней версии)",
|
||||
@@ -853,6 +845,7 @@
|
||||
"Enterprise": "Корпоративная версия",
|
||||
"Recent imports": "Недавно импортированное",
|
||||
"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}}, но они еще не вошли в систему.",
|
||||
"Filter": "Фильтр",
|
||||
"Receive a notification whenever a new document is published": "Получать уведомление каждый раз, когда опубликован новый документ",
|
||||
"Document updated": "Документ обновлен",
|
||||
"Receive a notification when a document you are subscribed to is edited": "Получать уведомление, когда документ, на который Вы подписаны, был отредактирован",
|
||||
@@ -1023,5 +1016,53 @@
|
||||
"{{ user }} updated {{ timeAgo }}": "{{ user }} обновлен {{ timeAgo }}",
|
||||
"You created {{ timeAgo }}": "Вы создали {{ timeAgo }}",
|
||||
"{{ user }} created {{ timeAgo }}": "{{ user }} создан {{ timeAgo }}",
|
||||
"Uploading": "Идёт загрузка"
|
||||
"Uploading": "Идёт загрузка",
|
||||
"Mark as resolved": "Отметить как решённое",
|
||||
"Thread resolved": "Обсуждение решено",
|
||||
"Mark as unresolved": "Отметить как нерешённое",
|
||||
"Search emoji": "Поиск эмодзи",
|
||||
"Search icons": "Поиск иконок",
|
||||
"Choose default skin tone": "Выберите цвет кожи по умолчанию",
|
||||
"Icon Picker": "Выбор иконок",
|
||||
"Icons": "Иконки",
|
||||
"Emojis": "Эмодзи",
|
||||
"Frequently Used": "Часто используемые",
|
||||
"Smileys & People": "Смайлики и люди",
|
||||
"Animals & Nature": "Животные и природа",
|
||||
"Food & Drink": "Еда и напитки",
|
||||
"Activity": "Активность",
|
||||
"Travel & Places": "Путешествия и места",
|
||||
"Objects": "Объекты",
|
||||
"Symbols": "Символы",
|
||||
"Flags": "Флаги",
|
||||
"Suggestions for invitation": "Предложения по приглашению",
|
||||
"Choose a date": "Выбрать дату",
|
||||
"API key created": "Ключ API создан",
|
||||
"Expiration": "Срок действия",
|
||||
"Never expires": "Никогда не истекает",
|
||||
"7 days": "7 дней",
|
||||
"30 days": "30 дней",
|
||||
"60 days": "60 дней",
|
||||
"90 days": "90 дней",
|
||||
"Custom": "Пользовательский",
|
||||
"No expiration": "Нет срока истечения",
|
||||
"Resolved comments": "Решённые комментарии",
|
||||
"View comments": "Посмотреть комментарии",
|
||||
"View resolved comments": "Посмотреть решённые комментарии",
|
||||
"No resolved comments": "Нет решённых комментариев",
|
||||
"available when headings are added": "доступно при добавлении заголовков",
|
||||
"Collaboration": "Коллаборация",
|
||||
"API key copied to clipboard": "Ключ API скопирован в буфер обмена",
|
||||
"Personal keys": "Персональные ключи",
|
||||
"Last used": "Последний раз использован",
|
||||
"No expiry": "Нет срока истечения",
|
||||
"Table of contents position": "Позиция оглавления",
|
||||
"The side to display the table of contents in relation to the main content.": "Сторона для отображения оглавления относительно основного контента.",
|
||||
"Left": "Слева",
|
||||
"Right": "Справа",
|
||||
"Expired yesterday": "Истёк вчера",
|
||||
"Expired {{ date }}": "Истёк {{ date }}",
|
||||
"Expires today": "Истёк сегодня",
|
||||
"Expires tomorrow": "Истечёт завтра",
|
||||
"Expires {{ date }}": "Истечёт {{ date }}"
|
||||
}
|
||||
|
||||
@@ -18,11 +18,13 @@ import {
|
||||
it,
|
||||
ja,
|
||||
ko,
|
||||
nb,
|
||||
nl,
|
||||
ptBR,
|
||||
pt,
|
||||
pl,
|
||||
ru,
|
||||
sv,
|
||||
tr,
|
||||
vi,
|
||||
uk,
|
||||
@@ -169,11 +171,13 @@ const locales = {
|
||||
it_IT: it,
|
||||
ja_JP: ja,
|
||||
ko_KR: ko,
|
||||
nb_NO: nb,
|
||||
nl_NL: nl,
|
||||
pt_BR: ptBR,
|
||||
pt_PT: pt,
|
||||
pl_PL: pl,
|
||||
ru_RU: ru,
|
||||
sv_SE: sv,
|
||||
tr_TR: tr,
|
||||
uk_UA: uk,
|
||||
vi_VN: vi,
|
||||
|
||||
+1
-1
Submodule src updated: 07ae7fca81...fd1e14d1db
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
CWD="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. && pwd)"
|
||||
|
||||
cat $CWD/src/shared/utils/date.ts | \
|
||||
sed '/^ pl,/a\ \ ru,' | \
|
||||
sed '/^ pl_PL: pl,/a\ \ ru_RU: ru,' \
|
||||
> $CWD/shared/utils/date.ts
|
||||
|
||||
cat $CWD/src/shared/i18n/index.ts | \
|
||||
sed '/^export const languageOptions = \[/a\ \ {\n label: "Русский (Russian)",\n value: "ru_RU",\n },' \
|
||||
> $CWD/shared/i18n/index.ts
|
||||
Reference in New Issue
Block a user