From 395bde1d0f78546e759c2ca27c14fda683bf2900 Mon Sep 17 00:00:00 2001 From: Blue Falcon <93707274+blue-falcon-9001@users.noreply.github.com> Date: Sun, 7 Nov 2021 03:28:29 +0100 Subject: [PATCH] Add labels system --- package-lock.json | 22 ++++++++++++++++++++++ package.json | 1 + rollup.config.js | 4 +++- src/labels/EN.json | 1 + src/lib/constants.js | 6 ++++++ src/lib/labels.js | 29 +++++++++++++++++++++++++++++ src/lib/stores.js | 7 ++++++- 7 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 src/labels/EN.json create mode 100644 src/lib/labels.js diff --git a/package-lock.json b/package-lock.json index 715055a..1d162f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ }, "devDependencies": { "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.0.6", "ethers": "^5.5.1", "rollup": "^2.58.0", @@ -819,6 +820,18 @@ "rollup": "^2.38.3" } }, + "node_modules/@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.0.8" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, "node_modules/@rollup/plugin-node-resolve": { "version": "13.0.6", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", @@ -2651,6 +2664,15 @@ "resolve": "^1.17.0" } }, + "@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8" + } + }, "@rollup/plugin-node-resolve": { "version": "13.0.6", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", diff --git a/package.json b/package.json index cb567d6..893b71e 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "homepage": "https://github.com/0xcap/client-v3#readme", "devDependencies": { "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.0.6", "ethers": "^5.5.1", "rollup": "^2.58.0", diff --git a/rollup.config.js b/rollup.config.js index 68588d5..5299bd3 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,5 +1,6 @@ import svelte from 'rollup-plugin-svelte'; import commonjs from '@rollup/plugin-commonjs'; +import json from '@rollup/plugin-json'; import resolve from '@rollup/plugin-node-resolve'; import livereload from 'rollup-plugin-livereload'; import { terser } from 'rollup-plugin-terser'; @@ -47,6 +48,7 @@ export default { dev: !production } }), + json(), production && gzipPlugin(), production && gzipPlugin({ @@ -103,4 +105,4 @@ export default { usePolling: true } } -}; \ No newline at end of file +}; diff --git a/src/labels/EN.json b/src/labels/EN.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/src/labels/EN.json @@ -0,0 +1 @@ +{} diff --git a/src/lib/constants.js b/src/lib/constants.js index d91ffb7..d2ce149 100644 --- a/src/lib/constants.js +++ b/src/lib/constants.js @@ -99,4 +99,10 @@ export const CHAINDATA = { } } +// Languages +export const LANG = { + EN: "EN", +}; + +export const LANG_DEFAULT = LANG.EN; diff --git a/src/lib/labels.js b/src/lib/labels.js new file mode 100644 index 0000000..b71a061 --- /dev/null +++ b/src/lib/labels.js @@ -0,0 +1,29 @@ +import EN from '../labels/EN.json'; + +import { derived } from 'svelte/store'; + +import { LANG_DEFAULT } from './constants'; +import { language as lang } from './stores'; + +const LABELS = { + EN, +}; + +function dig(obj, keys) { + let current = obj; + for (const key of keys) { + if (key in current) { + current = current[key]; + } else { + return; + } + } + return current; +} + +function find(lang, label) { + const keys = label.split('.'); + return dig(LABELS[lang], keys) || dig(LABELS[LANG_DEFAULT], keys); +} + +export const L = derived([lang], ($lang) => (label) => find($lang, label)); diff --git a/src/lib/stores.js b/src/lib/stores.js index 2a8b168..856990c 100644 --- a/src/lib/stores.js +++ b/src/lib/stores.js @@ -1,5 +1,7 @@ import { writable, derived } from 'svelte/store' +import { LANG_DEFAULT } from './constants' + // History export const history = writable([]); @@ -60,4 +62,7 @@ export const address = writable(null); export const allowances = writable({}); -export const wrongNetwork = writable(false); \ No newline at end of file +export const wrongNetwork = writable(false); + +// Language +export const language = writable(LANG_DEFAULT);