Просмотр исходного кода

feat(admin-ui): Add Ukrainian translation (#889)

* fix(admin-ui): Fix Russian translation

* feat(admin-ui): Add Ukrainian translation

Co-authored-by: Andrew Kirillov <andrew.a.kirillov@yandex.com>
Andrew Kirillov 4 лет назад
Родитель
Сommit
b0b1716b66

+ 1 - 0
packages/admin-ui-plugin/src/constants.ts

@@ -16,4 +16,5 @@ export const defaultAvailableLanguages = [
     LanguageCode.cs,
     LanguageCode.fr,
     LanguageCode.ru,
+    LanguageCode.uk,
 ];

+ 9 - 4
packages/admin-ui/i18n-coverage.json

@@ -1,6 +1,6 @@
 {
-  "generatedOn": "2021-05-13T09:41:10.029Z",
-  "lastCommit": "1fb3620ce86cac7a29c747cbd3cf8cb831aa1983",
+  "generatedOn": "2021-05-21T13:44:00.060Z",
+  "lastCommit": "039561e0cb4f889de3ab83c59d447b1daf3e5c07",
   "translationStatus": {
     "cs": {
       "tokenCount": 775,
@@ -39,7 +39,12 @@
     },
     "ru": {
       "tokenCount": 775,
-      "translatedCount": 773,
+      "translatedCount": 775,
+      "percentage": 100
+    },
+    "uk": {
+      "tokenCount": 775,
+      "translatedCount": 775,
       "percentage": 100
     },
     "zh_Hans": {
@@ -53,4 +58,4 @@
       "percentage": 68
     }
   }
-}
+}

+ 99 - 99
packages/admin-ui/src/lib/static/i18n-messages/ru.json

