From f8f43b6cee85be9c562d4acacafa3a5577c31a83 Mon Sep 17 00:00:00 2001 From: "tester.nicolai" Date: Thu, 23 Sep 2021 01:25:47 +0300 Subject: [PATCH] fixed RU app text --- assets/markdown/about-ru.md | 6 +- assets/markdown/how_hetzner-ru.md | 4 +- assets/translations/ru.json | 102 +++++++++--------- lib/ui/pages/server_details/text_details.dart | 16 +-- 4 files changed, 65 insertions(+), 63 deletions(-) diff --git a/assets/markdown/about-ru.md b/assets/markdown/about-ru.md index 3ee32766f3..c93abce282 100644 --- a/assets/markdown/about-ru.md +++ b/assets/markdown/about-ru.md @@ -1,12 +1,12 @@ ### О проекте Всё больше организаций хотят владеть нашими данными -А мы сами хотим распоряжаться своими **данными** на своем сервере. +Проект позволяет только Вам в полной мере распоряжаться собственными **данными** на своём сервере. ### Миссия проекта -Цифровая независимость и приватность доступная каждому +Цифровая независимость и приватность доступная каждому. ### Цель -Развивать программу, которая позволит каждому создавать приватные сервисы для себя и своих близких \ No newline at end of file +Развивать программу, которая позволит каждому создавать приватные сервисы для себя и своих близких. \ No newline at end of file diff --git a/assets/markdown/how_hetzner-ru.md b/assets/markdown/how_hetzner-ru.md index 4c0c344b6e..805b84973b 100644 --- a/assets/markdown/how_hetzner-ru.md +++ b/assets/markdown/how_hetzner-ru.md @@ -3,5 +3,5 @@ 2. Заходим в созданный нами проект. Если такового - нет, значит создаём. 3. Наводим мышкой на боковую панель. Она должна раскрыться, показав нам пункты меню. Нас интересует последний — Security (с иконкой ключика). 4. Далее, в верхней части интерфейса видим примерно такой список: SSH Keys, API Tokens, Certificates, Members. Нам нужен API Tokens. Переходим по нему. -5. В правой части интерфейса, нас будет ожидать кнопка Generate API token. Если же вы используете мобильную версию сайта, в нижнем правом углу вы увидите красный плюсик. Нажимаем на эту кнопку. -6. В поле Description, даём нашему токену название (это может быть любое название, которые вам нравиться. Сути оно не меняет. \ No newline at end of file +5. В правой части интерфейса, нас будет ожидать кнопка Generate API token. Если же Вы используете мобильную версию сайта, в нижнем правом углу Вы увидите красный плюсик. Нажимаем на эту кнопку. +6. В поле Description, даём нашему токену название (это может быть любое название, которые Вам нравиться. Сути оно не меняет. \ No newline at end of file diff --git a/assets/translations/ru.json b/assets/translations/ru.json index 855adf60f9..4f30460088 100644 --- a/assets/translations/ru.json +++ b/assets/translations/ru.json @@ -6,7 +6,7 @@ "providers": "Провайдеры", "services": "Сервисы", "users": "Пользователи", - "more": "Еще", + "more": "Ещё", "next": "Далее", "got_it": "Понял", "settings": "Настройки", @@ -22,15 +22,15 @@ "nickname": "Никнейм", "loading": "Загрузка", "later": "Настрою потом", - "reset": "Reset", + "reset": "Сбросить", "details": "Детальная информация", "no_data": "Нет данных", - "wait": "Ожидайте", + "wait": "Загрузка", "remove": "Удалить", "apply": "Подать" }, "more": { - "_comment": "вкладка еще", + "_comment": "вкладка ещё", "configuration_wizard": "Мастер Подключения", "about_project": "О проекте SelfPrivacy", "about_app": "О приложении", @@ -43,7 +43,7 @@ "enable": "Включить", "ok": "ok", "continue": "Продолжить", - "ssh_key_exist_text": "У вас уже есть сгенерированный ssk ключ", + "ssh_key_exist_text": "У Вас уже есть сгенерированный ssk ключ", "yes_delete": "Да, удалить", "share": "Поделиться", "copy_buffer": "Копировать в буфер", @@ -54,10 +54,10 @@ }, "settings": { "title": "Настройки приложения", - "1": "Темная тема", - "2": "Сменить цветовую тему", + "1": "Тёмная тема", + "2": "Сменить цветовую тему.", "3": "Сброс настроек", - "4": "Сбросить API ключи а так же root пользвателя", + "4": "Сбросить API ключи а также root пользвателя.", "5": "Удалить сервер", "6": "Действие приведет к удалению сервера. После чего он не будет доступен." } @@ -65,9 +65,9 @@ "onboarding": { "_comment": "страницы онбординга", "page1_title": "Цифровая независимость доступна каждому", - "page1_text": "Почта, VPN, Мессенджер, социальная сеть и многое другое на вашем личном сервере, под вашим полным контролем.", - "page2_title": "SelfPrivacy — это не облако, а ваш личный дата-центр", - "page2_text": "У SelfPrivacy работает только с вашими сервис-провадерами: Hetzner, Cloudflare, Backblaze. Если у вас нет учетных записей, мы поможем их создать." + "page1_text": "Почта, VPN, Мессенджер, социальная сеть и многое другое на Вашем личном сервере, под Вашим полным контролем.", + "page2_title": "SelfPrivacy — это не облако, а Ваш личный дата-центр", + "page2_text": "SelfPrivacy работает только с вашими сервис-провайдерами: Hetzner, Cloudflare, Backblaze. Если у Вас нет учётных записей, мы поможем их создать." }, "providers": { "_comment": "вкладка провайдеры", @@ -76,7 +76,7 @@ "card_title": "Сервер", "status": "Статус — в норме", "bottom_sheet": { - "1": "Это виртульный компьютер на котором работают все ваши сервисы.", + "1": "Это виртуальный компьютер на котором работают все Ваши сервисы.", "2": "Общая информация", "3": "Размещение" }, @@ -90,16 +90,18 @@ "card_title": "Домен", "status": "Статус — в норме", "bottom_sheet": { - "1": "Это ваш личный адрес в интернете, который будет указывать на сервер и другие ваши сервисы.", - "2": "{} — продлен до {}" + "1": "Это Ваш личный адрес в интернете, который будет указывать на сервер и другие ваши сервисы.", + "2": "{} — продлен до {}." } }, "backup": { "card_title": "Резервное копирование", "status": "Статус — в норме", "bottom_sheet": { - "1": "Выручит в любой ситуации: хакерская атака, удаление сервера и т.п.", - "2": "3Gb — бестплатно до 10Gb, последний вчера в {}" + "1": "Выручит Вас в любой ситуации: хакерская атака, удаление сервера и.т.д.", + "2": "Использовано 3Gb из бестплатых 10Gb.", + "3": "Последнее копирование была сделана вчера в {}." + } } }, @@ -111,72 +113,72 @@ }, "services": { "_comment": "Вкладка сервисы", - "title": "Ваши личные приватные и независимые сервисы", + "title": "Ваши личные, приватные и независимые сервисы:", "mail": { "title": "Почта", - "subtitle": "Электронная почта для семьи или компании", + "subtitle": "Электронная почта для семьи или компании.", "bottom_sheet": { - "1": "Для подключения почтового ящика используйте {} и логин пароль, который вы создали. Так же приглашайте", - "2": "новых пользователей" + "1": "Для подключения почтового ящика используйте {} и профиль, который Вы создали. Так же приглашайте", + "2": "новых пользователей." } }, "messenger": { "title": "Мессенджер", - "subtitle": "Telegram и Signal не так приватны, как Delta.Chat использующий ваш личный сервер.", + "subtitle": "Telegram и Signal не так приватны, как Delta.Chat — который использует Ваш личный сервер.", "bottom_sheet": { - "1": "Для подключения используйте {} и логин пароль, который вы создали" + "1": "Для подключения используйте {} и логин пароль, который Вы создали." } }, "password_manager": { "title": "Менеджер паролей", - "subtitle": "Фундамент безопасности. Создавать, хранить, копировать пароли между устройствами, вбивать их в формы поможет — Bitwarden.", + "subtitle": "Это фундамент Вашей безопасности. Создавать, хранить, копировать пароли между устройствами и вбивать их в формы поможет — Bitwarden.", "bottom_sheet": { - "1": "Подключиться к серверу и создать пользователя можно по адресу:" + "1": "Подключиться к серверу и создать пользователя можно по адресу:." } }, "video": { "title": "Видеоконференция", - "subtitle": "Zoom и Google meet отличные инструменты, но Jitsi meet не хуже и дает уверенность, что вас никто не подслушивает.", + "subtitle": "Jitsi meet — отличный аналог Zoom и Google meet который по мимо удобства ещё и гарантирует Вам защищённые высококачественные видеоконференции.", "bottom_sheet": { - "1": "Для использования просто перейдите по ссылке:" + "1": "Для использования просто перейдите по ссылке:." } }, "cloud": { "title": "Файловое облако", - "subtitle": "Не позволяйте облачным сервисам читать ваши данные используйте NextCloud.", + "subtitle": "Не позволяйте облачным сервисам просматривать ваши данные. Используйте NextCloud — надёжный дом для всех Ваших данных.", "bottom_sheet": { - "1": "Подключиться к серверу и создать пользователя можно по адресу:" + "1": "Подключиться к серверу и создать пользователя можно по адресу:." } }, "social_network": { "title": "Социальная сеть", "subtitle": "Сложно поверить, но стало возможным создать свою собственную социальную сеть, со своими правилами и аудиторией.", "bottom_sheet": { - "1": "Подключиться к серверу и создать пользователя можно по адресу:" + "1": "Подключиться к серверу и создать пользователя можно по адресу:." } }, "git": { "title": "Git-сервер", "subtitle": "Приватная альтернатива Github, которая принадлежит вам, а не Microsoft.", "bottom_sheet": { - "1": "Подключиться к серверу и создать пользователя можно по адресу:" + "1": "Подключиться к серверу и создать пользователя можно по адресу:." } } }, "users": { "_comment": "'Users' tab", - "add_new_user": "Добавьте первого пользователя", + "add_new_user": "Добавьте первого пользователя.", "new_user": "Новый пользователь", "not_ready": "Подключите сервер, домен и DNS в разделу Провайдеры, чтобы добавить первого пользователя", - "nobody_here": "'Здесь пока никого'", + "nobody_here": "Здесь будут отображаться пользователи.", "login": "Логин", "onboarding": "Приветствие", "console": "Консоль разработчика", - "new_user_info_note": "Новый пользователь автоматически получит доступ ко всем сервисам. Ещё какое-то описание.", - "delete_confirm_question": "удалить учетную запись?", + "new_user_info_note": "Новый пользователь автоматически получит доступ ко всем сервисам.", + "delete_confirm_question": "Вы действительно хотите удалить учетную запись?", "reset_password": "Сбросить пароль", "account": "Учетная запись", - "send_regisration_data": "Отправить реквизиты для входа" + "send_regisration_data": "Поделиться реквизитами" }, "initializing": { "_comment": "initializing page", @@ -189,30 +191,30 @@ "6": "Подключите облачное хранилище Backblaze", "7": "На данный момент подлюченных доменов нет", "8": "Загружаем список доменов", - "9": "Найдено больше одного домена, для вашей безопастности, просим вам удалить не нужные домены", + "9": "Найдено больше одного домена, для вашей безопастности, просим Вам удалить не нужные домены", "10": "Сохранить домен", "final": "Последний шаг", "11": "Создать сервер", "what": "Что это значит?", - "13": "Сервер презагружен, ждем последнюю проверку", - "14": "Cервер запушен, сейчас он будет проверен и перезагружен", - "15": "Cервер создан, идет проверка ДНС адресов и запуск сервера", + "13": "Сервер презагружен, ждем последнюю проверку.", + "14": "Cервер запущен, сейчас он будет проверен и перезагружен.", + "15": "Cервер создан, идет проверка ДНС адресов и запуск сервера.", "16": "До следующей проверки: ", "17": "Проверка", - "18": "Как получить Hetzner API Token'", + "18": "Как получить Hetzner API Token:'", "19": "1 Переходим по ссылке ", - "20": "\n2 Заходим в созданный нами проект. Если такового - нет, значит создаём.\n3 Наводим мышкой на боковую панель. Она должна раскрыться, показав нам пункты меню. Нас интересует последний — Security (с иконкой ключика).\n4 Далее, в верхней части интерфейса видим примерно такой список: SSH Keys, API Tokens, Certificates, Members. Нам нужен API Tokens. Переходим по нему.\n5 В правой части интерфейса, нас будет ожидать кнопка Generate API token. Если же вы используете мобильную версию сайта, в нижнем правом углу вы увидите красный плюсик. Нажимаем на эту кнопку.\n6 В поле Description, даём нашему токену название (это может быть любое название, которые вам нравиться. Сути оно не меняет.", + "20": "\n2 Заходим в созданный нами проект. Если такового нет - значит создаём.\n3 Наводим мышкой на боковую панель. Она должна раскрыться, показав нам пункты меню. Нас интересует последний — Security (с иконкой ключика).\n4 Далее, в верхней части интерфейса видим примерно такой список: SSH Keys, API Tokens, Certificates, Members. Нам нужен API Tokens. Переходим по нему.\n5 В правой части интерфейса, нас будет ожидать кнопка Generate API token. Если же Вы используете мобильную версию сайта - в нижнем правом углу Вы увидите красный плюсик. Нажимаем на эту кнопку.\n6 В поле Description даём нашему токену название (это может быть любое название, которое Вам нравиться, сути оно не меняет.", "21": "Сейчас будет дополнительная перезагрузка для активации сертификатов безопастности", "22": "Создайте главную учетную запись", "23": "Введите никнейм и сложный пароль", - "finish": "Все инициализировано", + "finish": "Всё инициализировано.", "checks": "Проверок выполнено: \n{} / {}" }, "modals": { "_comment": "messages in modals", "1": "Сервер с таким именем уже существует", "2": "Уничтожить сервер и создать новый?", - "3": "Вы уверенны", + "3": "Подтвердите", "4": "Сбросить все ключи?", "5": "Да, сбросить", "6": "Удалить сервер и диск?", @@ -226,7 +228,7 @@ "_comment": "Jobs list", "title": "Задачи", "start": "Начать выполенение", - "empty": "Пусто", + "empty": "Пусто.", "createUser": "Создать запись", "serviceTurnOff": "Остановить", "serviceTurnOn": "Запустить", @@ -234,11 +236,11 @@ "runJobs": "Запустите задачи" }, "validations": { - "required": "обязательное поле", - "invalid_format": "Неверный формат", - "root_name": "Имя пользователя не может быть'root'", - "key_format": "Неверный формат", - "length": "Длина строки [] должна быть {}", - "user_alredy_exist": "Имя уже используется" + "required": "Обязательное поле.", + "invalid_format": "Неверный формат.", + "root_name": "Имя пользователя не может быть'root'.", + "key_format": "Неверный формат.", + "length": "Длина строки [] должна быть {}.", + "user_alredy_exist": "Имя уже используется." } } diff --git a/lib/ui/pages/server_details/text_details.dart b/lib/ui/pages/server_details/text_details.dart index 8ced8ed42a..936bd00faf 100644 --- a/lib/ui/pages/server_details/text_details.dart +++ b/lib/ui/pages/server_details/text_details.dart @@ -27,13 +27,13 @@ class _TextDetails extends StatelessWidget { children: [ TableRow( children: [ - getRowTitle('Last check'), + getRowTitle('Last check:'), getRowValue(formater.format(checkTime)), ], ), TableRow( children: [ - getRowTitle('Server Id'), + getRowTitle('Server Id:'), getRowValue(data.id.toString()), ], ), @@ -48,7 +48,7 @@ class _TextDetails extends StatelessWidget { ), TableRow( children: [ - getRowTitle('CPU'), + getRowTitle('CPU:'), getRowValue( data.serverType.cores.toString(), ), @@ -56,7 +56,7 @@ class _TextDetails extends StatelessWidget { ), TableRow( children: [ - getRowTitle('Memory'), + getRowTitle('Memory:'), getRowValue( '${data.serverType.memory.toString()} GB', ), @@ -64,7 +64,7 @@ class _TextDetails extends StatelessWidget { ), TableRow( children: [ - getRowTitle('Disk Local'), + getRowTitle('Disk Local:'), getRowValue( '${data.serverType.disk.toString()} GB', ), @@ -100,7 +100,7 @@ class _TextDetails extends StatelessWidget { children: [ TableRow( children: [ - getRowTitle('Country'), + getRowTitle('Country:'), getRowValue( '${data.location.country}', ), @@ -108,13 +108,13 @@ class _TextDetails extends StatelessWidget { ), TableRow( children: [ - getRowTitle('City'), + getRowTitle('City:'), getRowValue(data.location.city), ], ), TableRow( children: [ - getRowTitle('Description'), + getRowTitle('Description:'), getRowValue(data.location.description), ], ),