diff --git a/projects/angular-ngrx-material-starter/src/app/app/app.component.ts b/projects/angular-ngrx-material-starter/src/app/app/app.component.ts index e6270f57..db759b14 100755 --- a/projects/angular-ngrx-material-starter/src/app/app/app.component.ts +++ b/projects/angular-ngrx-material-starter/src/app/app/app.component.ts @@ -34,7 +34,18 @@ export class AppComponent implements OnInit { version = env.versions.app; year = new Date().getFullYear(); logo = 'assets/logo.png'; - languages = ['en', 'de', 'sk', 'fr', 'es', 'pt-br', 'zh-cn', 'he', 'ar']; + languages = [ + 'en', + 'de', + 'sk', + 'fr', + 'es', + 'pt-br', + 'zh-cn', + 'he', + 'ar', + 'ru' + ]; navigation = [ { link: 'about', label: 'anms.menu.about' }, { link: 'feature-list', label: 'anms.menu.features' }, diff --git a/projects/angular-ngrx-material-starter/src/app/features/settings/settings/settings-container.component.ts b/projects/angular-ngrx-material-starter/src/app/features/settings/settings/settings-container.component.ts index a25bf2fd..86d55f3f 100755 --- a/projects/angular-ngrx-material-starter/src/app/features/settings/settings/settings-container.component.ts +++ b/projects/angular-ngrx-material-starter/src/app/features/settings/settings/settings-container.component.ts @@ -43,7 +43,8 @@ export class SettingsContainerComponent implements OnInit { { value: 'pt-br', label: 'Português' }, { value: 'zh-cn', label: '简体中文' }, { value: 'he', label: 'עברית' }, - { value: 'ar', label: 'اللغة العربية' } + { value: 'ar', label: 'اللغة العربية' }, + { value: 'ru', label: 'Russian' } ]; constructor(private store: Store) {} diff --git a/projects/angular-ngrx-material-starter/src/assets/i18n/examples/ru.json b/projects/angular-ngrx-material-starter/src/assets/i18n/examples/ru.json new file mode 100644 index 00000000..a802ac0f --- /dev/null +++ b/projects/angular-ngrx-material-starter/src/assets/i18n/examples/ru.json @@ -0,0 +1,147 @@ +{ + "anms.examples.auth.description1": "Этот компонент доступен только для авторизованных пользователей", + "anms.examples.auth.description2": "После выхода пользователь будет перенаправлен на главную страницу, если он находился на маршруте только для авторизованных пользователей", + "anms.examples.auth.title": "Компонент с авторизацией", + "anms.examples.crud.add": "Добавить новую книгу", + "anms.examples.crud.cancel": "Отмена", + "anms.examples.crud.empty": "Похоже, у вас нет книг. Давайте добавим несколько!", + "anms.examples.crud.error": "обязательно для заполнения", + "anms.examples.crud.new": "Новая", + "anms.examples.crud.placeholder0": "Id", + "anms.examples.crud.placeholder1": "Название", + "anms.examples.crud.placeholder2": "Автор", + "anms.examples.crud.placeholder3": "Описание", + "anms.examples.crud.save": "Сохранить", + "anms.examples.crud.subtitle1": "Ваши книги", + "anms.examples.crud.subtitle2": "Редактор книг", + "anms.examples.crud.text": "Книги можно управлять в этом редакторе: добавлять, обновлять, удалять и выбирать через ", + "anms.examples.crud.title": "CRUD для книг с использованием @ngrx/entity и @ngrx/router-store", + "anms.examples.crud.tooltip.delete": "Удалить книгу", + "anms.examples.crud.tooltip.deselect": "Снять выбор", + "anms.examples.crud.tooltip.edit": "Редактировать книгу", + "anms.examples.form.autosave": "Автосохранение", + "anms.examples.form.error1": "обязательно для заполнения", + "anms.examples.form.error2": "должно быть корректным", + "anms.examples.form.error3": "должно быть длиннее чем", + "anms.examples.form.error4": "должно быть короче чем", + "anms.examples.form.placeholder1": "Имя пользователя", + "anms.examples.form.placeholder2": "Пароль", + "anms.examples.form.placeholder3": "E-mail", + "anms.examples.form.placeholder4": "Описание", + "anms.examples.form.placeholder5": "Дата рождения", + "anms.examples.form.reset": "Сбросить", + "anms.examples.form.save": "Сохранить", + "anms.examples.form.send": "Отправить", + "anms.examples.form.subtitle1": "Форма", + "anms.examples.form.subtitle2": "Маркетинговая информация", + "anms.examples.form.text1": "Запросите подарок.", + "anms.examples.form.text2": "Оцените эту форму:", + "anms.examples.form.text3": "Нужно запросить подарок, чтобы увидеть больше информации.", + "anms.examples.form.text4": "Подарок отправлен!", + "anms.examples.form.text5": "Подарок не отправлен.", + "anms.examples.form.text6": "Аплодировать", + "anms.examples.form.title": "Реактивная форма с FormBuilder", + "anms.examples.menu.auth": "Авторизация", + "anms.examples.menu.crud": "CRUD", + "anms.examples.menu.form": "Форма", + "anms.examples.menu.notifications": "Уведомления", + "anms.examples.menu.stocks": "Акции", + "anms.examples.menu.theming": "Темизация", + "anms.examples.menu.todos": "Список дел", + "anms.examples.menu.elements": "Элементы", + "anms.examples.menu.simple-state-management": "Простое управление состоянием", + "anms.examples.notifications.default.description": "Обычные уведомления для событий низкой важности", + "anms.examples.notifications.default.title": "Обычные", + "anms.examples.notifications.error.description": "Ошибки — когда всё пошло совсем не так...", + "anms.examples.notifications.error.title": "Ошибка", + "anms.examples.notifications.info.description": "Информационные уведомления для событий средней важности", + "anms.examples.notifications.info.title": "Информация", + "anms.examples.notifications.success.description": "Уведомления об успешном завершении операции или действия", + "anms.examples.notifications.success.title": "Успех", + "anms.examples.notifications.title": "Уведомления", + "anms.examples.notifications.warning.description": "Предупреждения для событий, требующих внимания пользователя", + "anms.examples.notifications.warning.title": "Предупреждение", + "anms.examples.stocks.description": "Введите корректный биржевой символ, например:", + "anms.examples.stocks.error1": "Акция", + "anms.examples.stocks.error2": "не найдена", + "anms.examples.stocks.symbol": "Биржевой символ", + "anms.examples.stocks.text1": "Пример с биржей показывает, как реализовать", + "anms.examples.stocks.text2": "запросы с использованием", + "anms.examples.stocks.text3": "модуля.", + "anms.examples.stocks.text4": "Изменение символа обновляет состояние с флагом загрузки (reducer) и запускает эффект для получения информации об акции.", + "anms.examples.stocks.text5": "Действия дебаунсятся, и каждый новый запрос отменяет предыдущий с помощью", + "anms.examples.stocks.text6": "По завершении запроса генерируется успех или ошибка, спиннер убирается, и отображается информация об акции или сообщение об ошибке.", + "anms.examples.stocks.title": "Биржевой рынок", + "anms.examples.elements.title": "Angular Elements (и другие web-компоненты)", + "anms.examples.elements.counter": "Счётчик", + "anms.examples.elements.text1": "Кнопка слева — это web-компонент из библиотеки mwc (material web components). Компонент загружается лениво только при первом отображении.", + "anms.examples.elements.text2": "Загрузился с url только при первом появлении в шаблоне родительского Angular-компонента.", + "anms.examples.elements.text3": "Такое ленивое подключение и использование было достигнуто через простую", + "anms.examples.elements.text4": "директиву из", + "anms.examples.elements.text5": "библиотеки", + "anms.examples.elements.text6": "Узнайте больше о", + "anms.examples.elements.text7": "сценариях использования", + "anms.examples.elements.text8": "где это принесёт наибольшую пользу", + "anms.examples.elements.text9": "и изучите", + "anms.examples.elements.text10": "примеры", + "anms.examples.elements.text11": "в официальной документации", + "anms.examples.elements.text12": "по этой библиотеке", + "anms.examples.simple-state-management.title": "Простое управление состоянием", + "anms.examples.simple-state-management.text1": "NgRx — отличная библиотека для управления состоянием, но иногда это избыточно для простых приложений с ограниченной маршрутизацией.", + "anms.examples.simple-state-management.text2": "В таких случаях обычно используем RxJS BehaviorSubject, чтобы шарить состояние как Observable-поток и при этом иметь возможность получать и изменять данные в сервисе.", + "anms.examples.simple-state-management.text3": "Этот паттерн был обёрнут и упрощён библиотекой", + "anms.examples.simple-state-management.text4": "которая предлагает минималистичный API, однонаправленный поток данных, поддержку нескольких моделей и иммутабельные данные как RxJS Observable", + "anms.examples.simple-state-management.text5": "Узнайте больше в", + "anms.examples.simple-state-management.text6": "Официальной документации", + "anms.examples.simple-state-management.text7": "Можно также подключить её в проект с помощью", + "anms.examples.simple-state-management.form.add.title": "Добавить нового пользователя", + "anms.examples.simple-state-management.form.add.submit": "Добавить пользователя", + "anms.examples.simple-state-management.form.edit.title": "Редактировать пользователя", + "anms.examples.simple-state-management.form.edit.submit": "Сохранить изменения", + "anms.examples.simple-state-management.form.reset": "Сбросить", + "anms.examples.simple-state-management.username": "Имя пользователя", + "anms.examples.simple-state-management.name": "Имя", + "anms.examples.simple-state-management.surname": "Фамилия", + "anms.examples.simple-state-management.validator.required": "Введите значение", + "anms.examples.simple-state-management.validator.minlength": "Введите хотя бы {{minlength}} символов", + "anms.examples.theming.child.description": "дочерний компонент работает!", + "anms.examples.theming.child.subtitle": "должно быть без стилей", + "anms.examples.theming.child.title": "заголовок h1 дочернего", + "anms.examples.theming.parent.description": "родительский компонент работает!", + "anms.examples.theming.parent.text1": "Стили темы не импортируются в", + "anms.examples.theming.parent.text10": "в CSS-правила для повышения специфичности. Например, см. файл темы этого компонента:", + "anms.examples.theming.parent.text2": "свойство декоратора", + "anms.examples.theming.parent.text3": "а в основном", + "anms.examples.theming.parent.text4": "файле. Поэтому стили темы", + "anms.examples.theming.parent.text5": "НЕ", + "anms.examples.theming.parent.text6": "привязываются автоматически к компоненту.", + "anms.examples.theming.parent.text7": "Нужно использовать", + "anms.examples.theming.parent.text8": "специфичные", + "anms.examples.theming.parent.text9": "селекторы, чтобы стили не утекали в дочерние компоненты. Это достигается с помощью", + "anms.examples.theming.parent.title": "Стилизация с вложенными компонентами", + "anms.examples.title": "Примеры", + "anms.examples.todos.added.notification": "{{name}} добавлен", + "anms.examples.todos.example": "Пример ToDo", + "anms.examples.todos.filter.active": "Активные", + "anms.examples.todos.filter.all": "Все", + "anms.examples.todos.filter.description": "Отображается", + "anms.examples.todos.filter.done": "Выполненные", + "anms.examples.todos.filter.item": "задача", + "anms.examples.todos.filter.items": "задачи", + "anms.examples.todos.filter.none": "нет", + "anms.examples.todos.filter.notification": "Отфильтровано:", + "anms.examples.todos.filter.one": "одна", + "anms.examples.todos.input": "Я собираюсь...", + "anms.examples.todos.list": "Список задач", + "anms.examples.todos.remove.notification": "Выполненные задачи удалены", + "anms.examples.todos.text1": "Это классический", + "anms.examples.todos.text2": "todo", + "anms.examples.todos.text3": "пример с поддержкой добавления, переключения, удаления и фильтрации задач.", + "anms.examples.todos.text4": "Управление состоянием реализовано через", + "anms.examples.todos.text5": "модуль и поддерживает ленивую загрузку редьюсеров.", + "anms.examples.todos.text6": "Todos сохраняются в localStorage, так что они останутся и при повторных визитах в браузере.", + "anms.examples.todos.toggle.notification": "{{name}} переключен в", + "anms.examples.todos.tooltip.add": "Добавить новую задачу", + "anms.examples.todos.tooltip.remove": "Удалить выполненные задачи", + "anms.examples.todos.undo": "Отменить" +} diff --git a/projects/angular-ngrx-material-starter/src/assets/i18n/ru.json b/projects/angular-ngrx-material-starter/src/assets/i18n/ru.json new file mode 100644 index 00000000..2d8b266b --- /dev/null +++ b/projects/angular-ngrx-material-starter/src/assets/i18n/ru.json @@ -0,0 +1,67 @@ +{ + "anms.about.change-theme": "Сменить тему", + "anms.about.check-blogs": "или почитайте блоги о", + "anms.about.contributors.description1": "Хотите начать контрибьютить в open source с Angular?", + "anms.about.contributors.description2": "Оставьте свой след и присоединяйтесь к команде контрибьюторов!", + "anms.about.contributors.description3": "Начните с просмотра ", + "anms.about.contributors.description4": " и ", + "anms.about.contributors.guide": "Руководство контрибьютора", + "anms.about.contributors.issues": "открытые задачи", + "anms.about.contributors.title": "Контрибьюторы", + "anms.about.get-notified.description": "Twitter-бот, который помогает быть в курсе релизов популярных frontend-фреймворков и библиотек!", + "anms.about.get-notified.follow": "Подписаться", + "anms.about.get-notified.title": "Получайте уведомления о новых релизах", + "anms.about.get-started": "Начать", + "anms.features.angular": "Современный мощный фреймворк", + "anms.features.angular-cli": "Интерфейс командной строки для Angular", + "anms.features.angular-material": "Библиотека компонентов в стиле Material Design", + "anms.features.bootstrap": "Адаптивная сетка из самой известной UI-библиотеки", + "anms.features.cypress": "Cypress — современный инструмент для end-to-end тестирования фронтенда", + "anms.features.documentation": "Документация", + "anms.features.fontawesome": "Простые в использовании векторные иконки и логотипы соцсетей", + "anms.features.guide": "Гайд", + "anms.features.lazyloading.description": "Быстрый старт приложения с ленивой загрузкой модулей", + "anms.features.lazyloading.title": "Ленивая загрузка", + "anms.features.ngrx": "Однонаправленный поток данных на основе RxJS Observable", + "anms.features.ngxtranslate": "Библиотека интернационализации для Angular", + "anms.features.rxjs": "Реактивное программирование с коллекциями на Observables", + "anms.features.themes.description": "Гибкая поддержка тем для встроенных и кастомных компонентов", + "anms.features.themes.title": "Темы", + "anms.features.title": "Возможности", + "anms.features.typescript": "Удобная разработка, автодополнение кода, рефакторинг и меньше багов", + "anms.features.eslint": "ESLint помогает находить проблемные паттерны в JS и TS коде", + "anms.footer.changelog": "Показать список изменений", + "anms.header.github": "GitHub репозиторий проекта", + "anms.menu.about": "О проекте", + "anms.menu.examples": "Примеры", + "anms.menu.features": "Возможности", + "anms.menu.login": "Войти", + "anms.menu.logout": "Выйти", + "anms.menu.settings": "Настройки", + "anms.settings.animations.elements": "Анимация элементов навигации", + "anms.settings.animations.page": "Анимация переходов между страницами", + "anms.settings.animations.title": "Анимации", + "anms.settings.general.language.de": "Немецкий", + "anms.settings.general.language.en": "Английский", + "anms.settings.general.language.es": "Испанский", + "anms.settings.general.language.fr": "Французский", + "anms.settings.general.language.he": "Иврит", + "anms.settings.general.language.pt-br": "Португальский (Бразилия)", + "anms.settings.general.language.sk": "Словацкий", + "anms.settings.general.language.zh-cn": "Китайский (упрощённый)", + "anms.settings.general.language.ru": "Русский", + "anms.settings.general.placeholder": "Язык", + "anms.settings.general.title": "Общие", + "anms.settings.themes.blue": "Синяя", + "anms.settings.themes.dark": "Тёмная", + "anms.settings.themes.light": "Светлая", + "anms.settings.themes.nature": "Природа", + "anms.settings.themes.night-mode": "Автоматическая тёмная тема (с 21:00 до 7:00)", + "anms.settings.themes.placeholder": "Цветовая тема", + "anms.settings.themes.saneago": "", + "anms.settings.themes.sticky-header": "Закреплённый хедер", + "anms.settings.themes.title": "Темы", + "anms.settings.title": "Настройки", + "anms.title.long": "Angular NgRx Material Starter", + "anms.title.short": "Angular Starter" +}