mempool/frontend
wiz 4658b47007
Implement i18n support in frontend using Angular + Transifex + NGINX
This PR adds basic i18n support into the mempool frontend, together with
a smooth workflow for developers and translators to collaborate:

* Using the existing @angular/localize module, developers add i18n
metadata to any frontend strings their new features or changes modify

* Using the new npm script `i18n-extract-from-source`, developers
extract the i18n data from source code into `src/locale/messages.xlf`

* After pushing the updated `src/locale/messages.xlf` to GitHub, the
Transifex service will update its database from the new source data

* Using the Transifex website UI, translators can work together to
translate all the mempool frontend strings into their native languages

* Using the new npm script `i18n-pull-from-transifex`, developers can
pull in completed translations from Transifex, and commit them into git.

This flow requires an API key from Transifex, which can be obtained at
https://www.transifex.com/user/settings/api/ to be used with the python
script installed by `pip install transifex-client` - after preparing
these, run the npm script which will ask you for the API key the first
time. When downloading is complete, you can test building the frontend,
and if successful, commit the new strings files into git.

This PR implements a new locale selector in the footer of the homepage
dashboard, and includes WIP translations for the following languages:

* Czech (cs)
* German (de)
* Japanese (ja)
* Norwegian (nn)
* Spanish (es)
* Swedish (sv)
* Ukrainian (uk)
* Persian (fa)
* Portugese (pt)
* Turkish (tr)
* Dutch (nl)
* French (fr)
* Chinese (zh)
* Slovenian (sl)
* Korean (ko)
* Polish (pl)

The user-agent's `Accept-Language` header is used to automatically
detect their preferred language, which can be manually overriden by the
pull-down selector, which saves their preference to a cookie, which is
used by nginx to serve the correct HTML bundle to the user.

Remaining tasks include adding i18n metadata for strings in the Bisq and
Liquid frontend code, mouseover hover tooltip strings, hard-coded og
metadata inside HTML templates, and many other places. This will be done
in a separate PR.

When upgrading to add i18n support, mempool instance operators must take
care to install the new nginx.conf and nginx-mempool.conf files, and
tweak for their specific site configuration.

Fixes #81
2020-12-02 04:19:33 +09:00
..
.tx Implement i18n support in frontend using Angular + Transifex + NGINX 2020-12-02 04:19:33 +09:00
e2e Upgrade libs. 2020-07-19 19:34:09 +07:00
src Implement i18n support in frontend using Angular + Transifex + NGINX 2020-12-02 04:19:33 +09:00
.browserslistrc Upgrade libs. 2020-07-19 19:34:09 +07:00
.editorconfig New base code for mempool blockchain explorerer 2020-02-26 03:19:26 +09:00
.gitignore Adding support for optional frontend config. 2020-06-22 22:10:49 +07:00
angular.json Implement i18n support in frontend using Angular + Transifex + NGINX 2020-12-02 04:19:33 +09:00
frontend Implement i18n support in frontend using Angular + Transifex + NGINX 2020-12-02 04:19:33 +09:00
generate-config.js Adding support for optional frontend config. 2020-06-22 22:10:49 +07:00
karma.conf.js Renaming angular project to 'mempool' from 'mempoolspace' 2020-04-28 00:14:29 +07:00
mempool-frontend-config.sample.json Addig fronend flag (SPONSORS_ENABLED) to enable Sponsors in the gui. 2020-10-07 23:30:45 +07:00
package-lock.json Upgrade angular from 10.0.4 to 10.2.3, typescript from 3.9.7 to 4.0.5 2020-11-28 04:04:45 +09:00
package.json Implement i18n support in frontend using Angular + Transifex + NGINX 2020-12-02 04:19:33 +09:00
proxy.conf.json Revamping configuration file. 2020-10-19 11:57:02 +07:00
README.md New base code for mempool blockchain explorerer 2020-02-26 03:19:26 +09:00
sync-assets.js Implement i18n support in frontend using Angular + Transifex + NGINX 2020-12-02 04:19:33 +09:00
tsconfig.app.json Upgrade libs. 2020-07-19 19:34:09 +07:00
tsconfig.base.json Upgrade libs. 2020-07-19 19:34:09 +07:00
tsconfig.json Upgrade libs. 2020-07-19 19:34:09 +07:00
tsconfig.spec.json Upgrade libs. 2020-07-19 19:34:09 +07:00
tslint.json upgrading tslint to v6 2020-04-05 00:00:17 +07:00

Mempool Space

This project was generated with Angular CLI version 8.1.2.

Development server

Run ng serve for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Code scaffolding

Run ng generate component component-name to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module.

Build

Run ng build to build the project. The build artifacts will be stored in the dist/ directory. Use the --prod flag for a production build.

Running unit tests

Run ng test to execute the unit tests via Karma.

Running end-to-end tests

Run ng e2e to execute the end-to-end tests via Protractor.

Further help

To get more help on the Angular CLI use ng help or go check out the Angular CLI README.