This commit is contained in:
antelle 2021-05-13 13:56:29 +02:00
parent 0c143d0491
commit ed2c5af7e9
No known key found for this signature in database
GPG Key ID: 63C9777AAB7C563C
9 changed files with 903 additions and 19 deletions

View File

@ -81,14 +81,6 @@
},
"parser": "babel-eslint",
"overrides": [
{
"files": [
"app/scripts/**/*.js"
],
"rules": {
"import/no-commonjs": "error"
}
},
{
"files": [
"*.ts",
@ -164,14 +156,15 @@
"import/no-default-export": "error",
"babel/no-unused-expressions": "error",
"node/no-callback-literal": "off",
"import/no-commonjs": "error",
"import/no-commonjs": "off",
"prefer-template": "off",
"no-else-return": "off",
"jest/valid-expect": "off",
"jest/expect-expect": "off",
"@typescript-eslint/no-unused-vars": "error",
"@typescript-eslint/explicit-module-boundary-types": "error",
"@typescript-eslint/restrict-template-expressions": "off"
"@typescript-eslint/restrict-template-expressions": "off",
"@typescript-eslint/no-var-requires": "off"
},
"parser": "@typescript-eslint/parser",
"parserOptions": {

View File

@ -1,9 +1,7 @@
import * as kdbxweb from 'kdbxweb';
import { Logger } from 'util/logger';
// eslint-disable-next-line @typescript-eslint/no-var-requires,import/no-commonjs
const publicKeyData = require('public-key.pem') as { default: string };
// eslint-disable-next-line @typescript-eslint/no-var-requires,import/no-commonjs
const publicKeyDataNew = require('public-key-new.pem') as { default: string };
const SignatureVerifier = {

View File

@ -1,3 +0,0 @@
import Locale from 'locales/base.json';
export { Locale };

801
app/scripts/util/locale.ts Normal file
View File

@ -0,0 +1,801 @@
const baseLocale = require('locales/base.json') as { [name: string]: string | undefined };
let activeLocale: { [name: string]: string } | undefined;
function getString(name: string): string {
return activeLocale?.[name] ?? (baseLocale[name] || '');
}
function locText(name: string): () => string {
return () => getString(name);
}
function locReplacement(name: string): (replacement: string) => string {
return (replacement) => getString(name).replace('{}', replacement);
}
function setLocale(locale: { [name: string]: string } | undefined): void {
activeLocale = locale;
}
// This code is generated using util/generate-locale.js
const Locale = {
retToApp: locText('retToApp'),
name: locText('name'),
icon: locText('icon'),
title: locText('title'),
password: locText('password'),
user: locText('user'),
website: locText('website'),
tags: locText('tags'),
notes: locText('notes'),
entry: locText('entry'),
group: locText('group'),
noTitle: locText('noTitle'),
or: locText('or'),
history: locText('history'),
template: locText('template'),
templates: locText('templates'),
notImplemented: locText('notImplemented'),
saveChanges: locText('saveChanges'),
discardChanges: locText('discardChanges'),
advanced: locText('advanced'),
shortcuts: locText('shortcuts'),
help: locText('help'),
settings: locText('settings'),
plugins: locText('plugins'),
ctrlKey: locText('ctrlKey'),
shiftKey: locText('shiftKey'),
altKey: locText('altKey'),
error: locText('error'),
oneMinute: locText('oneMinute'),
minutes: locReplacement('minutes'),
oneHour: locText('oneHour'),
hours: locReplacement('hours'),
oneDay: locText('oneDay'),
days: locReplacement('days'),
oneWeek: locText('oneWeek'),
oneMonth: locText('oneMonth'),
oneYear: locText('oneYear'),
cache: locText('cache'),
file: locText('file'),
device: locText('device'),
webdav: locText('webdav'),
dropbox: locText('dropbox'),
gdrive: locText('gdrive'),
onedrive: locText('onedrive'),
menuAllItems: locText('menuAllItems'),
menuColors: locText('menuColors'),
menuTrash: locText('menuTrash'),
menuSetGeneral: locText('menuSetGeneral'),
menuSetBrowser: locText('menuSetBrowser'),
menuSetAbout: locText('menuSetAbout'),
menuSetDevices: locText('menuSetDevices'),
menuAlertNoTags: locText('menuAlertNoTags'),
menuAlertNoTagsBody: locText('menuAlertNoTagsBody'),
menuEmptyTrash: locText('menuEmptyTrash'),
menuEmptyTrashAlert: locText('menuEmptyTrashAlert'),
menuEmptyTrashAlertBody: locText('menuEmptyTrashAlertBody'),
menuItemCollapsed: locText('menuItemCollapsed'),
menuRestoreApp: locReplacement('menuRestoreApp'),
menuQuitApp: locReplacement('menuQuitApp'),
sysMenuAboutKeeWeb: locReplacement('sysMenuAboutKeeWeb'),
sysMenuServices: locText('sysMenuServices'),
sysMenuHide: locReplacement('sysMenuHide'),
sysMenuHideOthers: locText('sysMenuHideOthers'),
sysMenuUnhide: locText('sysMenuUnhide'),
sysMenuQuit: locReplacement('sysMenuQuit'),
sysMenuEdit: locText('sysMenuEdit'),
sysMenuUndo: locText('sysMenuUndo'),
sysMenuRedo: locText('sysMenuRedo'),
sysMenuCut: locText('sysMenuCut'),
sysMenuCopy: locText('sysMenuCopy'),
sysMenuPaste: locText('sysMenuPaste'),
sysMenuSelectAll: locText('sysMenuSelectAll'),
sysMenuWindow: locText('sysMenuWindow'),
sysMenuMinimize: locText('sysMenuMinimize'),
sysMenuClose: locText('sysMenuClose'),
alertYes: locText('alertYes'),
alertNo: locText('alertNo'),
alertOk: locText('alertOk'),
alertCancel: locText('alertCancel'),
alertSignIn: locText('alertSignIn'),
alertCopy: locText('alertCopy'),
alertClose: locText('alertClose'),
alertDoNotAsk: locText('alertDoNotAsk'),
alertAllow: locText('alertAllow'),
alertDeny: locText('alertDeny'),
appBeta: locText('appBeta'),
footerOpen: locText('footerOpen'),
footerSyncError: locText('footerSyncError'),
footerTitleGen: locText('footerTitleGen'),
footerTitleLock: locText('footerTitleLock'),
genLen: locText('genLen'),
genNewPass: locText('genNewPass'),
genPresetDefault: locText('genPresetDefault'),
genPresetDerived: locText('genPresetDerived'),
genPresetPronounceable: locText('genPresetPronounceable'),
genPresetMed: locText('genPresetMed'),
genPresetLong: locText('genPresetLong'),
genPresetPin4: locText('genPresetPin4'),
genPresetMac: locText('genPresetMac'),
genPresetHash128: locText('genPresetHash128'),
genPresetHash256: locText('genPresetHash256'),
genHidePass: locText('genHidePass'),
genShowPass: locText('genShowPass'),
grpTitle: locText('grpTitle'),
grpSearch: locText('grpSearch'),
grpAutoType: locText('grpAutoType'),
grpAutoTypeSeq: locText('grpAutoTypeSeq'),
grpAutoTypeSeqDefault: locText('grpAutoTypeSeqDefault'),
grpTrash: locText('grpTrash'),
tagTitle: locText('tagTitle'),
tagTrash: locText('tagTrash'),
tagRename: locText('tagRename'),
tagTrashQuestion: locText('tagTrashQuestion'),
tagTrashQuestionBody: locText('tagTrashQuestionBody'),
tagExists: locText('tagExists'),
tagExistsBody: locText('tagExistsBody'),
tagBadName: locText('tagBadName'),
tagBadNameBody: locReplacement('tagBadNameBody'),
genPsTitle: locText('genPsTitle'),
genPsCreate: locText('genPsCreate'),
genPsDelete: locText('genPsDelete'),
genPsNew: locText('genPsNew'),
genPsEnabled: locText('genPsEnabled'),
genPsDefault: locText('genPsDefault'),
genPsDefaultLength: locText('genPsDefaultLength'),
genPsUpper: locText('genPsUpper'),
genPsLower: locText('genPsLower'),
genPsDigits: locText('genPsDigits'),
genPsSpecial: locText('genPsSpecial'),
genPsBrackets: locText('genPsBrackets'),
genPsHigh: locText('genPsHigh'),
genPsAmbiguous: locText('genPsAmbiguous'),
genPsInclude: locText('genPsInclude'),
genPsExample: locText('genPsExample'),
genPsPattern: locText('genPsPattern'),
genPsPatternHelp: locText('genPsPatternHelp'),
genPsAllRanges: locText('genPsAllRanges'),
genPsIncluded: locText('genPsIncluded'),
keyChangeTitleRemote: locText('keyChangeTitleRemote'),
keyChangeMessageRemote: locText('keyChangeMessageRemote'),
keyChangeTitleExpired: locText('keyChangeTitleExpired'),
keyChangeMessageExpired: locText('keyChangeMessageExpired'),
keyChangeRepeatPassword: locText('keyChangeRepeatPassword'),
keyEnter: locText('keyEnter'),
keyEsc: locText('keyEsc'),
iconFavTitle: locText('iconFavTitle'),
iconSelCustom: locText('iconSelCustom'),
listEmptyTitle: locText('listEmptyTitle'),
listEmptyAdd: locReplacement('listEmptyAdd'),
listGroup: locText('listGroup'),
listNoWebsite: locText('listNoWebsite'),
listNoUser: locText('listNoUser'),
listNoAttachments: locText('listNoAttachments'),
listAddTemplateHeader: locText('listAddTemplateHeader'),
listAddTemplateBody1: locReplacement('listAddTemplateBody1'),
listAddTemplateBody2: locReplacement('listAddTemplateBody2'),
searchAddNew: locText('searchAddNew'),
searchSort: locText('searchSort'),
searchCreated: locText('searchCreated'),
searchUpdated: locText('searchUpdated'),
searchAttachments: locText('searchAttachments'),
searchAZ: locReplacement('searchAZ'),
searchZA: locReplacement('searchZA'),
searchON: locReplacement('searchON'),
searchNO: locReplacement('searchNO'),
searchShiftClickOr: locText('searchShiftClickOr'),
searchAdvTitle: locText('searchAdvTitle'),
searchSearchIn: locText('searchSearchIn'),
searchOther: locText('searchOther'),
searchProtect: locText('searchProtect'),
searchOptions: locText('searchOptions'),
searchCase: locText('searchCase'),
searchRegex: locText('searchRegex'),
searchRank: locText('searchRank'),
searchExact: locText('searchExact'),
openOpen: locText('openOpen'),
openNew: locText('openNew'),
openNewFile: locText('openNewFile'),
openMore: locText('openMore'),
openDemo: locText('openDemo'),
openGenerate: locText('openGenerate'),
openXml: locText('openXml'),
openCaps: locText('openCaps'),
openClickToOpen: locText('openClickToOpen'),
openKeyFile: locText('openKeyFile'),
openKeyFileDropbox: locText('openKeyFileDropbox'),
openDropHere: locText('openDropHere'),
openFailedRead: locText('openFailedRead'),
openNothingFound: locText('openNothingFound'),
openNothingFoundBody: locText('openNothingFoundBody'),
openSelectFile: locText('openSelectFile'),
openSelectFileBody: locText('openSelectFileBody'),
openPassFor: locText('openPassFor'),
openRemoveLastQuestion: locText('openRemoveLastQuestion'),
openRemoveLastQuestionBody: locText('openRemoveLastQuestionBody'),
openRemoveLastQuestionModBody: locText('openRemoveLastQuestionModBody'),
openLocalFile: locText('openLocalFile'),
openLocalFileBody: locText('openLocalFileBody'),
openLocalFileDontShow: locText('openLocalFileDontShow'),
openWrongFile: locText('openWrongFile'),
openWrongFileBody: locText('openWrongFileBody'),
openKdbFileBody: locText('openKdbFileBody'),
openConfigHeader: locReplacement('openConfigHeader'),
openUrl: locText('openUrl'),
openUrlDesc: locText('openUrlDesc'),
openUser: locText('openUser'),
openUserDesc: locText('openUserDesc'),
openUserPlaceholder: locText('openUserPlaceholder'),
openPass: locText('openPass'),
openPassDesc: locText('openPassDesc'),
openPassPlaceholder: locText('openPassPlaceholder'),
openConfigError: locReplacement('openConfigError'),
openConfigErrorNotFound: locText('openConfigErrorNotFound'),
openError: locText('openError'),
openErrorDescription: locText('openErrorDescription'),
openErrorDescriptionMaybeTouchIdChanged: locText('openErrorDescriptionMaybeTouchIdChanged'),
openErrorFileNotFound: locText('openErrorFileNotFound'),
openListErrorBody: locText('openListErrorBody'),
openShowAllFiles: locText('openShowAllFiles'),
openFileNoCacheError: locText('openFileNoCacheError'),
openChalRespHeader: locText('openChalRespHeader'),
openChalRespLoading: locText('openChalRespLoading'),
openChalRespSelectYubiKey: locText('openChalRespSelectYubiKey'),
openChalRespErrorEmpty: locText('openChalRespErrorEmpty'),
openChalRespErrorEmptyMac: locText('openChalRespErrorEmptyMac'),
detAttDownload: locText('detAttDownload'),
detAttDelToRemove: locText('detAttDelToRemove'),
detAttSave: locText('detAttSave'),
detEmpty: locText('detEmpty'),
detGroupRestore: locText('detGroupRestore'),
detHistoryClickPoint: locText('detHistoryClickPoint'),
detHistoryReturn: locText('detHistoryReturn'),
detHistoryRevert: locText('detHistoryRevert'),
detHistoryDel: locText('detHistoryDel'),
detHistoryEmpty: locText('detHistoryEmpty'),
detHistoryModified: locText('detHistoryModified'),
detHistoryRec: locText('detHistoryRec'),
detHistoryRecs: locText('detHistoryRecs'),
detHistoryVersion: locText('detHistoryVersion'),
detHistorySaved: locText('detHistorySaved'),
detHistoryNoTitle: locText('detHistoryNoTitle'),
detHistoryCurState: locText('detHistoryCurState'),
detHistoryCurUnsavedState: locText('detHistoryCurUnsavedState'),
detHistoryRevertAlert: locText('detHistoryRevertAlert'),
detHistoryRevertAlertBody: locText('detHistoryRevertAlertBody'),
detHistoryDeleteAlert: locText('detHistoryDeleteAlert'),
detHistoryDeleteAlertBody: locText('detHistoryDeleteAlertBody'),
detHistoryDiscardChangesAlert: locText('detHistoryDiscardChangesAlert'),
detHistoryDiscardChangesAlertBody: locText('detHistoryDiscardChangesAlertBody'),
detBackToList: locText('detBackToList'),
detSetIconColor: locText('detSetIconColor'),
detSetIcon: locText('detSetIcon'),
detDropAttachments: locText('detDropAttachments'),
detDelEntry: locText('detDelEntry'),
detDelEntryPerm: locText('detDelEntryPerm'),
detExpires: locText('detExpires'),
detExpired: locText('detExpired'),
detGroup: locText('detGroup'),
detCreated: locText('detCreated'),
detUpdated: locText('detUpdated'),
detNetField: locText('detNetField'),
detAttachments: locText('detAttachments'),
detDelFromTrash: locText('detDelFromTrash'),
detDelFromTrashBody: locText('detDelFromTrashBody'),
detDelFromTrashBodyHint: locText('detDelFromTrashBodyHint'),
detDelToTrash: locText('detDelToTrash'),
detDelToTrashBody: locText('detDelToTrashBody'),
detFieldCopied: locText('detFieldCopied'),
detFieldCopiedTime: locReplacement('detFieldCopiedTime'),
detCopyHint: locText('detCopyHint'),
detMore: locText('detMore'),
detClickToAddField: locText('detClickToAddField'),
detMenuAddNewField: locText('detMenuAddNewField'),
detMenuAddNewWebsite: locText('detMenuAddNewWebsite'),
detMenuShowEmpty: locText('detMenuShowEmpty'),
detMenuHideEmpty: locText('detMenuHideEmpty'),
detMenuAddField: locReplacement('detMenuAddField'),
detMenuCopyPassword: locText('detMenuCopyPassword'),
detMenuCopyUser: locText('detMenuCopyUser'),
detMenuCopyOtp: locText('detMenuCopyOtp'),
detSetupOtp: locText('detSetupOtp'),
detClone: locText('detClone'),
detCopyEntryToClipboard: locText('detCopyEntryToClipboard'),
detClonedName: locText('detClonedName'),
detAutoType: locText('detAutoType'),
detAutoTypeSettings: locText('detAutoTypeSettings'),
detAutoTypeEnabled: locText('detAutoTypeEnabled'),
detAutoTypeSequence: locText('detAutoTypeSequence'),
detAutoTypeInput: locText('detAutoTypeInput'),
detAutoTypeShortcutsDesc: locReplacement('detAutoTypeShortcutsDesc'),
detAutoTypeObfuscation: locText('detAutoTypeObfuscation'),
detAutoTypeWindow: locText('detAutoTypeWindow'),
detAutoTypeInputWindow: locText('detAutoTypeInputWindow'),
detSetupOtpAlert: locText('detSetupOtpAlert'),
detSetupOtpAlertBody: locText('detSetupOtpAlertBody'),
detSetupOtpAlertBody1: locText('detSetupOtpAlertBody1'),
detSetupOtpAlertBody2: locReplacement('detSetupOtpAlertBody2'),
detSetupOtpAlertBody3: locReplacement('detSetupOtpAlertBody3'),
detSetupOtpAlertBody3Mobile: locText('detSetupOtpAlertBody3Mobile'),
detSetupOtpAlertBody4: locText('detSetupOtpAlertBody4'),
detSetupOtpManualButton: locText('detSetupOtpManualButton'),
detSetupOtpScanButton: locText('detSetupOtpScanButton'),
detSetupOtpAlertBodyWith: locReplacement('detSetupOtpAlertBodyWith'),
detOtpImageError: locText('detOtpImageError'),
detOtpImageErrorBody: locText('detOtpImageErrorBody'),
detOtpImageReading: locText('detOtpImageReading'),
detOtpQrError: locText('detOtpQrError'),
detOtpQrErrorBody: locText('detOtpQrErrorBody'),
detOtpQrWrong: locText('detOtpQrWrong'),
detOtpQrWrongBody: locText('detOtpQrWrongBody'),
detOtpField: locText('detOtpField'),
detOtpClickToTouch: locText('detOtpClickToTouch'),
detOtpGenerating: locText('detOtpGenerating'),
detOtpTouch: locReplacement('detOtpTouch'),
detLockField: locText('detLockField'),
detUnlockField: locText('detUnlockField'),
detRevealField: locText('detRevealField'),
detHideField: locText('detHideField'),
detAutoTypeField: locText('detAutoTypeField'),
detIssuesHideTooltip: locText('detIssuesHideTooltip'),
detIssueWeakPassword: locText('detIssueWeakPassword'),
detIssuePoorPassword: locText('detIssuePoorPassword'),
detIssuePwnedPassword: locReplacement('detIssuePwnedPassword'),
detIssuePasswordCheckError: locText('detIssuePasswordCheckError'),
detIssueOldPassword: locText('detIssueOldPassword'),
detIssueCloseAlertHeader: locText('detIssueCloseAlertHeader'),
detIssueCloseAlertBody: locText('detIssueCloseAlertBody'),
detIssueCloseAlertEntry: locText('detIssueCloseAlertEntry'),
detIssueCloseAlertSettings: locText('detIssueCloseAlertSettings'),
autoTypeEntryFields: locText('autoTypeEntryFields'),
autoTypeModifiers: locText('autoTypeModifiers'),
autoTypeKeys: locText('autoTypeKeys'),
autoTypeLink: locText('autoTypeLink'),
autoTypeError: locText('autoTypeError'),
autoTypeErrorGeneric: locReplacement('autoTypeErrorGeneric'),
autoTypeErrorAccessibilityMacOS: locText('autoTypeErrorAccessibilityMacOS'),
autoTypeErrorGlobal: locText('autoTypeErrorGlobal'),
autoTypeErrorNotInstalled: locReplacement('autoTypeErrorNotInstalled'),
autoTypeHeader: locText('autoTypeHeader'),
autoTypeMsgNoWindow: locText('autoTypeMsgNoWindow'),
autoTypeMsgMatchedByWindow: locReplacement('autoTypeMsgMatchedByWindow'),
autoTypeNoMatches: locText('autoTypeNoMatches'),
autoTypeSelectionHint: locText('autoTypeSelectionHint'),
autoTypeSelectionHintAction: locText('autoTypeSelectionHintAction'),
autoTypeSelectionHintOpt: locText('autoTypeSelectionHintOpt'),
autoTypeSelectionHintShift: locText('autoTypeSelectionHintShift'),
autoTypeSelectionOtp: locText('autoTypeSelectionOtp'),
autoTypeUnlockMessage: locText('autoTypeUnlockMessage'),
appSecWarn: locText('appSecWarn'),
appSecWarnBody1: locText('appSecWarnBody1'),
appSecWarnBody2: locText('appSecWarnBody2'),
appSecWarnBtn: locText('appSecWarnBtn'),
appUnsavedWarn: locText('appUnsavedWarn'),
appUnsavedWarnBody: locText('appUnsavedWarnBody'),
appDontExitBtn: locText('appDontExitBtn'),
appCannotLockAutoInit: locText('appCannotLockAutoInit'),
appCannotLock: locText('appCannotLock'),
appAutoSave: locText('appAutoSave'),
appSaveError: locText('appSaveError'),
appSaveErrorBody: locText('appSaveErrorBody'),
appSaveErrorBodyMul: locText('appSaveErrorBodyMul'),
appSaveErrorExitLoseChanges: locText('appSaveErrorExitLoseChanges'),
appSaveErrorExitLoseChangesBody: locText('appSaveErrorExitLoseChangesBody'),
appSettingsError: locText('appSettingsError'),
appSettingsErrorBody: locText('appSettingsErrorBody'),
appNotSupportedError: locText('appNotSupportedError'),
appTabWarn: locText('appTabWarn'),
appTabWarnBody: locText('appTabWarnBody'),
appRightsAlert: locText('appRightsAlert'),
appRightsAlertBody1: locText('appRightsAlertBody1'),
appRightsAlertBody2: locText('appRightsAlertBody2'),
appBrowserAuthComplete: locText('appBrowserAuthComplete'),
setGenTitle: locText('setGenTitle'),
setGenUpdate: locText('setGenUpdate'),
setGenNewVersion: locText('setGenNewVersion'),
setGenReleaseNotes: locText('setGenReleaseNotes'),
setGenReloadToUpdate: locText('setGenReloadToUpdate'),
setGenUpdateManual: locText('setGenUpdateManual'),
setGenDownloadUpdate: locText('setGenDownloadUpdate'),
setGenUpdateAuto: locText('setGenUpdateAuto'),
setGenUpdateCheck: locText('setGenUpdateCheck'),
setGenNoUpdate: locText('setGenNoUpdate'),
setGenUpdateChecking: locText('setGenUpdateChecking'),
setGenCheckUpdate: locText('setGenCheckUpdate'),
setGenErrorChecking: locText('setGenErrorChecking'),
setGenLastCheckSuccess: locReplacement('setGenLastCheckSuccess'),
setGenLastCheckVer: locReplacement('setGenLastCheckVer'),
setGenCheckedAt: locText('setGenCheckedAt'),
setGenLatestVer: locText('setGenLatestVer'),
setGenNewVer: locReplacement('setGenNewVer'),
setGenDownloadingUpdate: locText('setGenDownloadingUpdate'),
setGenExtractingUpdate: locText('setGenExtractingUpdate'),
setGenCheckErr: locText('setGenCheckErr'),
setGenNeverChecked: locText('setGenNeverChecked'),
setGenRestartToUpdate: locText('setGenRestartToUpdate'),
setGenDownloadAndRestart: locText('setGenDownloadAndRestart'),
setGenAppearance: locText('setGenAppearance'),
setGenTheme: locText('setGenTheme'),
setGenThemeDefault: locText('setGenThemeDefault'),
setGenThemeDark: locText('setGenThemeDark'),
setGenThemeLight: locText('setGenThemeLight'),
setGenThemeBlue: locText('setGenThemeBlue'),
setGenThemeFb: locText('setGenThemeFb'),
setGenThemeBl: locText('setGenThemeBl'),
setGenThemeBrown: locText('setGenThemeBrown'),
setGenThemeDb: locText('setGenThemeDb'),
setGenThemeLb: locText('setGenThemeLb'),
setGenThemeTerminal: locText('setGenThemeTerminal'),
setGenThemeTe: locText('setGenThemeTe'),
setGenThemeLt: locText('setGenThemeLt'),
setGenThemeHighContrast: locText('setGenThemeHighContrast'),
setGenThemeHc: locText('setGenThemeHc'),
setGenThemeDc: locText('setGenThemeDc'),
setGenThemeSol: locText('setGenThemeSol'),
setGenThemeSd: locText('setGenThemeSd'),
setGenThemeSl: locText('setGenThemeSl'),
setGenMoreThemes: locText('setGenMoreThemes'),
setGenAutoSwitchTheme: locText('setGenAutoSwitchTheme'),
setGenLocale: locText('setGenLocale'),
setGenLocOther: locText('setGenLocOther'),
setGenFontSize: locText('setGenFontSize'),
setGenFontSizeNormal: locText('setGenFontSizeNormal'),
setGenFontSizeLarge: locText('setGenFontSizeLarge'),
setGenFontSizeLargest: locText('setGenFontSizeLargest'),
setGenTitlebarStyle: locText('setGenTitlebarStyle'),
setGenTitlebarStyleDefault: locText('setGenTitlebarStyleDefault'),
setGenTitlebarStyleHidden: locText('setGenTitlebarStyleHidden'),
setGenTitlebarStyleHiddenInset: locText('setGenTitlebarStyleHiddenInset'),
setGenShowSubgroups: locText('setGenShowSubgroups'),
setGenTableView: locText('setGenTableView'),
setGenColorfulIcons: locText('setGenColorfulIcons'),
setGenUseMarkdown: locText('setGenUseMarkdown'),
setGenUseGroupIconForEntries: locText('setGenUseGroupIconForEntries'),
setGenDirectAutotype: locText('setGenDirectAutotype'),
setGenAutoTypeTitleFilterEnabled: locText('setGenAutoTypeTitleFilterEnabled'),
setGenFunction: locText('setGenFunction'),
setGenAutoSyncOnClose: locText('setGenAutoSyncOnClose'),
setGenAutoSyncTimer: locText('setGenAutoSyncTimer'),
setGenAutoSyncTimerOff: locText('setGenAutoSyncTimerOff'),
setGenAutoSyncTimerOnChange: locText('setGenAutoSyncTimerOnChange'),
setGenAutoSyncTimerInterval: locReplacement('setGenAutoSyncTimerInterval'),
setGenRememberKeyFiles: locText('setGenRememberKeyFiles'),
setGenNoRememberKeyFiles: locText('setGenNoRememberKeyFiles'),
setGenRememberKeyFilesData: locText('setGenRememberKeyFilesData'),
setGenRememberKeyFilesPath: locText('setGenRememberKeyFilesPath'),
setGenLockInactive: locText('setGenLockInactive'),
setGenNoAutoLock: locText('setGenNoAutoLock'),
setGenLockMinutes: locReplacement('setGenLockMinutes'),
setGenLockHour: locText('setGenLockHour'),
setGenLockHours: locReplacement('setGenLockHours'),
setGenLockDay: locText('setGenLockDay'),
setGenClearClip: locText('setGenClearClip'),
setGenNoClear: locText('setGenNoClear'),
setGenClearSeconds: locReplacement('setGenClearSeconds'),
setGenClearMinute: locText('setGenClearMinute'),
setGenMinInstead: locText('setGenMinInstead'),
setGenMinOnFieldCopy: locText('setGenMinOnFieldCopy'),
setGenLock: locText('setGenLock'),
setGenLockMinimize: locText('setGenLockMinimize'),
setGenLockCopy: locText('setGenLockCopy'),
setGenLockAutoType: locText('setGenLockAutoType'),
setGenLockOrSleep: locText('setGenLockOrSleep'),
setGenStorage: locText('setGenStorage'),
setGenDisableOfflineStorage: locText('setGenDisableOfflineStorage'),
setGenShortLivedStorageToken: locText('setGenShortLivedStorageToken'),
setGenStorageLogout: locText('setGenStorageLogout'),
setGenShowAdvanced: locText('setGenShowAdvanced'),
setGenDevTools: locText('setGenDevTools'),
setGenTryBeta: locText('setGenTryBeta'),
setGenTryBetaWarning: locText('setGenTryBetaWarning'),
setGenTryBetaWarningBody: locText('setGenTryBetaWarningBody'),
setGenShowAppLogs: locText('setGenShowAppLogs'),
setGenReloadApp: locText('setGenReloadApp'),
setGenFieldLabelDblClickAutoType: locText('setGenFieldLabelDblClickAutoType'),
setGenTouchId: locText('setGenTouchId'),
setGenTouchIdDisabled: locText('setGenTouchIdDisabled'),
setGenTouchIdMemory: locText('setGenTouchIdMemory'),
setGenTouchIdFile: locText('setGenTouchIdFile'),
setGenTouchIdPass: locText('setGenTouchIdPass'),
setGenAudit: locText('setGenAudit'),
setGenAuditPasswords: locText('setGenAuditPasswords'),
setGenAuditPasswordEntropy: locText('setGenAuditPasswordEntropy'),
setGenExcludePinsFromAudit: locText('setGenExcludePinsFromAudit'),
setGenCheckPasswordsOnHIBP: locReplacement('setGenCheckPasswordsOnHIBP'),
setGenHelpHIBP: locReplacement('setGenHelpHIBP'),
setGenHelpHIBPLink: locText('setGenHelpHIBPLink'),
setGenAuditPasswordAge: locText('setGenAuditPasswordAge'),
setGenAuditPasswordAgeOff: locText('setGenAuditPasswordAgeOff'),
setGenAuditPasswordAgeOneYear: locText('setGenAuditPasswordAgeOneYear'),
setGenAuditPasswordAgeYears: locReplacement('setGenAuditPasswordAgeYears'),
setFilePath: locText('setFilePath'),
setFileStorage: locReplacement('setFileStorage'),
setFileIntl: locText('setFileIntl'),
setFileLocalHint: locText('setFileLocalHint'),
setFileDownloadApp: locText('setFileDownloadApp'),
setFileSave: locText('setFileSave'),
setFileSaveTo: locText('setFileSaveTo'),
setFileClose: locText('setFileClose'),
setFileSync: locText('setFileSync'),
setFileSyncVerb: locText('setFileSyncVerb'),
setFileSaveToXml: locText('setFileSaveToXml'),
setFileSaveToHtml: locText('setFileSaveToHtml'),
setFileLastSync: locText('setFileLastSync'),
setFileLastSyncUnknown: locText('setFileLastSyncUnknown'),
setFileSyncInProgress: locText('setFileSyncInProgress'),
setFileSyncError: locText('setFileSyncError'),
setFilePass: locText('setFilePass'),
setFileConfirmPass: locText('setFileConfirmPass'),
setFilePassChange: locText('setFilePassChange'),
setFilePassChanged: locText('setFilePassChanged'),
setFilePassNotMatch: locText('setFilePassNotMatch'),
setFileKeyFile: locText('setFileKeyFile'),
setFileSelKeyFile: locText('setFileSelKeyFile'),
setFileNames: locText('setFileNames'),
setFileDefUser: locText('setFileDefUser'),
setFileEnableTrash: locText('setFileEnableTrash'),
setFileHistMode: locText('setFileHistMode'),
setFileHistLimited: locText('setFileHistLimited'),
setFileHistDisabled: locText('setFileHistDisabled'),
setFileHistUnlimited: locText('setFileHistUnlimited'),
setFileHistLen: locText('setFileHistLen'),
setFileHistSize: locText('setFileHistSize'),
setFileBackups: locText('setFileBackups'),
setFileBackupEnable: locText('setFileBackupEnable'),
setFileBackupPath: locText('setFileBackupPath'),
setFileBackupTime: locText('setFileBackupTime'),
setFileBackupNow: locText('setFileBackupNow'),
setFileBackupNowWorking: locText('setFileBackupNowWorking'),
setFileBackupError: locText('setFileBackupError'),
setFileBackupErrorDescription: locText('setFileBackupErrorDescription'),
setFileBackupErrorIsDir: locText('setFileBackupErrorIsDir'),
setFileBackupErrorIsDirDescription: locText('setFileBackupErrorIsDirDescription'),
setFileBackupOnSave: locText('setFileBackupOnSave'),
setFileBackupDaily: locText('setFileBackupDaily'),
setFileBackupWeekly: locText('setFileBackupWeekly'),
setFileBackupMonthly: locText('setFileBackupMonthly'),
setFileBackupManually: locText('setFileBackupManually'),
setFileRounds: locText('setFileRounds'),
setFileKdfParams: locText('setFileKdfParams'),
setFileKdfParamsIter: locText('setFileKdfParamsIter'),
setFileKdfParamsMem: locText('setFileKdfParamsMem'),
setFileKdfParamsPar: locText('setFileKdfParamsPar'),
setFileKeyChangeForce: locText('setFileKeyChangeForce'),
setFileUseKeyFile: locText('setFileUseKeyFile'),
setFileUseGenKeyFile: locText('setFileUseGenKeyFile'),
setFileUseOldKeyFile: locText('setFileUseOldKeyFile'),
setFileGenKeyFile: locText('setFileGenKeyFile'),
setFileDontUseKeyFile: locText('setFileDontUseKeyFile'),
setFileEmptyPass: locText('setFileEmptyPass'),
setFileEmptyPassBody: locText('setFileEmptyPassBody'),
setFileSaveError: locText('setFileSaveError'),
setFileSaveErrorBody: locText('setFileSaveErrorBody'),
setFileAlreadyExists: locText('setFileAlreadyExists'),
setFileAlreadyExistsBody: locReplacement('setFileAlreadyExistsBody'),
setFileUnsaved: locText('setFileUnsaved'),
setFileUnsavedBody: locText('setFileUnsavedBody'),
setFileCloseNoSave: locText('setFileCloseNoSave'),
setFileDontClose: locText('setFileDontClose'),
setFileFormatVersion: locText('setFileFormatVersion'),
setFileExportRaw: locText('setFileExportRaw'),
setFileExportRawBody: locText('setFileExportRawBody'),
setFileDeviceIntro: locReplacement('setFileDeviceIntro'),
setFileDeviceSettings: locText('setFileDeviceSettings'),
setFileYubiKey: locText('setFileYubiKey'),
setFileDontUseYubiKey: locText('setFileDontUseYubiKey'),
setFileRefreshYubiKeyList: locText('setFileRefreshYubiKeyList'),
setFileYubiKeyHeader: locText('setFileYubiKeyHeader'),
setFileYubiKeyBody: locText('setFileYubiKeyBody'),
setFileYubiKeyErrorEmptyMac: locText('setFileYubiKeyErrorEmptyMac'),
setShTitle: locText('setShTitle'),
setShShowAll: locText('setShShowAll'),
setShColors: locText('setShColors'),
setShTrash: locText('setShTrash'),
setShFind: locText('setShFind'),
setShClearSearch: locText('setShClearSearch'),
setShCopyPass: locText('setShCopyPass'),
setShCopyUser: locText('setShCopyUser'),
setShCopyUrl: locText('setShCopyUrl'),
setShAutoType: locText('setShAutoType'),
setShPrev: locText('setShPrev'),
setShNext: locText('setShNext'),
setShCreateEntry: locText('setShCreateEntry'),
setShOpen: locText('setShOpen'),
setShSave: locText('setShSave'),
setShGen: locText('setShGen'),
setShSet: locText('setShSet'),
setShCopyPassGlobal: locText('setShCopyPassGlobal'),
setShCopyOtp: locText('setShCopyOtp'),
setShAutoTypeGlobal: locText('setShAutoTypeGlobal'),
setShCopyPassOnly: locText('setShCopyPassOnly'),
setShRestoreApp: locReplacement('setShRestoreApp'),
setShGlobal: locText('setShGlobal'),
setShLock: locText('setShLock'),
setShEdit: locText('setShEdit'),
setPlInstallTitle: locText('setPlInstallTitle'),
setPlInstallDesc: locText('setPlInstallDesc'),
setPlInstallLabel: locText('setPlInstallLabel'),
setPlInstallBtn: locText('setPlInstallBtn'),
setPlInstallBtnProgress: locText('setPlInstallBtnProgress'),
setPlUninstallBtn: locText('setPlUninstallBtn'),
setPlDisableBtn: locText('setPlDisableBtn'),
setPlEnableBtn: locText('setPlEnableBtn'),
setPlUpdateBtn: locText('setPlUpdateBtn'),
setPlLocaleBtn: locText('setPlLocaleBtn'),
setPlThemeBtn: locText('setPlThemeBtn'),
setPlJs: locText('setPlJs'),
setPlCss: locText('setPlCss'),
setPlLoc: locText('setPlLoc'),
setPlCreatedBy: locReplacement('setPlCreatedBy'),
setPlLoadTime: locReplacement('setPlLoadTime'),
setPlLastUpdate: locText('setPlLastUpdate'),
setPlLoadError: locText('setPlLoadError'),
setPlGalleryLoading: locText('setPlGalleryLoading'),
setPlGalleryLoadError: locText('setPlGalleryLoadError'),
setPlInstallUrlTitle: locText('setPlInstallUrlTitle'),
setPlInstallUrlDesc: locText('setPlInstallUrlDesc'),
setPlOfficial: locText('setPlOfficial'),
setPlSearch: locText('setPlSearch'),
setPlDevelop: locText('setPlDevelop'),
setPlDevelopStart: locText('setPlDevelopStart'),
setPlTranslate: locReplacement('setPlTranslate'),
setPlTranslateLink: locText('setPlTranslateLink'),
setPlAutoUpdate: locText('setPlAutoUpdate'),
setPlLoadGallery: locText('setPlLoadGallery'),
setBrowserTitle: locText('setBrowserTitle'),
setBrowserIntroDesktop: locText('setBrowserIntroDesktop'),
setBrowserIntroKeeWebConnect: locText('setBrowserIntroKeeWebConnect'),
setBrowserIntroKeePassXcBrowser: locText('setBrowserIntroKeePassXcBrowser'),
setBrowserIntroWeb: locText('setBrowserIntroWeb'),
setBrowserNotEnabled: locText('setBrowserNotEnabled'),
setBrowserEnablePerBrowser: locText('setBrowserEnablePerBrowser'),
setBrowserFocusIfLocked: locText('setBrowserFocusIfLocked'),
setBrowserFocusIfEmpty: locText('setBrowserFocusIfEmpty'),
setBrowserOtherBrowsers: locText('setBrowserOtherBrowsers'),
setBrowserExtensionFor: locReplacement('setBrowserExtensionFor'),
setBrowserExtensionNotSupported: locText('setBrowserExtensionNotSupported'),
setBrowserExtensionHelp: locText('setBrowserExtensionHelp'),
setBrowserExtensionInstall: locText('setBrowserExtensionInstall'),
setBrowserExtensionKPXCWarnHeader: locReplacement('setBrowserExtensionKPXCWarnHeader'),
setBrowserExtensionKPXCWarnBody1: locReplacement('setBrowserExtensionKPXCWarnBody1'),
setBrowserExtensionKPXCWarnBody2: locText('setBrowserExtensionKPXCWarnBody2'),
setBrowserSessions: locText('setBrowserSessions'),
setBrowserSessionsEmpty: locText('setBrowserSessionsEmpty'),
setBrowserSessionsIntro: locText('setBrowserSessionsIntro'),
setBrowserSessionsActiveTooltip: locText('setBrowserSessionsActiveTooltip'),
setBrowserSessionsActiveText: locText('setBrowserSessionsActiveText'),
setBrowserSessionsInactiveTooltip: locText('setBrowserSessionsInactiveTooltip'),
setBrowserSessionsInactiveText: locText('setBrowserSessionsInactiveText'),
setBrowserSessionsDeniedTooltip: locText('setBrowserSessionsDeniedTooltip'),
setBrowserSessionsDeniedText: locText('setBrowserSessionsDeniedText'),
setBrowserSessionsConnectedDate: locText('setBrowserSessionsConnectedDate'),
setBrowserSessionsTerminate: locText('setBrowserSessionsTerminate'),
setBrowserSessionsAccessToFiles: locText('setBrowserSessionsAccessToFiles'),
setBrowserSessionsNoFileAccess: locText('setBrowserSessionsNoFileAccess'),
setBrowserSessionsPasswordsRead: locText('setBrowserSessionsPasswordsRead'),
setBrowserSessionsPasswordsWritten: locText('setBrowserSessionsPasswordsWritten'),
setDevicesTitle: locText('setDevicesTitle'),
setDevicesEnableUsb: locText('setDevicesEnableUsb'),
setDevicesYubiKeyIntro: locReplacement('setDevicesYubiKeyIntro'),
setDevicesYubiKeyIntroLink: locText('setDevicesYubiKeyIntroLink'),
setDevicesYubiKeyToolsDesc: locReplacement('setDevicesYubiKeyToolsDesc'),
setDevicesYubiKeyToolsDesc2: locReplacement('setDevicesYubiKeyToolsDesc2'),
setDevicesYubiKeyToolsDescLink: locText('setDevicesYubiKeyToolsDescLink'),
setDevicesYubiKeyToolsStatusChecking: locReplacement('setDevicesYubiKeyToolsStatusChecking'),
setDevicesYubiKeyToolsStatusOk: locReplacement('setDevicesYubiKeyToolsStatusOk'),
setDevicesYubiKeyToolsStatusError: locReplacement('setDevicesYubiKeyToolsStatusError'),
setDevicesYubiKeyOtpTitle: locText('setDevicesYubiKeyOtpTitle'),
setDevicesYubiKeyOtpDesc: locText('setDevicesYubiKeyOtpDesc'),
setDevicesYubiKeyOtpShowIcon: locText('setDevicesYubiKeyOtpShowIcon'),
setDevicesYubiKeyOtpAutoOpen: locText('setDevicesYubiKeyOtpAutoOpen'),
setDevicesYubiKeyOtpMatchEntries: locText('setDevicesYubiKeyOtpMatchEntries'),
setDevicesYubiKeyChalRespTitle: locText('setDevicesYubiKeyChalRespTitle'),
setDevicesYubiKeyChalRespDesc: locText('setDevicesYubiKeyChalRespDesc'),
setDevicesYubiKeyChalRespShow: locText('setDevicesYubiKeyChalRespShow'),
setDevicesYubiKeyStuckWorkaround: locText('setDevicesYubiKeyStuckWorkaround'),
setDevicesYubiKeyRememberChalResp: locText('setDevicesYubiKeyRememberChalResp'),
setAboutTitle: locText('setAboutTitle'),
setAboutBuilt: locText('setAboutBuilt'),
setAboutLic: locText('setAboutLic'),
setAboutLicComment: locText('setAboutLicComment'),
setAboutFirst: locReplacement('setAboutFirst'),
setAboutSecond: locReplacement('setAboutSecond'),
setAboutSource: locReplacement('setAboutSource'),
setHelpFormat: locText('setHelpFormat'),
setHelpFormatBody: locReplacement('setHelpFormatBody'),
setHelpProblems: locText('setHelpProblems'),
setHelpProblems1: locReplacement('setHelpProblems1'),
setHelpProblems2: locReplacement('setHelpProblems2'),
setHelpOpenIssue: locText('setHelpOpenIssue'),
setHelpContactLink: locText('setHelpContactLink'),
setHelpAppInfo: locText('setHelpAppInfo'),
setHelpOtherPlatforms: locText('setHelpOtherPlatforms'),
setHelpDesktopApps: locText('setHelpDesktopApps'),
setHelpWebApp: locText('setHelpWebApp'),
setHelpUpdates: locText('setHelpUpdates'),
setHelpTwitter: locText('setHelpTwitter'),
dropboxSetupDesc: locText('dropboxSetupDesc'),
dropboxAppKey: locText('dropboxAppKey'),
dropboxAppKeyDesc: locText('dropboxAppKeyDesc'),
dropboxAppKeyHint: locText('dropboxAppKeyHint'),
dropboxAppSecret: locText('dropboxAppSecret'),
dropboxAppSecretDesc: locText('dropboxAppSecretDesc'),
dropboxFolder: locText('dropboxFolder'),
dropboxFolderDesc: locText('dropboxFolderDesc'),
dropboxFolderSettingsDesc: locText('dropboxFolderSettingsDesc'),
dropboxFolderPlaceholder: locText('dropboxFolderPlaceholder'),
dropboxLink: locText('dropboxLink'),
dropboxLinkApp: locText('dropboxLinkApp'),
dropboxLinkFull: locText('dropboxLinkFull'),
dropboxLinkCustom: locText('dropboxLinkCustom'),
gdriveSharedWithMe: locText('gdriveSharedWithMe'),
gdriveSharedDrives: locText('gdriveSharedDrives'),
webdavSaveMethod: locText('webdavSaveMethod'),
webdavSaveMove: locText('webdavSaveMove'),
webdavSavePut: locText('webdavSavePut'),
webdavNoLastModified: locText('webdavNoLastModified'),
webdavStatReload: locText('webdavStatReload'),
launcherSave: locText('launcherSave'),
launcherFileFilter: locText('launcherFileFilter'),
authPopupRequired: locText('authPopupRequired'),
authPopupRequiredBody: locText('authPopupRequiredBody'),
exportFileInfo: locText('exportFileInfo'),
exportHtmlName: locText('exportHtmlName'),
exportHtmlDate: locText('exportHtmlDate'),
exportGenerator: locText('exportGenerator'),
exportDescription: locReplacement('exportDescription'),
importCsvTitle: locText('importCsvTitle'),
importCsvRun: locText('importCsvRun'),
importIgnoreField: locText('importIgnoreField'),
importTo: locText('importTo'),
importNewFile: locText('importNewFile'),
yubiKeyStuckError: locText('yubiKeyStuckError'),
yubiKeyNoKeyHeader: locText('yubiKeyNoKeyHeader'),
yubiKeyNoKeyBody: locReplacement('yubiKeyNoKeyBody'),
yubiKeySlot: locText('yubiKeySlot'),
yubiKeyTouchRequestedHeader: locText('yubiKeyTouchRequestedHeader'),
yubiKeyTouchRequestedBody: locReplacement('yubiKeyTouchRequestedBody'),
yubiKeyDisabledErrorHeader: locText('yubiKeyDisabledErrorHeader'),
yubiKeyDisabledErrorBody: locText('yubiKeyDisabledErrorBody'),
yubiKeyErrorWithCode: locReplacement('yubiKeyErrorWithCode'),
bioOpenAuthPrompt: locReplacement('bioOpenAuthPrompt'),
extensionErrorNoOpenFiles: locText('extensionErrorNoOpenFiles'),
extensionErrorUserRejected: locText('extensionErrorUserRejected'),
extensionErrorNoMatches: locText('extensionErrorNoMatches'),
extensionErrorAlertDisplayed: locText('extensionErrorAlertDisplayed'),
extensionConnectHeader: locText('extensionConnectHeader'),
extensionConnectIntro: locReplacement('extensionConnectIntro'),
extensionConnectUnknownActivity: locText('extensionConnectUnknownActivity'),
extensionConnectFiles: locText('extensionConnectFiles'),
extensionConnectAllOtherFiles: locText('extensionConnectAllOtherFiles'),
extensionConnectAllFiles: locText('extensionConnectAllFiles'),
extensionConnectAskGet: locText('extensionConnectAskGet'),
extensionConnectAskGetMultiple: locText('extensionConnectAskGetMultiple'),
extensionConnectAskGetAlways: locText('extensionConnectAskGetAlways'),
extensionConnectAskSave: locText('extensionConnectAskSave'),
extensionConnectAskSaveAlways: locText('extensionConnectAskSaveAlways'),
extensionConnectAskSaveAuto: locText('extensionConnectAskSaveAuto'),
extensionConnectSettingsAreForSession: locText('extensionConnectSettingsAreForSession'),
extensionUnlockMessage: locText('extensionUnlockMessage'),
extensionNewGroupHeader: locText('extensionNewGroupHeader'),
extensionNewGroupBody: locReplacement('extensionNewGroupBody'),
extensionNewGroupPath: locText('extensionNewGroupPath'),
extensionNewGroupFile: locText('extensionNewGroupFile'),
extensionSaveEntryHeader: locText('extensionSaveEntryHeader'),
extensionSaveEntryBody: locReplacement('extensionSaveEntryBody'),
extensionSaveEntryAuto: locText('extensionSaveEntryAuto'),
extensionSaveEntryNewGroup: locText('extensionSaveEntryNewGroup'),
extensionSelectPasswordFor: locReplacement('extensionSelectPasswordFor'),
selectEntryHeader: locText('selectEntryHeader'),
selectEntryEnterHint: locText('selectEntryEnterHint'),
selectEntryTypingHint: locText('selectEntryTypingHint'),
selectEntryContains: locText('selectEntryContains'),
selectEntrySubdomains: locText('selectEntrySubdomains'),
selectEntryFieldHeader: locText('selectEntryFieldHeader'),
selectEntryFieldTouch: locText('selectEntryFieldTouch')
};
export { Locale, setLocale };

View File

@ -122,7 +122,7 @@
},
"scripts": {
"start": "grunt",
"test": "mocha --require ts-node/register --require tsconfig-paths/register --recursive --reporter spec test/**/*.spec.ts",
"test": "mocha --require ts-node/register --require tsconfig-paths/register --recursive --reporter spec test/**/*.ts",
"eslint": "grunt eslint",
"build-beta": "grunt --beta && cp dist/index.html ../keeweb-beta/index.html && cd ../keeweb-beta && git add index.html && git commit -a -m 'beta' && git push origin master",
"electron": "cross-env KEEWEB_IS_PORTABLE=0 ELECTRON_DISABLE_SECURITY_WARNINGS=1 KEEWEB_EMULATE_HARDWARE_ENCRYPTION=persistent KEEWEB_HTML_PATH=http://localhost:8085 electron desktop --no-sandbox",
@ -131,7 +131,12 @@
"dev-desktop-macos-signed": "grunt dev-desktop-darwin-signed",
"dev-desktop-windows": "grunt dev-desktop-win32 --skip-sign",
"dev-desktop-linux": "grunt dev-desktop-linux --skip-sign",
"babel-helpers": "babel-external-helpers -l 'slicedToArray,toConsumableArray,defineProperty,typeof' -t global > app/lib/babel-helpers.js"
"babel-helpers": "babel-external-helpers -l 'slicedToArray,toConsumableArray,defineProperty,typeof' -t global > app/lib/babel-helpers.js",
"bump-version": "node util/bump-version.js",
"copy-languages": "util/copy-languages.sh",
"extract-release-notes": "node util/extract-release-notes.js",
"generate-locale": "node util/generate-locale.js",
"prettier": "util/prettier.sh"
},
"author": {
"name": "Antelle",

22
test/require.ts Normal file
View File

@ -0,0 +1,22 @@
/* eslint-disable */
const Module = require('module');
const path = require('path');
const originalResolveFilename = Module._resolveFilename;
const appBasePath = path.resolve(__dirname, '..', 'app');
const replacements = [
{
match: /^locales\/[\w\-]+\.json$/,
replace: (match: string) => path.join(appBasePath, match)
}
];
Module._resolveFilename = function (request: string, _parent: any): string {
for (const { match, replace } of replacements) {
request = request.replace(match, replace);
}
arguments[0] = request;
return originalResolveFilename.apply(this, arguments);
};

25
test/util/locale.spec.ts Normal file
View File

@ -0,0 +1,25 @@
import { Locale, setLocale } from 'util/locale';
import { expect } from 'chai';
describe('Locale', () => {
it('returns simple locale strings', () => {
expect(Locale.name()).to.eql('name');
});
it('returns replaced locale strings', () => {
expect(Locale.minutes('3')).to.eql('3 minutes');
});
it('sets a custom locale', () => {
expect(Locale.name()).to.eql('name');
expect(Locale.minutes('3')).to.eql('3 minutes');
setLocale({ name: 'hello', minutes: '{}m' });
expect(Locale.name()).to.eql('hello');
expect(Locale.minutes('2')).to.eql('2m');
setLocale(undefined);
expect(Locale.name()).to.eql('name');
expect(Locale.minutes('4')).to.eql('4 minutes');
});
});

6
util/extract-release-notes.js Normal file → Executable file
View File

@ -1,3 +1,7 @@
#!/usr/bin/env node
/* eslint-disable no-console */
const fs = require('fs');
const path = require('path');
@ -15,7 +19,6 @@ if (!output) {
throw new Error('No output file, launch with --output=path/to/output-file.md');
}
// eslint-disable-next-line no-console
console.log(`Reading release notes for v${version}`);
const releaseNotesPath = path.join(__dirname, '../release-notes.md');
@ -36,5 +39,4 @@ Want to keep releases happening? Donate to KeeWeb on [OpenCollective](https://op
fs.mkdirSync(path.dirname(output), { recursive: true });
fs.writeFileSync(output, body);
// eslint-disable-next-line no-console
console.log(`Saved release notes for v${version} to ${output}`);

41
util/generate-locale.js Executable file
View File

@ -0,0 +1,41 @@
#!/usr/bin/env node
/* eslint-disable no-console */
const fs = require('fs');
const path = require('path');
const LocaleTsFileName = path.resolve(__dirname, '../app/scripts/util/locale.ts');
const LocaleJsonFileName = path.resolve(__dirname, '../app/locales/base.json');
const sourceCode = fs.readFileSync(LocaleTsFileName, 'utf8');
const localeData = JSON.parse(fs.readFileSync(LocaleJsonFileName, 'utf8'));
const generatedLines = [];
for (const [name, value] of Object.entries(localeData)) {
if (value.includes('{}')) {
generatedLines.push(`${name}: locReplacement('${name}')`);
} else {
generatedLines.push(`${name}: locText('${name}')`);
}
}
const generatedCode = `const Locale = {\n${generatedLines
.map((line) => ` ${line}`)
.join(',\n')}\n}`;
let found = false;
const replacedSourceCode = sourceCode.replace(/^const Locale = \{[^}]+}/gm, () => {
found = true;
return generatedCode;
});
if (!found) {
throw new Error('Not found');
}
fs.writeFileSync(LocaleTsFileName, replacedSourceCode);
console.log('Done');