@@ -4,11 +4,11 @@
   },
   "asset": {
     "add-asset": "Добавить медиа-объект",
-    "add-asset-with-count": "Добавить {count, plural, 0 {assets} one {1 asset} other {{count} assets}}",
-    "assets-selected-count": "Выбранно { count } медиа-объектов",
+    "add-asset-with-count": "Добавить {count, plural, 0 {медиа-объектов} one {1 медиа-объект} other {{count} медиа-объектов}}",
+    "assets-selected-count": "Выбрано { count } медиа-объектов",
     "dimensions": "Размеры",
     "focal-point": "Точка фокуса",
-    "notify-create-assets-success": "Созданный {count, plural, one {new Asset} other {{count} new Assets}}",
+    "notify-create-assets-success": "Создано {count, plural, one {новый медиа-объект} other {{count} новых медиа-объектов}}",
     "original-asset-size": "Размер медиа-объекта",
     "preview": "Предварительный просмотр",
     "remove-asset": "Удалить медиа-объект",
@@ -51,7 +51,7 @@
     "zones": "Зоны"
   },
   "catalog": {
-    "add-facet-value": "Add facet value",
+    "add-facet-value": "Добавить значение среза",
     "add-facets": "Добавить срез",
     "add-option": "Добавить опции",
     "assign-product-to-channel-success": "Товар успешно добавлен в канал \"{ channel }\"",
@@ -60,14 +60,14 @@
     "assign-to-named-channel": "Добавить для { channelCode }",
     "assign-variant-to-channel-success": "Вариант товара успешно добавлен в канал \"{ channel }\"",
     "assign-variants-to-channel": "Добавить варианты товара в канал",
-    "auto-update-option-variant-name": "Автоматические обновлять название опций вариантов товара ProductVariants",
-    "auto-update-product-variant-name": "Автоматические обновлять имена вариантов товара ProductVariants",
+    "auto-update-option-variant-name": "Автоматически обновлять названия вариантов товара с помощью этой опции",
+    "auto-update-product-variant-name": "Автоматически обновлять названия вариантов товара",
     "channel-price-preview": "Предварительный просмотр цен канала",
     "collection-contents": "Содержание коллекции",
     "confirm-adding-options-delete-default-body": "Добавление опций к этому товару приведет к удалению существующего варианта товара по умолчанию. Вы хотите продолжить?",
     "confirm-adding-options-delete-default-title": "Вариант товара",
     "confirm-delete-administrator": "Удалить администратора?",
-    "confirm-delete-assets": "Удалить {count} {count, plural, one {asset} другой {assets}}?",
+    "confirm-delete-assets": "Удалить {count} {count, plural, one {медиа-объект} other {медиа-объектов}}?",
     "confirm-delete-channel": "Удалить канал?",
     "confirm-delete-collection": "Удалить коллекцию?",
     "confirm-delete-collection-and-children-body": "Удаление этой коллекции также приведет к удалению всех дочерних коллекций.",
@@ -78,12 +78,12 @@
     "confirm-delete-product": "Удалить товар?",
     "confirm-delete-product-variant": "Удалить вариант товара?",
     "confirm-delete-promotion": "Удалить промо-акцию?",
-    "confirm-delete-shipping-method": "Удалить метод продаж?",
+    "confirm-delete-shipping-method": "Удалить метод доставки?",
     "confirm-delete-zone": "Удалить зону?",
     "create-new-collection": "Создать новую коллекцию",
     "create-new-facet": "Создать новый срез",
     "create-new-product": "Создать новый товар",
-    "created-new-variants-success": "Успешно создан {count} новый {count, plural, one {variant} другой {variants}}",
+    "created-new-variants-success": "Успешно создан {count} новый {count, plural, one {вариант} other {вариантов}}",
     "default-variant": "Вариант товара по умолчанию",
     "delete-default-variant": "Удалить вариант товара по умолчанию",
     "display-variant-cards": "Просмотр карточек вариантов",
@@ -109,7 +109,7 @@
     "option": "Опции",
     "option-name": "Имя опции",
     "option-values": "Значение опции",
-    "out-of-stock-threshold": "Порог «нет в наличии»",
+    "out-of-stock-threshold": "Порог «нет в наличии»",
     "out-of-stock-threshold-tooltip": "Установите порог остатков на складе, после которого будет считаться, что варианта товара нет в наличии. При использовании отрицательного значения порога, включается поддержка предзаказа.",
     "price": "Цена",
     "price-conversion-factor": "Коэффициент пересчета цены",
@@ -123,7 +123,7 @@
     "public": "Публичный",
     "rebuild-search-index": "Перестроить поисковый индекс",
     "reindex-error": "Произошла ошибка при перестройке индекса поиска",
-    "reindex-successful": "Проиндексировано {count, plural, one {product variant} другие {{count} варианты продукта}} за {time}мс",
+    "reindex-successful": "Проиндексировано {count, plural, one {вариант продукта} other {{count} вариантов продукта}} за {time}мс",
     "reindexing": "Перестройка поискового индекса",
     "remove-from-channel": "Удалить из канала",
     "remove-option": "Удалить опции",
@@ -136,7 +136,7 @@
     "select-product-variant": "Выберите вариант товара",
     "sku": "Артикул",
     "slug": "Код",
-    "slug-pattern-error": "Код задан неккоректно",
+    "slug-pattern-error": "Код задан некорректно",
     "stock-allocated": "Зарезервировано",
     "stock-allocated-tooltip": "Количество единиц, зарезервированных для заказов, которые были размещены, но еще не выполнены.",
     "stock-on-hand": "На складе",
@@ -145,7 +145,7 @@
     "stock-saleable-tooltip": "Количество единиц, доступных для продажи с учетом порогового значения отсутствия на складе",
     "tax-category": "Налоговая категория",
     "taxes": "Налоги",
-    "track-inventory": "Отслеживать инвентарь",
+    "track-inventory": "Отслеживать инвентаризацию",
     "track-inventory-false": "Не отслеживать",
     "track-inventory-inherit": "Наследовать от глобальных настроек",
     "track-inventory-tooltip": "При отслеживании, уровни запаса вариантов товара будут автоматически корректироваться при продаже.",
@@ -160,8 +160,8 @@
   "common": {
     "ID": "ID",
     "actions": "Действия",
-    "add-item-to-list": "Добавить элемент в список",
-    "add-new-variants": "Добавить {count, plural, one {1 variant} другой {{count} variants}}",
+    "add-item-to-list": "Добавить позицию в список",
+    "add-new-variants": "Добавить {count, plural, one {1 вариант} other {{count} вариантов}}",
     "add-note": "Добавить заметку",
     "available-languages": "Доступные языки",
     "cancel": "Отмена",
@@ -175,7 +175,7 @@
     "confirm-delete-note": "Удалить заметку?",
     "confirm-navigation": "Подтвердите навигацию",
     "create": "Создать",
-    "created-at": "Создано на",
+    "created-at": "Создано в",
     "custom-fields": "Настраиваемые поля",
     "default-channel": "Канал по умолчанию",
     "default-language": "Язык по умолчанию",
@@ -184,23 +184,23 @@
     "description": "Описание",
     "details": "Подробности",
     "disabled": "Выключен",
-    "discard-changes": "Сбросить изменения",
+    "discard-changes": "Отменить изменения",
     "edit": "Редактировать",
     "edit-field": "Редактировать поле",
     "edit-note": "Редактировать заметку",
     "enabled": "Включен",
-    "expand-entries": "Расширить записи",
+    "expand-entries": "Развернуть записи",
     "extension-running-in-separate-window": "Расширение работает в отдельном окне",
     "filter": "Фильтр",
     "guest": "Гость",
     "items-per-page-option": "Количество на странице",
     "language": "Язык",
-    "launch-extension": "Расширение запуска",
-    "live-update": "Обновление в прямом эфире",
+    "launch-extension": "Запуск расширения",
+    "live-update": "Обновление в режиме реального времени",
     "log-out": "Выйти",
     "login": "Войти",
     "manage-tags": "Управление тегами",
-    "manage-tags-description": "Обновление или удаление тегов по всему миру.",
+    "manage-tags-description": "Обновление или удаление тегов глобально.",
     "more": "Больше...",
     "name": "Имя",
     "no-results": "Нет результатов",
@@ -210,40 +210,40 @@
     "notify-delete-error": "Ошибка, не удалось удалить { entity }",
     "notify-delete-success": "Удалено { entity }",
     "notify-save-changes-error": "Произошла ошибка, не удалось сохранить изменения",
-    "notify-saved-changes": "Сохраненные изменения",
+    "notify-saved-changes": "Сохранены изменения",
     "notify-update-error": "Произошла ошибка, не удалось обновить { entity }",
     "notify-update-success": "Обновлено { entity }",
-    "notify-updated-tags-success": "Успешно обновленные теги",
+    "notify-updated-tags-success": "Успешно обновлены теги",
     "open": "Открыть",
     "password": "Пароль",
     "price": "Цена",
     "price-with-tax": "Цена с налогом",
     "private": "Частный",
     "public": "Публичный",
-    "remember-me": "Запомни меня",
+    "remember-me": "Запомнить меня",
     "remove": "Удалить",
-    "remove-item-from-list": "Удалить элемент из списка",
-    "results-count": "{ count } {count, plural, one {result} другой {results}}",
+    "remove-item-from-list": "Удалить позицию из списка",
+    "results-count": "{ count } {count, plural, one {результат} other {результатов}}",
     "select": "Выбрать...",
     "select-display-language": "Выберите язык отображения",
     "select-today": "Выберите сегодня",
     "tags": "Теги",
     "theme": "Тема",
-    "there-are-unsaved-changes": "Есть несохраненные изменения. Если вы уйдете, эти изменения будут потеряны.",
+    "there-are-unsaved-changes": "Есть несохраненные изменения. Если вы выйдете, эти изменения будут потеряны.",
     "toggle-all": "Переключить все",
-    "update": "Обновлять",
+    "update": "Обновить",
     "updated-at": "Обновлено в",
     "username": "Имя пользователя",
-    "view-next-month": "Посмотреть в следующем месяце",
+    "view-next-month": "Посмотреть следующий месяц",
     "view-previous-month": "Посмотреть предыдущий месяц",
     "with-selected": "С выбранным..."
   },
   "customer": {
     "add-customer-to-group": "Добавить клиента в группу",
-    "add-customer-to-groups-with-count": "Добавить клиента в {count, plural, one {1 group} другой {{count} groups}}",
+    "add-customer-to-groups-with-count": "Добавить клиента в {count, plural, one {1 группу} other {{count} групп}}",
     "add-customers-to-group": "Добавить клиентов в группу",
-    "add-customers-to-group-success": "Добавлен {customerCount, plural, one {1 customer} other {{customerCount} customers}} to \"{ groupName }\"",
-    "add-customers-to-group-with-count": "Добавлять {count, plural, one {1 customer} other {{count} customers}}",
+    "add-customers-to-group-success": "Добавлен {customerCount, plural, one {1 клиент} other {{customerCount} клиентов}} в \"{ groupName }\"",
+    "add-customers-to-group-with-count": "Добавить {count, plural, one {1 клиента} other {{count} клиентов}}",
     "add-customers-to-group-with-name": "Добавить клиентов в \"{ groupName }\"",
     "addresses": "Адреса",
     "city": "Город",
@@ -255,7 +255,7 @@
     "create-new-customer": "Создать нового клиента",
     "create-new-customer-group": "Создать новую группу клиентов",
     "customer-groups": "Группы клиентов",
-    "customer-history": "История клиентов",
+    "customer-history": "История изменения клиентов",
     "customer-type": "Тип клиента",
     "default-billing-address": "Биллинг по умолчанию",
     "default-shipping-address": "Доставка по умолчанию",
@@ -282,7 +282,7 @@
     "last-login": "Последний вход",
     "last-name": "Фамилия",
     "name": "Имя",
-    "new-email-address": "Новый E-mail адрес",
+    "new-email-address": "Новый адрес электронной почты",
     "no-orders-placed": "Заказы не размещены",
     "not-a-member-of-any-groups": "Этот клиент не состоит ни в одной группе",
     "old-email-address": "Старый адрес электронной почты",
@@ -292,12 +292,12 @@
     "postal-code": "Почтовый индекс",
     "province": "Регион",
     "registered": "Зарегистрировано",
-    "remove-customers-from-group-success": "Удаленный {customerCount, plural, one {1 customer} другие {{customerCount} customers}} из \"{ groupName }\"",
+    "remove-customers-from-group-success": "Удален {customerCount, plural, one {1 клиент} other {{customerCount} клиентов}} из \"{ groupName }\"",
     "remove-from-group": "Удалить из этой группы",
     "search-customers-by-email": "Поиск по адресу электронной почты",
     "search-customers-by-last-name": "Поиск по фамилии",
     "select-customer": "Выберите клиента",
-    "set-as-default-billing-address": "Установить в качестве биллинга по умолчанию",
+    "set-as-default-billing-address": "Установить как биллинг по умолчанию",
     "set-as-default-shipping-address": "Установить как доставку по умолчанию",
     "street-line-1": "Улица, строка 1",
     "street-line-2": "Улица, строка 2",
@@ -312,7 +312,7 @@
     "orders-summary": "Сводка заказов",
     "remove-widget": "Удалить виджет",
     "thisMonth": "Этот месяц",
-    "thisWeek": "На этой неделе",
+    "thisWeek": "Эта неделя",
     "today": "Сегодня",
     "total-order-value": "Общая стоимость",
     "total-orders": "Всего заказов",
@@ -321,11 +321,11 @@
     "yesterday": "Вчера"
   },
   "datetime": {
-    "ago-days": "{count, plural, one {1 day} other {{count} days}} ago",
-    "ago-hours": "{count, plural, one {1 hr} other {{count} hrs}} ago",
-    "ago-minutes": "{count, plural, one {1 min} other {{count} mins}} ago",
-    "ago-seconds": "{count, plural, =0 {just now} one {1 sec ago} other {{count} secs ago}}",
-    "ago-years": "{count, plural, one {1 year} other {{count} years}} ago",
+    "ago-days": "{count, plural, one {1 день} other {{count} дней}} тому",
+    "ago-hours": "{count, plural, one {1 час} other {{count} часов}} тому",
+    "ago-minutes": "{count, plural, one {1 минуту} other {{count} минут}} тому",
+    "ago-seconds": "{count, plural, =0 {прямо сейчас} one {1 секунду тому} other {{count} секунд тому}}",
+    "ago-years": "{count, plural, one {1 год} other {{count} лет}} тому",
     "duration-milliseconds": "{ms}мс",
     "duration-minutes:seconds": "{m}:{s}мин",
     "duration-seconds": "{s}сек",
@@ -363,11 +363,11 @@
   "error": {
     "403-forbidden": "В настоящее время у вас нет прав доступа \"{ path }\". Либо у вас нет разрешений на просмотр, либо срок вашего сеанса истек.",
     "could-not-connect-to-server": "Не удалось подключиться к серверу Vendure на { url }",
-    "facet-value-form-values-do-not-match": "Количество значений в фасетной форме не соответствует фактическому количеству значений.",
+    "facet-value-form-values-do-not-match": "Количество значений в форме срезов не соответствует фактическому количеству значений.",
     "health-check-failed": "Ошибка проверки работоспособности системы",
     "no-default-shipping-zone-set": "На этом канале нет зоны доставки по умолчанию. Это может вызвать ошибки при расчете стоимости доставки заказа.",
     "no-default-tax-zone-set": "В этом канале нет налоговой зоны по умолчанию, что приведет к ошибкам при расчете цен. Пожалуйста, создайте или выберите зону.",
-    "product-variant-form-values-do-not-match": "Количество вариантов в форме продукта не соответствует фактическому количеству вариантов"
+    "product-variant-form-values-do-not-match": "Количество вариантов в форме товара не соответствует фактическому количеству вариантов"
   },
   "lang": {
     "af": "Afrikaans",
@@ -514,7 +514,7 @@
     "tr": "Turkish",
     "tt": "Tatar",
     "ug": "Uyghur",
-    "uk": "Ukrainian",
+    "uk": "Українська",
     "ur": "Urdu",
     "uz": "Uzbek",
     "vi": "Vietnamese",
@@ -555,7 +555,7 @@
     "orders": "Заказы",
     "payment-methods": "Способы оплаты",
     "products": "Продукты",
-    "promotions": "Промоакции",
+    "promotions": "Промо-акции",
     "roles": "Роли",
     "sales": "Продажи",
     "settings": "Настройки",
@@ -563,17 +563,17 @@
     "system": "Система",
     "system-status": "Состояние системы",
     "tax-categories": "Категории налогов",
-    "tax-rates": "Категория налогов",
+    "tax-rates": "Налоговые ставки",
     "zones": "Зоны"
   },
   "order": {
-    "add-item-to-order": "Добавить товар в заказ",
+    "add-item-to-order": "Добавить позицию в заказ",
     "add-note": "Добавить заметку",
     "add-payment": "Добавить платеж",
     "add-payment-to-order": "Добавить оплату в заказ",
     "add-payment-to-order-success": "Платеж успешно добавлен в заказ",
     "add-surcharge": "Добавить доплату",
-    "added-items": "Добавленные предметы",
+    "added-items": "Добавленные позиции",
     "amount": "Количество",
     "apply-filters": "Применить фильтры",
     "arrange-additional-payment": "Организуйте доплату",
@@ -585,33 +585,33 @@
     "cancel-payment": "Отменить платеж",
     "cancel-reason-customer-request": "Запрос клиента",
     "cancel-reason-not-available": "Недоступен",
-    "cancel-selected-items": "Отменить выбранные элементы",
+    "cancel-selected-items": "Отменить выбранные позиции",
     "cancellation-reason": "Причина отмены",
     "cancelled-order-success": "Успешно отмененный заказ",
     "confirm-modifications": "Подтвердите изменения",
     "contents": "Содержимое",
     "create-fulfillment": "Создать выполнение",
-    "create-fulfillment-success": "Созданное исполнение",
+    "create-fulfillment-success": "Созданное выполнение",
     "customer": "Клиент",
     "edit-billing-address": "Изменить платежный адрес",
     "edit-shipping-address": "Изменить адрес доставки",
     "error-message": "Сообщение об ошибке",
     "filter-custom": "Под заказ",
-    "filter-preset-active": "Активный",
-    "filter-preset-completed": "Завершенный",
-    "filter-preset-open": "Открыть",
-    "filter-preset-shipped": "Отправленный",
+    "filter-preset-active": "Активные",
+    "filter-preset-completed": "Завершенные",
+    "filter-preset-open": "Открытые",
+    "filter-preset-shipped": "Отправленные",
     "fulfill": "Выполнить",
     "fulfill-order": "Выполнить заказ",
-    "fulfillment": "Исполнение",
+    "fulfillment": "Выполнение",
     "fulfillment-method": "Метод выполнения",
-    "history-coupon-code-applied": "Код купона применяется",
+    "history-coupon-code-applied": "Код купона применен",
     "history-coupon-code-removed": "Код купона удален",
-    "history-fulfillment-created": "Выполнение создание",
-    "history-fulfillment-delivered": "Выполнение доставки",
-    "history-fulfillment-shipped": "Выполнение отправки",
+    "history-fulfillment-created": "Выполнение создано",
+    "history-fulfillment-delivered": "Выполнение доставлено",
+    "history-fulfillment-shipped": "Выполнение отправлено",
     "history-fulfillment-transition": "Выполнение перешло с {from} в {to}",
-    "history-items-cancelled": "{count} {count, plural, one {item} other {items}} cancelled",
+    "history-items-cancelled": "{count} {count, plural, one {позиция} other {позиций}} отменено",
     "history-order-cancelled": "Заказ отменен",
     "history-order-created": "Заказ создан",
     "history-order-fulfilled": "Заказ выполнен",
@@ -620,18 +620,18 @@
     "history-payment-settled": "Оплата произведена",
     "history-payment-transition": "Платеж #{id} перенесен с {from} на {to}",
     "history-refund-transition": "Возврат #{id} перешел из {from} на {to}",
-    "item-count": "{count} {count, plural, one {item} other {items}}",
+    "item-count": "{count} {count, plural, one {позиция} other {позиций}}",
     "line-fulfillment-all": "Все позиции выполнены",
-    "line-fulfillment-none": "Нет выполненных заданий",
-    "line-fulfillment-partial": "{ count } из { total } выполненные предметы",
+    "line-fulfillment-none": "Нет выполненных позиций",
+    "line-fulfillment-partial": "{ count } из { total } выполненных позиций",
     "manually-transition-to-state": "Переход в состояние вручную...",
     "manually-transition-to-state-message": "Вручную переведите заказ в другое состояние. Обратите внимание, что состояния порядка регулируются правилами, которые могут предотвратить определенные переходы.",
-    "modification-adding-items": "Добавление {count} {count, plural, one {item} other {items}}",
-    "modification-adding-surcharges": "Добавление {count} {count, plural, one {surcharge} other {surcharges}}",
-    "modification-adjusting-lines": "Регулировка {count} {count, plural, one {line} other {lines}}",
+    "modification-adding-items": "Добавление {count} {count, plural, one {позиция} other {позиций}}",
+    "modification-adding-surcharges": "Добавление {count} {count, plural, one {доплаты} other {доплат}}",
+    "modification-adjusting-lines": "Регулировка {count} {count, plural, one {линии} other {линий}}",
     "modification-not-settled": "Не урегулирован",
     "modification-recalculate-shipping": "Пересчитать доставку",
-    "modification-settled": "Установившаяся",
+    "modification-settled": "Урегулирован",
     "modification-summary": "Сводка модификаций",
     "modification-updating-billing-address": "Обновление платежного адреса",
     "modification-updating-shipping-address": "Обновление адреса доставки",
@@ -666,7 +666,7 @@
     "refund-cancellation-reason": "Причина возврата / отмены",
     "refund-cancellation-reason-required": "Укажите причину возврата / отмены",
     "refund-metadata": "Метаданные возврата",
-    "refund-order-failed": "",
+    "refund-order-failed": "Ошибка возврата средств",
     "refund-order-success": "Заказ успешно возвращен",
     "refund-reason": "Причина возврата",
     "refund-reason-customer-request": "Запрос клиента",
@@ -674,13 +674,13 @@
     "refund-shipping": "Возврат стоимости доставки",
     "refund-total": "Общая сумма возврата",
     "refund-total-error": "Общая сумма возврата должна быть в пределах {min} и {max}",
-    "refund-total-warning": "",
+    "refund-total-warning": "Общая сумма возврата превышает выбранную сумму платежа. Оставшаяся сумма возврата будет возвращена из других платежей.",
     "refund-with-amount": "Возврат {amount}",
-    "refunded-count": "{count} {count, plural, one {item} other {items}} возвращен",
-    "removed-items": "Удаленные предметы",
+    "refunded-count": "{count} {count, plural, one {позиция} other {позиций}} возвращен",
+    "removed-items": "Удаленные позиции",
     "search-by-customer-last-name": "Поиск по фамилии клиента",
     "search-by-order-code": "Поиск по коду заказа",
-    "select-state": "Выберите штат",
+    "select-state": "Выберите состояние",
     "set-fulfillment-state": "Отметить как {state}",
     "settle-payment": "Расчет платежа",
     "settle-payment-error": "Не удалось произвести оплату",
@@ -688,31 +688,31 @@
     "settle-refund": "Возврат платежа",
     "settle-refund-manual-instructions": "После ручного возмещения через вашего платежного провайдера ({method}), введите здесь идентификатор транзакции.",
     "settle-refund-success": "Возврат успешно осуществлен",
-    "shipping": "Перевозки",
-    "shipping-address": "Адреса доставки",
+    "shipping": "Доставка",
+    "shipping-address": "Адрес доставки",
     "shipping-method": "Способ доставки",
     "state": "Состояние",
     "sub-total": "Промежуточный итог",
-    "successfully-updated-fulfillment": "Успешно обновленное исполнение",
+    "successfully-updated-fulfillment": "Успешно обновлено выполнение",
     "surcharges": "Доплаты",
     "tax-base": "База налогообложения",
     "tax-description": "Описание налога",
     "tax-rate": "Ставка налога",
     "tax-summary": "Налоговая сводка",
     "tax-total": "Итого по налогу",
-    "total": "Общее",
+    "total": "Всего",
     "tracking-code": "Код отслеживания",
     "transaction-id": "ID транзакции",
     "transition-to-state": "Переход в состояние {state}",
     "transitioned-payment-to-state-success": "Платеж успешно переведен на { state }",
     "transitioned-to-state-success": "Успешно перешел на { state }",
-    "unable-to-transition-to-state-try-another": "Заказ не может быть переведен обратно на \"{state}\" состояние. Пожалуйста, выберите альтернативое состояние.",
+    "unable-to-transition-to-state-try-another": "Заказ не может быть переведен обратно на \"{state}\" состояние. Пожалуйста, выберите альтернативное состояние.",
     "unfulfilled": "Невыполненный",
     "unit-price": "Цена за единицу"
   },
   "settings": {
     "add-countries-to-zone": "Добавить страны в { zoneName }",
-    "add-countries-to-zone-success": "Добавлен { countryCount } {countryCount, plural, one {country} other {countries}} в зону \"{ zoneName }\"",
+    "add-countries-to-zone-success": "Добавлено { countryCount } {countryCount, plural, one {страна} other {стран}} в зону \"{ zoneName }\"",
     "add-products-to-test-order": "Добавить товары в тестовый заказ",
     "channel": "Канал",
     "channel-token": "Токен канала",
@@ -725,7 +725,7 @@
     "create-new-payment-method": "Создать новый способ оплаты",
     "create-new-role": "Создать новую роль",
     "create-new-shipping-method": "Создать новый способ доставки",
-    "create-new-tax-category": "Создать налоговую категорию",
+    "create-new-tax-category": "Создать новую налоговую категорию",
     "create-new-tax-rate": "Создать новую налоговую ставку",
     "create-new-zone": "Создать новую зону",
     "create-zone": "Создать зону",
@@ -737,9 +737,9 @@
     "email-address": "Адрес электронной почты",
     "filter-by-member-name": "Фильтровать по стране",
     "first-name": "Имя",
-    "fulfillment-handler": "Обработчик исполнения",
+    "fulfillment-handler": "Обработчик выполнения",
     "global-out-of-stock-threshold": "Глобальный порог отсутствия на складе",
-    "global-out-of-stock-threshold-tooltip": "Устанавливает уровень запаса, при котором этот вариант считается отсутствующим. Использование отрицательного значения включает поддержку отложенного заказа. Может быть отменено вариантами продукта.",
+    "global-out-of-stock-threshold-tooltip": "Устанавливает уровень запаса, при котором этот вариант считается отсутствующим. Использование отрицательного значения включает поддержку отложенного заказа. Может быть отменено вариантами товара.",
     "last-name": "Фамилия",
     "no-eligible-shipping-methods": "Нет подходящих способов доставки",
     "password": "Пароль",
@@ -749,14 +749,14 @@
     "prices-include-tax": "Цены включают налог для зоны по умолчанию",
     "profile": "Профиль",
     "rate": "Показатель",
-    "remove-countries-from-zone-success": "Удаленный { countryCount } {countryCount, plural, one {country} other {countries}} из зоны \"{ zoneName }\"",
+    "remove-countries-from-zone-success": "Удалить { countryCount } {countryCount, plural, one {страна} other {стран}} из зоны \"{ zoneName }\"",
     "remove-from-zone": "Удалить из зоны",
     "roles": "Роли",
-    "search-by-product-name-or-sku": "Поиск по названию продукта или артикулу",
-    "search-country-by-name": "Искать страны по названию",
+    "search-by-product-name-or-sku": "Поиск по названию товара или артикулу",
+    "search-country-by-name": "Поиск страны по названию",
     "shipping-calculator": "Калькулятор доставки",
     "shipping-eligibility-checker": "Проверка права на доставку",
-    "shipping-method": "Cпособ доставки",
+    "shipping-method": "Способ доставки",
     "tax-category": "Налоговая категория",
     "tax-rate": "Ставка налога",
     "test-address": "Тестовый адрес",
@@ -764,31 +764,31 @@
     "test-result": "Результат теста",
     "test-shipping-method": "Тестовый способ доставки",
     "test-shipping-methods": "Методы тестовой доставки",
-    "track-inventory-default": "По умолчанию отслеживать инвентарь",
-    "update-zone": "Зона обновления",
+    "track-inventory-default": "По умолчанию отслеживать инвентаризацию",
+    "update-zone": "Обновление зоны",
     "view-zone-members": "Просмотреть участников",
     "zone": "Зона"
   },
   "state": {
-    "adding-items": "Добавление предметов",
+    "adding-items": "Добавление позиций",
     "all-orders": "Все состояния заказа",
     "arranging-additional-payment": "Организация дополнительной оплаты",
     "arranging-payment": "Организация оплаты",
-    "authorized": "Авторизованный",
+    "authorized": "Авторизовано",
     "cancelled": "Отменено",
-    "created": "Созданный",
-    "declined": "Отклоненный",
-    "delivered": "Доставленный",
+    "created": "Создано",
+    "declined": "Отклонено",
+    "delivered": "Доставлено",
     "error": "Ошибка",
-    "failed": "Неудачный",
+    "failed": "Неудачно",
     "modifying": "Изменение",
     "partially-delivered": "Частично доставлено",
     "partially-shipped": "Частично отправлено",
     "payment-authorized": "Оплата авторизована",
     "payment-settled": "Оплата произведена",
     "pending": "В ожидании",
-    "settled": "Поселился",
-    "shipped": "Отправленный"
+    "settled": "Урегулировано",
+    "shipped": "Отправлено"
   },
   "system": {
     "all-job-queues": "Все очереди заданий",
@@ -805,7 +805,7 @@
     "job-duration": "Продолжительность",
     "job-error": "Ошибка задания",
     "job-queue-name": "Имя очереди",
-    "job-result": "Результат работы",
-    "job-state": "Состояние работы"
+    "job-result": "Результат задания",
+    "job-state": "Состояние задания"
   }
-}
+}

