# Vendure Admin UI This is the administration interface for Vendure. It is an Angular application built with the Angular CLI. The UI is powered by the [Clarity Design System](https://clarity.design). ## Structure ### Library The Admin UI is structured as an Angular library conforming to the [ng-packagr format](https://github.com/ng-packagr/ng-packagr). This library is what is published to npm as `@vendure/admin-ui`. The library consists of a set of modules which are accessible from consuming applications as sub-packages: * `@vendure/admin-ui/core` * `@vendure/admin-ui/catalog` * `@vendure/admin-ui/orders` etc. These library packages are located at [./src/lib](./src/lib) When built with `yarn build`, the output will be located in the `./package` sub directory. This is also the root of the published npm package. ### Application In addition to the library, there is also a full application located at [./src/app](./src/app). This application is used both during development of the Admin UI, and also as the "default" Admin UI without any UI extensions, as provided as the default by the [admin-ui-plugin](../admin-ui-plugin). ## Localization Localization of UI strings is handled by [ngx-translate](http://www.ngx-translate.com/). The translation strings should use the [ICU MessageFormat](http://userguide.icu-project.org/formatparse/messages). Translation keys are automatically extracted by running: ``` yarn extract-translations ``` This scan the source files for any translation keys, and add them to each of the translation files located in [`./src/lib/static/i18n-messages/`](./src/lib/static/i18n-messages/). A report is generated for each language detailing what percentage of the translation tokens are translated into that language: ```text Extracting translation tokens for "src\lib\static\i18n-messages\de.json" de: 592 of 650 tokens translated (91%) ``` This report data is also saved to the [i18n-coverage.json](./i18n-coverage.json) file. To add support for a new language, create a new empty json file (`{}`) in the `i18n-messages` directory named `.json`, where `languageCode` is one of the supported codes as given in the [LanguageCode enum type](../core/src/api/schema/common/language-code.graphql), then run `yarn extract-translations`