Kaynağa Gözat

feat(admin-ui): Improve naming & layout of catalog & stock locations

BREAKING CHANGE: In the Admin UI, the "stock locations" list and detail views
have been moved from the "catalog" module to the "settings" module. Also, the
menu item & breadcrumb for "inventory" has been renamed to "products".

This is an end-user breaking change rather than a code breaking change. Any UI
extensions that link to a `/catalog/inventory/...` route will still work as there
is a redirect in place to `/catalog/products/...`.
Michael Bromley 2 yıl önce
ebeveyn
işleme
8452300ac7
32 değiştirilmiş dosya ile 212 ekleme ve 160 silme
  1. 35 35
      packages/admin-ui/i18n-coverage.json
  2. 26 38
      packages/admin-ui/src/lib/catalog/src/catalog.module.ts
  3. 14 25
      packages/admin-ui/src/lib/catalog/src/catalog.routes.ts
  4. 1 1
      packages/admin-ui/src/lib/catalog/src/components/collection-contents/collection-contents.component.html
  5. 1 1
      packages/admin-ui/src/lib/catalog/src/components/product-variant-list/product-variant-list.component.html
  6. 1 1
      packages/admin-ui/src/lib/catalog/src/components/product-variant-quick-jump/product-variant-quick-jump.component.ts
  7. 0 3
      packages/admin-ui/src/lib/catalog/src/public_api.ts
  8. 10 3
      packages/admin-ui/src/lib/core/src/components/base-nav/base-nav.component.ts
  9. 0 0
      packages/admin-ui/src/lib/settings/src/components/stock-location-detail/stock-location-detail.component.html
  10. 0 0
      packages/admin-ui/src/lib/settings/src/components/stock-location-detail/stock-location-detail.component.scss
  11. 0 0
      packages/admin-ui/src/lib/settings/src/components/stock-location-detail/stock-location-detail.component.ts
  12. 0 0
      packages/admin-ui/src/lib/settings/src/components/stock-location-list/stock-location-list-bulk-actions.ts
  13. 0 0
      packages/admin-ui/src/lib/settings/src/components/stock-location-list/stock-location-list.component.html
  14. 0 0
      packages/admin-ui/src/lib/settings/src/components/stock-location-list/stock-location-list.component.scss
  15. 0 0
      packages/admin-ui/src/lib/settings/src/components/stock-location-list/stock-location-list.component.ts
  16. 39 1
      packages/admin-ui/src/lib/settings/src/settings.module.ts
  17. 18 0
      packages/admin-ui/src/lib/settings/src/settings.routes.ts
  18. 3 2
      packages/admin-ui/src/lib/static/i18n-messages/ar.json
  19. 6 5
      packages/admin-ui/src/lib/static/i18n-messages/cs.json
  20. 3 2
      packages/admin-ui/src/lib/static/i18n-messages/de.json
  21. 3 2
      packages/admin-ui/src/lib/static/i18n-messages/en.json
  22. 3 2
      packages/admin-ui/src/lib/static/i18n-messages/es.json
  23. 4 3
      packages/admin-ui/src/lib/static/i18n-messages/fr.json
  24. 3 2
      packages/admin-ui/src/lib/static/i18n-messages/he.json
  25. 3 2
      packages/admin-ui/src/lib/static/i18n-messages/it.json
  26. 4 3
      packages/admin-ui/src/lib/static/i18n-messages/pl.json
  27. 3 2
      packages/admin-ui/src/lib/static/i18n-messages/pt_BR.json
  28. 10 9
      packages/admin-ui/src/lib/static/i18n-messages/pt_PT.json
  29. 3 2
      packages/admin-ui/src/lib/static/i18n-messages/ru.json
  30. 7 6
      packages/admin-ui/src/lib/static/i18n-messages/uk.json
  31. 6 5
      packages/admin-ui/src/lib/static/i18n-messages/zh_Hans.json
  32. 6 5
      packages/admin-ui/src/lib/static/i18n-messages/zh_Hant.json

+ 35 - 35
packages/admin-ui/i18n-coverage.json

