diff --git a/img/ru-flag-round-icon-32.png b/img/ru-flag-round-icon-32.png new file mode 100644 index 00000000..33286ec1 Binary files /dev/null and b/img/ru-flag-round-icon-32.png differ diff --git a/package.json b/package.json index 6065c377..b1e3a754 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ }, "dependencies": { "electron-updater": "5.0.1", - "electron-log": "4.4.6" + "electron-log": "4.4.7" }, "devDependencies": { "electron": "17.4.3", diff --git a/qortal-ui-core/language/de.json b/qortal-ui-core/language/de.json index afd276de..b439ea00 100644 --- a/qortal-ui-core/language/de.json +++ b/qortal-ui-core/language/de.json @@ -14,7 +14,8 @@ "portuguese": "Portugiesisch", "hungarian": "Ungarisch", "serbian": "Serbisch", - "italian": "Italienisch" + "italian": "Italienisch", + "russian": "Russisch" }, "sidemenu": { "mintingdetails": "PRÄGUNGSDETAILS", diff --git a/qortal-ui-core/language/es.json b/qortal-ui-core/language/es.json index c7b07551..1cb21b13 100644 --- a/qortal-ui-core/language/es.json +++ b/qortal-ui-core/language/es.json @@ -14,7 +14,8 @@ "portuguese": "Portugués", "hungarian": "Húngaro", "serbian": "Serbio", - "italian": "Italiano" + "italian": "Italiano", + "russian": "Ruso" }, "sidemenu": { "mintingdetails": "DETALLES DE ACUÑACIÓN", diff --git a/qortal-ui-core/language/fr.json b/qortal-ui-core/language/fr.json index 1a0909ab..32bbf793 100644 --- a/qortal-ui-core/language/fr.json +++ b/qortal-ui-core/language/fr.json @@ -14,7 +14,8 @@ "portuguese": "Portugais", "hungarian": "Hongrois", "serbian": "Serbe", - "italian": "Italien" + "italian": "Italien", + "russian": "Russe" }, "sidemenu": { "mintingdetails": "DETAILS DE FRAPPE", @@ -186,7 +187,7 @@ "wchange14": "Date", "wchange15": "Signature de la transaction", "wchange16": "Hachage de la transaction", - "wchange17": "Envoyé", + "wchange17": "Envoyer", "wchange18": "Depuis l'adresse", "wchange19": "Solde disponible", "wchange20": "A (adresse ou nom)", diff --git a/qortal-ui-core/language/hindi.json b/qortal-ui-core/language/hindi.json index f86cad50..613dd569 100644 --- a/qortal-ui-core/language/hindi.json +++ b/qortal-ui-core/language/hindi.json @@ -15,7 +15,8 @@ "portuguese": "पुर्तगाली", "hungarian": "हंगेरी", "serbian": "सर्बियाई", - "italian": "इतालवी" + "italian": "इतालवी", + "russian": "रूसी" }, "sidemenu": { diff --git a/qortal-ui-core/language/hr.json b/qortal-ui-core/language/hr.json index 115e45f3..d166aa16 100644 --- a/qortal-ui-core/language/hr.json +++ b/qortal-ui-core/language/hr.json @@ -14,7 +14,8 @@ "portuguese": "Portugalski", "hungarian": "Mađarski", "serbian": "Srpski", - "italian": "Talijanski" + "italian": "Talijanski", + "russian": "Ruski" }, "sidemenu": { "mintingdetails": "DETALJI O MINTANJU", diff --git a/qortal-ui-core/language/hu.json b/qortal-ui-core/language/hu.json index 35f0642d..7bd9b97f 100644 --- a/qortal-ui-core/language/hu.json +++ b/qortal-ui-core/language/hu.json @@ -14,7 +14,8 @@ "portuguese": "Portugál", "hungarian": "Magyar", "serbian": "Szerb", - "italian": "Olasz" + "italian": "Olasz", + "russian": "Orosz" }, "sidemenu": { "mintingdetails": "VERÉSI RÉSZLETEK", diff --git a/qortal-ui-core/language/it.json b/qortal-ui-core/language/it.json index 7b004fa0..a71d3e33 100644 --- a/qortal-ui-core/language/it.json +++ b/qortal-ui-core/language/it.json @@ -14,7 +14,8 @@ "portuguese": "Portoghese", "hungarian": "Ungherese", "serbian": "Serbo", - "italian": "Italiano" + "italian": "Italiano", + "russian": "Russo" }, "sidemenu": { "mintingdetails": "DETTAGLI DI MINTING", diff --git a/qortal-ui-core/language/pl.json b/qortal-ui-core/language/pl.json index 66746185..cf74f411 100644 --- a/qortal-ui-core/language/pl.json +++ b/qortal-ui-core/language/pl.json @@ -14,7 +14,8 @@ "portuguese": "Portugalski", "hungarian": "Węgierski", "serbian": "Serbski", - "italian": "Włoski" + "italian": "Włoski", + "russian": "Rosyjski" }, "sidemenu": { "mintingdetails": "SZCZEGÓŁY MINTOWANIA", diff --git a/qortal-ui-core/language/pt.json b/qortal-ui-core/language/pt.json index 562a5737..bfbff7f9 100644 --- a/qortal-ui-core/language/pt.json +++ b/qortal-ui-core/language/pt.json @@ -14,7 +14,8 @@ "portuguese": "Português", "hungarian": "Húngaro", "serbian": "Sérvio", - "italian": "Italiano" + "italian": "Italiano", + "russian": "Russo" }, "sidemenu": { "mintingdetails": "DETALHES DA MINERAÇÃO", diff --git a/qortal-ui-core/language/rs.json b/qortal-ui-core/language/rs.json index 63e8432a..c2a2e285 100644 --- a/qortal-ui-core/language/rs.json +++ b/qortal-ui-core/language/rs.json @@ -14,7 +14,8 @@ "portuguese": "Portugalski", "hungarian": "Mađarski", "serbian": "Srpski", - "italian": "Italijan" + "italian": "Italijan", + "russian": "Ruski" }, "sidemenu": { "mintingdetails": "DETALJI MINTOVANJA", diff --git a/qortal-ui-core/language/ru.json b/qortal-ui-core/language/ru.json index 85599fe8..4b6142e8 100644 --- a/qortal-ui-core/language/ru.json +++ b/qortal-ui-core/language/ru.json @@ -208,7 +208,7 @@ "wchange35": "Тип", "wchange36": "Платеж", "wchange37": "Общая сумма", - "wchange38": "Address has no transactions yet.", + "wchange38": "В адресе еще нет транзакций.", "wchange39": "Не удалось скопировать адрес.", "wchange40": "ОПЛАТА", "wchange41": "Статус", diff --git a/qortal-ui-core/language/us.json b/qortal-ui-core/language/us.json index 2a7e47a6..57841ec3 100644 --- a/qortal-ui-core/language/us.json +++ b/qortal-ui-core/language/us.json @@ -14,7 +14,8 @@ "portuguese": "Portuguese", "hungarian": "Hungarian", "serbian": "Serbian", - "italian": "Italian" + "italian": "Italian", + "russian": "Russian" }, "sidemenu": { "mintingdetails": "MINTING DETAILS", diff --git a/qortal-ui-core/language/zhc.json b/qortal-ui-core/language/zhc.json index 5f952bd9..c63aa994 100644 --- a/qortal-ui-core/language/zhc.json +++ b/qortal-ui-core/language/zhc.json @@ -14,7 +14,8 @@ "portuguese": "葡萄牙文", "hungarian": "匈牙利文", "serbian": "塞尔维亚文", - "italian": "意大利文" + "italian": "意大利文", + "russian": "俄语" }, "sidemenu": { "mintingdetails": "铸币信息", diff --git a/qortal-ui-core/language/zht.json b/qortal-ui-core/language/zht.json index bba97ea3..e59df6f3 100644 --- a/qortal-ui-core/language/zht.json +++ b/qortal-ui-core/language/zht.json @@ -14,7 +14,8 @@ "portuguese": "葡萄牙文", "hungarian": "匈牙利文", "serbian": "塞爾維亞文", - "italian": "意大利文" + "italian": "意大利文", + "russian": "俄語" }, "sidemenu": { "mintingdetails": "鑄幣信息", diff --git a/qortal-ui-core/src/components/language-selector.js b/qortal-ui-core/src/components/language-selector.js index 19723ee4..68422491 100644 --- a/qortal-ui-core/src/components/language-selector.js +++ b/qortal-ui-core/src/components/language-selector.js @@ -51,13 +51,14 @@ class LanguageSelector extends connect(store)(LitElement) { constructor() { super() + this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light' } render() { return html`
diff --git a/qortal-ui-core/src/components/login-view/create-account-section.js b/qortal-ui-core/src/components/login-view/create-account-section.js index ad4b40c4..b285118f 100644 --- a/qortal-ui-core/src/components/login-view/create-account-section.js +++ b/qortal-ui-core/src/components/login-view/create-account-section.js @@ -1,7 +1,7 @@ import { LitElement, html, css } from 'lit' import { connect } from 'pwa-helpers' import { store } from '../../store.js' -import { translate, translateUnsafeHTML } from 'lit-translate' +import { use, get, translate, translateUnsafeHTML, registerTranslateConfig } from 'lit-translate' import { createWallet } from '../../../../qortal-ui-crypto/api/createWallet.js' import FileSaver from 'file-saver' @@ -121,24 +121,27 @@ class CreateAccountSection extends connect(store)(LitElement) { const rePassword = this.shadowRoot.getElementById('rePassword').value if (password === '') { + let snackbar1string = get("login.pleaseenter") snackbar.add({ - labelText: this.renderEnterPassText(), + labelText: `${snackbar1string}`, dismiss: true }) return } if (password != rePassword) { + let snackbar2string = get("login.notmatch") snackbar.add({ - labelText: this.renderNotMatchText(), + labelText: `${snackbar2string}`, dismiss: true }) return } if (password.length < 8 && lastPassword !== password) { + let snackbar3string = get("login.lessthen8") snackbar.add({ - labelText: this.renderLessText(), + labelText: `${snackbar3string}`, dismiss: true }) lastPassword = password @@ -146,8 +149,9 @@ class CreateAccountSection extends connect(store)(LitElement) { } if (this.saveAccount === true && nameInput === '') { + let snackbar4string = get("login.entername") snackbar.add({ - labelText: this.renderEnterNameText(), + labelText: `${snackbar4string}`, dismiss: true }) return @@ -194,8 +198,9 @@ class CreateAccountSection extends connect(store)(LitElement) { backup: { next: e => { if (!this.isDownloadedBackup) { + let snackbar5string = get("login.downloaded") snackbar.add({ - labelText: this.renderBackupText(), + labelText: `${snackbar5string}`, dismiss: true }) } else { @@ -494,30 +499,10 @@ class CreateAccountSection extends connect(store)(LitElement) { return html`${translate("login.prepare")}` } - renderBackupText() { - return html`${translate("login.downloaded")}` - } - renderWelcomeText() { return html`${translate("login.welmessage")}` } - renderEnterPassText() { - return html`${translate("login.pleaseenter")}` - } - - renderNotMatchText() { - return html`${translate("login.notmatch")}` - } - - renderLessText() { - return html`${translate("login.lessthen8")}` - } - - renderEnterNameText() { - return html`${translate("login.entername")}` - } - renderLoadingText() { return html`${translate("login.loading")}` } diff --git a/qortal-ui-core/src/components/login-view/loading-ripple_old.js b/qortal-ui-core/src/components/login-view/loading-ripple_old.js deleted file mode 100644 index c436beb8..00000000 --- a/qortal-ui-core/src/components/login-view/loading-ripple_old.js +++ /dev/null @@ -1,186 +0,0 @@ -import { LitElement, html, css } from 'lit' -import { connect } from 'pwa-helpers' -import { store } from '../../store.js' - -const TRANSITION_EVENT_NAMES = ['transitionend', 'webkitTransitionEnd', 'oTransitionEnd', 'MSTransitionEnd'] - -class LoadingRipple extends connect(store)(LitElement) { - static get properties () { - return { - welcomeMessage: { - type: String, - attribute: 'welcome-message', - reflectToAttribute: true - }, - loadingMessage: { - type: String, - attribute: 'loading-message', - reflectToAttribute: true - } - } - } - - constructor () { - super() - this.welcomeMessage = '' - this.loadingMessage = '' - } - - static get styles () { - return css` - * { - --paper-spinner-color: var(--mdc-theme-secondary); - } - - ` - } - - render () { - return html` - -
-
-
-
-
-

${this.welcomeMessage}

- -

${this.loadingMessage}

-
-
-
-
- ` - } - - firstUpdated () { - this._rippleWrapper = this.shadowRoot.getElementById('rippleWrapper') - this._ripple = this.shadowRoot.getElementById('ripple') - this._rippleContentWrapper = this.shadowRoot.getElementById('rippleContentWrapper') - } - - // duh - open (origin) { - this._rippleWrapper.style.top = origin.y + 'px' - this._rippleWrapper.style.left = origin.x + 'px' - this._rippleContentWrapper.style.marginTop = -origin.y + 'px' - this._rippleContentWrapper.style.marginLeft = -origin.x + 'px' - - return new Promise((resolve, reject) => { - this._ripple.classList.add('activating') - let isOpened = false - const doneOpeningEvent = () => { - if (isOpened) return - // Clear events - TRANSITION_EVENT_NAMES.forEach(name => this._ripple.removeEventListener(name, doneOpeningEvent)) - this._ripple.classList.add('activating-done') - isOpened = true - resolve() - } - TRANSITION_EVENT_NAMES.forEach(name => this._ripple.addEventListener(name, doneOpeningEvent)) - }) - } - - // Fades out - fade () { - return new Promise((resolve, reject) => { - // CAN'T FADE OUT CAUSE THE STUPID THING GETS KILLED CAUSE OF STATE.APP.LOGGEEDIN - // let rippleClosed = false - this._ripple.classList.remove('activating') - this._ripple.classList.remove('activating-done') - this._ripple.classList.remove('disabling') - resolve() - }) - } - - // un-ripples... - close () { - return new Promise((resolve, reject) => { - let rippleClosed = false - this._ripple.classList.add('error') - this._ripple.classList.remove('activating') - this._ripple.classList.remove('activating-done') - const rippleClosedEvent = () => { - if (rippleClosed) return - rippleClosed = true - TRANSITION_EVENT_NAMES.forEach(name => this._ripple.removeEventListener(name, rippleClosedEvent)) - // Reset the ripple - this._ripple.classList.remove('error') - this.rippleIsOpen = false - resolve() - } - TRANSITION_EVENT_NAMES.forEach(name => this._ripple.addEventListener(name, rippleClosedEvent)) - }) - } - - stateChanged (state) { - } -} - -window.customElements.define('loading-ripple', LoadingRipple) diff --git a/qortal-ui-core/src/components/sidenav-menu.js b/qortal-ui-core/src/components/sidenav-menu.js index 20c5f31b..3aa4bcf6 100644 --- a/qortal-ui-core/src/components/sidenav-menu.js +++ b/qortal-ui-core/src/components/sidenav-menu.js @@ -17,7 +17,6 @@ class SidenavMenu extends connect(store)(LitElement) { urls: { type: Object }, theme: { type: String, reflect: true } } - this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light' } static get styles() { @@ -50,6 +49,7 @@ class SidenavMenu extends connect(store)(LitElement) { constructor() { super() this.urls = [] + this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light' } render() { diff --git a/qortal-ui-core/src/functional-components/loading-ripple.js b/qortal-ui-core/src/functional-components/loading-ripple.js index d6b51cb2..4f16b2f9 100644 --- a/qortal-ui-core/src/functional-components/loading-ripple.js +++ b/qortal-ui-core/src/functional-components/loading-ripple.js @@ -29,6 +29,8 @@ class LoadingRipple extends LitElement { static get styles () { return css` * { + --mdc-theme-primary: rgb(3, 169, 244); + --mdc-theme-secondary: var(--mdc-theme-primary); --paper-spinner-color: var(--mdc-theme-secondary); } @@ -53,7 +55,7 @@ class LoadingRipple extends LitElement { height:200vmax; width:200vmax; overflow:hidden; - background: var(--mdc-theme-primary); + background: var(--black); transform: scale(0); overflow:hidden; } @@ -62,7 +64,7 @@ class LoadingRipple extends LitElement { background: var(--mdc-theme-error) } #rippleShader { - background: var(--mdc-theme-surface); + background: var(--white); opacity:0; height:100%; width:100%; @@ -108,9 +110,9 @@ class LoadingRipple extends LitElement {
-

${this.welcomeMessage}

+

${this.welcomeMessage}

-

${this.loadingMessage}

+

${this.loadingMessage}