+ 811 - 0
packages/admin-ui/src/lib/static/i18n-messages/uk.json

@@ -0,0 +1,811 @@
+{
+  "admin": {
+    "create-new-administrator": "Створити нового адміністратора"
+  },
+  "asset": {
+    "add-asset": "Додати медіа-об'єкт",
+    "add-asset-with-count": "Додати {count, plural, 0 {медіа-об'єктів} one {1 медіа-об'єкт} other {{count} медіа-об'єктів}}",
+    "assets-selected-count": "Вибрано { count } медіа-об'єктів",
+    "dimensions": "Розміри",
+    "focal-point": "Точка фокусу",
+    "notify-create-assets-success": "Створено {count, plural, one {новий медіа-об'єкт} other {{count} нових медіа-об'єктів}}",
+    "original-asset-size": "Размер медіа-об'єкта",
+    "preview": "Попередній перегляд",
+    "remove-asset": "Видалити медіа-об'єкт",
+    "select-asset": "Вибрати медіа-об'єкт",
+    "select-assets": "Вибрати медіа-об'єкты",
+    "set-as-featured-asset": "Встановити як обраний медіа-об'єкт",
+    "set-focal-point": "Встановити точку фокусу",
+    "source-file": "Початковий файл",
+    "unset-focal-point": "Видалити точку фокусу",
+    "update-focal-point": "Оновити точку фокусу",
+    "update-focal-point-error": "Не вдалося оновити координати точки фокусу",
+    "update-focal-point-success": "Точка фокусу була успішно оновлена",
+    "upload-assets": "Завантажити медіа-об'єкти",
+    "uploading": "Завантаження..."
+  },
+  "breadcrumb": {
+    "administrators": "Адміністратори",
+    "assets": "Медіа-об'єкти",
+    "channels": "Канали",
+    "collections": "Колекції",
+    "countries": "Країни",
+    "customer-groups": "Групи клієнтів",
+    "customers": "Клієнти",
+    "dashboard": "Дашборд",
+    "facets": "Грані",
+    "global-settings": "Глобальні налаштування",
+    "job-queue": "Черга завдань",
+    "manage-variants": "Управління варіантами",
+    "modifying": "Зміна",
+    "orders": "Замовлення",
+    "payment-methods": "Платіжні методи",
+    "products": "Товари",
+    "profile": "Профіль",
+    "promotions": "Акції",
+    "roles": "Ролі",
+    "shipping-methods": "Методи доставки",
+    "system-status": "Стан системи",
+    "tax-categories": "Категорії податків",
+    "tax-rates": "Податкові ставки",
+    "zones": "Зони"
+  },
+  "catalog": {
+    "add-facet-value": "Додати значення грані",
+    "add-facets": "Додати грань",
+    "add-option": "Додати опцію",
+    "assign-product-to-channel-success": "Товар успішно доданий в канал \"{ channel }\"",
+    "assign-products-to-channel": "Додати товари в канал",
+    "assign-to-channel": "Додати в канал",
+    "assign-to-named-channel": "Додати для { channelCode }",
+    "assign-variant-to-channel-success": "Варіант товару успішно доданий в канал \"{ channel }\"",
+    "assign-variants-to-channel": "Додати варіанти товару в канал",
+    "auto-update-option-variant-name": "Автоматично оновлювати назви варіантів товару, використовуючи цю опцію",
+    "auto-update-product-variant-name": "Автоматично оновлювати назви варіантів товару",
+    "channel-price-preview": "Попередній перегляд цін каналу",
+    "collection-contents": "Зміст колекції",
+    "confirm-adding-options-delete-default-body": "Додавання опцій до цього товару приведе до видалення існуючого варіанта товару за замовчуванням. Ви хочете продовжити?",
+    "confirm-adding-options-delete-default-title": "Варіант товару",
+    "confirm-delete-administrator": "Видалити адміністратора?",
+    "confirm-delete-assets": "Видалити {count} {count, plural, one {медіа-об'єкт} other {медіа-об'єктів}}?",
+    "confirm-delete-channel": "Видалити канал?",
+    "confirm-delete-collection": "Видалити колекцію?",
+    "confirm-delete-collection-and-children-body": "Видалення цієї колекції також призведе до видалення всіх дочірніх колекцій.",
+    "confirm-delete-country": "Видалити країну?",
+    "confirm-delete-customer": "Видалити клієнта?",
+    "confirm-delete-facet": "Видалити грань?",
+    "confirm-delete-facet-value": "Видалити значення грані?",
+    "confirm-delete-product": "Видалити товар?",
+    "confirm-delete-product-variant": "Видалити варіант товару?",
+    "confirm-delete-promotion": "Видалити промо-акцію?",
+    "confirm-delete-shipping-method": "Видалити метод доставки?",
+    "confirm-delete-zone": "Видалити зону?",
+    "create-new-collection": "Створити нову колекцію",
+    "create-new-facet": "Створити нову грань",
+    "create-new-product": "Створити новий товар",
+    "created-new-variants-success": "Успішно створено {count} новий {count, plural, one {варіант} other {варіантів}}",
+    "default-variant": "Варіант товару за замовчуванням",
+    "delete-default-variant": "Видалити варіант товару за замовчуванням",
+    "display-variant-cards": "Перегляд карток варіантів",
+    "display-variant-table": "Перегляд у вигляді таблиці",
+    "drop-files-to-upload": "Перетягніть файли для завантаження",
+    "expand-all-collections": "Розгорнути всі колекції",
+    "facet-values": "Значення грані",
+    "filter-by-name": "Фільтр по імені",
+    "filter-by-name-or-sku": "Фільтр по імені або артикулу (SKU)",
+    "filters": "Фільтри",
+    "group-by-product": "Групувати по продукту",
+    "manage-variants": "Управління варіантами",
+    "move-down": "Рухати вниз",
+    "move-to": "Рухати до",
+    "move-up": "Рухати вгору",
+    "no-channel-selected": "Канал не вибрано",
+    "no-featured-asset": "Немає обраного медіа-об'єкта",
+    "no-selection": "Не вибрано",
+    "notify-remove-product-from-channel-error": "Не вдалося видалити товар з каналу",
+    "notify-remove-product-from-channel-success": "Товар успішно видалений з каналу",
+    "notify-remove-variant-from-channel-error": "Не вдалося видалити варіант товару з каналу",
+    "notify-remove-variant-from-channel-success": "Варіант товару успішно видалений з каналу",
+    "option": "Опції",
+    "option-name": "Ім'я опції",
+    "option-values": "Значення опції",
+    "out-of-stock-threshold": "Поріг «немає в наявності»",
+    "out-of-stock-threshold-tooltip": "Встановіть поріг залишків на складі, після якого буде вважатися, що варіанту товару немає в наявності. При використанні від'ємного значення порога, включається підтримка попереднього замовлення.",
+    "price": "Ціна",
+    "price-conversion-factor": "Коефіцієнт перерахунку ціни",
+    "price-in-channel": "Ціна в { channel }",
+    "price-includes-tax-at": "Включає податок в { rate }%",
+    "price-with-tax-in-default-zone": "Вкл. { rate }% податок: { price }",
+    "private": "Приватний",
+    "product-details": "Інформація про товар",
+    "product-name": "Ім'я товару",
+    "product-variants": "Варіант товару",
+    "public": "Публічний",
+    "rebuild-search-index": "Перебудувати пошуковий індекс",
+    "reindex-error": "Помилка при перебудові індексу пошуку",
+    "reindex-successful": "Проіндексовано {count, plural, one {варіант товару} other {{count} варіантів товару}} за {time}мс",
+    "reindexing": "Перебудова пошукового індексу",
+    "remove-from-channel": "Видалити з каналу",
+    "remove-option": "Видалити опції",
+    "remove-product-from-channel": "Видалити товар з каналу",
+    "remove-product-variant-from-channel": "Видалити варіант товару з каналу",
+    "search-asset-name-or-tag": "Пошук за назвою медіа-об'єкта або тегами",
+    "search-for-term": "Шукати по фразі",
+    "search-product-name-or-code": "Пошук за назвою товару або кодом",
+    "select-product": "Вибрати товар",
+    "select-product-variant": "Виберіть варіант товару",
+    "sku": "Артикул",
+    "slug": "Код",
+    "slug-pattern-error": "Код заданий некоректно",
+    "stock-allocated": "Зарезервовано",
+    "stock-allocated-tooltip": "Кількість одиниць, зарезервованих для замовлень, які були розміщені, але ще не виконані.",
+    "stock-on-hand": "На складі",
+    "stock-on-hand-tooltip": "Кількість на складі - кількість фізичних одиниць, наявних на складі.",
+    "stock-saleable": "Доступно для продажу",
+    "stock-saleable-tooltip": "Кількість одиниць, доступних для продажу з урахуванням порогового значення відсутності на складі",
+    "tax-category": "Податкова категорія",
+    "taxes": "Податки",
+    "track-inventory": "Відстежувати інвентаризацію",
+    "track-inventory-false": "Не відстежувати",
+    "track-inventory-inherit": "Наслідувати від глобальних налаштувань",
+    "track-inventory-tooltip": "При відстеженні, рівні запасу варіантів товару будуть автоматично коригуватися при продажу.",
+    "track-inventory-true": "Відстежувати",
+    "update-product-option": "Оновити варіант товару",
+    "use-global-value": "Використовувати глобальне значення",
+    "values": "Значення",
+    "variant": "Варіант",
+    "view-contents": "Перегляд вмісту",
+    "visibility": "Видимість"
+  },
+  "common": {
+    "ID": "ID",
+    "actions": "Дії",
+    "add-item-to-list": "Додати позицію в список",
+    "add-new-variants": "Додати {count, plural, one {1 варіант} other {{count} варіантів}}",
+    "add-note": "Додати замітку",
+    "available-languages": "Доступні мови",
+    "cancel": "Скасування",
+    "cancel-navigation": "Скасувати навігацію",
+    "change-selection": "Змінити вибір",
+    "channel": "Канал",
+    "channels": "Канали",
+    "code": "Код",
+    "collapse-entries": "Згорнути записи",
+    "confirm": "Підтверджувати",
+    "confirm-delete-note": "Видалити замітку?",
+    "confirm-navigation": "Підтвердіть навігацію",
+    "create": "Створити",
+    "created-at": "Створено в",
+    "custom-fields": "Настроювані поля",
+    "default-channel": "Канал за замовчуванням",
+    "default-language": "Мова за замовчуванням",
+    "default-tax-category": "Категорія податку за замовчуванням",
+    "delete": "Видалити",
+    "description": "Опис",
+    "details": "Подробиці",
+    "disabled": "Виключений",
+    "discard-changes": "Скасувати зміни",
+    "edit": "Редагувати",
+    "edit-field": "Редагувати поле",
+    "edit-note": "Редагувати замітку",
+    "enabled": "Включений",
+    "expand-entries": "Розгорнути записи",
+    "extension-running-in-separate-window": "Розширення працює в окремому вікні",
+    "filter": "Фільтр",
+    "guest": "Гість",
+    "items-per-page-option": "Кількість на сторінці",
+    "language": "Мова",
+    "launch-extension": "Запуск розширення",
+    "live-update": "Оновлення в режимі реального часу",
+    "log-out": "Вийти",
+    "login": "Увійти",
+    "manage-tags": "Керування тегами",
+    "manage-tags-description": "Оновлення або видалення тегів глобально.",
+    "more": "Більше...",
+    "name": "Ім'я",
+    "no-results": "Немає результатів",
+    "not-set": "Не задано",
+    "notify-create-error": "Помилка, не вдалося створити { entity }",
+    "notify-create-success": "Створено нове { entity }",
+    "notify-delete-error": "Помилка, не вдалося видалити { entity }",
+    "notify-delete-success": "Видалено { entity }",
+    "notify-save-changes-error": "Сталася помилка, не вдалося зберегти зміни",
+    "notify-saved-changes": "Збережені зміни",
+    "notify-update-error": "Сталася помилка, не вдалося оновити { entity }",
+    "notify-update-success": "Оновлено { entity }",
+    "notify-updated-tags-success": "Успішно оновлені теги",
+    "open": "Відкрити",
+    "password": "Пароль",
+    "price": "Ціна",
+    "price-with-tax": "Ціна з податком",
+    "private": "Приватний",
+    "public": "Публічний",
+    "remember-me": "Запам'ятати мене",
+    "remove": "Видалити",
+    "remove-item-from-list": "Видалити позицію зі списку",
+    "results-count": "{ count } {count, plural, one {результат} other {результатів}}",
+    "select": "Вибрати...",
+    "select-display-language": "Виберіть мову відображення",
+    "select-today": "Виберіть сьогодні",
+    "tags": "Теги",
+    "theme": "Тема",
+    "there-are-unsaved-changes": "Є незбережені зміни. Якщо ви вийдете, ці зміни будуть втрачені.",
+    "toggle-all": "Переключити все",
+    "update": "Оновити",
+    "updated-at": "Оновлено в",
+    "username": "Ім'я користувача",
+    "view-next-month": "Переглянути наступний місяць",
+    "view-previous-month": "Переглянути попередній місяць",
+    "with-selected": "З вибраним..."
+  },
+  "customer": {
+    "add-customer-to-group": "Додати клієнта в групу",
+    "add-customer-to-groups-with-count": "Додати клієнта в {count, plural, one {1 групу} other {{count} груп}}",
+    "add-customers-to-group": "Додати клієнтів в групу",
+    "add-customers-to-group-success": "Додано {customerCount, plural, one {1 клієнт} other {{customerCount} клієнтів}} в \"{ groupName }\"",
+    "add-customers-to-group-with-count": "Додати {count, plural, one {1 клієнта} other {{count} клієнтів}}",
+    "add-customers-to-group-with-name": "Додати клієнтів в \"{ groupName }\"",
+    "addresses": "Адреси",
+    "city": "Місто",
+    "confirm-delete-customer-group": "Видалити групу клієнтів?",
+    "confirm-remove-customer-from-group": "Видалити клієнта з групи?",
+    "country": "Країна",
+    "create-customer-group": "Створити групу клієнтів",
+    "create-new-address": "Створити нову адресу",
+    "create-new-customer": "Створити нового клієнта",
+    "create-new-customer-group": "Створити нову групу клієнтів",
+    "customer-groups": "Групи клієнтів",
+    "customer-history": "Історія зміни клієнтів",
+    "customer-type": "Тип клієнта",
+    "default-billing-address": "Білінг за замовчуванням",
+    "default-shipping-address": "Доставка за замовчуванням",
+    "email-address": "Адреса електронної пошти",
+    "email-verification-sent": "Лист-підтвердження було відправлено { emailAddress }",
+    "first-name": "Ім'я",
+    "full-name": "ПІБ",
+    "guest": "Гість",
+    "history-customer-added-to-group": "Клієнт доданий до групи \"{ groupName }\"",
+    "history-customer-address-created": "Адреса створена",
+    "history-customer-address-deleted": "Адреса видалена",
+    "history-customer-address-updated": "Адреса оновлена",
+    "history-customer-detail-updated": "Дані про клієнта оновлені",
+    "history-customer-email-update-requested": "Запитано оновлення адреси електронної пошти",
+    "history-customer-email-update-verified": "Підтверджено оновлення адреси електронної пошти",
+    "history-customer-password-reset-requested": "Запитано скидання пароля",
+    "history-customer-password-reset-verified": "Підтверджено скидання пароля",
+    "history-customer-password-updated": "Пароль оновлено",
+    "history-customer-registered": "Замовник зареєстрований",
+    "history-customer-removed-from-group": "Клієнт видалений з групи \"{ groupName }\"",
+    "history-customer-verified": "Клієнт підтверджений",
+    "history-using-external-auth-strategy": "використання { strategy }",
+    "history-using-native-auth-strategy": "використовуючи адресу електронної пошти",
+    "last-login": "Останній вхід",
+    "last-name": "Прізвище",
+    "name": "Ім'я",
+    "new-email-address": "Нова адреса електронної пошти",
+    "no-orders-placed": "Замовлення не розміщені",
+    "not-a-member-of-any-groups": "Цей клієнт не перебуває в жодній групі",
+    "old-email-address": "Стара адреса електронної пошти",
+    "orders": "Замовлення",
+    "password": "Пароль",
+    "phone-number": "Телефонний номер",
+    "postal-code": "Поштовий індекс",
+    "province": "Регіон",
+    "registered": "Зареєстровано",
+    "remove-customers-from-group-success": "Видалено {customerCount, plural, one {1 клієнт} other {{customerCount} клієнтів}} из \"{ groupName }\"",
+    "remove-from-group": "Вилучити з цієї групи",
+    "search-customers-by-email": "Пошук за адресою електронної пошти",
+    "search-customers-by-last-name": "Пошук за прізвищем",
+    "select-customer": "Виберіть клієнта",
+    "set-as-default-billing-address": "Встановити як білінг за замовчуванням",
+    "set-as-default-shipping-address": "Встановити як доставку за замовчуванням",
+    "street-line-1": "Вулиця, рядок 1",
+    "street-line-2": "Вулиця, рядок 2",
+    "title": "Заголовок",
+    "update-customer-group": "Оновити групу клієнтів",
+    "verified": "Перевірено",
+    "view-group-members": "Переглянути учасників групи"
+  },
+  "dashboard": {
+    "add-widget": "Додати віджет",
+    "latest-orders": "Останні замовлення",
+    "orders-summary": "Зведення замовлень",
+    "remove-widget": "Видалити віджет",
+    "thisMonth": "Цей місяць",
+    "thisWeek": "На этой неделе",
+    "today": "Сьогодні",
+    "total-order-value": "Загальна вартість",
+    "total-orders": "Всього замовлень",
+    "widget-resize": "Змінити розмір",
+    "widget-width": "Ширина: {width}",
+    "yesterday": "Вчора"
+  },
+  "datetime": {
+    "ago-days": "{count, plural, one {1 день} other {{count} днів}} тому",
+    "ago-hours": "{count, plural, one {1 годину} other {{count} годин}} тому",
+    "ago-minutes": "{count, plural, one {1 хвилину} other {{count} хвилин}} тому",
+    "ago-seconds": "{count, plural, =0 {прямо зараз} one {1 секунду тому} other {{count} секунд тому}}",
+    "ago-years": "{count, plural, one {1 рік} other {{count} років}} тому",
+    "duration-milliseconds": "{ms}мс",
+    "duration-minutes:seconds": "{m}:{s}х",
+    "duration-seconds": "{s}с",
+    "month-apr": "Квітень",
+    "month-aug": "Серпень",
+    "month-dec": "Грудень",
+    "month-feb": "Лютий",
+    "month-jan": "Січень",
+    "month-jul": "Липень",
+    "month-jun": "Червень",
+    "month-mar": "Березень",
+    "month-may": "Травень",
+    "month-nov": "Листопад",
+    "month-oct": "Жовтень",
+    "month-sep": "Вересень",
+    "time": "Час",
+    "weekday-fr": "Пт",
+    "weekday-mo": "Пн",
+    "weekday-sa": "Сб",
+    "weekday-su": "Нд",
+    "weekday-th": "Чт",
+    "weekday-tu": "Вт",
+    "weekday-we": "Ср"
+  },
+  "editor": {
+    "image-alt": "Опис (alt)",
+    "image-src": "Джерело",
+    "image-title": "Заголовок",
+    "insert-image": "Вставити зображення",
+    "link-href": "Посилання",
+    "link-title": "Заголовок посилання",
+    "remove-link": "Удалить",
+    "set-link": "Встановити посилання"
+  },
+  "error": {
+    "403-forbidden": "В даний час у вас немає прав доступу \"{ path }\". Або у вас немає дозволів на перегляд, або термін вашого сеансу минув.",
+    "could-not-connect-to-server": "Не вдалося підключитися до сервера Vendure на { url }",
+    "facet-value-form-values-do-not-match": "Кількість значень у формі гранів не відповідає фактичній кількості значень.",
+    "health-check-failed": "Помилка перевірки працездатності системи",
+    "no-default-shipping-zone-set": "На цьому каналі немає зони доставки за замовчуванням. Це може викликати помилки при розрахунку вартості доставки замовлення.",
+    "no-default-tax-zone-set": "У цьому каналі немає податкової зони за замовчуванням, що призведе до помилок при розрахунку цін. Будь ласка, створіть або виберіть зону.",
+    "product-variant-form-values-do-not-match": "Кількість варіантів у формі товару не відповідає фактичній кількості варіантів"
+  },
+  "lang": {
+    "af": "Afrikaans",
+    "ak": "Akan",
+    "am": "Amharic",
+    "ar": "Arabic",
+    "as": "Assamese",
+    "az": "Azerbaijani",
+    "be": "Belarusian",
+    "bg": "Bulgarian",
+    "bm": "Bambara",
+    "bn": "Bangla",
+    "bo": "Tibetan",
+    "br": "Breton",
+    "bs": "Bosnian",
+    "ca": "Catalan",
+    "ce": "Chechen",
+    "co": "Corsican",
+    "cs": "Czech",
+    "cu": "Church Slavic",
+    "cy": "Welsh",
+    "da": "Danish",
+    "de": "German",
+    "de_AT": "Austrian German",
+    "de_CH": "Swiss High German",
+    "dz": "Dzongkha",
+    "ee": "Ewe",
+    "el": "Greek",
+    "en": "English",
+    "en_AU": "Australian English",
+    "en_CA": "Canadian English",
+    "en_GB": "British English",
+    "en_US": "American English",
+    "eo": "Esperanto",
+    "es": "Spanish",
+    "es_ES": "European Spanish",
+    "es_MX": "Mexican Spanish",
+    "et": "Estonian",
+    "eu": "Basque",
+    "fa": "Persian",
+    "fa_AF": "Dari",
+    "ff": "Fulah",
+    "fi": "Finnish",
+    "fo": "Faroese",
+    "fr": "French",
+    "fr_CA": "Canadian French",
+    "fr_CH": "Swiss French",
+    "fy": "Western Frisian",
+    "ga": "Irish",
+    "gd": "Scottish Gaelic",
+    "gl": "Galician",
+    "gu": "Gujarati",
+    "gv": "Manx",
+    "ha": "Hausa",
+    "he": "Hebrew",
+    "hi": "Hindi",
+    "hr": "Croatian",
+    "ht": "Haitian Creole",
+    "hu": "Hungarian",
+    "hy": "Armenian",
+    "ia": "Interlingua",
+    "id": "Indonesian",
+    "ig": "Igbo",
+    "ii": "Sichuan Yi",
+    "is": "Icelandic",
+    "it": "Italian",
+    "ja": "Japanese",
+    "jv": "Javanese",
+    "ka": "Georgian",
+    "ki": "Kikuyu",
+    "kk": "Kazakh",
+    "kl": "Kalaallisut",
+    "km": "Khmer",
+    "kn": "Kannada",
+    "ko": "Korean",
+    "ks": "Kashmiri",
+    "ku": "Kurdish",
+    "kw": "Cornish",
+    "ky": "Kyrgyz",
+    "la": "Latin",
+    "lb": "Luxembourgish",
+    "lg": "Ganda",
+    "ln": "Lingala",
+    "lo": "Lao",
+    "lt": "Lithuanian",
+    "lu": "Luba-Katanga",
+    "lv": "Latvian",
+    "mg": "Malagasy",
+    "mi": "Maori",
+    "mk": "Macedonian",
+    "ml": "Malayalam",
+    "mn": "Mongolian",
+    "mr": "Marathi",
+    "ms": "Malay",
+    "mt": "Maltese",
+    "my": "Burmese",
+    "nb": "Norwegian Bokmål",
+    "nd": "North Ndebele",
+    "ne": "Nepali",
+    "nl": "Dutch",
+    "nl_BE": "Flemish",
+    "nn": "Norwegian Nynorsk",
+    "ny": "Nyanja",
+    "om": "Oromo",
+    "or": "Odia",
+    "os": "Ossetic",
+    "pa": "Punjabi",
+    "pl": "Polish",
+    "ps": "Pashto",
+    "pt": "Portuguese",
+    "pt_BR": "Brazilian Portuguese",
+    "pt_PT": "European Portuguese",
+    "qu": "Quechua",
+    "rm": "Romansh",
+    "rn": "Rundi",
+    "ro": "Romanian",
+    "ro_MD": "Moldavian",
+    "ru": "Русский",
+    "rw": "Kinyarwanda",
+    "sa": "Sanskrit",
+    "sd": "Sindhi",
+    "se": "Northern Sami",
+    "sg": "Sango",
+    "si": "Sinhala",
+    "sk": "Slovak",
+    "sl": "Slovenian",
+    "sm": "Samoan",
+    "sn": "Shona",
+    "so": "Somali",
+    "sq": "Albanian",
+    "sr": "Serbian",
+    "st": "Southern Sotho",
+    "su": "Sundanese",
+    "sv": "Swedish",
+    "sw": "Swahili",
+    "sw_CD": "Congo Swahili",
+    "ta": "Tamil",
+    "te": "Telugu",
+    "tg": "Tajik",
+    "th": "Thai",
+    "ti": "Tigrinya",
+    "tk": "Turkmen",
+    "to": "Tongan",
+    "tr": "Turkish",
+    "tt": "Tatar",
+    "ug": "Uyghur",
+    "uk": "Українська",
+    "ur": "Urdu",
+    "uz": "Uzbek",
+    "vi": "Vietnamese",
+    "vo": "Volapük",
+    "wo": "Wolof",
+    "xh": "Xhosa",
+    "yi": "Yiddish",
+    "yo": "Yoruba",
+    "zh": "Chinese",
+    "zh_Hans": "Simplified Chinese",
+    "zh_Hant": "Traditional Chinese",
+    "zu": "Zulu"
+  },
+  "marketing": {
+    "actions": "Дії",
+    "add-action": "Додати дію",
+    "add-condition": "Додати умову",
+    "conditions": "Умови",
+    "coupon-code": "Код купона",
+    "create-new-promotion": "Створити нову акцію",
+    "ends-at": "Закінчується в",
+    "per-customer-limit": "Ліміт на клієнта",
+    "starts-at": "Починається в"
+  },
+  "nav": {
+    "administrators": "Адміністратори",
+    "assets": "Ресурси",
+    "catalog": "Каталог",
+    "channels": "Канали",
+    "collections": "Колекції",
+    "countries": "Країни",
+    "customer-groups": "Групи клієнтів",
+    "customers": "Клієнти",
+    "facets": "Грані",
+    "global-settings": "Глобальні налаштування",
+    "job-queue": "Черга завдань",
+    "marketing": "Маркетинг",
+    "orders": "Замовлення",
+    "payment-methods": "Способи оплати",
+    "products": "Товари",
+    "promotions": "Промо-акції",
+    "roles": "Ролі",
+    "sales": "Продажі",
+    "settings": "Налаштування",
+    "shipping-methods": "Методи доставки",
+    "system": "Система",
+    "system-status": "Стан системи",
+    "tax-categories": "Категорії податків",
+    "tax-rates": "Податкові ставки",
+    "zones": "Зони"
+  },
+  "order": {
+    "add-item-to-order": "Додати позицію в замовлення",
+    "add-note": "Додати замітку",
+    "add-payment": "Додати платіж",
+    "add-payment-to-order": "Додати оплату в замовлення",
+    "add-payment-to-order-success": "Платіж успішно додано в замовлення",
+    "add-surcharge": "Додати доплату",
+    "added-items": "Додані позиції",
+    "amount": "Кількість",
+    "apply-filters": "Застосувати фільтри",
+    "arrange-additional-payment": "Організуйте доплату",
+    "billing-address": "Платіжна адреса",
+    "cancel": "Скасування",
+    "cancel-fulfillment": "Скасувати виконання",
+    "cancel-modification": "Скасувати зміну",
+    "cancel-order": "Скасувати замовлення",
+    "cancel-payment": "Скасувати платіж",
+    "cancel-reason-customer-request": "Запит клієнта",
+    "cancel-reason-not-available": "Недоступний",
+    "cancel-selected-items": "Скасувати вибрані позиції",
+    "cancellation-reason": "Причина скасування",
+    "cancelled-order-success": "Успішно скасоване замовлення",
+    "confirm-modifications": "Підтвердіть зміни",
+    "contents": "Вміст",
+    "create-fulfillment": "Створити виконання",
+    "create-fulfillment-success": "Створене виконання",
+    "customer": "Клієнт",
+    "edit-billing-address": "Змінити платіжну адресу",
+    "edit-shipping-address": "Змінити адресу доставки",
+    "error-message": "Повідомлення про помилку",
+    "filter-custom": "Під замовлення",
+    "filter-preset-active": "Активні",
+    "filter-preset-completed": "Завершені",
+    "filter-preset-open": "Відкриті",
+    "filter-preset-shipped": "Відправлені",
+    "fulfill": "Виконати",
+    "fulfill-order": "Виконати замовлення",
+    "fulfillment": "Виконання",
+    "fulfillment-method": "Метод виконання",
+    "history-coupon-code-applied": "Код купона застосований",
+    "history-coupon-code-removed": "Код купона видалений",
+    "history-fulfillment-created": "Виконання створено",
+    "history-fulfillment-delivered": "Виконання доставлено",
+    "history-fulfillment-shipped": "Виконання відправлено",
+    "history-fulfillment-transition": "Виконання перейшло з {from} в {to}",
+    "history-items-cancelled": "{count} {count, plural, one {позиція} other {позицій}} скасовано",
+    "history-order-cancelled": "Замовлення скасовано",
+    "history-order-created": "Замовлення створено",
+    "history-order-fulfilled": "Замовлення виконано",
+    "history-order-modified": "Замовлення змінено",
+    "history-order-transition": "Замовлення перейшло з {from} в {to}",
+    "history-payment-settled": "Оплата проведена",
+    "history-payment-transition": "Платіж #{id} перенесений з {from} на {to}",
+    "history-refund-transition": "Повернення #{id} перейшло з {from} на {to}",
+    "item-count": "{count} {count, plural, one {позиція} other {позицій}}",
+    "line-fulfillment-all": "Всі позиції виконані",
+    "line-fulfillment-none": "Немає виконаних позицій",
+    "line-fulfillment-partial": "{ count } з { total } виконаних позицій",
+    "manually-transition-to-state": "Перехід до стану вручну...",
+    "manually-transition-to-state-message": "Вручну переведіть замовлення в інший стан. Зверніть увагу, що стани порядку регулюються правилами, які можуть запобігти певним переходам.",
+    "modification-adding-items": "Додання {count} {count, plural, one {позиція} other {позицій}}",
+    "modification-adding-surcharges": "Додання {count} {count, plural, one {доплати} other {доплат}}",
+    "modification-adjusting-lines": "Регулювання {count} {count, plural, one {лінії} other {ліній}}",
+    "modification-not-settled": "Не врегульовано",
+    "modification-recalculate-shipping": "Пересчитать доставку",
+    "modification-settled": "Врегульовано",
+    "modification-summary": "Зведення модифікацій",
+    "modification-updating-billing-address": "Оновлення платіжної адреси",
+    "modification-updating-shipping-address": "Оновлення адреси доставки",
+    "modifications": "Модифікації",
+    "modify-order": "Змінити порядок",
+    "modify-order-price-difference": "Різниця в ціні",
+    "net-price": "Ціна нетто",
+    "note": "Примітка",
+    "note-is-private": "Примітка є приватною",
+    "note-only-visible-to-administrators": "Доступно тільки адміністраторам",
+    "note-visible-to-customer": "Доступно адміністраторам і клієнтам",
+    "order-history": "Історія замовлень",
+    "order-state-diagram": "Діаграма стану замовлення",
+    "payment": "Оплата",
+    "payment-amount": "Сума до оплати",
+    "payment-metadata": "Метадані платежу",
+    "payment-method": "Спосіб оплати",
+    "payment-state": "Стан",
+    "payment-to-refund": "Платіж до повернення",
+    "placed-at": "Розміщено в",
+    "placed-at-end": "Розміщено в - до",
+    "placed-at-start": "Розміщено в - від",
+    "preview-changes": "Попередній перегляд змін",
+    "product-name": "Найменування товару",
+    "product-sku": "SKU",
+    "promotions-applied": "Застосовані промо-акції",
+    "prorated-unit-price": "Пропорційна ціна за одиницю",
+    "quantity": "Кількість",
+    "refund": "Повернення",
+    "refund-adjustment": "Коригування",
+    "refund-and-cancel-order": "Повернення та скасування замовлення",
+    "refund-cancellation-reason": "Причина повернення / скасування",
+    "refund-cancellation-reason-required": "Вкажіть причину повернення / скасування",
+    "refund-metadata": "Метадані повернення",
+    "refund-order-failed": "Помилка повернення коштів",
+    "refund-order-success": "Замовлення успішно повернено",
+    "refund-reason": "Причина повернення",
+    "refund-reason-customer-request": "Запит клієнта",
+    "refund-reason-not-available": "Недоступний",
+    "refund-shipping": "Повернення вартості доставки",
+    "refund-total": "Загальна сума повернення",
+    "refund-total-error": "Загальна сума повернення повинна бути в межах {min} і {max}",
+    "refund-total-warning": "Загальна сума повернення перевищує обрану суму платежу. Решта суми повернення буде повернута з інших платежів.",
+    "refund-with-amount": "Повернення {amount}",
+    "refunded-count": "{count} {count, plural, one {позиція} other {позицій}} повернено",
+    "removed-items": "Видалені позиції",
+    "search-by-customer-last-name": "Пошук за прізвищем клієнта",
+    "search-by-order-code": "Пошук по коду замовлення",
+    "select-state": "Виберіть стан",
+    "set-fulfillment-state": "Помітити як {state}",
+    "settle-payment": "Розрахунок платежу",
+    "settle-payment-error": "Не вдалося здійснити оплату",
+    "settle-payment-success": "Успішно здійснений платіж",
+    "settle-refund": "Повернення платежу",
+    "settle-refund-manual-instructions": "Після ручного відшкодування через вашого платіжного провайдера ({method}), введіть тут ідентифікатор транзакції.",
+    "settle-refund-success": "Повернення успішно здійснено",
+    "shipping": "Доставка",
+    "shipping-address": "Адреса доставки",
+    "shipping-method": "Спосіб доставки",
+    "state": "Стан",
+    "sub-total": "Проміжний підсумок",
+    "successfully-updated-fulfillment": "Успішно оновлено виконання",
+    "surcharges": "Доплати",
+    "tax-base": "База оподаткування",
+    "tax-description": "Опис податку",
+    "tax-rate": "Ставка податку",
+    "tax-summary": "Податкове зведення",
+    "tax-total": "Разом з податку",
+    "total": "Загалом",
+    "tracking-code": "Код відстеження",
+    "transaction-id": "ID транзакції",
+    "transition-to-state": "Перехід в стан {state}",
+    "transitioned-payment-to-state-success": "Платіж успішно переведений на { state }",
+    "transitioned-to-state-success": "Успішно переведений на { state }",
+    "unable-to-transition-to-state-try-another": "Замовлення не може бути переведено зворотно на \"{state}\" стан. Будь ласка, виберіть альтернативний стан.",
+    "unfulfilled": "Невиконано",
+    "unit-price": "Ціна за одиницю"
+  },
+  "settings": {
+    "add-countries-to-zone": "Додати країни в { zoneName }",
+    "add-countries-to-zone-success": "Додано { countryCount } {countryCount, plural, one {країна} other {країн}} в зону \"{ zoneName }\"",
+    "add-products-to-test-order": "Додати товари до тестового замовлення",
+    "channel": "Канал",
+    "channel-token": "Токен каналу",
+    "confirm-delete-payment-method": "Видалити спосіб оплати?",
+    "confirm-delete-role": "Видалити роль?",
+    "confirm-delete-tax-category": "Видалити податкову категорію?",
+    "confirm-delete-tax-rate": "Видалити податкову ставку?",
+    "create-new-channel": "Створити новий канал",
+    "create-new-country": "Створити нову країну",
+    "create-new-payment-method": "Створити новий спосіб оплати",
+    "create-new-role": "Створити нову роль",
+    "create-new-shipping-method": "Створити новий спосіб доставки",
+    "create-new-tax-category": "Створити нову податкову категорію",
+    "create-new-tax-rate": "Створити нову податкову ставку",
+    "create-new-zone": "Створити нову зону",
+    "create-zone": "Створити зону",
+    "currency": "Валюта",
+    "default-role-label": "Це роль за замовчуванням, яку не можна змінити.",
+    "default-shipping-zone": "Зона доставки за замовчуванням",
+    "default-tax-zone": "Податкова зона за замовчуванням",
+    "eligible": "Який має право",
+    "email-address": "Адреса електронної пошти",
+    "filter-by-member-name": "Фільтрувати по країні",
+    "first-name": "Ім'я",
+    "fulfillment-handler": "Обробник виконання",
+    "global-out-of-stock-threshold": "Глобальний поріг відсутності на складі",
+    "global-out-of-stock-threshold-tooltip": "Встановлює рівень запасу, при якому цей варіант вважається відсутнім. Використання від'ємного значення включає підтримку відкладеного замовлення. Може бути скасовано варіантами товару.",
+    "last-name": "Прізвище",
+    "no-eligible-shipping-methods": "Немає відповідних способів доставки",
+    "password": "Пароль",
+    "payment-eligibility-checker": "Перевірка прийнятності платежу",
+    "payment-handler": "Обробник платежів",
+    "permissions": "Дозволи",
+    "prices-include-tax": "Ціни включають податок для зони за замовчуванням",
+    "profile": "Профіль",
+    "rate": "Показник",
+    "remove-countries-from-zone-success": "Видалити { countryCount } {countryCount, plural, one {країна} other {країн}} із зони \"{ zoneName }\"",
+    "remove-from-zone": "Видалити із зони",
+    "roles": "Ролі",
+    "search-by-product-name-or-sku": "Пошук за назвою товару або артикулу",
+    "search-country-by-name": "Пошук країни за назвою",
+    "shipping-calculator": "Калькулятор доставки",
+    "shipping-eligibility-checker": "Перевірка права на доставку",
+    "shipping-method": "Спосіб доставки",
+    "tax-category": "Податкова категорія",
+    "tax-rate": "Ставка податку",
+    "test-address": "Тестова адреса",
+    "test-order": "Тестове замовлення",
+    "test-result": "Результат тесту",
+    "test-shipping-method": "Тестовий спосіб доставки",
+    "test-shipping-methods": "Методи тестової доставки",
+    "track-inventory-default": "За замовчуванням відстежувати інвентаризацію",
+    "update-zone": "Оновлення зони",
+    "view-zone-members": "Переглянути учасників",
+    "zone": "Зона"
+  },
+  "state": {
+    "adding-items": "Додавання позицій",
+    "all-orders": "Всі стани замовлення",
+    "arranging-additional-payment": "Організація додаткової оплати",
+    "arranging-payment": "Організація оплати",
+    "authorized": "Авторизовано",
+    "cancelled": "Скасовано",
+    "created": "Створено",
+    "declined": "Відхилено",
+    "delivered": "Доставлено",
+    "error": "Помилка",
+    "failed": "Невдало",
+    "modifying": "Зміна",
+    "partially-delivered": "Частково доставлено",
+    "partially-shipped": "Частково відправлено",
+    "payment-authorized": "Оплата авторизована",
+    "payment-settled": "Оплата проведена",
+    "pending": "В очікуванні",
+    "settled": "Урегульовано",
+    "shipped": "Відправлено"
+  },
+  "system": {
+    "all-job-queues": "Всі черги завдань",
+    "health-all-systems-up": "Всі системи включені",
+    "health-error": "Помилка: одна або кілька систем не працюють!",
+    "health-last-checked": "Останній раз перевірено",
+    "health-message": "Повідомлення",
+    "health-refresh": "Оновити",
+    "health-status": "Статус",
+    "health-status-down": "Униз",
+    "health-status-up": "Угору",
+    "hide-settled-jobs": "Сховати вибране завдання",
+    "job-data": "Дані завдання",
+    "job-duration": "Тривалість",
+    "job-error": "Помилка завдання",
+    "job-queue-name": "Ім'я черги",
+    "job-result": "Результат завдання",
+    "job-state": "Стан завдання"
+  }
+}

+ 1 - 1
packages/admin-ui/src/lib/static/vendure-ui-config.json

@@ -5,7 +5,7 @@
   "tokenMethod": "bearer",
   "authTokenHeaderKey": "vendure-auth-token",
   "defaultLanguage": "en",
-  "availableLanguages": ["en", "es", "zh_Hant", "zh_Hans", "pl", "de", "pt_BR", "cs", "fr", "ru"],
+  "availableLanguages": ["en", "es", "zh_Hant", "zh_Hans", "pl", "de", "pt_BR", "cs", "fr", "ru", "uk"],
   "brand": "",
   "hideVendureBranding": false,
   "hideVersion": false