diff --git a/packages/earth-shared/src/components/user-menu/UserMenu.tsx b/packages/earth-shared/src/components/user-menu/UserMenu.tsx index 528978b9..0f898ae6 100644 --- a/packages/earth-shared/src/components/user-menu/UserMenu.tsx +++ b/packages/earth-shared/src/components/user-menu/UserMenu.tsx @@ -141,6 +141,15 @@ export const UserMenu = (props: IProps) => { Français +
  • + changeLanguage(e, Elang.RU)}> + Pусский + +
  • )} diff --git a/packages/earth-shared/src/locales.ts b/packages/earth-shared/src/locales.ts index 1b040cc6..73a60352 100644 --- a/packages/earth-shared/src/locales.ts +++ b/packages/earth-shared/src/locales.ts @@ -21,4 +21,5 @@ export enum Elang { EN = 'en', ES = 'es', FR = 'fr', + RU = 'ru', } diff --git a/packages/earth-shared/src/translations/TranslationService.ts b/packages/earth-shared/src/translations/TranslationService.ts index a7976c20..6dffce49 100644 --- a/packages/earth-shared/src/translations/TranslationService.ts +++ b/packages/earth-shared/src/translations/TranslationService.ts @@ -16,7 +16,7 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -// @ts-nocheck + import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; @@ -26,14 +26,16 @@ import SessionStorage from '../services/SessionStorage'; import translationEN from './en/translation.json'; import translationES from './es/translation.json'; import translationFR from './fr/translation.json'; +import translationRU from './ru/translation.json'; import translationENAdmin from './en/admin.translation.json'; import translationESAdmin from './es/admin.translation.json'; import translationFRAdmin from './fr/admin.translation.json'; +import translationRUAdmin from './ru/admin.translation.json'; import * as weglot from './weglot'; interface ITranslationService { - init(): void; + init(key: string): void; getDefaultLanguage(): string; } @@ -41,11 +43,9 @@ class TranslationService implements ITranslationService { constructor() {} getDefaultLanguage() { - const { - fallbackLng: [defaultLanguage], - } = i18n.options; + const { fallbackLng: defaultLanguage } = i18n.options; - return defaultLanguage || Elang.EN; + return defaultLanguage || Elang.EN; } init(weglotApiKey) { @@ -71,6 +71,10 @@ class TranslationService implements ITranslationService { translation: translationFR, admin: translationFRAdmin, }, + [Elang.RU]: { + translation: translationRU, + admin: translationRUAdmin, + }, }, lng: lang, fallbackLng: Elang.EN, diff --git a/packages/earth-shared/src/translations/ru/admin.translation.json b/packages/earth-shared/src/translations/ru/admin.translation.json new file mode 100644 index 00000000..e3381fb2 --- /dev/null +++ b/packages/earth-shared/src/translations/ru/admin.translation.json @@ -0,0 +1,192 @@ +{ + "about": "о программе", + "Add a title first": "Сначала добавить заголовок", + "Add organization": "Добавить организацию", + "Add users": "Добавить пользователей", + "Add users to group": "Добавить пользователей в группу {{value}}", + "Admin": "Администратор", + "Area Bbox": "Площадь Bbox", + "Area ha": "Площадь га", + "cancel": "отменить", + "Cannot be empty": "Не может быть пустым", + "Centroid": "центроида", + "Choose a GeoJSON to calculate shape maths and geographic relationships": "Выберите GeoJSON для расчета математических параметров формы и географических связей", + "Choose a page": "Выберите страницу", + "Collection": "Набор", + "Continent": "континент", + "Country": "Страна", + "Create a new widget": "Создать новый виджет", + "Create new dashboard": "Создать новую приборную панель", + "Create new layer": "Создать новый слой", + "Create new Organization": "Создать новую организацию", + "Create new place": "Создать новое место", + "Created": "созданный", + "dashboard": "приборная панель", + "Dashboard description": "описание приборной панели", + "Dashboard slug": "Слаг приборной панели", + "Dashboard slug is required": "Требуется слаг приборной панели", + "Dashboard title": "Название приборной панели", + "Dashboard title is required": "Требуется название приборной панели", + "Dashboard widgets": "Виджеты приборной панели", + "Dashboard Widgets": "Виджеты Приборной панели", + "dashboards": "приборные панели", + "Dashboards": "Приборные панели", + "delete": "удалить", + "deleting": "удаление", + "Delete confirmation": "Подтвердить удаление {{value}}?", + "Delete dashboard": "Удалить приборную панель", + "Delete layer": "Удалить слой", + "Delete organization": "Удалить организацию", + "Delete place": "Удалить место", + "Delete resource": "Удалить ресурс {{value}}", + "Delete user": "Удалить пользователя", + "Delete widget": "Удалить виджет", + "Description": "Описание", + "Download GeoJSON": "Скачать GeoJSON", + "Edit user": "Изменить пользователя", + "Editor": "редактор", + "Email": "Эл. адрес", + "Email exists": "{{value}} Email существует.", + "Email invited": "{{value}} Приглашение выслано не эл.адрес.", + "Email unavailable": "{{value}} электронная почта недоступна. {{details}}", + "Emails": "эл.почта", + "end": "конец", + "Enter existing emails to add users to this organization": "Введите существующие электронные адреса, чтобы добавить пользователей к данной организации", + "Featured": "Выделено", + "Generate a slug name": "Сгенерировать наименовение слага", + "Generate slug": "Сгенерировать слаг", + "GeoJSON is required": "Требуется GeoJSON", + "Go back to users list": "Вернуться к списку пользователей", + "Home": "Главная страница", + "ID": "ID", + "Included layers": "Включенные слои", + "Included Widgets": "Включенные Виджеты", + "Invalid Organization": "Недействительная организация", + "Json editor": "редактор Json", + "Jurisdiction": "Юрисдикция", + "Last Updated": "Последнее обновление", + "layer": "слой", + "Layer category": "Категория слоя", + "Layer category cannot be empty": "Категория слоя не может быть пустой", + "Layer config": "Конфигурация слоя", + "Layer Config": "Конфигурация Слоя", + "Layer description": "Описание слоя", + "Layer provider": "Провайдер слоя", + "Layer references": "Ссылки слоя", + "Layer References": "Ссылки Слоя", + "Layer slug": "Слаг слоя", + "Layer slug is required": "Требуется слаг слоя", + "Layer title": "название слоя", + "Layer title is required": "Требуется название слоя", + "Layer type": "Тип слоя", + "layers": "слои", + "Layers": "Слои", + "Loading": "загрузка", + "Map View": "Просмотр карты", + "Metric Slug": "Слаг показателя", + "Name": "имя", + "New dashboard": "Новая приборная панель", + "New layer": "Новый слой", + "New place": "Новое место", + "New Widget": "Новый виджет", + "No dashboard widgets": "Нет виджетов приборной панели", + "No description": "нет описания", + "No layer reference": "Нет ссылки на слой", + "No layer references": "Нет ссылок слоя", + "No organisations available": "Нет доступных организаций", + "Only lowercase alphanumeric characters and hyphens allowed": "Разрешены только строчные буквы, цифры и дефисы.", + "Only upercase alphanumeric characters and hyphens allowed": "Разрешены только заглавные буквы, цифры и дефисы.", + "organisations": "организации", + "Organisations": "Организации", + "organization": "организация", + "Organization collections": "Наборы организации", + "Organization dashboards": "Приборные панели организации", + "Organization layers": "Слои организации", + "Organization name": "Название организации", + "Organization name is required": "Требуется название организации", + "Organization places": "Места организации", + "Organization widgets": "Виджеты организации", + "organizations": "организации", + "Organizations": "Организации", + "Owner": "Владелец", + "Owners": "Владельцы", + "Page not found": "Страница не найдена", + "place": "место", + "Place Metrics": "Показатели места", + "Place shape": "Форма места", + "Place slug": "Слаг места", + "Place slug is required": "Требуется слаг места", + "Place title": "Название места", + "Place title is required": "Требуется название места", + "Place type": "Тип места", + "places": "места", + "Places": "Места", + "Please add a valid email address": "Пожалуйста, добавьте действительный адрес электронной почты", + "Please enter a different email": "Пожалуйста, введите другой адрес электронной почты", + "Please make sure the selected file is under MB": "Убедитесь, что выбранный файл меньше {{value}} МБ", + "Please select a valid one": "Пожалуйста, выберите действительный:", + "Please visit landing page or lear our product": "Посетите нашу целевую страницу или inconnuations нашего продукта.", + "Primary": "первичный", + "Profile": "Профиль", + "Public": "публичный", + "Published": "опубликованный", + "Recalculate all": "Пересчитайте все", + "Remove User": "Удалить пользователя", + "Return search create": "Вернитесь на главную страницу {{value}}, найдите {{value}} или создайте новое {{value}}.", + "Return to app": "Вернуться к {{value}}", + "return to home": "вернуться домой из {{value}}", + "Role and access": "Роль и доступ", + "Roles": "Роли", + "Save and view details": "Сохранить и просмотреть детали", + "search": "поиск", + "Search a dashboard to view and edit details, or start creating a new dashboard": "Найдите приборную панель, чтобы просмотреть и отредактировать сведения, или начните создавать новую панель", + "Search a layer to view and edit details, or start creating a new layer": "Найдите слой, чтобы просмотреть и отредактировать сведения, или начните создавать новый слой.", + "Search a place to view and edit details, or start creating a new place": "Найдите место, чтобы просмотреть и отредактировать сведения, или начните создавать новое место.", + "Search a widget to view and edit details, or start creating a new widget": "Найдите виджет, чтобы просмотреть и отредактировать сведения, или начните создавать новый виджет.", + "Search and edit sections related to your organization": "Поиск и редактирование разделов, связанных с вашей организацией", + "Select": "Выбрать", + "Select layer category": "Выбрать категорию слоя", + "Select layer provider": "Выбрать поставщика слоя", + "Select layer type": "Выбрать тип слоя", + "Select layers": "Выбрать слои", + "Select metric slug": "Выбрать слаг показателя", + "Select place type": "Выбрать тип места", + "Select role": "Выбрать роль", + "Select Widget Layer": "Выберите слой виджета", + "Select Widget Layers": "Выбрать слои виджета", + "Select widgets": "Выбрать виджеты", + "Shape File": "Шейп-файл", + "short-org-name-or-initials": "короткое-орг-имя-или-инициалы", + "Slug": "Слаг", + "Slug is required": "Требуется слаг", + "Something went wrong": "Что-то пошло не так", + "Special characters are not allowed": "Специальные символы не допустимы", + "Special characters or space are not allowed": "Использование специальных символов или пробелов запрещено.", + "Start creating a new organization for users to collaborate and share with each other": "Начните создавать новую организацию, чтобы пользователи могли сотрудничать и делиться друг с другом", + "The page you are looking for may not exist": "{{Значение}}, которое вы ищете, не может быть получено или не существует.", + "The page you are looking for may not exist, or we may be experiencing an error": "Страница, которую вы ищете, не существует, либо у нас произошла ошибка", + "The slug name cannot be edited after creation": "Наименование слага невозможно изменить после создания", + "This is homepage - should be redirected to /:org": "Это домашняя страница - необходимо перенаправить на /:org", + "Title": "наименование", + "Unknown error": "Неизвестная ошибка", + "Update Shape": "Обновление формы", + "User details": "Данные пользователя", + "Users": "Пользователи", + "Version": "Версия", + "View and upload shape": "Просмотр и загрузка формы", + "Viewer": "зритель", + "We’re terribly sorry": "Мы очень сожалеем.", + "Welcome to org admin": "Добро пожаловать к администратору {{value}}!", + "widget": "виджет", + "Widget Config": "Конфигурация виджета", + "Widget Layer": "Слой виджетов", + "Widget Layers": "Слои виджета", + "Widget slug": "Слаг виджета", + "Widget slug is required": "Требуется слаг виджета", + "Widget title": "Название виджета", + "Widget title is required": "Требуется название виджета", + "widgets": "виджеты", + "Widgets": "Виджеты", + "You are not authorized to view this page": "Вы не авторизованы для просмотра этой страницы", + "You don’t have permission to access this page": "У вас нет разрешения на доступ к этой странице" +} diff --git a/packages/earth-shared/src/translations/ru/translation.json b/packages/earth-shared/src/translations/ru/translation.json index 327089d3..8a870e00 100644 --- a/packages/earth-shared/src/translations/ru/translation.json +++ b/packages/earth-shared/src/translations/ru/translation.json @@ -1,4 +1,5 @@ { + "About": "Около", "Account": "Учетная запись", "Account access": "Доступ к учетной записи", "Add places": "Добавить места", @@ -12,10 +13,12 @@ "cancel": "отменить", "cancel update": "отменить обновление", "Clear": "Очистить", + "Clip and Export Layers": "Обрезать и экспортировать слои", "Collection": "Набор", "Collection name is required": "Требуется название коллекции", "Collection places": "Места наборов", "Collections": "Наборы", + "Could not download layer. Area too large": "Не удалось загрузить слой. Слишком большая площадь", "Country or region": "Страна или Регион", "Create a Collection": "Создать набор", "Create a collection and start sharing your insights with your organization members": "Создайте набор и начните делиться вашими идеями с членами вашей организации", @@ -30,6 +33,7 @@ "Download": "Скачать", "Download metric as a": "Скачать показатель как", "Download metric data files": "Скачать файлы данных метрики", + "Downloading": "Скачивание", "Download metrics": "Скачать метрики", "Downloading metrics": "Скачивание показателей", "edit": "редактировать", @@ -41,6 +45,7 @@ "First Name": "Отчество", "I understand this will permanently delete my account and that this action can": "Я понимаю, что это приведет к безвозвратному удалению моей учетной записи, и что это действие", "Individual metrics related to each of the places in your collection can be viewed once downloaded": "Отдельные показатели, относящиеся к каждому месту в вашей коллекции, можно просмотреть после загрузки", + "Invalid layer configuration specified": "Указана неверная конфигурация слоя", "Institution": "Учреждение", "Labels": "Ярлыки", "Languages": "Языки", @@ -66,11 +71,13 @@ "Places": "Места", "Please enter a valid email": "Пожалуйста, введите действительный адрес электронной почты", "Please select an organization to create a collection under. After selecting an organization, you will be able to select places and share insights with members of your selected organization. Organizations can not be edited once picked": "Выберите организацию, для которой хотите создать набор. После выбора организации вы сможете выбирать места и делиться своими идеями с членами выбранной вами организации. После выбора организации нельзя редактировать.", + "Powered by": "На платформе {{value}}", "Profile": "Личный кабинет", "Refresh": "Refresh", "Remove from map": "Удалить с карты", "Rename Collection": "Переименовать коллекцию", "Renaming collection": "Переименование коллекции", + "Reset layers": "Сбросить слои", "Return to": "Возврат к", "Return to map view": "Вернуться к просмотру карты", "Roads": "Дороги", @@ -84,15 +91,19 @@ "Select a file type for download": "Выберите тип файла для загрузки", "Select an Organization": "Выбрать организацию", "Select country or region": "Выберите страну или регион", + "Select layer for download": "Выберите слой для загрузки", "Select metrics for download": "Выберите показатели для загрузки", "Select metrics to download data files": "Выберите показатели для загрузки файлов данных", "Select single or multiple metric data files for download": "Выберите один или несколько файлов данных метрики для загрузки", "Send reset email": "Отправить электронное письмо для сброса пароля", + "Selected layers are currently not supported": "Выбранные слои в настоящее время не поддерживаются", + "Select Widget Layers": "Выберите слои виджетов", "Sending reset email": "Отправка электронного письма для сброса пароль", "Show on map": "Показать на карте", "Sign in": "Войти", "Sign Out": "Выйти", "Sign up": "Зарегистрироваться", + "Something went wrong": "Что-то пошло не так", "There are no places added to this collection": "В этот набор не добавлены места", "Update warning": "Update warning", "We'll send you an email to reset your password": "Мы отправим вам электронное письмо для сброса пароля", diff --git a/packages/earth-shared/tsconfig.json b/packages/earth-shared/tsconfig.json index 03f8df5d..510c01d5 100644 --- a/packages/earth-shared/tsconfig.json +++ b/packages/earth-shared/tsconfig.json @@ -13,7 +13,8 @@ "skipLibCheck": true, "noImplicitAny": false, "strictNullChecks": false, - "baseUrl": "src" + "baseUrl": "src", + "resolveJsonModule": true }, "include": ["./src/**/*"] }