@@ -1,80 +1,80 @@
 {
-  "generatedOn": "2023-09-26T07:24:07.342Z",
-  "lastCommit": "f0e50f55799dd812700da1876479466694ae648b",
+  "generatedOn": "2023-09-26T12:56:03.801Z",
+  "lastCommit": "fee995c967c5487e979e374802f651ce3120db6d",
   "translationStatus": {
     "ar": {
-      "tokenCount": 759,
-      "translatedCount": 758,
+      "tokenCount": 760,
+      "translatedCount": 757,
       "percentage": 100
     },
     "cs": {
-      "tokenCount": 759,
-      "translatedCount": 563,
+      "tokenCount": 760,
+      "translatedCount": 564,
       "percentage": 74
     },
     "de": {
-      "tokenCount": 759,
-      "translatedCount": 758,
+      "tokenCount": 760,
+      "translatedCount": 757,
       "percentage": 100
     },
     "en": {
-      "tokenCount": 759,
-      "translatedCount": 758,
+      "tokenCount": 760,
+      "translatedCount": 757,
       "percentage": 100
     },
     "es": {
-      "tokenCount": 759,
-      "translatedCount": 758,
+      "tokenCount": 760,
+      "translatedCount": 757,
       "percentage": 100
     },
     "fr": {
-      "tokenCount": 759,
-      "translatedCount": 754,
+      "tokenCount": 760,
+      "translatedCount": 753,
       "percentage": 99
     },
     "he": {
-      "tokenCount": 759,
-      "translatedCount": 758,
+      "tokenCount": 760,
+      "translatedCount": 757,
       "percentage": 100
     },
     "it": {
-      "tokenCount": 759,
-      "translatedCount": 757,
-      "percentage": 100
+      "tokenCount": 760,
+      "translatedCount": 756,
+      "percentage": 99
     },
     "pl": {
-      "tokenCount": 759,
-      "translatedCount": 398,
-      "percentage": 52
+      "tokenCount": 760,
+      "translatedCount": 399,
+      "percentage": 53
     },
     "pt_BR": {
-      "tokenCount": 759,
-      "translatedCount": 757,
-      "percentage": 100
+      "tokenCount": 760,
+      "translatedCount": 756,
+      "percentage": 99
     },
     "pt_PT": {
-      "tokenCount": 759,
-      "translatedCount": 597,
+      "tokenCount": 760,
+      "translatedCount": 598,
       "percentage": 79
     },
     "ru": {
-      "tokenCount": 759,
-      "translatedCount": 758,
+      "tokenCount": 760,
+      "translatedCount": 757,
       "percentage": 100
     },
     "uk": {
-      "tokenCount": 759,
-      "translatedCount": 587,
+      "tokenCount": 760,
+      "translatedCount": 588,
       "percentage": 77
     },
     "zh_Hans": {
-      "tokenCount": 759,
-      "translatedCount": 533,
+      "tokenCount": 760,
+      "translatedCount": 534,
       "percentage": 70
     },
     "zh_Hant": {
-      "tokenCount": 759,
-      "translatedCount": 379,
+      "tokenCount": 760,
+      "translatedCount": 380,
       "percentage": 50
     }
   }

+ 26 - 38
packages/admin-ui/src/lib/catalog/src/catalog.module.ts

@@ -66,13 +66,6 @@ import {
 import { ProductVariantQuickJumpComponent } from './components/product-variant-quick-jump/product-variant-quick-jump.component';
 import { ProductVariantsEditorComponent } from './components/product-variants-editor/product-variants-editor.component';
 import { ProductVariantsTableComponent } from './components/product-variants-table/product-variants-table.component';
-import { StockLocationDetailComponent } from './components/stock-location-detail/stock-location-detail.component';
-import {
-    assignStockLocationsToChannelBulkAction,
-    deleteStockLocationsBulkAction,
-    removeStockLocationsFromChannelBulkAction,
-} from './components/stock-location-list/stock-location-list-bulk-actions';
-import { StockLocationListComponent } from './components/stock-location-list/stock-location-list.component';
 import { UpdateProductOptionDialogComponent } from './components/update-product-option-dialog/update-product-option-dialog.component';
 import { VariantPriceDetailComponent } from './components/variant-price-detail/variant-price-detail.component';
 
@@ -109,13 +102,12 @@ const CATALOG_COMPONENTS = [
     CreateProductVariantDialogComponent,
     CreateProductOptionGroupDialogComponent,
     ProductVariantQuickJumpComponent,
-    StockLocationListComponent,
 ];
 
 @NgModule({
     imports: [SharedModule, RouterModule.forChild([])],
     exports: [...CATALOG_COMPONENTS],
-    declarations: [...CATALOG_COMPONENTS, StockLocationDetailComponent],
+    declarations: [...CATALOG_COMPONENTS],
     providers: [
         {
             provide: ROUTES,
@@ -147,10 +139,6 @@ export class CatalogModule {
         bulkActionRegistryService.registerBulkAction(removeCollectionsFromChannelBulkAction);
         bulkActionRegistryService.registerBulkAction(deleteCollectionsBulkAction);
 
-        bulkActionRegistryService.registerBulkAction(assignStockLocationsToChannelBulkAction);
-        bulkActionRegistryService.registerBulkAction(removeStockLocationsFromChannelBulkAction);
-        bulkActionRegistryService.registerBulkAction(deleteStockLocationsBulkAction);
-
         pageService.registerPageTab({
             priority: 0,
             location: 'product-list',
@@ -182,30 +170,30 @@ export class CatalogModule {
             route: 'variants',
             component: ProductVariantListComponent,
         });
-        pageService.registerPageTab({
-            priority: 0,
-            location: 'stock-location-detail',
-            tab: _('catalog.stock-location'),
-            route: '',
-            component: detailComponentWithResolver({
-                component: StockLocationDetailComponent,
-                query: GetStockLocationDetailDocument,
-                entityKey: 'stockLocation',
-                getBreadcrumbs: entity => [
-                    {
-                        label: entity ? entity.name : _('catalog.create-new-stock-location'),
-                        link: [entity?.id],
-                    },
-                ],
-            }),
-        });
-        pageService.registerPageTab({
-            priority: 0,
-            location: 'product-list',
-            tab: _('catalog.stock-locations'),
-            route: 'stock-locations',
-            component: StockLocationListComponent,
-        });
+        // pageService.registerPageTab({
+        //     priority: 0,
+        //     location: 'stock-location-detail',
+        //     tab: _('catalog.stock-location'),
+        //     route: '',
+        //     component: detailComponentWithResolver({
+        //         component: StockLocationDetailComponent,
+        //         query: GetStockLocationDetailDocument,
+        //         entityKey: 'stockLocation',
+        //         getBreadcrumbs: entity => [
+        //             {
+        //                 label: entity ? entity.name : _('catalog.create-new-stock-location'),
+        //                 link: [entity?.id],
+        //             },
+        //         ],
+        //     }),
+        // });
+        // pageService.registerPageTab({
+        //     priority: 0,
+        //     location: 'product-list',
+        //     tab: _('catalog.stock-locations'),
+        //     route: 'stock-locations',
+        //     component: StockLocationListComponent,
+        // });
         pageService.registerPageTab({
             priority: 0,
             location: 'product-variant-detail',
@@ -218,7 +206,7 @@ export class CatalogModule {
                 getBreadcrumbs: entity => [
                     {
                         label: `${entity?.product.name}`,
-                        link: ['/catalog', 'inventory', entity?.product.id],
+                        link: ['/catalog', 'products', entity?.product.id],
                     },
                     {
                         label: `${entity?.name} (${entity?.sku})`,

+ 14 - 25
packages/admin-ui/src/lib/catalog/src/catalog.routes.ts

@@ -15,20 +15,24 @@ import { ProductVariantsResolver } from './providers/routing/product-variants-re
 
 export const createRoutes = (pageService: PageService): Route[] => [
     {
-        path: 'inventory',
+        path: 'products',
         component: PageComponent,
         data: {
             locationId: 'product-list',
-            breadcrumb: _('breadcrumb.inventory'),
+            breadcrumb: _('breadcrumb.products'),
         },
         children: pageService.getPageTabRoutes('product-list'),
     },
     {
-        path: 'inventory/:id',
+        path: 'inventory',
+        redirectTo: 'products',
+    },
+    {
+        path: 'products/:id',
         component: PageComponent,
         data: {
             locationId: 'product-detail',
-            breadcrumb: { label: _('breadcrumb.inventory'), link: ['../', 'inventory'] },
+            breadcrumb: { label: _('breadcrumb.products'), link: ['../', 'products'] },
         },
         children: [
             {
@@ -58,16 +62,16 @@ export const createRoutes = (pageService: PageService): Route[] => [
         ],
     },
     {
-        path: 'inventory/:productId/variants/:id',
+        path: 'products/:productId/variants/:id',
         component: PageComponent,
         data: {
             locationId: 'product-variant-detail',
-            breadcrumb: { label: _('breadcrumb.inventory'), link: ['../', 'inventory'] },
+            breadcrumb: { label: _('breadcrumb.products'), link: ['../', 'products'] },
         },
         children: pageService.getPageTabRoutes('product-variant-detail'),
     },
     {
-        path: 'inventory/:id/options',
+        path: 'products/:id/options',
         component: ProductOptionsEditorComponent,
         resolve: createResolveData(ProductVariantsResolver),
         canDeactivate: [CanDeactivateDetailGuard],
@@ -75,21 +79,6 @@ export const createRoutes = (pageService: PageService): Route[] => [
             breadcrumb: productOptionsEditorBreadcrumb,
         },
     },
-    {
-        path: 'inventory/stock-locations/:id',
-        component: PageComponent,
-        data: {
-            locationId: 'stock-location-detail',
-            breadcrumb: [
-                { label: _('breadcrumb.inventory'), link: ['../', 'inventory'] },
-                {
-                    label: _('breadcrumb.stock-locations'),
-                    link: ['../', 'inventory', 'stock-locations'],
-                },
-            ],
-        },
-        children: pageService.getPageTabRoutes('stock-location-detail'),
-    },
     {
         path: 'facets',
         component: PageComponent,
@@ -150,12 +139,12 @@ export function productOptionsEditorBreadcrumb(data: any, params: any) {
     return data.entity.pipe(
         map((entity: any) => [
             {
-                label: _('breadcrumb.inventory'),
-                link: ['../', 'inventory'],
+                label: _('breadcrumb.products'),
+                link: ['../', 'products'],
             },
             {
                 label: `${entity.name}`,
-                link: ['../', 'inventory', params.id],
+                link: ['../', 'products', params.id],
             },
             {
                 label: _('breadcrumb.product-options'),

+ 1 - 1
packages/admin-ui/src/lib/catalog/src/components/collection-contents/collection-contents.component.html

@@ -36,7 +36,7 @@
         </vdr-dt2-column>
         <vdr-dt2-column [heading]="'common.name' | translate" id="name" [optional]="false">
             <ng-template let-variant="item">
-                <a class="button-ghost" [routerLink]="['/catalog/inventory', variant.productId]"
+                <a class="button-ghost" [routerLink]="['/catalog/products', variant.productId]"
                     ><span>{{ variant.name }}</span
                     ><clr-icon shape="arrow right"
                 /></a>

+ 1 - 1
packages/admin-ui/src/lib/catalog/src/components/product-variant-list/product-variant-list.component.html

@@ -67,7 +67,7 @@
         <ng-template let-variant="item">
             <a
                 class="button-ghost"
-                [routerLink]="['/catalog/inventory', variant.productId, 'variants', variant.id]"
+                [routerLink]="['/catalog/products', variant.productId, 'variants', variant.id]"
                 ><span>{{ variant.name }}</span
                 ><clr-icon shape="arrow right"
             /></a>

+ 1 - 1
packages/admin-ui/src/lib/catalog/src/components/product-variant-quick-jump/product-variant-quick-jump.component.ts

@@ -51,7 +51,7 @@ export class ProductVariantQuickJumpComponent implements OnInit {
     onSelect(item?: NonNullable<GetProductVariantsQuickJumpQuery['product']>['variants'][number]) {
         if (item) {
             this.router
-                .navigate(['catalog', 'inventory', this.productId, 'variants', item.id])
+                .navigate(['catalog', 'products', this.productId, 'variants', item.id])
                 .then(() => (this.selectedVariantId = undefined));
         }
     }

+ 0 - 3
packages/admin-ui/src/lib/catalog/src/public_api.ts

@@ -41,9 +41,6 @@ export * from './components/product-variant-list/product-variant-list.graphql';
 export * from './components/product-variant-quick-jump/product-variant-quick-jump.component';
 export * from './components/product-variants-editor/product-variants-editor.component';
 export * from './components/product-variants-table/product-variants-table.component';
-export * from './components/stock-location-detail/stock-location-detail.component';
-export * from './components/stock-location-list/stock-location-list-bulk-actions';
-export * from './components/stock-location-list/stock-location-list.component';
 export * from './components/update-product-option-dialog/update-product-option-dialog.component';
 export * from './components/variant-price-detail/variant-price-detail.component';
 export * from './providers/product-detail/product-detail.service';

+ 10 - 3
packages/admin-ui/src/lib/core/src/components/base-nav/base-nav.component.ts

@@ -95,10 +95,10 @@ export class BaseNavComponent implements OnInit, OnDestroy {
                 items: [
                     {
                         requiresPermission: allow(Permission.ReadCatalog, Permission.ReadProduct),
-                        id: 'inventory',
-                        label: _('nav.inventory'),
+                        id: 'products',
+                        label: _('nav.products'),
                         icon: 'library',
-                        routerLink: ['/catalog', 'inventory'],
+                        routerLink: ['/catalog', 'products'],
                     },
                     {
                         requiresPermission: allow(Permission.ReadCatalog, Permission.ReadFacet),
@@ -206,6 +206,13 @@ export class BaseNavComponent implements OnInit, OnDestroy {
                         routerLink: ['/settings', 'channels'],
                         icon: 'layers',
                     },
+                    {
+                        requiresPermission: allow(Permission.ReadStockLocation),
+                        id: 'stock-locations',
+                        label: _('nav.stock-locations'),
+                        icon: 'map-marker',
+                        routerLink: ['/settings', 'stock-locations'],
+                    },
                     {
                         requiresPermission: allow(Permission.ReadAdministrator),
                         id: 'administrators',

+ 0 - 0
packages/admin-ui/src/lib/catalog/src/components/stock-location-detail/stock-location-detail.component.html → packages/admin-ui/src/lib/settings/src/components/stock-location-detail/stock-location-detail.component.html


+ 0 - 0
packages/admin-ui/src/lib/catalog/src/components/stock-location-detail/stock-location-detail.component.scss → packages/admin-ui/src/lib/settings/src/components/stock-location-detail/stock-location-detail.component.scss


+ 0 - 0
packages/admin-ui/src/lib/catalog/src/components/stock-location-detail/stock-location-detail.component.ts → packages/admin-ui/src/lib/settings/src/components/stock-location-detail/stock-location-detail.component.ts


+ 0 - 0
packages/admin-ui/src/lib/catalog/src/components/stock-location-list/stock-location-list-bulk-actions.ts → packages/admin-ui/src/lib/settings/src/components/stock-location-list/stock-location-list-bulk-actions.ts


+ 0 - 0
packages/admin-ui/src/lib/catalog/src/components/stock-location-list/stock-location-list.component.html → packages/admin-ui/src/lib/settings/src/components/stock-location-list/stock-location-list.component.html


+ 0 - 0
packages/admin-ui/src/lib/catalog/src/components/stock-location-list/stock-location-list.component.scss → packages/admin-ui/src/lib/settings/src/components/stock-location-list/stock-location-list.component.scss


+ 0 - 0
packages/admin-ui/src/lib/catalog/src/components/stock-location-list/stock-location-list.component.ts → packages/admin-ui/src/lib/settings/src/components/stock-location-list/stock-location-list.component.ts


+ 39 - 1
packages/admin-ui/src/lib/settings/src/settings.module.ts

@@ -7,11 +7,11 @@ import {
     GetAdministratorDetailDocument,
     GetChannelDetailDocument,
     GetCountryDetailDocument,
-    GetGlobalSettingsDetailDocument,
     GetPaymentMethodDetailDocument,
     GetRoleDetailDocument,
     GetSellerDetailDocument,
     GetShippingMethodDetailDocument,
+    GetStockLocationDetailDocument,
     GetTaxCategoryDetailDocument,
     GetTaxRateDetailDocument,
     GetZoneDetailDocument,
@@ -55,6 +55,13 @@ import {
 } from './components/shipping-method-list/shipping-method-list-bulk-actions';
 import { ShippingMethodListComponent } from './components/shipping-method-list/shipping-method-list.component';
 import { ShippingMethodTestResultComponent } from './components/shipping-method-test-result/shipping-method-test-result.component';
+import { StockLocationDetailComponent } from './components/stock-location-detail/stock-location-detail.component';
+import {
+    assignStockLocationsToChannelBulkAction,
+    deleteStockLocationsBulkAction,
+    removeStockLocationsFromChannelBulkAction,
+} from './components/stock-location-list/stock-location-list-bulk-actions';
+import { StockLocationListComponent } from './components/stock-location-list/stock-location-list.component';
 import { TaxCategoryDetailComponent } from './components/tax-category-detail/tax-category-detail.component';
 import { deleteTaxCategoriesBulkAction } from './components/tax-category-list/tax-category-list-bulk-actions';
 import { TaxCategoryListComponent } from './components/tax-category-list/tax-category-list.component';
@@ -116,6 +123,8 @@ import { createRoutes } from './settings.routes';
         ProfileComponent,
         TestShippingMethodsComponent,
         ZoneDetailComponent,
+        StockLocationListComponent,
+        StockLocationDetailComponent,
     ],
 })
 export class SettingsModule {
@@ -146,6 +155,10 @@ export class SettingsModule {
 
         bulkActionRegistryService.registerBulkAction(removeZoneMembersBulkAction);
 
+        bulkActionRegistryService.registerBulkAction(assignStockLocationsToChannelBulkAction);
+        bulkActionRegistryService.registerBulkAction(removeStockLocationsFromChannelBulkAction);
+        bulkActionRegistryService.registerBulkAction(deleteStockLocationsBulkAction);
+
         pageService.registerPageTab({
             priority: 0,
             location: 'seller-list',
@@ -413,5 +426,30 @@ export class SettingsModule {
             route: '',
             component: ProfileComponent,
         });
+
+        pageService.registerPageTab({
+            priority: 0,
+            location: 'stock-location-list',
+            tab: _('catalog.stock-locations'),
+            route: '',
+            component: StockLocationListComponent,
+        });
+        pageService.registerPageTab({
+            priority: 0,
+            location: 'stock-location-detail',
+            tab: _('catalog.stock-location'),
+            route: '',
+            component: detailComponentWithResolver({
+                component: StockLocationDetailComponent,
+                query: GetStockLocationDetailDocument,
+                entityKey: 'stockLocation',
+                getBreadcrumbs: entity => [
+                    {
+                        label: entity ? entity.name : _('catalog.create-new-stock-location'),
+                        link: [entity?.id],
+                    },
+                ],
+            }),
+        });
     }
 }

+ 18 - 0
packages/admin-ui/src/lib/settings/src/settings.routes.ts

@@ -61,6 +61,24 @@ export const createRoutes = (pageService: PageService): Route[] => [
         },
         children: pageService.getPageTabRoutes('channel-detail'),
     },
+    {
+        path: 'stock-locations',
+        component: PageComponent,
+        data: {
+            locationId: 'stock-location-list',
+            breadcrumb: _('breadcrumb.stock-locations'),
+        },
+        children: pageService.getPageTabRoutes('stock-location-list'),
+    },
+    {
+        path: 'stock-locations/:id',
+        component: PageComponent,
+        data: {
+            locationId: 'stock-location-list',
+            breadcrumb: { label: _('breadcrumb.stock-locations'), link: ['../', 'stock-locations'] },
+        },
+        children: pageService.getPageTabRoutes('stock-location-detail'),
+    },
     {
         path: 'sellers',
         component: PageComponent,

+ 3 - 2
packages/admin-ui/src/lib/static/i18n-messages/ar.json

@@ -35,13 +35,13 @@
     "dashboard": "لوحة التحكم",
     "facets": "فئات",
     "global-settings": "الاعدادات العامة",
-    "inventory": "جرد",
     "job-queue": "ذيل الوظيفة",
     "manage-variants": "إدارة المتغيرات",
     "modifying": "تعديل",
     "orders": "طلبيات",
     "payment-methods": "طرق الدفع",
     "product-options": "خيارات المنتج",
+    "products": "منتجات",
     "profile": "حساب تعريفي",
     "promotions": "العروض",
     "roles": "الأدوار",
@@ -510,17 +510,18 @@
     "customers": "عملاء",
     "facets": "فئات",
     "global-settings": "الاعدادات العامة",
-    "inventory": "جرد",
     "job-queue": "ذيل الوظيفة",
     "marketing": "تسويق",
     "orders": "طلبيات",
     "payment-methods": "طرق الدفع",
+    "products": "منتجات",
     "promotions": "العروض",
     "roles": "الأدوار",
     "sales": "مبيعات",
     "sellers": "البائعون",
     "settings": "إعدادات",
     "shipping-methods": "طرق الشحن",
+    "stock-locations": "مواقع الأسهم",
     "system": "نظام",
     "system-status": "حالة النظام",
     "tax-categories": "فئات الضرائب",

+ 6 - 5
packages/admin-ui/src/lib/static/i18n-messages/cs.json

@@ -35,20 +35,20 @@
     "dashboard": "Nástěnka",
     "facets": "Atributy",
     "global-settings": "Všeobecné nastavení",
-    "inventory": "",
     "job-queue": "Fronta úloh",
     "manage-variants": "Správa variant",
     "modifying": "Úpravy",
     "orders": "Objednávky",
     "payment-methods": "Platební metody",
     "product-options": "",
+    "products": "Produkty",
     "profile": "Profil",
     "promotions": "Propagace",
     "roles": "Role",
     "seller-orders": "",
     "sellers": "",
     "shipping-methods": "Dopravní metody",
-    "stock-locations": "",
+    "stock-locations": "Místa skladování",
     "system-status": "Status systému",
     "tax-categories": "Daňové kategorie",
     "tax-rates": "Daňové sazby",
@@ -147,7 +147,7 @@
     "product-options": "",
     "product-variant-exists": "",
     "product-variants": "Varianty produktu",
-    "products": "",
+    "products": "Produkty",
     "public": "Veřejný",
     "quick-jump-placeholder": "",
     "rebuild-search-index": "Obnovit vyhledávací index",
@@ -173,7 +173,7 @@
     "stock-allocated": "Alokováno",
     "stock-levels": "",
     "stock-location": "",
-    "stock-locations": "",
+    "stock-locations": "Místa skladování",
     "stock-on-hand": "Sklad",
     "tax-category": "Skupina daní",
     "taxes": "Daně",
@@ -510,17 +510,18 @@
     "customers": "Zákazníci",
     "facets": "Atributy",
     "global-settings": "Globální nastavení",
-    "inventory": "",
     "job-queue": "Fronta úloh",
     "marketing": "Marketing",
     "orders": "Objednávky",
     "payment-methods": "Platební metody",
+    "products": "Produkty",
     "promotions": "Propagace",
     "roles": "Role",
     "sales": "Prodeje",
     "sellers": "",
     "settings": "Nastavení",
     "shipping-methods": "Dopravní metody",
+    "stock-locations": "Místa skladování",
     "system": "Systém",
     "system-status": "Status systému",
     "tax-categories": "Daňové kategorie",

+ 3 - 2
packages/admin-ui/src/lib/static/i18n-messages/de.json

@@ -35,13 +35,13 @@
     "dashboard": "Dashboard",
     "facets": "Facetten",
     "global-settings": "Globale Einstellungen",
-    "inventory": "Inventar",
     "job-queue": "Job-Warteschlange",
     "manage-variants": "Varianten verwalten",
     "modifying": "Bearbeiten",
     "orders": "Bestellungen",
     "payment-methods": "Zahlungsarten",
     "product-options": "Produktoptionen",
+    "products": "Produkte",
     "profile": "Profil",
     "promotions": "Promotionen",
     "roles": "Rollen",
@@ -510,17 +510,18 @@
     "customers": "Kunden",
     "facets": "Facetten",
     "global-settings": "Globale Einstellungen",
-    "inventory": "Inventar",
     "job-queue": "Job-Warteschlange",
     "marketing": "Marketing",
     "orders": "Bestellungen",
     "payment-methods": "Zahlungsarten",
+    "products": "Produkte",
     "promotions": "Werbeaktionen",
     "roles": "Rollen",
     "sales": "Verkäufe",
     "sellers": "Verkäufer",
     "settings": "Einstellungen",
     "shipping-methods": "Versandarten",
+    "stock-locations": "Lagerorte",
     "system": "System",
     "system-status": "Systemstatus",
     "tax-categories": "Steuerkategorien",

+ 3 - 2
packages/admin-ui/src/lib/static/i18n-messages/en.json

@@ -35,13 +35,13 @@
     "dashboard": "Dashboard",
     "facets": "Facets",
     "global-settings": "Global settings",
-    "inventory": "Inventory",
     "job-queue": "Job queue",
     "manage-variants": "Manage variants",
     "modifying": "Modifying",
     "orders": "Orders",
     "payment-methods": "Payment methods",
     "product-options": "Product options",
+    "products": "Products",
     "profile": "Profile",
     "promotions": "Promotions",
     "roles": "Roles",
@@ -510,17 +510,18 @@
     "customers": "Customers",
     "facets": "Facets",
     "global-settings": "Global settings",
-    "inventory": "Inventory",
     "job-queue": "Job queue",
     "marketing": "Marketing",
     "orders": "Orders",
     "payment-methods": "Payment methods",
+    "products": "Products",
     "promotions": "Promotions",
     "roles": "Roles",
     "sales": "Sales",
     "sellers": "Sellers",
     "settings": "Settings",
     "shipping-methods": "Shipping methods",
+    "stock-locations": "Stock locations",
     "system": "System",
     "system-status": "System Status",
     "tax-categories": "Tax categories",

+ 3 - 2
packages/admin-ui/src/lib/static/i18n-messages/es.json

@@ -35,13 +35,13 @@
     "dashboard": "Panel de control",
     "facets": "Etiquetas",
     "global-settings": "Ajustes globales",
-    "inventory": "Inventario",
     "job-queue": "Cola de tareas",
     "manage-variants": "Gestionar variantes",
     "modifying": "Modificando",
     "orders": "Pedidos",
     "payment-methods": "Métodos de pago",
     "product-options": "Opciones de producto",
+    "products": "Productos",
     "profile": "Perfil",
     "promotions": "Promociones",
     "roles": "Roles",
@@ -510,17 +510,18 @@
     "customers": "Clientes",
     "facets": "Etiquetas",
     "global-settings": "Ajustes globales",
-    "inventory": "Inventario",
     "job-queue": "Cola de trabajos",
     "marketing": "Marketing",
     "orders": "Pedidos",
     "payment-methods": "Pagos",
+    "products": "Productos",
     "promotions": "Promociones",
     "roles": "Roles",
     "sales": "Ventas",
     "sellers": "Vendedores",
     "settings": "Ajustes",
     "shipping-methods": "Envíos",
+    "stock-locations": "Almacenes",
     "system": "Sistema",
     "system-status": "Estado del sistema",
     "tax-categories": "Impuestos",

+ 4 - 3
packages/admin-ui/src/lib/static/i18n-messages/fr.json

@@ -35,13 +35,13 @@
     "dashboard": "Tableau de Bord",
     "facets": "Composants",
     "global-settings": "Paramètres globaux",
-    "inventory": "Inventaire",
     "job-queue": "File d'attente de tâches",
     "manage-variants": "Gestion des variations",
     "modifying": "Modification",
     "orders": "Commandes",
     "payment-methods": "Modes de paiement",
-    "product-options": "",
+    "product-options": "Options de produit",
+    "products": "Produits",
     "profile": "Profil",
     "promotions": "Promotions",
     "roles": "Roles",
@@ -510,17 +510,18 @@
     "customers": "Clients",
     "facets": "Composants",
     "global-settings": "Réglages globaux",
-    "inventory": "Inventaire",
     "job-queue": "File d'attente de tâches",
     "marketing": "Marketing",
     "orders": "Commandes",
     "payment-methods": "Mode de paiement",
+    "products": "Produits",
     "promotions": "Promotions",
     "roles": "Roles",
     "sales": "Ventes",
     "sellers": "Vendeurs",
     "settings": "Paramètres",
     "shipping-methods": "Mode d'expédition",
+    "stock-locations": "Lieux de stockage",
     "system": "Système",
     "system-status": "Statut du Système",
     "tax-categories": "Catégories de Taxe",

+ 3 - 2
packages/admin-ui/src/lib/static/i18n-messages/he.json

@@ -35,13 +35,13 @@
     "dashboard": "לוח בקרה",
     "facets": "גבעולים",
     "global-settings": "הגדרות גלובליות",
-    "inventory": "מלאי",
     "job-queue": "תור משימות",
     "manage-variants": "נהל וריאנטים",
     "modifying": "משנה",
     "orders": "הזמנות",
     "payment-methods": "שיטות תשלום",
     "product-options": "אפשרויות מוצר",
+    "products": "מוצרים",
     "profile": "פרופיל",
     "promotions": "מבצעים",
     "roles": "תפקידים",
@@ -510,17 +510,18 @@
     "customers": "לקוחות",
     "facets": "תכונות",
     "global-settings": "הגדרות גלובליות",
-    "inventory": "מלאי",
     "job-queue": "תור עבודה",
     "marketing": "שיווק",
     "orders": "הזמנות",
     "payment-methods": "אמצעי תשלום",
+    "products": "מוצרים",
     "promotions": "מבצעים",
     "roles": "תפקידים",
     "sales": "מכירות",
     "sellers": "מוכרים",
     "settings": "הגדרות",
     "shipping-methods": "אמצעי משלוח",
+    "stock-locations": "מיקומי מניה",
     "system": "מערכת",
     "system-status": "מצב המערכת",
     "tax-categories": "קטגוריות מס",

+ 3 - 2
packages/admin-ui/src/lib/static/i18n-messages/it.json

@@ -35,13 +35,13 @@
     "dashboard": "Pannello",
     "facets": "Attributi",
     "global-settings": "Impostazioni Globali",
-    "inventory": "Inventario",
     "job-queue": "Coda operazioni",
     "manage-variants": "Gestione varianti",
     "modifying": "Modifica",
     "orders": "Ordini",
     "payment-methods": "Metodi di pagamento",
     "product-options": "Opzioni prodotto",
+    "products": "Prodotti",
     "profile": "Profilo",
     "promotions": "Promozioni",
     "roles": "Ruoli",
@@ -510,17 +510,18 @@
     "customers": "Clienti",
     "facets": "Attributi",
     "global-settings": "Impostazioni globali",
-    "inventory": "Inventario",
     "job-queue": "Coda operazioni",
     "marketing": "Marketing",
     "orders": "Ordini",
     "payment-methods": "Metodi di Pagamento",
+    "products": "Prodotti",
     "promotions": "Promozioni",
     "roles": "Ruoli",
     "sales": "Vendite",
     "sellers": "Venditori",
     "settings": "Impostazioni",
     "shipping-methods": "Metodi di Spedizione",
+    "stock-locations": "Posizioni magazzino",
     "system": "Sistema",
     "system-status": "Stato del Sistema",
     "tax-categories": "Impostazioni Tasse",

+ 4 - 3
packages/admin-ui/src/lib/static/i18n-messages/pl.json

@@ -35,13 +35,13 @@
     "dashboard": "Dashboard",
     "facets": "Fasety",
     "global-settings": "Ustawienia globalne",
-    "inventory": "",
     "job-queue": "Kolejka zadań",
     "manage-variants": "Zarządzaj wariantami",
     "modifying": "",
     "orders": "Zamówienia",
     "payment-methods": "Metody płatności",
     "product-options": "",
+    "products": "",
     "profile": "",
     "promotions": "Promocje",
     "roles": "Role",
@@ -510,17 +510,18 @@
     "customers": "Klienci",
     "facets": "Facets",
     "global-settings": "Ustawienia globalne",
-    "inventory": "",
     "job-queue": "Kolejka zadań",
     "marketing": "Marketing",
     "orders": "Zamówienia",
     "payment-methods": "Metody płatności",
+    "products": "",
     "promotions": "Promocje",
     "roles": "Role",
     "sales": "Sprzedaż",
     "sellers": "",
     "settings": "Ustawienia",
     "shipping-methods": "Metody wysyłki",
+    "stock-locations": "",
     "system": "",
     "system-status": "",
     "tax-categories": "Kategorie podatkowe",
@@ -790,4 +791,4 @@
     "job-state-pending": "Oczekujące",
     "job-state-running": "Uruchomione"
   }
-}
+}

+ 3 - 2
packages/admin-ui/src/lib/static/i18n-messages/pt_BR.json

@@ -35,13 +35,13 @@
     "dashboard": "Painel de controle",
     "facets": "Etiquetas",
     "global-settings": "Configurações globais",
-    "inventory": "Inventário",
     "job-queue": "Fila de tabalho",
     "manage-variants": "Gerenciamento de variações",
     "modifying": "Modificando",
     "orders": "Pedidos",
     "payment-methods": "Métodos de pagamentos",
     "product-options": "Opções do produto",
+    "products": "Produtos",
     "profile": "Perfil",
     "promotions": "Promoções",
     "roles": "Regras",
@@ -510,17 +510,18 @@
     "customers": "Clientes",
     "facets": "Etiquetas",
     "global-settings": "Configurações Gerais",
-    "inventory": "Inventário",
     "job-queue": "Fila de trabalho",
     "marketing": "Marketing",
     "orders": "Pedidos",
     "payment-methods": "Métodos de pagamentos",
+    "products": "Produtos",
     "promotions": "Promoções",
     "roles": "Regras de permissão",
     "sales": "Vendas",
     "sellers": "Vendedores",
     "settings": "Configurações",
     "shipping-methods": "Métodos de envio",
+    "stock-locations": "Localizações de estoque",
     "system": "Sistema",
     "system-status": "Status do sistema",
     "tax-categories": "Categorias das taxas",

+ 10 - 9
packages/admin-ui/src/lib/static/i18n-messages/pt_PT.json

@@ -35,20 +35,20 @@
     "dashboard": "Painel de controlo",
     "facets": "Etiquetas",
     "global-settings": "Configurações globais",
-    "inventory": "",
     "job-queue": "Fila de tabalho",
     "manage-variants": "Gerir variações",
     "modifying": "A modificar",
     "orders": "Encomendas",
     "payment-methods": "Métodos de pagamentos",
     "product-options": "Opções",
+    "products": "Produtos",
     "profile": "Perfil",
     "promotions": "Promoções",
     "roles": "Regras",
     "seller-orders": "",
     "sellers": "",
     "shipping-methods": "Métodos de envio",
-    "stock-locations": "",
+    "stock-locations": "Localizações de stock",
     "system-status": "Estado do sistema",
     "tax-categories": "Categorias de taxas e impostos",
     "tax-rates": "Taxas de impostos",
@@ -142,12 +142,12 @@
     "price-includes-tax-at": "Inclui { rate }% de imposto",
     "price-with-tax-in-default-zone": "Inclui { rate }% de imposto: { price }",
     "private": "Privado",
-    "product": "",
+    "product": "Produto",
     "product-name": "Nome do produto",
-    "product-options": "",
-    "product-variant-exists": "",
+    "product-options": "Opções do produto",
+    "product-variant-exists": "A variante do produto já existe",
     "product-variants": "Variações do produto",
-    "products": "",
+    "products": "Produtos",
     "public": "Público",
     "quick-jump-placeholder": "",
     "rebuild-search-index": "Reconstruir índice de pesquisa",
@@ -172,8 +172,8 @@
     "slug-pattern-error": "Slug inválido",
     "stock-allocated": "Estoque reservado",
     "stock-levels": "",
-    "stock-location": "",
-    "stock-locations": "",
+    "stock-location": "Localização de stock",
+    "stock-locations": "Localizações de stock",
     "stock-on-hand": "Estoque",
     "tax-category": "Categoria de impostos",
     "taxes": "Impostos",
@@ -510,17 +510,18 @@
     "customers": "Clientes",
     "facets": "Etiquetas",
     "global-settings": "Configurações Gerais",
-    "inventory": "",
     "job-queue": "Fila de trabalho",
     "marketing": "Marketing",
     "orders": "Encomendas",
     "payment-methods": "Métodos de pagamentos",
+    "products": "Produtos",
     "promotions": "Promoções",
     "roles": "Gerir permissões",
     "sales": "Vendas",
     "sellers": "",
     "settings": "Configurações",
     "shipping-methods": "Métodos de envio",
+    "stock-locations": "Localizações de stock",
     "system": "Sistema",
     "system-status": "Estado do sistema",
     "tax-categories": "Categorias das taxas",

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

@@ -35,13 +35,13 @@
     "dashboard": "Дашборд",
     "facets": "Теги",
     "global-settings": "Глобальные настройки",
-    "inventory": "Инвентарь",
     "job-queue": "Очередь заданий",
     "manage-variants": "Управление вариантами",
     "modifying": "Изменение",
     "orders": "Заказы",
     "payment-methods": "Способы оплаты",
     "product-options": "Опции товара",
+    "products": "Товары",
     "profile": "Профиль",
     "promotions": "Акции",
     "roles": "Роли",
@@ -510,17 +510,18 @@
     "customers": "Клиенты",
     "facets": "Теги",
     "global-settings": "Глобальные настройки",
-    "inventory": "Каталог",
     "job-queue": "Очередь заданий",
     "marketing": "Маркетинг",
     "orders": "Заказы",
     "payment-methods": "Способы оплаты",
+    "products": "Товары",
     "promotions": "Промо-акции",
     "roles": "Роли",
     "sales": "Продажи",
     "sellers": "Продавцы",
     "settings": "Настройки",
     "shipping-methods": "Способы доставки",
+    "stock-locations": "Склады",
     "system": "Система",
     "system-status": "Состояние системы",
     "tax-categories": "Категории налогов",

+ 7 - 6
packages/admin-ui/src/lib/static/i18n-messages/uk.json

@@ -35,20 +35,20 @@
     "dashboard": "Дашборд",
     "facets": "Теги",
     "global-settings": "Глобальні налаштування",
-    "inventory": "",
     "job-queue": "Черга завдань",
     "manage-variants": "Управління варіантами",
     "modifying": "Зміна",
     "orders": "Замовлення",
     "payment-methods": "Способи оплати",
     "product-options": "",
+    "products": "Товари",
     "profile": "Профіль",
     "promotions": "Акції",
     "roles": "Ролі",
     "seller-orders": "",
     "sellers": "",
     "shipping-methods": "Способи доставки",
-    "stock-locations": "",
+    "stock-locations": "Місця зберігання",
     "system-status": "Стан системи",
     "tax-categories": "Категорії податків",
     "tax-rates": "Податкові ставки",
@@ -147,7 +147,7 @@
     "product-options": "",
     "product-variant-exists": "",
     "product-variants": "Варіант товару",
-    "products": "",
+    "products": "Товари",
     "public": "Публічний",
     "quick-jump-placeholder": "",
     "rebuild-search-index": "Відновити пошуковий індекс",
@@ -172,8 +172,8 @@
     "slug-pattern-error": "Код заданий некоректно",
     "stock-allocated": "Зарезервовано",
     "stock-levels": "",
-    "stock-location": "",
-    "stock-locations": "",
+    "stock-location": "Mісце зберігання",
+    "stock-locations": "Місця зберігання",
     "stock-on-hand": "На складі",
     "tax-category": "Податкова категорія",
     "taxes": "Податки",
@@ -510,17 +510,18 @@
     "customers": "Клієнти",
     "facets": "Теги",
     "global-settings": "Глобальні налаштування",
-    "inventory": "",
     "job-queue": "Черга завдань",
     "marketing": "Маркетинг",
     "orders": "Замовлення",
     "payment-methods": "Способи оплати",
+    "products": "Товари",
     "promotions": "Промо-акції",
     "roles": "Ролі",
     "sales": "Продажі",
     "sellers": "",
     "settings": "Налаштування",
     "shipping-methods": "Способи доставки",
+    "stock-locations": "Місця зберігання",
     "system": "Система",
     "system-status": "Стан системи",
     "tax-categories": "Категорії податків",

+ 6 - 5
packages/admin-ui/src/lib/static/i18n-messages/zh_Hans.json

@@ -35,20 +35,20 @@
     "dashboard": "总览",
     "facets": "商品特征",
     "global-settings": "语言设置",
-    "inventory": "",
     "job-queue": "任务队列",
     "manage-variants": "商品规格管理",
     "modifying": "正在修改",
     "orders": "订单管理",
     "payment-methods": "支付管理",
     "product-options": "",
+    "products": "产品",
     "profile": "个人资料",
     "promotions": "优惠券管理",
     "roles": "角色管理",
     "seller-orders": "",
     "sellers": "",
     "shipping-methods": "配送方式管理",
-    "stock-locations": "",
+    "stock-locations": "库存位置",
     "system-status": "系统状态",
     "tax-categories": "税表分类",
     "tax-rates": "税率管理",
@@ -147,7 +147,7 @@
     "product-options": "",
     "product-variant-exists": "",
     "product-variants": "商品规格",
-    "products": "",
+    "products": "产品",
     "public": "公开",
     "quick-jump-placeholder": "",
     "rebuild-search-index": "重建搜索索引",
@@ -173,7 +173,7 @@
     "stock-allocated": "已分配",
     "stock-levels": "",
     "stock-location": "",
-    "stock-locations": "",
+    "stock-locations": "库存位置",
     "stock-on-hand": "当前库存",
     "tax-category": "税表分类",
     "taxes": "价格(含税)",
@@ -510,17 +510,18 @@
     "customers": "客户管理",
     "facets": "产品特征",
     "global-settings": "语言设置",
-    "inventory": "",
     "job-queue": "任务队列",
     "marketing": "市场营销",
     "orders": "订单管理",
     "payment-methods": "支付管理",
+    "products": "产品",
     "promotions": "优惠券管理",
     "roles": "角色管理",
     "sales": "销售管理",
     "sellers": "",
     "settings": "系统设置",
     "shipping-methods": "配送方式",
+    "stock-locations": "库存位置",
     "system": "系统状态",
     "system-status": "系统状态",
     "tax-categories": "税表分类",

+ 6 - 5
packages/admin-ui/src/lib/static/i18n-messages/zh_Hant.json

@@ -35,20 +35,20 @@
     "dashboard": "總覽",
     "facets": "商品特徵",
     "global-settings": "語言",
-    "inventory": "",
     "job-queue": "",
     "manage-variants": "商品規格管理",
     "modifying": "",
     "orders": "訂單管理",
     "payment-methods": "支付方式",
     "product-options": "",
+    "products": "產品",
     "profile": "",
     "promotions": "優惠",
     "roles": "角色管理",
     "seller-orders": "",
     "sellers": "",
     "shipping-methods": "配送方式管理",
-    "stock-locations": "",
+    "stock-locations": "庫存位置",
     "system-status": "",
     "tax-categories": "稅項類別",
     "tax-rates": "税率",
@@ -147,7 +147,7 @@
     "product-options": "",
     "product-variant-exists": "",
     "product-variants": "商品規格",
-    "products": "",
+    "products": "產品",
     "public": "公開",
     "quick-jump-placeholder": "",
     "rebuild-search-index": "重建搜尋索引",
@@ -173,7 +173,7 @@
     "stock-allocated": "",
     "stock-levels": "",
     "stock-location": "",
-    "stock-locations": "",
+    "stock-locations": "庫存位置",
     "stock-on-hand": "庫存",
     "tax-category": "税表分類",
     "taxes": "價格(連税)",
@@ -510,17 +510,18 @@
     "customers": "客户",
     "facets": "特徵",
     "global-settings": "語言設定",
-    "inventory": "",
     "job-queue": "",
     "marketing": "推銷",
     "orders": "訂單管理",
     "payment-methods": "付款方法",
+    "products": "產品",
     "promotions": "優惠券管理",
     "roles": "角色管理",
     "sales": "銷售管理",
     "sellers": "",
     "settings": "系统設定",
     "shipping-methods": "配送方式",
+    "stock-locations": "庫存位置",
     "system": "",
     "system-status": "",
     "tax-categories": "税表分類",