diff --git a/app/scripts/comp/settings-manager.js b/app/scripts/comp/settings-manager.js index dabffb98..9e9d9479 100644 --- a/app/scripts/comp/settings-manager.js +++ b/app/scripts/comp/settings-manager.js @@ -7,6 +7,23 @@ const SettingsManager = { neutralLocale: null, activeLocale: 'en', + allLocales: { + 'en': 'English', + 'de-DE': 'Deutsch', + 'es-ES': 'Español', + 'fr-FR': 'Français', + 'it-IT': 'Italiano', + 'nl-NL': 'Nederlands', + 'pl': 'Polski', + 'pt-PT': 'Português', + 'ru-RU': 'Русский', + 'sv-SE': 'Svenska', + 'zh-CN': '汉语' + }, + + customLocales: { + }, + setBySettings: function(settings) { if (settings.get('theme')) { this.setTheme(settings.get('theme')); @@ -51,7 +68,11 @@ const SettingsManager = { } let localeValues; if (loc !== 'en') { - localeValues = require('../locales/' + loc + '.json'); + if (this.customLocales[loc]) { + localeValues = this.customLocales[loc]; + } else { + localeValues = require('../locales/' + loc + '.json'); + } } if (!this.neutralLocale) { this.neutralLocale = _.clone(Locale); diff --git a/app/scripts/plugins/plugin-collection.js b/app/scripts/plugins/plugin-collection.js new file mode 100644 index 00000000..878a794c --- /dev/null +++ b/app/scripts/plugins/plugin-collection.js @@ -0,0 +1,10 @@ +'use strict'; + +const Backbone = require('backbone'); +const Plugin = require('./plugin'); + +const PluginCollection = Backbone.Collection.extend({ + model: Plugin +}); + +module.exports = PluginCollection; diff --git a/app/scripts/plugins/plugin-manager.js b/app/scripts/plugins/plugin-manager.js index 6d8488e1..cc76f275 100644 --- a/app/scripts/plugins/plugin-manager.js +++ b/app/scripts/plugins/plugin-manager.js @@ -1,28 +1,40 @@ 'use strict'; -// const Logger = require('../util/logger'); +const Backbone = require('backbone'); const Plugin = require('./plugin'); +const PluginCollection = require('./plugin-collection'); -// const logger = new Logger('plugin-manager'); - -const PluginManager = { - plugins: {}, +const PluginManager = Backbone.Model.extend({ + defaults: { + state: '', + installing: false, + plugins: new PluginCollection() + }, install(url) { + this.set('installing', true); return Plugin.load(url).then(plugin => { - const name = plugin.get('name'); + const plugins = this.get('plugins'); return Promise.resolve().then(() => { - if (this.plugins[name]) { - return this.plugins[name].uninstall().then(() => { - delete this.plugins[name]; + if (plugins.get(plugin.id)) { + return plugins.get(plugin.id).uninstall().then(() => { + plugins.remove(plugin.id); }); } }).then(() => { - this.plugins[name] = plugin; - return plugin.install(); + plugins.push(plugin); + return plugin.install().then(() => { + this.set('installing', false); + }).catch(e => { + this.set('installing', false); + throw e; + }); }); + }).catch(e => { + this.set('installing', false); + throw e; }); } -}; +}); -module.exports = PluginManager; +module.exports = new PluginManager(); diff --git a/app/scripts/plugins/plugin.js b/app/scripts/plugins/plugin.js index 5398ae07..2b97e6d1 100644 --- a/app/scripts/plugins/plugin.js +++ b/app/scripts/plugins/plugin.js @@ -4,10 +4,13 @@ const kdbxweb = require('kdbxweb'); const Backbone = require('backbone'); const PluginApi = require('./plugin-api'); const Logger = require('../util/logger'); +const SettingsManager = require('../comp/settings-manager'); const commonLogger = new Logger('plugin'); const Plugin = Backbone.Model.extend({ + idAttribute: 'name', + defaults: { name: '', manifest: '', @@ -83,7 +86,7 @@ const Plugin = Backbone.Model.extend({ results.push(this.loadResource('js', url + 'plugin.js')); } if (manifest.resources.loc) { - results.push(this.loadResource('js', url + manifest.locale.name + '.json')); + results.push(this.loadResource('loc', url + manifest.locale.name + '.json')); } return Promise.all(results) .catch(() => { throw 'Error loading plugin resources'; }) @@ -197,14 +200,17 @@ const Plugin = Backbone.Model.extend({ applyLoc(locale, data) { return Promise.resolve().then(() => { - data = JSON.parse(data); - // TODO: apply locale + const text = kdbxweb.ByteUtils.bytesToString(data); + const localeData = JSON.parse(text); + SettingsManager.allLocales[locale.name] = locale.title; + SettingsManager.customLocales[locale.name] = localeData; this.logger.debug('Plugin locale installed'); }); }, removeLoc(locale) { - // TODO: remove locale + delete SettingsManager.allLocales[locale.name]; + delete SettingsManager.customLocales[locale.name]; }, uninstall() { diff --git a/app/scripts/views/settings/settings-general-view.js b/app/scripts/views/settings/settings-general-view.js index bdd6e114..8f753c2e 100644 --- a/app/scripts/views/settings/settings-general-view.js +++ b/app/scripts/views/settings/settings-general-view.js @@ -57,20 +57,6 @@ const SettingsGeneralView = Backbone.View.extend({ hc: 'setGenThemeHc' }, - allLocales: { - 'en': 'English', - 'de-DE': 'Deutsch', - 'es-ES': 'Español', - 'fr-FR': 'Français', - 'it-IT': 'Italiano', - 'nl-NL': 'Nederlands', - 'pl': 'Polski', - 'pt-PT': 'Português', - 'ru-RU': 'Русский', - 'sv-SE': 'Svenska', - 'zh-CN': '汉语' - }, - initialize: function() { this.views = {}; this.listenTo(UpdateModel.instance, 'change:status', this.render, this); @@ -85,7 +71,7 @@ const SettingsGeneralView = Backbone.View.extend({ this.renderTemplate({ themes: _.mapObject(this.allThemes, theme => Locale[theme]), activeTheme: AppSettingsModel.instance.get('theme'), - locales: this.allLocales, + locales: SettingsManager.allLocales, activeLocale: SettingsManager.activeLocale, fontSize: AppSettingsModel.instance.get('fontSize'), expandGroups: AppSettingsModel.instance.get('expandGroups'), diff --git a/app/templates/settings/settings-plugins.hbs b/app/templates/settings/settings-plugins.hbs index e82a4662..e6907e93 100644 --- a/app/templates/settings/settings-plugins.hbs +++ b/app/templates/settings/settings-plugins.hbs @@ -5,7 +5,7 @@
{{res 'setPlInstallDesc'}}
- +
diff --git a/plugins/example/.gitignore b/plugins/examples/psychodelic/.gitignore similarity index 100% rename from plugins/example/.gitignore rename to plugins/examples/psychodelic/.gitignore diff --git a/plugins/example/manifest.json b/plugins/examples/psychodelic/manifest.json similarity index 94% rename from plugins/example/manifest.json rename to plugins/examples/psychodelic/manifest.json index e223fb93..3043b259 100644 --- a/plugins/example/manifest.json +++ b/plugins/examples/psychodelic/manifest.json @@ -1,8 +1,8 @@ { "version": "0.0.1", "manifestVersion": "0.1.0", - "name": "example", - "description": "KeeWeb plugin example", + "name": "psychodelic", + "description": "Crazy animations for KeeWeb", "author": { "name": "antelle", "email": "antelle.net@gmail.com", @@ -15,4 +15,4 @@ "css": "P3qX1ccKLeHI/75sWC/46O/Qs8cq6UFyoW2qPYRn05q8dtAfXr7YKXEndt1BqSqaa+ZanaA6TDmb5FJ/GKQpG1KfuXy+ug92uwSvp6QUd7/hj++OR6RRY/bsL4hA9J2BwMB3jYc58lCPcK2jcu3HCYX5T+I1tFLmqOAKbTUGQxl+a4lc0w/zAq9sEFIvm7Nj66HhF7TMqVoPt6pUBz7oWdTYuKJ3rz46rLd9kzTeaeG6WxGorFc6Sk5tlvy+o9e5S2T0lHJwCHw24rMeOSgwV8rA/RXXnKowVc9Qbb3KwVh2TlKUWRtUuygIIgSsp4GmzT+w8+5hXke7iXDTGczp1Q==" }, "publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1QB+yQofkqIHbHFVAtWhjEFjaxvNekyQx/aK7nEpZzqM8ReoVWbJGVA+7z7MhymwZanbL8uAUrSpNTp5eFWltDksxqHqmXT4UcFU+4reLjYfgwjIaA3c9Q+2JA1Iowqbv3NDcDKm6Ug+dROr04VDCfYE4WRYgGdTYHDbJs5svxUgQ25uc0KKUWAvhYbSKsw43AwmbPbKkHdfZHiS5ZST99HVEJWxn3Kd2zLY9Kk70nu9MzypMLDqxUqjKgdeRCIyZeAYzB75miH3B5vMKhFcdmA8+D6WU2N+6gzKsY5BfqF729uFKSTo4JUKQ5fMU0lKSDHG4qGrkgnURfAUuj9YMQIDAQAB" -} \ No newline at end of file +} diff --git a/plugins/example/plugin.css b/plugins/examples/psychodelic/plugin.css similarity index 100% rename from plugins/example/plugin.css rename to plugins/examples/psychodelic/plugin.css diff --git a/plugins/example/plugin.js b/plugins/examples/psychodelic/plugin.js similarity index 100% rename from plugins/example/plugin.js rename to plugins/examples/psychodelic/plugin.js diff --git a/plugins/examples/square-language/.gitignore b/plugins/examples/square-language/.gitignore new file mode 100644 index 00000000..37fb1323 --- /dev/null +++ b/plugins/examples/square-language/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +*.log +*.pem \ No newline at end of file diff --git a/plugins/examples/square-language/manifest.json b/plugins/examples/square-language/manifest.json new file mode 100644 index 00000000..bd6bc60e --- /dev/null +++ b/plugins/examples/square-language/manifest.json @@ -0,0 +1,21 @@ +{ + "version": "0.0.1", + "manifestVersion": "0.1.0", + "name": "square-language", + "description": "KeeWeb language which replaces everything with squares", + "author": { + "name": "antelle", + "email": "antelle.net@gmail.com", + "url": "http://antelle.net" + }, + "licence": "MIT", + "url": "https://keeweb.info", + "resources": { + "loc": "iQeeuzk/MuNvmqIboqMMvz+Jyw7dHBJtqNe9ja2i8GJrjbPIG0wPgiRohSFwiAqNDrRQlvfhoNdyvp7UlGO4fAWLaN4h4IUP/iQo7CElYQFMuN+4psJnAkx7HJajtMrJ5lHH5w5aeHxVW5jEYzY0SR2zxzYqxZVifOwJmj8/oKweWzkxt7Cs/2NfcFXLnrU83IyFk75yunvbDP7jlt08mEyrfOQIwzGnsrEiEZ6ha6w0kG2cd6Mmda/12Jnk95ZpQrZcK5J+nafIXYcGwvaQhmWMjZzIWp7/tDdqhBRUhiRDFQwl3rjdubeKUBjYvxZDkDH2DPiOR8kMw2kT6mNqiQ==" + }, + "locale": { + "name": "xs-XS", + "title": "▮▮▮▮▮▮▮" + }, + "publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1QB+yQofkqIHbHFVAtWhjEFjaxvNekyQx/aK7nEpZzqM8ReoVWbJGVA+7z7MhymwZanbL8uAUrSpNTp5eFWltDksxqHqmXT4UcFU+4reLjYfgwjIaA3c9Q+2JA1Iowqbv3NDcDKm6Ug+dROr04VDCfYE4WRYgGdTYHDbJs5svxUgQ25uc0KKUWAvhYbSKsw43AwmbPbKkHdfZHiS5ZST99HVEJWxn3Kd2zLY9Kk70nu9MzypMLDqxUqjKgdeRCIyZeAYzB75miH3B5vMKhFcdmA8+D6WU2N+6gzKsY5BfqF729uFKSTo4JUKQ5fMU0lKSDHG4qGrkgnURfAUuj9YMQIDAQAB" +} diff --git a/plugins/examples/square-language/xs-XS.json b/plugins/examples/square-language/xs-XS.json new file mode 100644 index 00000000..10c47171 --- /dev/null +++ b/plugins/examples/square-language/xs-XS.json @@ -0,0 +1,504 @@ +{ + "months": ["▮▮▮▮▮▮▮", "▮▮▮▮▮▮▮▮", "▮▮▮▮▮", "▮▮▮▮▮", "▮▮▮", "▮▮▮▮", "▮▮▮▮", "▮▮▮▮▮▮", "▮▮▮▮▮▮▮▮▮", "▮▮▮▮▮▮▮", "▮▮▮▮▮▮▮▮", "▮▮▮▮▮▮▮▮"], + "monthsShort": ["▮▮▮", "▮▮▮", "▮▮▮", "▮▮▮", "▮▮▮", "▮▮▮", "▮▮▮", "▮▮▮", "▮▮▮", "▮▮▮", "▮▮▮", "▮▮▮"], + "weekdays": ["▮▮▮▮▮▮", "▮▮▮▮▮▮", "▮▮▮▮▮▮▮", "▮▮▮▮▮▮▮▮▮", "▮▮▮▮▮▮▮▮", "▮▮▮▮▮▮", "▮▮▮▮▮▮▮▮"], + "weekdaysShort": ["▮▮▮", "▮▮▮", "▮▮▮", "▮▮▮", "▮▮▮", "▮▮▮", "▮▮▮"], + + "retToApp": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "name": "▮▮▮▮", + "icon": "▮▮▮▮", + "title": "▮▮▮▮▮", + "password": "▮▮▮▮▮▮▮▮", + "user": "▮▮▮▮", + "website": "▮▮▮▮▮▮▮", + "tags": "▮▮▮▮", + "notes": "▮▮▮▮▮", + "entry": "▮▮▮▮▮", + "group": "▮▮▮▮▮", + "noTitle": "▮▮▮▮▮▮▮▮", + "or": "▮▮", + "notImplemented": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "saveChanges": "▮▮▮▮▮▮▮▮▮▮▮▮", + "discardChanges": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "advanced": "▮▮▮▮▮▮▮▮", + "shortcuts": "▮▮▮▮▮▮▮▮▮", + "help": "▮▮▮▮", + "settings": "▮▮▮▮▮▮▮▮", + "plugins": "▮▮▮▮▮▮▮", + "history": "▮▮▮▮▮▮▮", + + "cache": "▮▮▮▮▮", + "file": "▮▮▮▮", + "webdav": "▮▮▮▮▮▮", + "dropbox": "▮▮▮▮▮▮▮", + "gdrive": "▮▮▮▮▮▮▮▮▮▮▮▮", + "onedrive": "▮▮▮▮▮▮▮▮", + + "menuAllItems": "▮▮▮▮▮▮▮▮▮", + "menuColors": "▮▮▮▮▮▮", + "menuTrash": "▮▮▮▮▮", + "menuSetGeneral": "▮▮▮▮▮▮▮", + "menuSetAbout": "▮▮▮▮▮", + "menuAlertNoTags": "▮▮▮▮▮▮▮", + "menuAlertNoTagsBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "menuEmptyTrash": "▮▮▮▮▮▮▮▮▮▮▮", + "menuEmptyTrashAlert": "▮▮▮▮▮▮▮▮▮▮▮▮", + "menuEmptyTrashAlertBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "menuItemCollapsed": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "alertYes": "▮▮▮", + "alertNo": "▮▮", + "alertOk": "▮▮", + "alertCancel": "▮▮▮▮▮▮", + "alertSignIn": "▮▮▮▮▮▮▮", + "alertCopy": "▮▮▮▮", + "alertClose": "▮▮▮▮▮", + + "appBeta": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "footerOpen": "▮▮▮▮▮▮▮▮▮▮", + "footerSyncError": "▮▮▮▮▮▮▮▮▮▮", + "footerTitleGen": "▮▮▮▮▮▮▮▮", + "footerTitleLock": "▮▮▮▮", + + "genLen": "▮▮▮▮▮▮", + "genNewPass": "▮▮▮▮▮▮▮▮▮▮▮▮", + "genPresetDefault": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "genPresetDerived": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "genPresetPronounceable": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "genPresetMed": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "genPresetLong": "▮▮▮▮", + "genPresetPin4": "▮▮▮▮▮▮▮▮▮▮▮", + "genPresetMac": "▮▮▮▮▮▮▮▮▮▮▮", + "genPresetHash128": "▮▮▮▮▮▮▮▮▮▮▮▮", + "genPresetHash256": "▮▮▮▮▮▮▮▮▮▮▮▮", + + "grpTitle": "▮▮▮▮▮", + "grpSearch": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "grpAutoType": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "grpAutoTypeSeq": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "grpAutoTypeSeqDefault": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "grpTrash": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "tagTitle": "▮▮▮", + "tagTrash": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "tagRename": "▮▮▮▮▮▮", + "tagTrashQuestion": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "tagTrashQuestionBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "tagExists": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "tagExistsBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "tagBadName": "▮▮▮▮▮▮▮▮", + "tagBadNameBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "genPsTitle": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "genPsCreate": "▮▮▮▮▮▮▮▮▮▮", + "genPsDelete": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "genPsNew": "▮▮▮▮▮▮", + "genPsEnabled": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "genPsDefault": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "genPsDefaultLength": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "genPsUpper": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "genPsLower": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "genPsDigits": "▮▮▮▮▮▮", + "genPsSpecial": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "genPsBrackets": "▮▮▮▮▮▮▮▮", + "genPsHigh": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "genPsAmbiguous": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "genPsInclude": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "genPsExample": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "keyChangeTitleRemote": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "keyChangeMessageRemote": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "keyChangeTitleExpired": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "keyChangeMessageExpired": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "keyChangeRepeatPassword": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "iconFavTitle": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "iconSelCustom": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "listEmptyTitle": "▮▮▮▮▮", + "listEmptyAdd": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "listGroup": "▮▮▮▮▮", + "listNoWebsite": "▮▮▮▮▮▮▮▮▮▮", + "listNoUser": "▮▮▮▮▮▮▮", + "listNoAttachments": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "searchAddNew": "▮▮▮▮▮▮▮", + "searchSort": "▮▮▮▮", + "searchCreated": "▮▮▮▮▮▮▮", + "searchUpdated": "▮▮▮▮▮▮▮", + "searchAttachments": "▮▮▮▮▮▮▮▮▮▮▮", + "searchAZ": "▮▮▮▮▮▮", + "searchZA": "▮▮▮▮▮▮", + "searchON": "▮▮▮▮▮▮▮▮▮▮", + "searchNO": "▮▮▮▮▮▮▮▮▮▮", + "searchShiftClickOr": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "searchAdvTitle": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "searchSearchIn": "▮▮▮▮▮▮▮▮▮", + "searchOther": "▮▮▮▮▮▮▮▮▮▮▮▮", + "searchProtect": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "searchOptions": "▮▮▮▮▮▮▮", + "searchCase": "▮▮▮▮▮▮▮▮▮▮", + "searchRegex": "▮▮▮▮▮", + + "openOpen": "▮▮▮▮", + "openNew": "▮▮▮", + "openMore": "▮▮▮▮", + "openDemo": "▮▮▮▮", + "openXml": "▮▮▮▮▮▮▮▮▮▮", + "openCaps": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openClickToOpen": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openKeyFile": "▮▮▮▮▮▮▮▮", + "openKeyFileDropbox": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openDropHere": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openFailedRead": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openNothingFound": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openNothingFoundBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openNothingFoundBodyFolder": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openAppFolder": "▮▮▮", + "openRootFolder": "▮▮▮▮", + "openSelectFile": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openSelectFileBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openPassFor": "▮▮▮▮▮▮▮▮▮▮▮▮", + "openRemoveLastQuestion": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openRemoveLastQuestionBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openRemoveLastQuestionModBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openLocalFile": "▮▮▮▮▮▮▮▮▮▮", + "openLocalFileBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openLocalFileDontShow": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openWrongFile": "▮▮▮▮▮▮▮▮", + "openWrongFileBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openKdbFileBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openConfigHeader": "▮▮▮▮▮▮▮▮▮▮▮", + "openUrl": "▮▮▮", + "openUrlDesc": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openUser": "▮▮▮▮", + "openUserDesc": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openUserPlaceholder": "▮▮▮▮▮▮▮", + "openPass": "▮▮▮▮▮▮▮▮", + "openPassDesc": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openPassPlaceholder": "▮▮▮▮▮▮▮▮▮▮▮", + "openConfigError": "▮▮▮▮▮▮▮▮▮", + "openConfigErrorNotFound": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openError": "▮▮▮▮▮", + "openErrorDescription": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "openErrorFileNotFound": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "detAttDownload": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detAttDelToRemove": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detEmpty": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detGroupRestore": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detHistoryClickPoint": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detHistoryReturn": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detHistoryRevert": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detHistoryDel": "▮▮▮▮▮▮▮▮▮▮▮▮", + "detHistoryEmpty": "▮▮▮▮▮", + "detHistoryModified": "▮▮▮▮▮▮▮▮", + "detHistoryRec": "▮▮▮▮▮▮", + "detHistoryRecs": "▮▮▮▮▮▮▮", + "detHistoryVersion": "▮▮▮▮▮▮▮", + "detHistorySaved": "▮▮▮▮▮", + "detHistoryNoTitle": "▮▮▮▮▮▮▮▮", + "detHistoryCurState": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detHistoryCurUnsavedState": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detBackToList": "▮▮▮▮▮▮▮▮▮▮▮▮", + "detSetIconColor": "▮▮▮▮▮▮▮▮▮▮▮▮", + "detSetIcon": "▮▮▮▮▮▮▮▮▮▮▮", + "detDropAttachments": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detDelEntry": "▮▮▮▮▮▮", + "detDelEntryPerm": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detExpires": "▮▮▮▮▮▮▮", + "detExpired": "▮▮▮▮▮▮▮", + "detGroup": "▮▮▮▮▮", + "detCreated": "▮▮▮▮▮▮▮", + "detUpdated": "▮▮▮▮▮▮▮", + "detNetField": "▮▮▮▮▮▮▮▮▮", + "detAttachments": "▮▮▮▮▮▮▮▮▮▮▮", + "detDelFromTrash": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detDelFromTrashBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detDelFromTrashBodyHint": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detFieldCopied": "▮▮▮▮▮▮", + "detFieldCopiedTime": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detCopyHint": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detMore": "▮▮▮▮", + "detClickToAddField": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detMenuAddNewField": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detMenuShowEmpty": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detMenuHideEmpty": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detMenuAddField": "▮▮▮▮▮▮", + "detMenuCopyPassword": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detMenuCopyUser": "▮▮▮▮▮▮▮▮▮", + "detSetupOtp": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detClone": "▮▮▮▮▮▮▮▮▮▮▮", + "detClonedName": "▮▮▮▮", + "detAutoType": "▮▮▮▮▮▮▮▮▮", + "detAutoTypeSettings": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detAutoTypeEnabled": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detAutoTypeSequence": "▮▮▮▮▮▮▮▮▮▮", + "detAutoTypeInput": "▮▮▮▮▮", + "detAutoTypeShortcutsDesc": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detAutoTypeObfuscation": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detAutoTypeWindow": "▮▮▮▮▮▮", + "detAutoTypeInputWindow": "▮▮▮▮▮▮▮▮▮▮▮▮", + "detSetupOtpAlert": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detSetupOtpAlertBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detSetupOtpAlertBody1": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detSetupOtpAlertBody2": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detSetupOtpAlertBody3": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detSetupOtpAlertBody3Mobile": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detSetupOtpAlertBody4": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detSetupOtpManualButton": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detSetupOtpScanButton": "▮▮▮▮▮▮▮▮▮▮▮", + "detSetupOtpAlertBodyWith": "▮▮▮▮▮▮▮", + "detOtpImageError": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detOtpImageErrorBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detOtpImageReading": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detOtpQrError": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detOtpQrErrorBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detOtpQrWrong": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "detOtpQrWrongBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "autoTypeEntryFields": "▮▮▮▮▮▮▮▮▮▮▮▮", + "autoTypeModifiers": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "autoTypeKeys": "▮▮▮▮", + "autoTypeLink": "▮▮▮▮▮▮▮", + "autoTypeError": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "autoTypeErrorGeneric": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "autoTypeErrorGlobal": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "autoTypeErrorNotInstalled": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "autoTypeHeader": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "autoTypeMsgNoWindow": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "autoTypeMsgMatchedByWindow": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "autoTypeClearFilter": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "autoTypeNoMatches": "▮▮▮▮▮▮▮▮▮▮", + + "appSecWarn": "▮▮▮▮▮▮▮▮▮▮▮", + "appSecWarnBody1": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "appSecWarnBody2": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "appSecWarnBtn": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "appUnsavedWarn": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "appUnsavedWarnBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "appDontExitBtn": "▮▮▮▮▮▮▮▮▮▮", + "appCannotLockAutoInit": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "appCannotLock": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "appAutoSave": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "appSaveError": "▮▮▮▮▮▮▮▮▮▮", + "appSaveErrorBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "appSaveErrorBodyMul": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "appSettingsError": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "appSettingsErrorBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "appTabWarn": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "appTabWarnBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "setGenTitle": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenUpdate": "▮▮▮▮▮▮", + "setGenNewVersion": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenReleaseNotes": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenReloadToUpdate": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenUpdateManual": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenDownloadUpdate": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenUpdateAuto": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenUpdateCheck": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenNoUpdate": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenUpdateChecking": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenCheckUpdate": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenErrorChecking": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenLastCheckSuccess": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenLastCheckVer": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenCheckedAt": "▮▮▮▮▮▮▮▮▮▮", + "setGenLatestVer": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenNewVer": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenDownloadingUpdate": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenExtractingUpdate": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenCheckErr": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenNeverChecked": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenRestartToUpdate": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenDownloadAndRestart": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenAppearance": "▮▮▮▮▮▮▮▮▮▮", + "setGenTheme": "▮▮▮▮▮", + "setGenThemeFb": "▮▮▮▮▮▮▮▮▮", + "setGenThemeDb": "▮▮▮▮▮▮▮▮▮▮", + "setGenThemeWh": "▮▮▮▮▮", + "setGenThemeTe": "▮▮▮▮▮▮▮▮", + "setGenThemeHc": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenThemeSd": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenThemeSl": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenLocale": "▮▮▮▮▮▮▮▮", + "setGenLocImprove": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenLocMsg": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenLocMsgBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenLocMsgLink": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenFontSize": "▮▮▮▮▮▮▮▮▮", + "setGenFontSizeNormal": "▮▮▮▮▮▮", + "setGenFontSizeLarge": "▮▮▮▮▮", + "setGenFontSizeLargest": "▮▮▮▮▮▮▮", + "setGenShowSubgroups": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenTableView": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenColorfulIcons": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenFunction": "▮▮▮▮▮▮▮▮", + "setGenAutoSync": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenRememberKeyFiles": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenNoRememberKeyFiles": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenRememberKeyFilesData": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenRememberKeyFilesPath": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenLockInactive": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenNoAutoLock": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenLockMinutes": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenLockHour": "▮▮▮▮▮▮▮▮▮▮", + "setGenLockHours": "▮▮▮▮▮▮▮▮▮▮▮", + "setGenLockDay": "▮▮▮▮▮▮▮▮", + "setGenClearClip": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenNoClear": "▮▮▮▮▮▮▮▮▮▮▮", + "setGenClearSeconds": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenClearMinute": "▮▮▮▮▮▮▮▮▮▮▮", + "setGenMinInstead": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenLockMinimize": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenLockCopy": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenStorage": "▮▮▮▮▮▮▮", + "setGenShowAdvanced": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenDevTools": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenTryBeta": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenTryBetaWarning": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenTryBetaWarningBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setGenShowAppLogs": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "setFilePath": "▮▮▮▮▮▮▮▮▮", + "setFileStorage": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileIntl": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileLocalHint": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileDownloadApp": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileSave": "▮▮▮▮", + "setFileSaveTo": "▮▮▮▮▮▮▮▮▮▮▮", + "setFileClose": "▮▮▮▮▮", + "setFileSync": "▮▮▮▮", + "setFileSaveToXml": "▮▮▮", + "setFileLastSync": "▮▮▮▮▮▮▮▮▮", + "setFileLastSyncUnknown": "▮▮▮▮▮▮▮", + "setFileSyncInProgress": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileSyncError": "▮▮▮▮▮▮▮▮▮▮", + "setFilePass": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFilePassChanged": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileKeyFile": "▮▮▮▮▮▮▮▮", + "setFileSelKeyFile": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileNames": "▮▮▮▮▮", + "setFileDefUser": "▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileEnableTrash": "▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileHistLen": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileHistSize": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileBackups": "▮▮▮▮▮▮▮", + "setFileBackupEnable": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileBackupPath": "▮▮▮▮▮▮▮▮▮▮▮", + "setFileBackupTime": "▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileBackupNow": "▮▮▮▮▮▮▮▮▮▮", + "setFileBackupNowWorking": "▮▮▮▮▮▮▮▮▮▮", + "setFileBackupError": "▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileBackupErrorDescription": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileBackupOnSave": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileBackupDaily": "▮▮▮▮▮", + "setFileBackupWeekly": "▮▮▮▮▮▮", + "setFileBackupMonthly": "▮▮▮▮▮▮▮", + "setFileBackupManually": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileRounds": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileKdfParams": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileKdfParamsIter": "▮▮▮▮▮▮▮▮▮▮", + "setFileKdfParamsMem": "▮▮▮▮▮▮▮▮▮▮", + "setFileKdfParamsPar": "▮▮▮▮▮▮▮▮▮▮▮", + "setFileKeyChangeForce": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileUseKeyFile": "▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileUseGenKeyFile": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileUseOldKeyFile": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileGenKeyFile": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileDontUseKeyFile": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileEmptyPass": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileEmptyPassBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileSaveError": "▮▮▮▮▮▮▮▮▮▮", + "setFileSaveErrorBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileAlreadyExists": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileAlreadyExistsBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileUnsaved": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileUnsavedBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileCloseNoSave": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileDontClose": "▮▮▮▮▮▮▮▮▮▮▮", + "setFileNoWebDavUpload": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setFileNoWebDavUploadBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "setShTitle": "▮▮▮▮▮▮▮▮▮", + "setShShowAll": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setShColors": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setShTrash": "▮▮▮▮▮▮▮▮▮▮▮", + "setShFind": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setShClearSearch": "▮▮▮▮▮▮▮▮▮▮▮▮", + "setShCopyPass": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setShCopyUser": "▮▮▮▮▮▮▮▮▮", + "setShCopyUrl": "▮▮▮▮▮▮▮▮▮▮▮▮", + "setShAutoType": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setShPrev": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setShNext": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setShCreateEntry": "▮▮▮▮▮▮▮▮▮▮▮▮", + "setShOpen": "▮▮▮▮▮▮▮▮▮▮", + "setShSave": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setShGen": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setShSet": "▮▮▮▮▮▮▮▮▮▮▮▮", + "setShCopyPassGlobal": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setShCopyUserGlobal": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setShCopyUrlGlobal": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setShAutoTypeGlobal": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setShLock": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "setPlInstallTitle": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setPlInstallDesc": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setPlInstallLabel": "▮▮▮▮▮▮▮▮▮▮", + "setPlInstallBtn": "▮▮▮▮▮▮▮", + "setPlInstallBtnProgress": "▮▮▮▮▮▮▮▮▮▮", + + "setAboutTitle": "▮▮▮▮▮", + "setAboutBuilt": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setAboutLic": "▮▮▮▮▮▮▮", + "setAboutLicComment": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setAboutFirst": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setAboutSecond": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setAboutSource": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "setHelpFormat": "▮▮▮▮▮▮▮▮▮▮▮", + "setHelpFormatBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setHelpProblems": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setHelpProblems1": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setHelpProblems2": "▮▮▮▮▮", + "setHelpOpenIssue": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setHelpContactLink": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setHelpAppInfo": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setHelpOtherPlatforms": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "setHelpDesktopApps": "▮▮▮▮▮▮▮▮▮▮▮▮", + "setHelpWebApp": "▮▮▮▮▮▮▮", + "setHelpUpdates": "▮▮▮▮▮▮▮", + "setHelpTwitter": "▮▮▮▮▮▮▮▮▮▮▮", + + "dropboxLogin": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxLoginBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxSyncError": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxNotFoundBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxFull": "▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxFullBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxRateLimitedBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxNetError": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxNetErrorBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxErrorBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxErrorRepeatBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxSetupDesc": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxAppKey": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxAppKeyDesc": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxFolder": "▮▮▮▮▮▮▮▮▮▮", + "dropboxFolderDesc": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxFolderSettingsDesc": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxFolderPlaceholder": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxLink": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxLinkApp": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxLinkFull": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "dropboxLinkCustom": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "launcherSave": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "launcherFileFilter": "▮▮▮▮▮▮▮▮▮▮▮▮▮", + + "authPopupRequired": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮", + "authPopupRequiredBody": "▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮" +} diff --git a/plugins/kw-plugin-control.js b/plugins/kw-plugin-control.js index ca469067..d4a97132 100644 --- a/plugins/kw-plugin-control.js +++ b/plugins/kw-plugin-control.js @@ -233,7 +233,8 @@ function createResources(data) { * @license ${data.licence} */ -/* global kw */ +module.exports.uninstall = function() { +}; `); } if (data.resources.css) {