diff --git a/browser/components/SideNavFilter.js b/browser/components/SideNavFilter.js
index 2f839a84..06cfc19a 100644
--- a/browser/components/SideNavFilter.js
+++ b/browser/components/SideNavFilter.js
@@ -5,6 +5,7 @@ import PropTypes from 'prop-types'
import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './SideNavFilter.styl'
+import i18n from 'browser/lib/i18n'
/**
* @param {boolean} isFolded
@@ -31,7 +32,7 @@ const SideNavFilter = ({
}
/>
- All Notes
+ {i18n.__('All Notes')}
{counterTotalNote}
@@ -45,7 +46,7 @@ const SideNavFilter = ({
}
/>
- Starred
+ {i18n.__('Starred')}
{counterStarredNote}
@@ -59,7 +60,7 @@ const SideNavFilter = ({
}
/>
- Trash
+ {i18n.__('Trash')}
{counterDelNote}
diff --git a/browser/lib/i18n.js b/browser/lib/i18n.js
new file mode 100644
index 00000000..1f3c95c5
--- /dev/null
+++ b/browser/lib/i18n.js
@@ -0,0 +1,8 @@
+// load package for localization
+const i18n = new (require('i18n-2'))({
+ // setup some locales - other locales default to the first locale
+ locales: ['en', 'sq', 'zh-CN', 'zh-TW', 'da', 'fr', 'de', 'ja', 'ko', 'no', 'pl', 'pt', 'es'],
+ extension: '.json'
+})
+
+export default i18n
diff --git a/browser/lib/markdown.js b/browser/lib/markdown.js
index 5c887b3d..ee38c27d 100644
--- a/browser/lib/markdown.js
+++ b/browser/lib/markdown.js
@@ -7,8 +7,6 @@ import ConfigManager from 'browser/main/lib/ConfigManager'
import katex from 'katex'
import {lastFindInArray} from './utils'
-const config = ConfigManager.get()
-
function createGutter (str, firstLineNumber) {
if (Number.isNaN(firstLineNumber)) firstLineNumber = 1
const lastLineNumber = (str.match(/\n/g) || []).length + firstLineNumber - 1
@@ -21,8 +19,9 @@ function createGutter (str, firstLineNumber) {
class Markdown {
constructor (options = {}) {
+ const config = ConfigManager.get()
const defaultOptions = {
- typographer: true,
+ typographer: config.preview.smartQuotes,
linkify: true,
html: true,
xhtmlOut: true,
diff --git a/browser/main/Detail/InfoPanel.js b/browser/main/Detail/InfoPanel.js
index 44b9f09a..4ce610fa 100644
--- a/browser/main/Detail/InfoPanel.js
+++ b/browser/main/Detail/InfoPanel.js
@@ -3,6 +3,7 @@ import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './InfoPanel.styl'
import copy from 'copy-to-clipboard'
+import i18n from 'browser/lib/i18n'
class InfoPanel extends React.Component {
copyNoteLink () {
@@ -19,7 +20,7 @@ class InfoPanel extends React.Component {
{updatedAt}
-
MODIFICATION DATE
+
{i18n.__('MODIFICATION DATE')}
@@ -29,11 +30,11 @@ class InfoPanel extends React.Component {
:
{wordCount}
-
Words
+
{i18n.__('Words')}
{letterCount}
-
Letters
+
{i18n.__('Letters')}
}
@@ -45,17 +46,17 @@ class InfoPanel extends React.Component {
{storageName}
-
STORAGE
+
{i18n.__('STORAGE')}
{folderName}
-
FOLDER
+
{i18n.__('FOLDER')}
{createdAt}
-
CREATION DATE
+
{i18n.__('CREATION DATE')}
@@ -63,7 +64,7 @@ class InfoPanel extends React.Component {
this.copyNoteLink()} styleName='infoPanel-copyButton'>
-
NOTE LINK
+
{i18n.__('NOTE LINK')}
@@ -71,22 +72,22 @@ class InfoPanel extends React.Component {
exportAsMd(e)}>
- .md
+ {i18n.__('.md')}
exportAsTxt(e)}>
- .txt
+ {i18n.__('.txt')}
exportAsHtml(e)}>
- .html
+ {i18n.__('.html')}
print(e)}>
- Print
+ {i18n.__('Print')}
diff --git a/browser/main/Detail/InfoPanelTrashed.js b/browser/main/Detail/InfoPanelTrashed.js
index 6e86b884..db64a284 100644
--- a/browser/main/Detail/InfoPanelTrashed.js
+++ b/browser/main/Detail/InfoPanelTrashed.js
@@ -2,6 +2,7 @@ import PropTypes from 'prop-types'
import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './InfoPanel.styl'
+import i18n from 'browser/lib/i18n'
const InfoPanelTrashed = ({
storageName, folderName, updatedAt, createdAt, exportAsMd, exportAsTxt, exportAsHtml
@@ -9,24 +10,24 @@ const InfoPanelTrashed = ({
{updatedAt}
-
MODIFICATION DATE
+
{i18n.__('MODIFICATION DATE')}
{storageName}
-
STORAGE
+
{i18n.__('STORAGE')}
Trash {folderName}
-
FOLDER
+
{i18n.__('FOLDER')}
{createdAt}
-
CREATION DATE
+
{i18n.__('CREATION DATE')}
diff --git a/browser/main/Detail/PermanentDeleteButton.js b/browser/main/Detail/PermanentDeleteButton.js
index fd5c731b..fa00ef17 100644
--- a/browser/main/Detail/PermanentDeleteButton.js
+++ b/browser/main/Detail/PermanentDeleteButton.js
@@ -2,6 +2,7 @@ import PropTypes from 'prop-types'
import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './TrashButton.styl'
+import i18n from 'browser/lib/i18n'
const PermanentDeleteButton = ({
onClick
@@ -10,7 +11,7 @@ const PermanentDeleteButton = ({
onClick={(e) => onClick(e)}
>
-
Permanent Delete
+
{i18n.__('Permanent Delete')}
)
diff --git a/browser/main/Detail/RestoreButton.js b/browser/main/Detail/RestoreButton.js
index 0f9c992e..5d0186db 100644
--- a/browser/main/Detail/RestoreButton.js
+++ b/browser/main/Detail/RestoreButton.js
@@ -2,6 +2,7 @@ import PropTypes from 'prop-types'
import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './RestoreButton.styl'
+import i18n from 'browser/lib/i18n'
const RestoreButton = ({
onClick
@@ -10,7 +11,7 @@ const RestoreButton = ({
onClick={onClick}
>
-
Restore
+
{i18n.__('Restore')}
)
diff --git a/browser/main/Detail/SnippetNoteDetail.js b/browser/main/Detail/SnippetNoteDetail.js
index d1557ba5..485728d7 100644
--- a/browser/main/Detail/SnippetNoteDetail.js
+++ b/browser/main/Detail/SnippetNoteDetail.js
@@ -26,6 +26,7 @@ import InfoButton from './InfoButton'
import InfoPanel from './InfoPanel'
import InfoPanelTrashed from './InfoPanelTrashed'
import { formatDate } from 'browser/lib/date-formatter'
+import i18n from 'browser/lib/i18n'
function pass (name) {
switch (name) {
@@ -264,9 +265,9 @@ class SnippetNoteDetail extends React.Component {
if (this.state.note.snippets[index].content.trim().length > 0) {
const dialogIndex = dialog.showMessageBox(remote.getCurrentWindow(), {
type: 'warning',
- message: 'Delete a snippet',
- detail: 'This work cannot be undone.',
- buttons: ['Confirm', 'Cancel']
+ message: i18n.__('Delete a snippet'),
+ detail: i18n.__('This work cannot be undone.'),
+ buttons: [i18n.__('Confirm'), i18n.__('Cancel')]
})
if (dialogIndex === 0) {
this.deleteSnippetByIndex(index)
@@ -507,8 +508,8 @@ class SnippetNoteDetail extends React.Component {
showWarning () {
dialog.showMessageBox(remote.getCurrentWindow(), {
type: 'warning',
- message: 'Sorry!',
- detail: 'md/text import is available only a markdown note.',
+ message: i18n.__('Sorry!'),
+ detail: i18n.__('md/text import is available only a markdown note.'),
buttons: ['OK']
})
}
diff --git a/browser/main/Detail/ToggleModeButton.js b/browser/main/Detail/ToggleModeButton.js
index e2d143d4..c414a3e5 100644
--- a/browser/main/Detail/ToggleModeButton.js
+++ b/browser/main/Detail/ToggleModeButton.js
@@ -2,6 +2,7 @@ import PropTypes from 'prop-types'
import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './ToggleModeButton.styl'
+import i18n from 'browser/lib/i18n'
const ToggleModeButton = ({
onClick, editorType
@@ -13,7 +14,7 @@ const ToggleModeButton = ({
onClick('EDITOR_PREVIEW')}>
-
Toggle Mode
+
{i18n.__('Toggle Mode')}
)
diff --git a/browser/main/Detail/TrashButton.js b/browser/main/Detail/TrashButton.js
index 474eb9e5..473c2d0b 100644
--- a/browser/main/Detail/TrashButton.js
+++ b/browser/main/Detail/TrashButton.js
@@ -2,6 +2,7 @@ import PropTypes from 'prop-types'
import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './TrashButton.styl'
+import i18n from 'browser/lib/i18n'
const TrashButton = ({
onClick
@@ -10,7 +11,7 @@ const TrashButton = ({
onClick={(e) => onClick(e)}
>
-
Trash
+
{i18n.__('Trash')}
)
diff --git a/browser/main/Detail/index.js b/browser/main/Detail/index.js
index 2ae62514..df38132c 100644
--- a/browser/main/Detail/index.js
+++ b/browser/main/Detail/index.js
@@ -7,6 +7,7 @@ import MarkdownNoteDetail from './MarkdownNoteDetail'
import SnippetNoteDetail from './SnippetNoteDetail'
import ee from 'browser/main/lib/eventEmitter'
import StatusBar from '../StatusBar'
+import i18n from 'browser/lib/i18n'
const OSX = global.process.platform === 'darwin'
@@ -40,9 +41,9 @@ class Detail extends React.Component {
const alertConfig = {
type: 'warning',
- message: 'Confirm note deletion',
- detail: 'This will permanently remove this note.',
- buttons: ['Confirm', 'Cancel']
+ message: i18n.__('Confirm note deletion'),
+ detail: i18n.__('This will permanently remove this note.'),
+ buttons: [i18n.__('Confirm'), i18n.__('Cancel')]
}
const dialogueButtonIndex = dialog.showMessageBox(remote.getCurrentWindow(), alertConfig)
@@ -67,7 +68,7 @@ class Detail extends React.Component {
tabIndex='0'
>
-
{OSX ? 'Command(⌘)' : 'Ctrl(^)'} + N to create a new note
+
{OSX ? i18n.__('Command(⌘)') : i18n.__('Ctrl(^)')} + N {i18n.__('to create a new note')}
this.handleNewNoteButtonClick(e)}>
- Make a note {OSX ? '⌘' : 'Ctrl'} + N
+ {i18n.__('Make a note')} {OSX ? '⌘' : i18n.__('Ctrl')} + N
diff --git a/browser/main/NoteList/index.js b/browser/main/NoteList/index.js
index 06880bab..b8a915d5 100644
--- a/browser/main/NoteList/index.js
+++ b/browser/main/NoteList/index.js
@@ -1,3 +1,4 @@
+/* global electron */
import PropTypes from 'prop-types'
import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
@@ -16,11 +17,11 @@ import { hashHistory } from 'react-router'
import copy from 'copy-to-clipboard'
import AwsMobileAnalyticsConfig from 'browser/main/lib/AwsMobileAnalyticsConfig'
import Markdown from '../../lib/markdown'
+import i18n from 'browser/lib/i18n'
const { remote } = require('electron')
const { Menu, MenuItem, dialog } = remote
const WP_POST_PATH = '/wp/v2/posts'
-const markdown = new Markdown()
function sortByCreatedAt (a, b) {
return new Date(b.createdAt) - new Date(a.createdAt)
@@ -709,6 +710,7 @@ class NoteList extends React.Component {
authToken = `Bearer ${token}`
}
const contentToRender = firstNote.content.replace(`# ${firstNote.title}`, '')
+ const markdown = new Markdown()
const data = {
title: firstNote.title,
content: markdown.render(contentToRender),
@@ -994,13 +996,13 @@ class NoteList extends React.Component {
value={config.sortBy}
onChange={(e) => this.handleSortByChange(e)}
>
- Updated
- Created
- Alphabetically
+ {i18n.__('Updated')}
+ {i18n.__('Created')}
+ {i18n.__('Alphabetically')}
-
-
-
Notes
+
{i18n.__('Notes')}
)
diff --git a/browser/main/SideNav/PreferenceButton.js b/browser/main/SideNav/PreferenceButton.js
index 9f483a28..187171f4 100644
--- a/browser/main/SideNav/PreferenceButton.js
+++ b/browser/main/SideNav/PreferenceButton.js
@@ -2,13 +2,14 @@ import PropTypes from 'prop-types'
import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './PreferenceButton.styl'
+import i18n from 'browser/lib/i18n'
const PreferenceButton = ({
onClick
}) => (
onClick(e)}>
- Preferences
+ {i18n.__('Preferences')}
)
diff --git a/browser/main/SideNav/StorageItem.js b/browser/main/SideNav/StorageItem.js
index 0589276e..92222d27 100644
--- a/browser/main/SideNav/StorageItem.js
+++ b/browser/main/SideNav/StorageItem.js
@@ -44,9 +44,9 @@ class StorageItem extends React.Component {
handleUnlinkStorageClick (e) {
const index = dialog.showMessageBox(remote.getCurrentWindow(), {
type: 'warning',
- message: 'Unlink Storage',
- detail: 'This work will just detatches a storage from Boostnote. (Any data won\'t be deleted.)',
- buttons: ['Confirm', 'Cancel']
+ message: i18n.__('Unlink Storage'),
+ detail: i18n.__('This work will just detatches a storage from Boostnote. (Any data won\'t be deleted.)'),
+ buttons: [i18n.__('Confirm'), i18n.__('Cancel')]
})
if (index === 0) {
@@ -160,9 +160,9 @@ class StorageItem extends React.Component {
handleFolderDeleteClick (e, folder) {
const index = dialog.showMessageBox(remote.getCurrentWindow(), {
type: 'warning',
- message: 'Delete Folder',
- detail: 'This will delete all notes in the folder and can not be undone.',
- buttons: ['Confirm', 'Cancel']
+ message: i18n.__('Delete Folder'),
+ detail: i18n.__('This will delete all notes in the folder and can not be undone.'),
+ buttons: [i18n.__('Confirm'), i18n.__('Cancel')]
})
if (index === 0) {
diff --git a/browser/main/SideNav/TagButton.js b/browser/main/SideNav/TagButton.js
index 87d92c49..d91ae2c4 100644
--- a/browser/main/SideNav/TagButton.js
+++ b/browser/main/SideNav/TagButton.js
@@ -2,6 +2,7 @@ import PropTypes from 'prop-types'
import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './SwitchButton.styl'
+import i18n from 'browser/lib/i18n'
const TagButton = ({
onClick, isTagActive
@@ -12,7 +13,7 @@ const TagButton = ({
: '../resources/icon/icon-tag.svg'
}
/>
-
Tags
+
{i18n.__('Tags')}
)
diff --git a/browser/main/StatusBar/index.js b/browser/main/StatusBar/index.js
index 49c1b40c..e5f5ae1a 100644
--- a/browser/main/StatusBar/index.js
+++ b/browser/main/StatusBar/index.js
@@ -3,6 +3,7 @@ import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './StatusBar.styl'
import ZoomManager from 'browser/main/lib/ZoomManager'
+import i18n from 'browser/lib/i18n'
const electron = require('electron')
const { remote, ipcRenderer } = electron
@@ -14,9 +15,9 @@ class StatusBar extends React.Component {
updateApp () {
const index = dialog.showMessageBox(remote.getCurrentWindow(), {
type: 'warning',
- message: 'Update Boostnote',
- detail: 'New Boostnote is ready to be installed.',
- buttons: ['Restart & Install', 'Not Now']
+ message: i18n.__('Update Boostnote'),
+ detail: i18n.__('New Boostnote is ready to be installed.'),
+ buttons: [i18n.__('Restart & Install'), i18n.__('Not Now')]
})
if (index === 0) {
@@ -62,7 +63,7 @@ class StatusBar extends React.Component {
{status.updateReady
?
- Ready to Update!
+ {i18n.__('Ready to Update!')}
: null
}
diff --git a/browser/main/TopBar/index.js b/browser/main/TopBar/index.js
index 246ef614..86cc6b2a 100644
--- a/browser/main/TopBar/index.js
+++ b/browser/main/TopBar/index.js
@@ -5,6 +5,7 @@ import styles from './TopBar.styl'
import _ from 'lodash'
import ee from 'browser/main/lib/eventEmitter'
import NewNoteButton from 'browser/main/NewNoteButton'
+import i18n from 'browser/lib/i18n'
class TopBar extends React.Component {
constructor (props) {
@@ -176,7 +177,7 @@ class TopBar extends React.Component {
onChange={(e) => this.handleSearchChange(e)}
onKeyDown={(e) => this.handleKeyDown(e)}
onKeyUp={(e) => this.handleKeyUp(e)}
- placeholder='Search'
+ placeholder={i18n.__('Search')}
type='text'
className='searchInput'
/>
@@ -185,7 +186,7 @@ class TopBar extends React.Component {
onClick={(e) => this.handleSearchClearButton(e)}
>
-
Clear Search
+
{i18n.__('Clear Search')}
}
diff --git a/browser/main/index.js b/browser/main/index.js
index d7ed7bfd..d9c7456e 100644
--- a/browser/main/index.js
+++ b/browser/main/index.js
@@ -8,6 +8,7 @@ import { Router, Route, IndexRoute, IndexRedirect, hashHistory } from 'react-rou
import { syncHistoryWithStore } from 'react-router-redux'
require('./lib/ipcClient')
require('../lib/customMeta')
+import i18n from 'browser/lib/i18n'
const electron = require('electron')
@@ -46,9 +47,9 @@ function notify (...args) {
function updateApp () {
const index = dialog.showMessageBox(remote.getCurrentWindow(), {
type: 'warning',
- message: 'Update Boostnote',
- detail: 'New Boostnote is ready to be installed.',
- buttons: ['Restart & Install', 'Not Now']
+ message: i18n.__('Update Boostnote'),
+ detail: i18n.__('New Boostnote is ready to be installed.'),
+ buttons: [i18n.__('Restart & Install'), i18n.__('Not Now')]
})
if (index === 0) {
diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js
index 1c4d955b..40b89198 100644
--- a/browser/main/lib/ConfigManager.js
+++ b/browser/main/lib/ConfigManager.js
@@ -1,5 +1,6 @@
import _ from 'lodash'
import RcParser from 'browser/lib/RcParser'
+import i18n from 'browser/lib/i18n'
const OSX = global.process.platform === 'darwin'
const win = global.process.platform === 'win32'
@@ -21,6 +22,7 @@ export const DEFAULT_CONFIG = {
toggleMain: OSX ? 'Cmd + Alt + L' : 'Super + Alt + E'
},
ui: {
+ language: 'en',
theme: 'default',
showCopyNotification: true,
disableDirectWrite: false,
@@ -133,6 +135,36 @@ function set (updates) {
document.body.setAttribute('data-theme', 'default')
}
+ if (newConfig.ui.language === 'sq') {
+ i18n.setLocale('sq')
+ } else if (newConfig.ui.language === 'zh-CN') {
+ i18n.setLocale('zh-CN')
+ } else if (newConfig.ui.language === 'zh-TW') {
+ i18n.setLocale('zh-TW')
+ } else if (newConfig.ui.language === 'da') {
+ i18n.setLocale('da')
+ } else if (newConfig.ui.language === 'fr') {
+ i18n.setLocale('fr')
+ } else if (newConfig.ui.language === 'de') {
+ i18n.setLocale('de')
+ } else if (newConfig.ui.language === 'ja') {
+ i18n.setLocale('ja')
+ } else if (newConfig.ui.language === 'ko') {
+ i18n.setLocale('ko')
+ } else if (newConfig.ui.language === 'no') {
+ i18n.setLocale('no')
+ } else if (newConfig.ui.language === 'pl') {
+ i18n.setLocale('pl')
+ } else if (newConfig.ui.language === 'pt') {
+ i18n.setLocale('pt')
+ } else if (newConfig.ui.language === 'ru') {
+ i18n.setLocale('ru')
+ } else if (newConfig.ui.language === 'es') {
+ i18n.setLocale('es')
+ } else {
+ i18n.setLocale('en')
+ }
+
let editorTheme = document.getElementById('editorTheme')
if (editorTheme == null) {
editorTheme = document.createElement('link')
diff --git a/browser/main/modals/NewNoteModal.js b/browser/main/modals/NewNoteModal.js
index 84f510c4..c959000c 100644
--- a/browser/main/modals/NewNoteModal.js
+++ b/browser/main/modals/NewNoteModal.js
@@ -6,6 +6,7 @@ import { hashHistory } from 'react-router'
import ee from 'browser/main/lib/eventEmitter'
import ModalEscButton from 'browser/components/ModalEscButton'
import AwsMobileAnalyticsConfig from 'browser/main/lib/AwsMobileAnalyticsConfig'
+import i18n from 'browser/lib/i18n'
class NewNoteModal extends React.Component {
constructor (props) {
@@ -122,8 +123,8 @@ class NewNoteModal extends React.Component {
- Markdown Note
- This format is for creating text documents. Checklists, code blocks and Latex blocks are available.
+ {i18n.__('Markdown Note')}
+ {i18n.__('This format is for creating text documents. Checklists, code blocks and Latex blocks are available.')}
- Snippet Note
- This format is for creating code snippets. Multiple snippets can be grouped into a single note.
+ {i18n.__('Snippet Note')}
+ {i18n.__('This format is for creating code snippets. Multiple snippets can be grouped into a single note.')}
- Tab to switch format
+ {i18n.__('Tab to switch format')}
)
diff --git a/browser/main/modals/PreferencesModal/Blog.js b/browser/main/modals/PreferencesModal/Blog.js
index 675455f7..87ee9dcc 100644
--- a/browser/main/modals/PreferencesModal/Blog.js
+++ b/browser/main/modals/PreferencesModal/Blog.js
@@ -5,6 +5,7 @@ import ConfigManager from 'browser/main/lib/ConfigManager'
import store from 'browser/main/store'
import PropTypes from 'prop-types'
import _ from 'lodash'
+import i18n from 'browser/lib/i18n'
const electron = require('electron')
const { shell } = electron
@@ -36,7 +37,7 @@ class Blog extends React.Component {
this.handleSettingDone = () => {
this.setState({BlogAlert: {
type: 'success',
- message: 'Successfully applied!'
+ message: i18n.__('Successfully applied!')
}})
}
this.handleSettingError = (err) => {
@@ -99,10 +100,10 @@ class Blog extends React.Component {
return (
-
Blog
+
{i18n.__('Blog')}
- Blog Type
+ {i18n.__('Blog Type')}
-
Blog Address
+
{i18n.__('Blog Address')}
this.handleBlogChange(e)}
@@ -127,16 +128,16 @@ class Blog extends React.Component {
this.handleSaveButtonClick(e)}>Save
+ onClick={(e) => this.handleSaveButtonClick(e)}>{i18n.__('Save')}
{blogAlertElement}
-
Auth
+
{i18n.__('Auth')}
- Authentication Method
+ {i18n.__('Authentication Method')}
this.handleBlogChange(e)}
>
- JWT
- USER
+ {i18n.__('JWT')}
+ {i18n.__('USER')}
{ config.blog.authMethod === 'JWT' &&
-
Token
+
{i18n.__('Token')}
this.handleBlogChange(e)}
@@ -164,7 +165,7 @@ class Blog extends React.Component {
{ config.blog.authMethod === 'USER' &&
-
UserName
+
{i18n.__('UserName')}
this.handleBlogChange(e)}
@@ -174,7 +175,7 @@ class Blog extends React.Component {
-
Password
+
{i18n.__('Password')}
this.handleBlogChange(e)}
diff --git a/browser/main/modals/PreferencesModal/Crowdfunding.js b/browser/main/modals/PreferencesModal/Crowdfunding.js
index 048520b0..196c1cb3 100644
--- a/browser/main/modals/PreferencesModal/Crowdfunding.js
+++ b/browser/main/modals/PreferencesModal/Crowdfunding.js
@@ -1,6 +1,7 @@
import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './Crowdfunding.styl'
+import i18n from 'browser/lib/i18n'
const electron = require('electron')
const { shell } = electron
@@ -21,22 +22,22 @@ class Crowdfunding extends React.Component {
render () {
return (
-
Crowdfunding
-
Dear everyone,
+
{i18n.__('Crowdfunding')}
+
{i18n.__('Dear everyone,')}
-
Thank you for using Boostnote!
-
Boostnote is used in about 200 different countries and regions by an awesome community of developers.
+
{i18n.__('Thank you for using Boostnote!')}
+
{i18n.__('Boostnote is used in about 200 different countries and regions by an awesome community of developers.')}
-
To continue supporting this growth, and to satisfy community expectations,
-
we would like to invest more time and resources in this project.
+
{i18n.__('To continue supporting this growth, and to satisfy community expectations,')}
+
{i18n.__('we would like to invest more time and resources in this project.')}
-
If you like this project and see its potential, you can help by supporting us on OpenCollective!
+
{i18n.__('If you like this project and see its potential, you can help by supporting us on OpenCollective!')}
-
Thanks,
-
Boostnote maintainers
+
{i18n.__('Thanks,')}
+
{i18n.__('Boostnote maintainers')}
- this.handleLinkClick(e)}>Support via OpenCollective
+ this.handleLinkClick(e)}>{i18n.__('Support via OpenCollective')}
)
diff --git a/browser/main/modals/PreferencesModal/FolderItem.js b/browser/main/modals/PreferencesModal/FolderItem.js
index 9d1cd08f..50d28013 100644
--- a/browser/main/modals/PreferencesModal/FolderItem.js
+++ b/browser/main/modals/PreferencesModal/FolderItem.js
@@ -7,6 +7,7 @@ import dataApi from 'browser/main/lib/dataApi'
import store from 'browser/main/store'
import { SketchPicker } from 'react-color'
import { SortableElement, SortableHandle } from 'react-sortable-hoc'
+import i18n from 'browser/lib/i18n'
class FolderItem extends React.Component {
constructor (props) {
@@ -179,18 +180,18 @@ class FolderItem extends React.Component {
return (
- Are you sure to delete this folder?
+ {i18n.__('Are you sure to ')} {i18n.__(' delete')} {i18n.__('this folder?')}
this.handleDeleteConfirmButtonClick(e)}
>
- Confirm
+ {i18n.__('Confirm')}
this.handleCancelButtonClick(e)}
>
- Cancel
+ {i18n.__('Cancel')}
@@ -231,12 +232,12 @@ class FolderItem extends React.Component {
this.handleEditButtonClick(e)}
>
- Edit
+ {i18n.__('Edit')}
this.handleDeleteButtonClick(e)}
>
- Delete
+ {i18n.__('Delete')}
diff --git a/browser/main/modals/PreferencesModal/HotkeyTab.js b/browser/main/modals/PreferencesModal/HotkeyTab.js
index 32552d48..91473c3b 100644
--- a/browser/main/modals/PreferencesModal/HotkeyTab.js
+++ b/browser/main/modals/PreferencesModal/HotkeyTab.js
@@ -5,6 +5,7 @@ import styles from './ConfigTab.styl'
import ConfigManager from 'browser/main/lib/ConfigManager'
import store from 'browser/main/store'
import _ from 'lodash'
+import i18n from 'browser/lib/i18n'
const electron = require('electron')
const ipc = electron.ipcRenderer
@@ -23,7 +24,7 @@ class HotkeyTab extends React.Component {
this.handleSettingDone = () => {
this.setState({keymapAlert: {
type: 'success',
- message: 'Successfully applied!'
+ message: i18n.__('Successfully applied!')
}})
}
this.handleSettingError = (err) => {
@@ -77,7 +78,7 @@ class HotkeyTab extends React.Component {
this.props.haveToSave({
tab: 'Hotkey',
type: 'warning',
- message: 'You have to save!'
+ message: i18n.__('You have to save!')
})
}
}
@@ -102,9 +103,9 @@ class HotkeyTab extends React.Component {
return (
-
Hotkeys
+
{i18n.__('Hotkeys')}
-
Show/Hide Boostnote
+
{i18n.__('Show/Hide Boostnote')}
this.handleHotkeyChange(e)}
@@ -124,7 +125,7 @@ class HotkeyTab extends React.Component {
}
this.handleSaveButtonClick(e)}>Save
+ onClick={(e) => this.handleSaveButtonClick(e)}>{i18n.__('Save')}
{keymapAlertElement}
diff --git a/browser/main/modals/PreferencesModal/InfoTab.js b/browser/main/modals/PreferencesModal/InfoTab.js
index 57385f28..1b2d55bb 100644
--- a/browser/main/modals/PreferencesModal/InfoTab.js
+++ b/browser/main/modals/PreferencesModal/InfoTab.js
@@ -5,6 +5,7 @@ import ConfigManager from 'browser/main/lib/ConfigManager'
import store from 'browser/main/store'
import AwsMobileAnalyticsConfig from 'browser/main/lib/AwsMobileAnalyticsConfig'
import _ from 'lodash'
+import i18n from 'browser/lib/i18n'
const electron = require('electron')
const { shell, remote } = electron
@@ -38,11 +39,11 @@ class InfoTab extends React.Component {
if (!newConfig.amaEnabled) {
AwsMobileAnalyticsConfig.recordDynamicCustomEvent('DISABLE_AMA')
this.setState({
- amaMessage: 'We hope we will gain your trust'
+ amaMessage: i18n.__('We hope we will gain your trust')
})
} else {
this.setState({
- amaMessage: 'Thanks for trusting us'
+ amaMessage: i18n.__('Thank\'s for trusting us')
})
}
@@ -69,48 +70,48 @@ class InfoTab extends React.Component {
return (
-
Community
+
{i18n.__('Community')}
-
About
+
{i18n.__('About')}
-
Boostnote {appVersion}
+
{i18n.__('Boostnote')} {appVersion}
- An open source note-taking app made for programmers just like you.
+ {i18n.__('An open source note-taking app made for programmers just like you.')}
@@ -120,35 +121,35 @@ class InfoTab extends React.Component {
this.handleLinkClick(e)}
- >Website
+ >{i18n.__('Website')}
this.handleLinkClick(e)}
- >Development : Development configurations for Boostnote.
+ >{i18n.__('Development')}{i18n.__(' : Development configurations for Boostnote.')}
- Copyright (C) 2017 - 2018 BoostIO
+ {i18n.__('Copyright (C) 2017 - 2018 BoostIO')}
- License: GPL v3
+ {i18n.__('License: GPL v3')}
-
Analytics
-
Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.
-
+
{i18n.__('Analytics')}
+
{i18n.__('Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.')}
+
-
You can choose to enable or disable this option.
+
{i18n.__('You can choose to enable or disable this option.')}
this.handleConfigChange(e)}
checked={this.state.config.amaEnabled}
ref='amaEnabled'
type='checkbox'
/>
- Enable analytics to help improve Boostnote
-
this.handleSaveButtonClick(e)}>Save
+ {i18n.__('Enable analytics to help improve Boostnote')}
+
this.handleSaveButtonClick(e)}>{i18n.__('Save')}
{this.infoMessage()}
diff --git a/browser/main/modals/PreferencesModal/StorageItem.js b/browser/main/modals/PreferencesModal/StorageItem.js
index f2092835..bbd082c6 100644
--- a/browser/main/modals/PreferencesModal/StorageItem.js
+++ b/browser/main/modals/PreferencesModal/StorageItem.js
@@ -6,6 +6,7 @@ import consts from 'browser/lib/consts'
import dataApi from 'browser/main/lib/dataApi'
import store from 'browser/main/store'
import FolderList from './FolderList'
+import i18n from 'browser/lib/i18n'
const { shell, remote } = require('electron')
const { dialog } = remote
@@ -46,9 +47,9 @@ class StorageItem extends React.Component {
handleUnlinkButtonClick (e) {
const index = dialog.showMessageBox(remote.getCurrentWindow(), {
type: 'warning',
- message: 'Unlink Storage',
- detail: 'Unlinking removes this linked storage from Boostnote. No data is removed, please manually delete the folder from your hard drive if needed.',
- buttons: ['Unlink', 'Cancel']
+ message: i18n.__('Unlink Storage'),
+ detail: i18n.__('Unlinking removes this linked storage from Boostnote. No data is removed, please manually delete the folder from your hard drive if needed.'),
+ buttons: [i18n.__('Unlink'), i18n.__('Cancel')]
})
if (index === 0) {
@@ -127,7 +128,7 @@ class StorageItem extends React.Component {
Add Folder
+ >{i18n.__('Add Folder')}
this.handleExternalButtonClick(e)}
@@ -135,7 +136,7 @@ class StorageItem extends React.Component {
Open Storage folder
+ >{i18n.__('Open Storage folder')}
this.handleUnlinkButtonClick(e)}
@@ -143,7 +144,7 @@ class StorageItem extends React.Component {
Unlink
+ >{i18n.__('Unlink')}
diff --git a/browser/main/modals/PreferencesModal/StoragesTab.js b/browser/main/modals/PreferencesModal/StoragesTab.js
index f66a617e..d666b02a 100644
--- a/browser/main/modals/PreferencesModal/StoragesTab.js
+++ b/browser/main/modals/PreferencesModal/StoragesTab.js
@@ -4,6 +4,7 @@ import CSSModules from 'browser/lib/CSSModules'
import styles from './StoragesTab.styl'
import dataApi from 'browser/main/lib/dataApi'
import StorageItem from './StorageItem'
+import i18n from 'browser/lib/i18n'
const electron = require('electron')
const { shell, remote } = electron
@@ -69,16 +70,16 @@ class StoragesTab extends React.Component {
})
return (
-
Storages
+
{i18n.__('Storages')}
{storageList.length > 0
? storageList
- :
No storage found.
+ :
{i18n.__('No storage found.')}
}
this.handleAddStorageButton(e)}
>
- Add Storage Location
+ {i18n.__('Add Storage Location')}
@@ -140,13 +141,13 @@ class StoragesTab extends React.Component {
return (
-
Add Storage
+
{i18n.__('Add Storage')}
- Name
+ {i18n.__('Name')}
-
Type
+
{i18n.__('Type')}
- File System
+ {i18n.__('File System')}
-
Location
+
{i18n.__('Location')}
this.handleAddStorageCreateButton(e)}
- >Add
+ >{i18n.__('Add')}
this.handleAddStorageCancelButton(e)}
- >Cancel
+ >{i18n.__('Cancel')}
diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js
index ddffe6d9..deb70c06 100644
--- a/browser/main/modals/PreferencesModal/UiTab.js
+++ b/browser/main/modals/PreferencesModal/UiTab.js
@@ -9,6 +9,7 @@ import ReactCodeMirror from 'react-codemirror'
import CodeMirror from 'codemirror'
import 'codemirror-mode-elixir'
import _ from 'lodash'
+import i18n from 'browser/lib/i18n'
const OSX = global.process.platform === 'darwin'
@@ -29,7 +30,7 @@ class UiTab extends React.Component {
this.handleSettingDone = () => {
this.setState({UiAlert: {
type: 'success',
- message: 'Successfully applied!'
+ message: i18n.__('Successfully applied!')
}})
}
this.handleSettingError = (err) => {
@@ -61,6 +62,7 @@ class UiTab extends React.Component {
const newConfig = {
ui: {
theme: this.refs.uiTheme.value,
+ language: this.refs.uiLanguage.value,
showCopyNotification: this.refs.showCopyNotification.checked,
confirmDeletion: this.refs.confirmDeletion.checked,
disableDirectWrite: this.refs.uiD2w != null
@@ -107,7 +109,7 @@ class UiTab extends React.Component {
this.props.haveToSave({
tab: 'UI',
type: 'warning',
- message: 'You have to save!'
+ message: i18n.__('You have to save!')
})
}
})
@@ -152,22 +154,48 @@ class UiTab extends React.Component {
return (
-
Interface
+
{i18n.__('Interface')}
- Interface Theme
+ {i18n.__('Interface Theme')}
this.handleUIChange(e)}
ref='uiTheme'
>
- Default
- White
- Solarized Dark
- Dark
+ {i18n.__('Default')}
+ {i18n.__('White')}
+ {i18n.__('Solarized Dark')}
+ {i18n.__('Dark')}
+
+
+ {i18n.__('Language')}
+
+ this.handleUIChange(e)}
+ ref='uiLanguage'
+ >
+ {i18n.__('Albanian')}
+ {i18n.__('Chinese (zh-CN)')}
+ {i18n.__('Chinese (zh-TW)')}
+ {i18n.__('Danish')}
+ {i18n.__('English')}
+ {i18n.__('French')}
+ {i18n.__('German')}
+ {i18n.__('Japanese')}
+ {i18n.__('Korean')}
+ {i18n.__('Norwegian')}
+ {i18n.__('Polish')}
+ {i18n.__('Portuguese')}
+ {i18n.__('Russian')}
+ {i18n.__('Spanish')}
+
+
+
+
this.handleUIChange(e)}
@@ -175,7 +203,7 @@ class UiTab extends React.Component {
ref='showCopyNotification'
type='checkbox'
/>
- Show "Saved to Clipboard" notification when copying
+ {i18n.__('Show "Saved to Clipboard" notification when copying')}
@@ -185,7 +213,7 @@ class UiTab extends React.Component {
ref='confirmDeletion'
type='checkbox'
/>
- Show a confirmation dialog when deleting notes
+ {i18n.__('Show a confirmation dialog when deleting notes')}
{
@@ -207,7 +235,7 @@ class UiTab extends React.Component {
- Editor Theme
+ {i18n.__('Editor Theme')}
- Editor Font Size
+ {i18n.__('Editor Font Size')}
- Editor Font Family
+ {i18n.__('Editor Font Family')}
- Editor Indent Style
+ {i18n.__('Editor Indent Style')}
this.handleUIChange(e)}
>
- Spaces
- Tabs
+ {i18n.__('Spaces')}
+ {i18n.__('Tabs')}
- Switch to Preview
+ {i18n.__('Switch to Preview')}
this.handleUIChange(e)}
>
- When Editor Blurred
- When Editor Blurred, Edit On Double Click
- On Right Click
+ {i18n.__('When Editor Blurred')}
+ {i18n.__('When Editor Blurred, Edit On Double Click')}
+ {i18n.__('On Right Click')}
- Editor Keymap
+ {i18n.__('Editor Keymap')}
this.handleUIChange(e)}
>
- default
- vim
- emacs
+ {i18n.__('default')}
+ {i18n.__('vim')}
+ {i18n.__('emacs')}
-
⚠️ Please restart boostnote after you change the keymap
+
{i18n.__('⚠️ Please restart boostnote after you change the keymap')}
@@ -315,7 +343,7 @@ class UiTab extends React.Component {
ref='editorDisplayLineNumbers'
type='checkbox'
/>
- Show line numbers in the editor
+ {i18n.__('Show line numbers in the editor')}
@@ -326,7 +354,7 @@ class UiTab extends React.Component {
ref='scrollPastEnd'
type='checkbox'
/>
- Allow editor to scroll past the last line
+ {i18n.__('Allow editor to scroll past the last line')}
@@ -337,14 +365,14 @@ class UiTab extends React.Component {
ref='editorFetchUrlTitle'
type='checkbox'
/>
- Bring in web page title when pasting URL on editor
+ {i18n.__('Bring in web page title when pasting URL on editor')}
Preview
- Preview Font Size
+ {i18n.__('Preview Font Size')}
- Preview Font Family
+ {i18n.__('Preview Font Family')}
-
Code block Theme
+
{i18n.__('Code block Theme')}
- Allow preview to scroll past the last line
+ {i18n.__('Allow preview to scroll past the last line')}
@@ -400,7 +428,7 @@ class UiTab extends React.Component {
ref='previewLineNumber'
type='checkbox'
/>
- Show line numbers for preview code blocks
+ {i18n.__('Show line numbers for preview code blocks')}
@@ -415,7 +443,7 @@ class UiTab extends React.Component {
- LaTeX Inline Open Delimiter
+ {i18n.__('LaTeX Inline Open Delimiter')}
- LaTeX Inline Close Delimiter
+ {i18n.__('LaTeX Inline Close Delimiter')}
- LaTeX Block Open Delimiter
+ {i18n.__('LaTeX Block Open Delimiter')}
- LaTeX Block Close Delimiter
+ {i18n.__('LaTeX Block Close Delimiter')}
this.handleSaveUIClick(e)}>Save
+ onClick={(e) => this.handleSaveUIClick(e)}>{i18n.__('Save')}
{UiAlertElement}
diff --git a/browser/main/modals/PreferencesModal/index.js b/browser/main/modals/PreferencesModal/index.js
index 09ca9a4e..70e25a88 100644
--- a/browser/main/modals/PreferencesModal/index.js
+++ b/browser/main/modals/PreferencesModal/index.js
@@ -12,6 +12,7 @@ import CSSModules from 'browser/lib/CSSModules'
import styles from './PreferencesModal.styl'
import RealtimeNotification from 'browser/components/RealtimeNotification'
import _ from 'lodash'
+import i18n from 'browser/lib/i18n'
class Preferences extends React.Component {
constructor (props) {
@@ -117,12 +118,12 @@ class Preferences extends React.Component {
const content = this.renderContent()
const tabs = [
- {target: 'STORAGES', label: 'Storage'},
- {target: 'HOTKEY', label: 'Hotkeys', Hotkey: this.state.HotkeyAlert},
- {target: 'UI', label: 'Interface', UI: this.state.UIAlert},
- {target: 'INFO', label: 'About'},
- {target: 'CROWDFUNDING', label: 'Crowdfunding'},
- {target: 'BLOG', label: 'Blog', Blog: this.state.BlogAlert}
+ {target: 'STORAGES', label: i18n.__('Storage')},
+ {target: 'HOTKEY', label: i18n.__('Hotkeys'), Hotkey: this.state.HotkeyAlert},
+ {target: 'UI', label: i18n.__('Interface'), UI: this.state.UIAlert},
+ {target: 'INFO', label: i18n.__('About')},
+ {target: 'CROWDFUNDING', label: i18n.__('Crowdfunding')},
+ {target: 'BLOG', label: i18n.__('Blog'), Blog: this.state.BlogAlert}
]
const navButtons = tabs.map((tab) => {
@@ -151,7 +152,7 @@ class Preferences extends React.Component {
onKeyDown={(e) => this.handleKeyDown(e)}
>
-
Your preferences for Boostnote
+
{i18n.__('Your preferences for Boostnote')}
this.handleEscButtonClick(e)} />
diff --git a/browser/main/modals/RenameFolderModal.js b/browser/main/modals/RenameFolderModal.js
index bb08f36d..f4197196 100644
--- a/browser/main/modals/RenameFolderModal.js
+++ b/browser/main/modals/RenameFolderModal.js
@@ -5,6 +5,7 @@ import styles from './RenameFolderModal.styl'
import dataApi from 'browser/main/lib/dataApi'
import store from 'browser/main/store'
import ModalEscButton from 'browser/components/ModalEscButton'
+import i18n from 'browser/lib/i18n'
class RenameFolderModal extends React.Component {
constructor (props) {
@@ -72,7 +73,7 @@ class RenameFolderModal extends React.Component {
onKeyDown={(e) => this.handleKeyDown(e)}
>
-
Rename Folder
+
{i18n.__('Rename Folder')}
this.handleCloseButtonClick(e)} />
diff --git a/locales/da.json b/locales/da.json
new file mode 100644
index 00000000..60201b34
--- /dev/null
+++ b/locales/da.json
@@ -0,0 +1,144 @@
+{
+ "Notes": "Notes",
+ "Tags": "Tags",
+ "Preferences": "Preferences",
+ "Make a note": "Make a note",
+ "Ctrl": "Ctrl",
+ "Ctrl(^)": "Ctrl",
+ "to create a new note": "to create a new note",
+ "Toggle Mode": "Toggle Mode",
+ "Trash": "Trash",
+ "MODIFICATION DATE": "MODIFICATION DATE",
+ "Words": "Words",
+ "Letters": "Letters",
+ "STORAGE": "STORAGE",
+ "FOLDER": "FOLDER",
+ "CREATION DATE": "CREATION DATE",
+ "NOTE LINK": "NOTE LINK",
+ ".md": ".md",
+ ".txt": ".txt",
+ ".html": ".html",
+ "Print": "Print",
+ "Your preferences for Boostnote": "Your preferences for Boostnote",
+ "Storages": "Storages",
+ "Add Storage Location": "Add Storage Location",
+ "Add Folder": "Add Folder",
+ "Open Storage folder": "Open Storage folder",
+ "Unlink": "Unlink",
+ "Edit": "Edit",
+ "Delete": "Delete",
+ "Interface": "Interface",
+ "Interface Theme": "Interface Theme",
+ "Default": "Delete",
+ "White": "White",
+ "Solarized Dark": "Solarized Dark",
+ "Dark": "Dark",
+ "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes",
+ "Editor Theme": "Editor Theme",
+ "Editor Font Size": "Editor Font Size",
+ "Editor Font Family": "Editor Font Family",
+ "Editor Indent Style": "Editor Indent Style",
+ "Spaces": "Spaces",
+ "Tabs": "Tabs",
+ "Switch to Preview": "Switch to Preview",
+ "When Editor Blurred": "When Editor Blurred",
+ "When Editor Blurred, Edit On Double Click": "When Editor Blurred, Edit On Double Click",
+ "On Right Click": "On Right Click",
+ "Editor Keymap": "Editor Keymap",
+ "default": "default",
+ "vim": "vim",
+ "emacs": "emacs",
+ "⚠️ Please restart boostnote after you change the keymap": "⚠️ Please restart boostnote after you change the keymap",
+ "Show line numbers in the editor": "Show line numbers in the editor",
+ "Allow editor to scroll past the last line": "Allow editor to scroll past the last line",
+ "Bring in web page title when pasting URL on editor": "Bring in web page title when pasting URL on editor",
+ "Preview Font Size": "Preview Font Size",
+ "Preview Font Family": "Preview Font Family",
+ "Code block Theme": "Code block Theme",
+ "Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
+ "Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
+ "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
+ "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter",
+ "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter",
+ "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter",
+ "Community": "Community",
+ "Subscribe to Newsletter": "Subscribe to Newsletter",
+ "GitHub": "GitHub",
+ "Blog": "Blog",
+ "Facebook Group": "Facebook Group",
+ "Twitter": "Twitter",
+ "About": "About",
+ "Boostnote": "Boostnote",
+ "An open source note-taking app made for programmers just like you.": "An open source note-taking app made for programmers just like you.",
+ "Website": "Website",
+ "Development": "Development",
+ " : Development configurations for Boostnote.": " : Development configurations for Boostnote.",
+ "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO",
+ "License: GPL v3": "License: GPL v3",
+ "Analytics": "Analytics",
+ "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.",
+ "You can see how it works on ": "You can see how it works on ",
+ "You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
+ "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
+ "Crowdfunding": "Crowdfunding",
+ "Dear everyone,": "Dear everyone,",
+ "Thank you for using Boostnote!": "Thank you for using Boostnote!",
+ "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
+ "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
+ "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
+ "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
+ "Thanks,": "Thanks,",
+ "Boostnote maintainers": "Boostnote maintainers",
+ "Support via OpenCollective": "Support via OpenCollective",
+ "Language": "Language",
+ "English": "English",
+ "German": "German",
+ "French": "French",
+ "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying",
+ "All Notes": "All Notes",
+ "Starred": "Starred",
+ "Are you sure to ": "Are you sure to ",
+ " delete": " delete",
+ "this folder?": "this folder?",
+ "Confirm": "Confirm",
+ "Cancel": "Cancel",
+ "Markdown Note": "Markdown Note",
+ "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.",
+ "Snippet Note": "Snippet Note",
+ "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "This format is for creating code snippets. Multiple snippets can be grouped into a single note.",
+ "Tab to switch format": "Tab to switch format",
+ "Updated": "Updated",
+ "Created": "Created",
+ "Alphabetically": "Alphabetically",
+ "Default View": "Default View",
+ "Compressed View": "Compressed View",
+ "Search": "Search",
+ "Blog Type": "Blog Type",
+ "Blog Address": "Blog Address",
+ "Save": "Save",
+ "Auth": "Auth",
+ "Authentication Method": "Authentication Method",
+ "JWT": "JWT",
+ "USER": "USER",
+ "Token": "Token",
+ "Storage": "Storage",
+ "Hotkeys": "Hotkeys",
+ "Show/Hide Boostnote": "Show/Hide Boostnote",
+ "Restore": "Restore",
+ "Permanent Delete": "Permanent Delete",
+ "Confirm note deletion": "Confirm note deletion",
+ "This will permanently remove this note.": "This will permanently remove this note.",
+ "Successfully applied!": "Successfully applied!",
+ "Albanian": "Albanian",
+ "Chinese (zh-CN)": "Chinese (zh-CN)",
+ "Chinese (zh-TW)": "Chinese (zh-TW)",
+ "Danish": "Danish",
+ "Japanese": "Japanese",
+ "Korean": "Korean",
+ "Norwegian": "Norwegian",
+ "Polish": "Polish",
+ "Portuguese": "Portuguese",
+ "Spanish": "Spanish",
+ "You have to save!": "You have to save!",
+ "Russian": "Russian"
+}
\ No newline at end of file
diff --git a/locales/de.json b/locales/de.json
new file mode 100644
index 00000000..fb2b6b11
--- /dev/null
+++ b/locales/de.json
@@ -0,0 +1,146 @@
+{
+ "Notes": "Notizen",
+ "Tags": "Tags",
+ "Preferences": "Einstellungen",
+ "Make a note": "Notiz erstellen",
+ "Ctrl": "Ctrl",
+ "Ctrl(^)": "Ctrl",
+ "to create a new note": "um eine neue Notiz zu erstellen",
+ "Toggle Mode": "Modus umschalten",
+ "Trash": "Papierkorb",
+ "MODIFICATION DATE": "ÄNDERUNGSDATUM",
+ "Words": "Wörter",
+ "Letters": "Buchstaben",
+ "STORAGE": "SPEICHERORT",
+ "FOLDER": "ORDNER",
+ "CREATION DATE": "ERSTELLUNGSDATUM",
+ "NOTE LINK": "NOTIZ LINK",
+ ".md": ".md",
+ ".txt": ".txt",
+ ".html": ".html",
+ "Print": "Print",
+ "Your preferences for Boostnote": "Deine Boostnote Einstellungen",
+ "Storages": "Speicherorte",
+ "Add Storage Location": "Speicherort Hinzufügen",
+ "Add Folder": "Ordner Hinzufügen",
+ "Open Storage folder": "Speicherort Öffnen",
+ "Unlink": "Verknüpfung aufheben",
+ "Edit": "Bearbeiten",
+ "Delete": "Löschen",
+ "Interface": "Interface",
+ "Interface Theme": "Interface-Thema",
+ "Default": "Standard",
+ "White": "Weiß",
+ "Solarized Dark": "Solarized Dark",
+ "Dark": "Dark",
+ "Show a confirmation dialog when deleting notes": "Bestätigungsdialog beim Löschen von Notizen anzeigen",
+ "Editor Theme": "Editor Theme",
+ "Editor Font Size": "Editor Schriftgröße",
+ "Editor Font Family": "Editor Schriftart",
+ "Editor Indent Style": "Editor Einrückestil",
+ "Spaces": "Leerzeichen",
+ "Tabs": "Tabs",
+ "Switch to Preview": "Zur Vorschau wechseln",
+ "When Editor Blurred": "Wenn Editor verschwommen ist",
+ "When Editor Blurred, Edit On Double Click": "Mit Doppelklick bearbeiten, wenn Editor verschwommen ist",
+ "On Right Click": "Mit Rechtsklcik",
+ "Editor Keymap": "Editor Tastenbelegung",
+ "default": "standard",
+ "vim": "vim",
+ "emacs": "emacs",
+ "⚠️ Please restart boostnote after you change the keymap": "⚠️ Boostnote nach Änderung der Tastenbelegung neu starten",
+ "Show line numbers in the editor": "Zeilennummern im Editor anzeigen",
+ "Allow editor to scroll past the last line": "Editor das Scrollen über das Ende hinaus erlauben",
+ "Bring in web page title when pasting URL on editor": "Websitetitel beim Einfügen in den Editor anzeigen",
+ "Preview Font Size": "Vorschau Schriftgröße",
+ "Preview Font Family": "Vorschau Schriftart",
+ "Code block Theme": "Code block Theme",
+ "Allow preview to scroll past the last line": "Vorschau das Scrollen über das Ende hinaus erlauben",
+ "Show line numbers for preview code blocks": "Zeilennummern in Vorschau-Code-Blöcken anzeigen",
+ "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
+ "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter",
+ "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter",
+ "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter",
+ "Community": "Community",
+ "Subscribe to Newsletter": "Newsletter abonnieren",
+ "GitHub": "GitHub",
+ "Blog": "Blog",
+ "Facebook Group": "Facebook Group",
+ "Twitter": "Twitter",
+ "About": "About",
+ "Boostnote": "Boostnote",
+ "An open source note-taking app made for programmers just like you.": "Eine OpenSource-Notizapp für Programmierer wie du und ich.",
+ "Website": "Website",
+ "Development": "Entwicklung",
+ " : Development configurations for Boostnote.": " : Entwicklungseinstellungen für Boostnote.",
+ "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO",
+ "License: GPL v3": "License: GPL v3",
+ "Analytics": "Analytics",
+ "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote sammelt anonyme Daten, um die App zu verbessern und nicht persönliche Informationen, wie z.B. der Inhalt deiner Notizen.",
+ "You can see how it works on ": "You can see how it works on ",
+ "You can choose to enable or disable this option.": "Du kannst wählen, ob du diese Option aktivierst oder daektivierst.",
+ "Enable analytics to help improve Boostnote": "Datenerhebung zur Verbesserung von Boostnote aktivieren",
+ "Crowdfunding": "Crowdfunding",
+ "Dear everyone,": "Dear everyone,",
+ "Thank you for using Boostnote!": "Thank you for using Boostnote!",
+ "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
+ "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
+ "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
+ "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
+ "Thanks,": "Thanks,",
+ "Boostnote maintainers": "Boostnote Betreuer",
+ "Support via OpenCollective": "Support per OpenCollective",
+ "Language": "Sprache",
+ "English": "Englisch",
+ "German": "Deutsch",
+ "French": "Französisch",
+ "Show \"Saved to Clipboard\" notification when copying": "\"Auf Clipboard gespeichert\" Benachrichtigungen beim kopieren anzeigen",
+ "All Notes": "Alle Notizen",
+ "Starred": "Starred",
+ "Are you sure to ": "Sind sie sicher ",
+ " delete": " zu löschen",
+ "this folder?": "diesen Ordner?",
+ "Confirm": "Bestätigen",
+ "Cancel": "Abbrechen",
+ "Markdown Note": "Markdown Notiz",
+ "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "Dieses Format dient der Erstellung von Text Dokumenten. Checklisten, Code-Blöcke und Latex-Blöcke sind verfügbar.",
+ "Snippet Note": "Snippet Notiz",
+ "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "Dieses Format dient der Erstellung von Code-Schnipslen. Mehrere snippets können zu einer Notiz zusammengefasst werden.",
+ "Tab to switch format": "Tab drücken, um das Format zu wechseln",
+ "Updated": "Bearbeitet",
+ "Created": "Erstellt",
+ "Alphabetically": "Alphabetisch",
+ "Default View": "Standardansicht",
+ "Compressed View": "Komprimierte Ansicht",
+ "Search": "Suchen",
+ "Blog Type": "Blog-Typ",
+ "Blog Address": "Blog Adresse",
+ "Save": "Speichern",
+ "Auth": "Authentifizierung",
+ "Authentication Method": "Authentifizierungsmethode",
+ "JWT": "JWT",
+ "USER": "BENUTZER",
+ "Token": "Token",
+ "Storage": "Speicherorte",
+ "Hotkeys": "Hotkeys",
+ "Show/Hide Boostnote": "Boostnote anzeigen/verstecken",
+ "Restore": "Restore",
+ "Permanent Delete": "Dauerhaft Löschen",
+ "Confirm note deletion": "Löschen bestätigen",
+ "This will permanently remove this note.": "Notiz wird dauerhaft gelöscht",
+ "You have to save!": "Es muss gespeichert werden",
+ "Albanian": "Albanisch",
+ "Danish": "Dänisch",
+ "Japanese": "Japanisch",
+ "Korean": "Koreanisch",
+ "Norwegian": "Norwegisch",
+ "Polish": "Polnish",
+ "Portuguese": "Portugiesisch",
+ "Spanish": "Spanisch",
+ "Chinese (zh-CN)": "Chinesisch (zh-CN)",
+ "Chinese (zh-TW)": "Chinesisch (zh-TW)",
+ "Successfully applied!": "Erfolgreich angewendet!",
+ "UserName": "UserName",
+ "Password": "Password",
+ "Russian": "Russian"
+}
\ No newline at end of file
diff --git a/locales/en.json b/locales/en.json
new file mode 100644
index 00000000..91cb7f18
--- /dev/null
+++ b/locales/en.json
@@ -0,0 +1,146 @@
+{
+ "Notes": "Notes",
+ "Tags": "Tags",
+ "Preferences": "Preferences",
+ "Make a note": "Make a note",
+ "Ctrl": "Ctrl",
+ "Ctrl(^)": "Ctrl",
+ "to create a new note": "to create a new note",
+ "Toggle Mode": "Toggle Mode",
+ "Trash": "Trash",
+ "MODIFICATION DATE": "MODIFICATION DATE",
+ "Words": "Words",
+ "Letters": "Letters",
+ "STORAGE": "STORAGE",
+ "FOLDER": "FOLDER",
+ "CREATION DATE": "CREATION DATE",
+ "NOTE LINK": "NOTE LINK",
+ ".md": ".md",
+ ".txt": ".txt",
+ ".html": ".html",
+ "Print": "Print",
+ "Your preferences for Boostnote": "Your preferences for Boostnote",
+ "Storages": "Storages",
+ "Add Storage Location": "Add Storage Location",
+ "Add Folder": "Add Folder",
+ "Open Storage folder": "Open Storage folder",
+ "Unlink": "Unlink",
+ "Edit": "Edit",
+ "Delete": "Delete",
+ "Interface": "Interface",
+ "Interface Theme": "Interface Theme",
+ "Default": "Delete",
+ "White": "White",
+ "Solarized Dark": "Solarized Dark",
+ "Dark": "Dark",
+ "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes",
+ "Editor Theme": "Editor Theme",
+ "Editor Font Size": "Editor Font Size",
+ "Editor Font Family": "Editor Font Family",
+ "Editor Indent Style": "Editor Indent Style",
+ "Spaces": "Spaces",
+ "Tabs": "Tabs",
+ "Switch to Preview": "Switch to Preview",
+ "When Editor Blurred": "When Editor Blurred",
+ "When Editor Blurred, Edit On Double Click": "When Editor Blurred, Edit On Double Click",
+ "On Right Click": "On Right Click",
+ "Editor Keymap": "Editor Keymap",
+ "default": "default",
+ "vim": "vim",
+ "emacs": "emacs",
+ "⚠️ Please restart boostnote after you change the keymap": "⚠️ Please restart boostnote after you change the keymap",
+ "Show line numbers in the editor": "Show line numbers in the editor",
+ "Allow editor to scroll past the last line": "Allow editor to scroll past the last line",
+ "Bring in web page title when pasting URL on editor": "Bring in web page title when pasting URL on editor",
+ "Preview Font Size": "Preview Font Size",
+ "Preview Font Family": "Preview Font Family",
+ "Code block Theme": "Code block Theme",
+ "Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
+ "Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
+ "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
+ "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter",
+ "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter",
+ "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter",
+ "Community": "Community",
+ "Subscribe to Newsletter": "Subscribe to Newsletter",
+ "GitHub": "GitHub",
+ "Blog": "Blog",
+ "Facebook Group": "Facebook Group",
+ "Twitter": "Twitter",
+ "About": "About",
+ "Boostnote": "Boostnote",
+ "An open source note-taking app made for programmers just like you.": "An open source note-taking app made for programmers just like you.",
+ "Website": "Website",
+ "Development": "Development",
+ " : Development configurations for Boostnote.": " : Development configurations for Boostnote.",
+ "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO",
+ "License: GPL v3": "License: GPL v3",
+ "Analytics": "Analytics",
+ "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.",
+ "You can see how it works on ": "You can see how it works on ",
+ "You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
+ "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
+ "Crowdfunding": "Crowdfunding",
+ "Dear everyone,": "Dear everyone,",
+ "Thank you for using Boostnote!": "Thank you for using Boostnote!",
+ "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
+ "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
+ "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
+ "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
+ "Thanks,": "Thanks,",
+ "Boostnote maintainers": "Boostnote maintainers",
+ "Support via OpenCollective": "Support via OpenCollective",
+ "Language": "Language",
+ "English": "English",
+ "German": "German",
+ "French": "French",
+ "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying",
+ "All Notes": "All Notes",
+ "Starred": "Starred",
+ "Are you sure to ": "Are you sure to ",
+ " delete": " delete",
+ "this folder?": "this folder?",
+ "Confirm": "Confirm",
+ "Cancel": "Cancel",
+ "Markdown Note": "Markdown Note",
+ "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.",
+ "Snippet Note": "Snippet Note",
+ "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "This format is for creating code snippets. Multiple snippets can be grouped into a single note.",
+ "Tab to switch format": "Tab to switch format",
+ "Updated": "Updated",
+ "Created": "Created",
+ "Alphabetically": "Alphabetically",
+ "Default View": "Default View",
+ "Compressed View": "Compressed View",
+ "Search": "Search",
+ "Blog Type": "Blog Type",
+ "Blog Address": "Blog Address",
+ "Save": "Save",
+ "Auth": "Auth",
+ "Authentication Method": "Authentication Method",
+ "JWT": "JWT",
+ "USER": "USER",
+ "Token": "Token",
+ "Storage": "Storage",
+ "Hotkeys": "Hotkeys",
+ "Show/Hide Boostnote": "Show/Hide Boostnote",
+ "Restore": "Restore",
+ "Permanent Delete": "Permanent Delete",
+ "Confirm note deletion": "Confirm note deletion",
+ "This will permanently remove this note.": "This will permanently remove this note.",
+ "Successfully applied!": "Successfully applied!",
+ "Albanian": "Albanian",
+ "Chinese (zh-CN)": "Chinese (zh-CN)",
+ "Chinese (zh-TW)": "Chinese (zh-TW)",
+ "Danish": "Danish",
+ "Japanese": "Japanese",
+ "Korean": "Korean",
+ "Norwegian": "Norwegian",
+ "Polish": "Polish",
+ "Portuguese": "Portuguese",
+ "Spanish": "Spanish",
+ "You have to save!": "You have to save!",
+ "UserName": "UserName",
+ "Password": "Password",
+ "Russian": "Russian"
+}
\ No newline at end of file
diff --git a/locales/es.json b/locales/es.json
new file mode 100644
index 00000000..60201b34
--- /dev/null
+++ b/locales/es.json
@@ -0,0 +1,144 @@
+{
+ "Notes": "Notes",
+ "Tags": "Tags",
+ "Preferences": "Preferences",
+ "Make a note": "Make a note",
+ "Ctrl": "Ctrl",
+ "Ctrl(^)": "Ctrl",
+ "to create a new note": "to create a new note",
+ "Toggle Mode": "Toggle Mode",
+ "Trash": "Trash",
+ "MODIFICATION DATE": "MODIFICATION DATE",
+ "Words": "Words",
+ "Letters": "Letters",
+ "STORAGE": "STORAGE",
+ "FOLDER": "FOLDER",
+ "CREATION DATE": "CREATION DATE",
+ "NOTE LINK": "NOTE LINK",
+ ".md": ".md",
+ ".txt": ".txt",
+ ".html": ".html",
+ "Print": "Print",
+ "Your preferences for Boostnote": "Your preferences for Boostnote",
+ "Storages": "Storages",
+ "Add Storage Location": "Add Storage Location",
+ "Add Folder": "Add Folder",
+ "Open Storage folder": "Open Storage folder",
+ "Unlink": "Unlink",
+ "Edit": "Edit",
+ "Delete": "Delete",
+ "Interface": "Interface",
+ "Interface Theme": "Interface Theme",
+ "Default": "Delete",
+ "White": "White",
+ "Solarized Dark": "Solarized Dark",
+ "Dark": "Dark",
+ "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes",
+ "Editor Theme": "Editor Theme",
+ "Editor Font Size": "Editor Font Size",
+ "Editor Font Family": "Editor Font Family",
+ "Editor Indent Style": "Editor Indent Style",
+ "Spaces": "Spaces",
+ "Tabs": "Tabs",
+ "Switch to Preview": "Switch to Preview",
+ "When Editor Blurred": "When Editor Blurred",
+ "When Editor Blurred, Edit On Double Click": "When Editor Blurred, Edit On Double Click",
+ "On Right Click": "On Right Click",
+ "Editor Keymap": "Editor Keymap",
+ "default": "default",
+ "vim": "vim",
+ "emacs": "emacs",
+ "⚠️ Please restart boostnote after you change the keymap": "⚠️ Please restart boostnote after you change the keymap",
+ "Show line numbers in the editor": "Show line numbers in the editor",
+ "Allow editor to scroll past the last line": "Allow editor to scroll past the last line",
+ "Bring in web page title when pasting URL on editor": "Bring in web page title when pasting URL on editor",
+ "Preview Font Size": "Preview Font Size",
+ "Preview Font Family": "Preview Font Family",
+ "Code block Theme": "Code block Theme",
+ "Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
+ "Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
+ "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
+ "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter",
+ "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter",
+ "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter",
+ "Community": "Community",
+ "Subscribe to Newsletter": "Subscribe to Newsletter",
+ "GitHub": "GitHub",
+ "Blog": "Blog",
+ "Facebook Group": "Facebook Group",
+ "Twitter": "Twitter",
+ "About": "About",
+ "Boostnote": "Boostnote",
+ "An open source note-taking app made for programmers just like you.": "An open source note-taking app made for programmers just like you.",
+ "Website": "Website",
+ "Development": "Development",
+ " : Development configurations for Boostnote.": " : Development configurations for Boostnote.",
+ "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO",
+ "License: GPL v3": "License: GPL v3",
+ "Analytics": "Analytics",
+ "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.",
+ "You can see how it works on ": "You can see how it works on ",
+ "You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
+ "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
+ "Crowdfunding": "Crowdfunding",
+ "Dear everyone,": "Dear everyone,",
+ "Thank you for using Boostnote!": "Thank you for using Boostnote!",
+ "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
+ "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
+ "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
+ "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
+ "Thanks,": "Thanks,",
+ "Boostnote maintainers": "Boostnote maintainers",
+ "Support via OpenCollective": "Support via OpenCollective",
+ "Language": "Language",
+ "English": "English",
+ "German": "German",
+ "French": "French",
+ "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying",
+ "All Notes": "All Notes",
+ "Starred": "Starred",
+ "Are you sure to ": "Are you sure to ",
+ " delete": " delete",
+ "this folder?": "this folder?",
+ "Confirm": "Confirm",
+ "Cancel": "Cancel",
+ "Markdown Note": "Markdown Note",
+ "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.",
+ "Snippet Note": "Snippet Note",
+ "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "This format is for creating code snippets. Multiple snippets can be grouped into a single note.",
+ "Tab to switch format": "Tab to switch format",
+ "Updated": "Updated",
+ "Created": "Created",
+ "Alphabetically": "Alphabetically",
+ "Default View": "Default View",
+ "Compressed View": "Compressed View",
+ "Search": "Search",
+ "Blog Type": "Blog Type",
+ "Blog Address": "Blog Address",
+ "Save": "Save",
+ "Auth": "Auth",
+ "Authentication Method": "Authentication Method",
+ "JWT": "JWT",
+ "USER": "USER",
+ "Token": "Token",
+ "Storage": "Storage",
+ "Hotkeys": "Hotkeys",
+ "Show/Hide Boostnote": "Show/Hide Boostnote",
+ "Restore": "Restore",
+ "Permanent Delete": "Permanent Delete",
+ "Confirm note deletion": "Confirm note deletion",
+ "This will permanently remove this note.": "This will permanently remove this note.",
+ "Successfully applied!": "Successfully applied!",
+ "Albanian": "Albanian",
+ "Chinese (zh-CN)": "Chinese (zh-CN)",
+ "Chinese (zh-TW)": "Chinese (zh-TW)",
+ "Danish": "Danish",
+ "Japanese": "Japanese",
+ "Korean": "Korean",
+ "Norwegian": "Norwegian",
+ "Polish": "Polish",
+ "Portuguese": "Portuguese",
+ "Spanish": "Spanish",
+ "You have to save!": "You have to save!",
+ "Russian": "Russian"
+}
\ No newline at end of file
diff --git a/locales/fr.json b/locales/fr.json
new file mode 100644
index 00000000..60201b34
--- /dev/null
+++ b/locales/fr.json
@@ -0,0 +1,144 @@
+{
+ "Notes": "Notes",
+ "Tags": "Tags",
+ "Preferences": "Preferences",
+ "Make a note": "Make a note",
+ "Ctrl": "Ctrl",
+ "Ctrl(^)": "Ctrl",
+ "to create a new note": "to create a new note",
+ "Toggle Mode": "Toggle Mode",
+ "Trash": "Trash",
+ "MODIFICATION DATE": "MODIFICATION DATE",
+ "Words": "Words",
+ "Letters": "Letters",
+ "STORAGE": "STORAGE",
+ "FOLDER": "FOLDER",
+ "CREATION DATE": "CREATION DATE",
+ "NOTE LINK": "NOTE LINK",
+ ".md": ".md",
+ ".txt": ".txt",
+ ".html": ".html",
+ "Print": "Print",
+ "Your preferences for Boostnote": "Your preferences for Boostnote",
+ "Storages": "Storages",
+ "Add Storage Location": "Add Storage Location",
+ "Add Folder": "Add Folder",
+ "Open Storage folder": "Open Storage folder",
+ "Unlink": "Unlink",
+ "Edit": "Edit",
+ "Delete": "Delete",
+ "Interface": "Interface",
+ "Interface Theme": "Interface Theme",
+ "Default": "Delete",
+ "White": "White",
+ "Solarized Dark": "Solarized Dark",
+ "Dark": "Dark",
+ "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes",
+ "Editor Theme": "Editor Theme",
+ "Editor Font Size": "Editor Font Size",
+ "Editor Font Family": "Editor Font Family",
+ "Editor Indent Style": "Editor Indent Style",
+ "Spaces": "Spaces",
+ "Tabs": "Tabs",
+ "Switch to Preview": "Switch to Preview",
+ "When Editor Blurred": "When Editor Blurred",
+ "When Editor Blurred, Edit On Double Click": "When Editor Blurred, Edit On Double Click",
+ "On Right Click": "On Right Click",
+ "Editor Keymap": "Editor Keymap",
+ "default": "default",
+ "vim": "vim",
+ "emacs": "emacs",
+ "⚠️ Please restart boostnote after you change the keymap": "⚠️ Please restart boostnote after you change the keymap",
+ "Show line numbers in the editor": "Show line numbers in the editor",
+ "Allow editor to scroll past the last line": "Allow editor to scroll past the last line",
+ "Bring in web page title when pasting URL on editor": "Bring in web page title when pasting URL on editor",
+ "Preview Font Size": "Preview Font Size",
+ "Preview Font Family": "Preview Font Family",
+ "Code block Theme": "Code block Theme",
+ "Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
+ "Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
+ "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
+ "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter",
+ "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter",
+ "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter",
+ "Community": "Community",
+ "Subscribe to Newsletter": "Subscribe to Newsletter",
+ "GitHub": "GitHub",
+ "Blog": "Blog",
+ "Facebook Group": "Facebook Group",
+ "Twitter": "Twitter",
+ "About": "About",
+ "Boostnote": "Boostnote",
+ "An open source note-taking app made for programmers just like you.": "An open source note-taking app made for programmers just like you.",
+ "Website": "Website",
+ "Development": "Development",
+ " : Development configurations for Boostnote.": " : Development configurations for Boostnote.",
+ "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO",
+ "License: GPL v3": "License: GPL v3",
+ "Analytics": "Analytics",
+ "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.",
+ "You can see how it works on ": "You can see how it works on ",
+ "You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
+ "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
+ "Crowdfunding": "Crowdfunding",
+ "Dear everyone,": "Dear everyone,",
+ "Thank you for using Boostnote!": "Thank you for using Boostnote!",
+ "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
+ "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
+ "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
+ "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
+ "Thanks,": "Thanks,",
+ "Boostnote maintainers": "Boostnote maintainers",
+ "Support via OpenCollective": "Support via OpenCollective",
+ "Language": "Language",
+ "English": "English",
+ "German": "German",
+ "French": "French",
+ "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying",
+ "All Notes": "All Notes",
+ "Starred": "Starred",
+ "Are you sure to ": "Are you sure to ",
+ " delete": " delete",
+ "this folder?": "this folder?",
+ "Confirm": "Confirm",
+ "Cancel": "Cancel",
+ "Markdown Note": "Markdown Note",
+ "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.",
+ "Snippet Note": "Snippet Note",
+ "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "This format is for creating code snippets. Multiple snippets can be grouped into a single note.",
+ "Tab to switch format": "Tab to switch format",
+ "Updated": "Updated",
+ "Created": "Created",
+ "Alphabetically": "Alphabetically",
+ "Default View": "Default View",
+ "Compressed View": "Compressed View",
+ "Search": "Search",
+ "Blog Type": "Blog Type",
+ "Blog Address": "Blog Address",
+ "Save": "Save",
+ "Auth": "Auth",
+ "Authentication Method": "Authentication Method",
+ "JWT": "JWT",
+ "USER": "USER",
+ "Token": "Token",
+ "Storage": "Storage",
+ "Hotkeys": "Hotkeys",
+ "Show/Hide Boostnote": "Show/Hide Boostnote",
+ "Restore": "Restore",
+ "Permanent Delete": "Permanent Delete",
+ "Confirm note deletion": "Confirm note deletion",
+ "This will permanently remove this note.": "This will permanently remove this note.",
+ "Successfully applied!": "Successfully applied!",
+ "Albanian": "Albanian",
+ "Chinese (zh-CN)": "Chinese (zh-CN)",
+ "Chinese (zh-TW)": "Chinese (zh-TW)",
+ "Danish": "Danish",
+ "Japanese": "Japanese",
+ "Korean": "Korean",
+ "Norwegian": "Norwegian",
+ "Polish": "Polish",
+ "Portuguese": "Portuguese",
+ "Spanish": "Spanish",
+ "You have to save!": "You have to save!",
+ "Russian": "Russian"
+}
\ No newline at end of file
diff --git a/locales/ja.json b/locales/ja.json
new file mode 100644
index 00000000..60201b34
--- /dev/null
+++ b/locales/ja.json
@@ -0,0 +1,144 @@
+{
+ "Notes": "Notes",
+ "Tags": "Tags",
+ "Preferences": "Preferences",
+ "Make a note": "Make a note",
+ "Ctrl": "Ctrl",
+ "Ctrl(^)": "Ctrl",
+ "to create a new note": "to create a new note",
+ "Toggle Mode": "Toggle Mode",
+ "Trash": "Trash",
+ "MODIFICATION DATE": "MODIFICATION DATE",
+ "Words": "Words",
+ "Letters": "Letters",
+ "STORAGE": "STORAGE",
+ "FOLDER": "FOLDER",
+ "CREATION DATE": "CREATION DATE",
+ "NOTE LINK": "NOTE LINK",
+ ".md": ".md",
+ ".txt": ".txt",
+ ".html": ".html",
+ "Print": "Print",
+ "Your preferences for Boostnote": "Your preferences for Boostnote",
+ "Storages": "Storages",
+ "Add Storage Location": "Add Storage Location",
+ "Add Folder": "Add Folder",
+ "Open Storage folder": "Open Storage folder",
+ "Unlink": "Unlink",
+ "Edit": "Edit",
+ "Delete": "Delete",
+ "Interface": "Interface",
+ "Interface Theme": "Interface Theme",
+ "Default": "Delete",
+ "White": "White",
+ "Solarized Dark": "Solarized Dark",
+ "Dark": "Dark",
+ "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes",
+ "Editor Theme": "Editor Theme",
+ "Editor Font Size": "Editor Font Size",
+ "Editor Font Family": "Editor Font Family",
+ "Editor Indent Style": "Editor Indent Style",
+ "Spaces": "Spaces",
+ "Tabs": "Tabs",
+ "Switch to Preview": "Switch to Preview",
+ "When Editor Blurred": "When Editor Blurred",
+ "When Editor Blurred, Edit On Double Click": "When Editor Blurred, Edit On Double Click",
+ "On Right Click": "On Right Click",
+ "Editor Keymap": "Editor Keymap",
+ "default": "default",
+ "vim": "vim",
+ "emacs": "emacs",
+ "⚠️ Please restart boostnote after you change the keymap": "⚠️ Please restart boostnote after you change the keymap",
+ "Show line numbers in the editor": "Show line numbers in the editor",
+ "Allow editor to scroll past the last line": "Allow editor to scroll past the last line",
+ "Bring in web page title when pasting URL on editor": "Bring in web page title when pasting URL on editor",
+ "Preview Font Size": "Preview Font Size",
+ "Preview Font Family": "Preview Font Family",
+ "Code block Theme": "Code block Theme",
+ "Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
+ "Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
+ "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
+ "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter",
+ "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter",
+ "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter",
+ "Community": "Community",
+ "Subscribe to Newsletter": "Subscribe to Newsletter",
+ "GitHub": "GitHub",
+ "Blog": "Blog",
+ "Facebook Group": "Facebook Group",
+ "Twitter": "Twitter",
+ "About": "About",
+ "Boostnote": "Boostnote",
+ "An open source note-taking app made for programmers just like you.": "An open source note-taking app made for programmers just like you.",
+ "Website": "Website",
+ "Development": "Development",
+ " : Development configurations for Boostnote.": " : Development configurations for Boostnote.",
+ "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO",
+ "License: GPL v3": "License: GPL v3",
+ "Analytics": "Analytics",
+ "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.",
+ "You can see how it works on ": "You can see how it works on ",
+ "You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
+ "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
+ "Crowdfunding": "Crowdfunding",
+ "Dear everyone,": "Dear everyone,",
+ "Thank you for using Boostnote!": "Thank you for using Boostnote!",
+ "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
+ "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
+ "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
+ "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
+ "Thanks,": "Thanks,",
+ "Boostnote maintainers": "Boostnote maintainers",
+ "Support via OpenCollective": "Support via OpenCollective",
+ "Language": "Language",
+ "English": "English",
+ "German": "German",
+ "French": "French",
+ "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying",
+ "All Notes": "All Notes",
+ "Starred": "Starred",
+ "Are you sure to ": "Are you sure to ",
+ " delete": " delete",
+ "this folder?": "this folder?",
+ "Confirm": "Confirm",
+ "Cancel": "Cancel",
+ "Markdown Note": "Markdown Note",
+ "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.",
+ "Snippet Note": "Snippet Note",
+ "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "This format is for creating code snippets. Multiple snippets can be grouped into a single note.",
+ "Tab to switch format": "Tab to switch format",
+ "Updated": "Updated",
+ "Created": "Created",
+ "Alphabetically": "Alphabetically",
+ "Default View": "Default View",
+ "Compressed View": "Compressed View",
+ "Search": "Search",
+ "Blog Type": "Blog Type",
+ "Blog Address": "Blog Address",
+ "Save": "Save",
+ "Auth": "Auth",
+ "Authentication Method": "Authentication Method",
+ "JWT": "JWT",
+ "USER": "USER",
+ "Token": "Token",
+ "Storage": "Storage",
+ "Hotkeys": "Hotkeys",
+ "Show/Hide Boostnote": "Show/Hide Boostnote",
+ "Restore": "Restore",
+ "Permanent Delete": "Permanent Delete",
+ "Confirm note deletion": "Confirm note deletion",
+ "This will permanently remove this note.": "This will permanently remove this note.",
+ "Successfully applied!": "Successfully applied!",
+ "Albanian": "Albanian",
+ "Chinese (zh-CN)": "Chinese (zh-CN)",
+ "Chinese (zh-TW)": "Chinese (zh-TW)",
+ "Danish": "Danish",
+ "Japanese": "Japanese",
+ "Korean": "Korean",
+ "Norwegian": "Norwegian",
+ "Polish": "Polish",
+ "Portuguese": "Portuguese",
+ "Spanish": "Spanish",
+ "You have to save!": "You have to save!",
+ "Russian": "Russian"
+}
\ No newline at end of file
diff --git a/locales/ko.json b/locales/ko.json
new file mode 100644
index 00000000..60201b34
--- /dev/null
+++ b/locales/ko.json
@@ -0,0 +1,144 @@
+{
+ "Notes": "Notes",
+ "Tags": "Tags",
+ "Preferences": "Preferences",
+ "Make a note": "Make a note",
+ "Ctrl": "Ctrl",
+ "Ctrl(^)": "Ctrl",
+ "to create a new note": "to create a new note",
+ "Toggle Mode": "Toggle Mode",
+ "Trash": "Trash",
+ "MODIFICATION DATE": "MODIFICATION DATE",
+ "Words": "Words",
+ "Letters": "Letters",
+ "STORAGE": "STORAGE",
+ "FOLDER": "FOLDER",
+ "CREATION DATE": "CREATION DATE",
+ "NOTE LINK": "NOTE LINK",
+ ".md": ".md",
+ ".txt": ".txt",
+ ".html": ".html",
+ "Print": "Print",
+ "Your preferences for Boostnote": "Your preferences for Boostnote",
+ "Storages": "Storages",
+ "Add Storage Location": "Add Storage Location",
+ "Add Folder": "Add Folder",
+ "Open Storage folder": "Open Storage folder",
+ "Unlink": "Unlink",
+ "Edit": "Edit",
+ "Delete": "Delete",
+ "Interface": "Interface",
+ "Interface Theme": "Interface Theme",
+ "Default": "Delete",
+ "White": "White",
+ "Solarized Dark": "Solarized Dark",
+ "Dark": "Dark",
+ "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes",
+ "Editor Theme": "Editor Theme",
+ "Editor Font Size": "Editor Font Size",
+ "Editor Font Family": "Editor Font Family",
+ "Editor Indent Style": "Editor Indent Style",
+ "Spaces": "Spaces",
+ "Tabs": "Tabs",
+ "Switch to Preview": "Switch to Preview",
+ "When Editor Blurred": "When Editor Blurred",
+ "When Editor Blurred, Edit On Double Click": "When Editor Blurred, Edit On Double Click",
+ "On Right Click": "On Right Click",
+ "Editor Keymap": "Editor Keymap",
+ "default": "default",
+ "vim": "vim",
+ "emacs": "emacs",
+ "⚠️ Please restart boostnote after you change the keymap": "⚠️ Please restart boostnote after you change the keymap",
+ "Show line numbers in the editor": "Show line numbers in the editor",
+ "Allow editor to scroll past the last line": "Allow editor to scroll past the last line",
+ "Bring in web page title when pasting URL on editor": "Bring in web page title when pasting URL on editor",
+ "Preview Font Size": "Preview Font Size",
+ "Preview Font Family": "Preview Font Family",
+ "Code block Theme": "Code block Theme",
+ "Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
+ "Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
+ "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
+ "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter",
+ "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter",
+ "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter",
+ "Community": "Community",
+ "Subscribe to Newsletter": "Subscribe to Newsletter",
+ "GitHub": "GitHub",
+ "Blog": "Blog",
+ "Facebook Group": "Facebook Group",
+ "Twitter": "Twitter",
+ "About": "About",
+ "Boostnote": "Boostnote",
+ "An open source note-taking app made for programmers just like you.": "An open source note-taking app made for programmers just like you.",
+ "Website": "Website",
+ "Development": "Development",
+ " : Development configurations for Boostnote.": " : Development configurations for Boostnote.",
+ "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO",
+ "License: GPL v3": "License: GPL v3",
+ "Analytics": "Analytics",
+ "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.",
+ "You can see how it works on ": "You can see how it works on ",
+ "You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
+ "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
+ "Crowdfunding": "Crowdfunding",
+ "Dear everyone,": "Dear everyone,",
+ "Thank you for using Boostnote!": "Thank you for using Boostnote!",
+ "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
+ "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
+ "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
+ "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
+ "Thanks,": "Thanks,",
+ "Boostnote maintainers": "Boostnote maintainers",
+ "Support via OpenCollective": "Support via OpenCollective",
+ "Language": "Language",
+ "English": "English",
+ "German": "German",
+ "French": "French",
+ "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying",
+ "All Notes": "All Notes",
+ "Starred": "Starred",
+ "Are you sure to ": "Are you sure to ",
+ " delete": " delete",
+ "this folder?": "this folder?",
+ "Confirm": "Confirm",
+ "Cancel": "Cancel",
+ "Markdown Note": "Markdown Note",
+ "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.",
+ "Snippet Note": "Snippet Note",
+ "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "This format is for creating code snippets. Multiple snippets can be grouped into a single note.",
+ "Tab to switch format": "Tab to switch format",
+ "Updated": "Updated",
+ "Created": "Created",
+ "Alphabetically": "Alphabetically",
+ "Default View": "Default View",
+ "Compressed View": "Compressed View",
+ "Search": "Search",
+ "Blog Type": "Blog Type",
+ "Blog Address": "Blog Address",
+ "Save": "Save",
+ "Auth": "Auth",
+ "Authentication Method": "Authentication Method",
+ "JWT": "JWT",
+ "USER": "USER",
+ "Token": "Token",
+ "Storage": "Storage",
+ "Hotkeys": "Hotkeys",
+ "Show/Hide Boostnote": "Show/Hide Boostnote",
+ "Restore": "Restore",
+ "Permanent Delete": "Permanent Delete",
+ "Confirm note deletion": "Confirm note deletion",
+ "This will permanently remove this note.": "This will permanently remove this note.",
+ "Successfully applied!": "Successfully applied!",
+ "Albanian": "Albanian",
+ "Chinese (zh-CN)": "Chinese (zh-CN)",
+ "Chinese (zh-TW)": "Chinese (zh-TW)",
+ "Danish": "Danish",
+ "Japanese": "Japanese",
+ "Korean": "Korean",
+ "Norwegian": "Norwegian",
+ "Polish": "Polish",
+ "Portuguese": "Portuguese",
+ "Spanish": "Spanish",
+ "You have to save!": "You have to save!",
+ "Russian": "Russian"
+}
\ No newline at end of file
diff --git a/locales/no.json b/locales/no.json
new file mode 100644
index 00000000..60201b34
--- /dev/null
+++ b/locales/no.json
@@ -0,0 +1,144 @@
+{
+ "Notes": "Notes",
+ "Tags": "Tags",
+ "Preferences": "Preferences",
+ "Make a note": "Make a note",
+ "Ctrl": "Ctrl",
+ "Ctrl(^)": "Ctrl",
+ "to create a new note": "to create a new note",
+ "Toggle Mode": "Toggle Mode",
+ "Trash": "Trash",
+ "MODIFICATION DATE": "MODIFICATION DATE",
+ "Words": "Words",
+ "Letters": "Letters",
+ "STORAGE": "STORAGE",
+ "FOLDER": "FOLDER",
+ "CREATION DATE": "CREATION DATE",
+ "NOTE LINK": "NOTE LINK",
+ ".md": ".md",
+ ".txt": ".txt",
+ ".html": ".html",
+ "Print": "Print",
+ "Your preferences for Boostnote": "Your preferences for Boostnote",
+ "Storages": "Storages",
+ "Add Storage Location": "Add Storage Location",
+ "Add Folder": "Add Folder",
+ "Open Storage folder": "Open Storage folder",
+ "Unlink": "Unlink",
+ "Edit": "Edit",
+ "Delete": "Delete",
+ "Interface": "Interface",
+ "Interface Theme": "Interface Theme",
+ "Default": "Delete",
+ "White": "White",
+ "Solarized Dark": "Solarized Dark",
+ "Dark": "Dark",
+ "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes",
+ "Editor Theme": "Editor Theme",
+ "Editor Font Size": "Editor Font Size",
+ "Editor Font Family": "Editor Font Family",
+ "Editor Indent Style": "Editor Indent Style",
+ "Spaces": "Spaces",
+ "Tabs": "Tabs",
+ "Switch to Preview": "Switch to Preview",
+ "When Editor Blurred": "When Editor Blurred",
+ "When Editor Blurred, Edit On Double Click": "When Editor Blurred, Edit On Double Click",
+ "On Right Click": "On Right Click",
+ "Editor Keymap": "Editor Keymap",
+ "default": "default",
+ "vim": "vim",
+ "emacs": "emacs",
+ "⚠️ Please restart boostnote after you change the keymap": "⚠️ Please restart boostnote after you change the keymap",
+ "Show line numbers in the editor": "Show line numbers in the editor",
+ "Allow editor to scroll past the last line": "Allow editor to scroll past the last line",
+ "Bring in web page title when pasting URL on editor": "Bring in web page title when pasting URL on editor",
+ "Preview Font Size": "Preview Font Size",
+ "Preview Font Family": "Preview Font Family",
+ "Code block Theme": "Code block Theme",
+ "Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
+ "Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
+ "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
+ "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter",
+ "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter",
+ "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter",
+ "Community": "Community",
+ "Subscribe to Newsletter": "Subscribe to Newsletter",
+ "GitHub": "GitHub",
+ "Blog": "Blog",
+ "Facebook Group": "Facebook Group",
+ "Twitter": "Twitter",
+ "About": "About",
+ "Boostnote": "Boostnote",
+ "An open source note-taking app made for programmers just like you.": "An open source note-taking app made for programmers just like you.",
+ "Website": "Website",
+ "Development": "Development",
+ " : Development configurations for Boostnote.": " : Development configurations for Boostnote.",
+ "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO",
+ "License: GPL v3": "License: GPL v3",
+ "Analytics": "Analytics",
+ "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.",
+ "You can see how it works on ": "You can see how it works on ",
+ "You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
+ "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
+ "Crowdfunding": "Crowdfunding",
+ "Dear everyone,": "Dear everyone,",
+ "Thank you for using Boostnote!": "Thank you for using Boostnote!",
+ "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
+ "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
+ "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
+ "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
+ "Thanks,": "Thanks,",
+ "Boostnote maintainers": "Boostnote maintainers",
+ "Support via OpenCollective": "Support via OpenCollective",
+ "Language": "Language",
+ "English": "English",
+ "German": "German",
+ "French": "French",
+ "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying",
+ "All Notes": "All Notes",
+ "Starred": "Starred",
+ "Are you sure to ": "Are you sure to ",
+ " delete": " delete",
+ "this folder?": "this folder?",
+ "Confirm": "Confirm",
+ "Cancel": "Cancel",
+ "Markdown Note": "Markdown Note",
+ "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.",
+ "Snippet Note": "Snippet Note",
+ "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "This format is for creating code snippets. Multiple snippets can be grouped into a single note.",
+ "Tab to switch format": "Tab to switch format",
+ "Updated": "Updated",
+ "Created": "Created",
+ "Alphabetically": "Alphabetically",
+ "Default View": "Default View",
+ "Compressed View": "Compressed View",
+ "Search": "Search",
+ "Blog Type": "Blog Type",
+ "Blog Address": "Blog Address",
+ "Save": "Save",
+ "Auth": "Auth",
+ "Authentication Method": "Authentication Method",
+ "JWT": "JWT",
+ "USER": "USER",
+ "Token": "Token",
+ "Storage": "Storage",
+ "Hotkeys": "Hotkeys",
+ "Show/Hide Boostnote": "Show/Hide Boostnote",
+ "Restore": "Restore",
+ "Permanent Delete": "Permanent Delete",
+ "Confirm note deletion": "Confirm note deletion",
+ "This will permanently remove this note.": "This will permanently remove this note.",
+ "Successfully applied!": "Successfully applied!",
+ "Albanian": "Albanian",
+ "Chinese (zh-CN)": "Chinese (zh-CN)",
+ "Chinese (zh-TW)": "Chinese (zh-TW)",
+ "Danish": "Danish",
+ "Japanese": "Japanese",
+ "Korean": "Korean",
+ "Norwegian": "Norwegian",
+ "Polish": "Polish",
+ "Portuguese": "Portuguese",
+ "Spanish": "Spanish",
+ "You have to save!": "You have to save!",
+ "Russian": "Russian"
+}
\ No newline at end of file
diff --git a/locales/pl.json b/locales/pl.json
new file mode 100644
index 00000000..60201b34
--- /dev/null
+++ b/locales/pl.json
@@ -0,0 +1,144 @@
+{
+ "Notes": "Notes",
+ "Tags": "Tags",
+ "Preferences": "Preferences",
+ "Make a note": "Make a note",
+ "Ctrl": "Ctrl",
+ "Ctrl(^)": "Ctrl",
+ "to create a new note": "to create a new note",
+ "Toggle Mode": "Toggle Mode",
+ "Trash": "Trash",
+ "MODIFICATION DATE": "MODIFICATION DATE",
+ "Words": "Words",
+ "Letters": "Letters",
+ "STORAGE": "STORAGE",
+ "FOLDER": "FOLDER",
+ "CREATION DATE": "CREATION DATE",
+ "NOTE LINK": "NOTE LINK",
+ ".md": ".md",
+ ".txt": ".txt",
+ ".html": ".html",
+ "Print": "Print",
+ "Your preferences for Boostnote": "Your preferences for Boostnote",
+ "Storages": "Storages",
+ "Add Storage Location": "Add Storage Location",
+ "Add Folder": "Add Folder",
+ "Open Storage folder": "Open Storage folder",
+ "Unlink": "Unlink",
+ "Edit": "Edit",
+ "Delete": "Delete",
+ "Interface": "Interface",
+ "Interface Theme": "Interface Theme",
+ "Default": "Delete",
+ "White": "White",
+ "Solarized Dark": "Solarized Dark",
+ "Dark": "Dark",
+ "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes",
+ "Editor Theme": "Editor Theme",
+ "Editor Font Size": "Editor Font Size",
+ "Editor Font Family": "Editor Font Family",
+ "Editor Indent Style": "Editor Indent Style",
+ "Spaces": "Spaces",
+ "Tabs": "Tabs",
+ "Switch to Preview": "Switch to Preview",
+ "When Editor Blurred": "When Editor Blurred",
+ "When Editor Blurred, Edit On Double Click": "When Editor Blurred, Edit On Double Click",
+ "On Right Click": "On Right Click",
+ "Editor Keymap": "Editor Keymap",
+ "default": "default",
+ "vim": "vim",
+ "emacs": "emacs",
+ "⚠️ Please restart boostnote after you change the keymap": "⚠️ Please restart boostnote after you change the keymap",
+ "Show line numbers in the editor": "Show line numbers in the editor",
+ "Allow editor to scroll past the last line": "Allow editor to scroll past the last line",
+ "Bring in web page title when pasting URL on editor": "Bring in web page title when pasting URL on editor",
+ "Preview Font Size": "Preview Font Size",
+ "Preview Font Family": "Preview Font Family",
+ "Code block Theme": "Code block Theme",
+ "Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
+ "Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
+ "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
+ "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter",
+ "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter",
+ "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter",
+ "Community": "Community",
+ "Subscribe to Newsletter": "Subscribe to Newsletter",
+ "GitHub": "GitHub",
+ "Blog": "Blog",
+ "Facebook Group": "Facebook Group",
+ "Twitter": "Twitter",
+ "About": "About",
+ "Boostnote": "Boostnote",
+ "An open source note-taking app made for programmers just like you.": "An open source note-taking app made for programmers just like you.",
+ "Website": "Website",
+ "Development": "Development",
+ " : Development configurations for Boostnote.": " : Development configurations for Boostnote.",
+ "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO",
+ "License: GPL v3": "License: GPL v3",
+ "Analytics": "Analytics",
+ "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.",
+ "You can see how it works on ": "You can see how it works on ",
+ "You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
+ "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
+ "Crowdfunding": "Crowdfunding",
+ "Dear everyone,": "Dear everyone,",
+ "Thank you for using Boostnote!": "Thank you for using Boostnote!",
+ "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
+ "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
+ "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
+ "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
+ "Thanks,": "Thanks,",
+ "Boostnote maintainers": "Boostnote maintainers",
+ "Support via OpenCollective": "Support via OpenCollective",
+ "Language": "Language",
+ "English": "English",
+ "German": "German",
+ "French": "French",
+ "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying",
+ "All Notes": "All Notes",
+ "Starred": "Starred",
+ "Are you sure to ": "Are you sure to ",
+ " delete": " delete",
+ "this folder?": "this folder?",
+ "Confirm": "Confirm",
+ "Cancel": "Cancel",
+ "Markdown Note": "Markdown Note",
+ "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.",
+ "Snippet Note": "Snippet Note",
+ "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "This format is for creating code snippets. Multiple snippets can be grouped into a single note.",
+ "Tab to switch format": "Tab to switch format",
+ "Updated": "Updated",
+ "Created": "Created",
+ "Alphabetically": "Alphabetically",
+ "Default View": "Default View",
+ "Compressed View": "Compressed View",
+ "Search": "Search",
+ "Blog Type": "Blog Type",
+ "Blog Address": "Blog Address",
+ "Save": "Save",
+ "Auth": "Auth",
+ "Authentication Method": "Authentication Method",
+ "JWT": "JWT",
+ "USER": "USER",
+ "Token": "Token",
+ "Storage": "Storage",
+ "Hotkeys": "Hotkeys",
+ "Show/Hide Boostnote": "Show/Hide Boostnote",
+ "Restore": "Restore",
+ "Permanent Delete": "Permanent Delete",
+ "Confirm note deletion": "Confirm note deletion",
+ "This will permanently remove this note.": "This will permanently remove this note.",
+ "Successfully applied!": "Successfully applied!",
+ "Albanian": "Albanian",
+ "Chinese (zh-CN)": "Chinese (zh-CN)",
+ "Chinese (zh-TW)": "Chinese (zh-TW)",
+ "Danish": "Danish",
+ "Japanese": "Japanese",
+ "Korean": "Korean",
+ "Norwegian": "Norwegian",
+ "Polish": "Polish",
+ "Portuguese": "Portuguese",
+ "Spanish": "Spanish",
+ "You have to save!": "You have to save!",
+ "Russian": "Russian"
+}
\ No newline at end of file
diff --git a/locales/pt.json b/locales/pt.json
new file mode 100644
index 00000000..60201b34
--- /dev/null
+++ b/locales/pt.json
@@ -0,0 +1,144 @@
+{
+ "Notes": "Notes",
+ "Tags": "Tags",
+ "Preferences": "Preferences",
+ "Make a note": "Make a note",
+ "Ctrl": "Ctrl",
+ "Ctrl(^)": "Ctrl",
+ "to create a new note": "to create a new note",
+ "Toggle Mode": "Toggle Mode",
+ "Trash": "Trash",
+ "MODIFICATION DATE": "MODIFICATION DATE",
+ "Words": "Words",
+ "Letters": "Letters",
+ "STORAGE": "STORAGE",
+ "FOLDER": "FOLDER",
+ "CREATION DATE": "CREATION DATE",
+ "NOTE LINK": "NOTE LINK",
+ ".md": ".md",
+ ".txt": ".txt",
+ ".html": ".html",
+ "Print": "Print",
+ "Your preferences for Boostnote": "Your preferences for Boostnote",
+ "Storages": "Storages",
+ "Add Storage Location": "Add Storage Location",
+ "Add Folder": "Add Folder",
+ "Open Storage folder": "Open Storage folder",
+ "Unlink": "Unlink",
+ "Edit": "Edit",
+ "Delete": "Delete",
+ "Interface": "Interface",
+ "Interface Theme": "Interface Theme",
+ "Default": "Delete",
+ "White": "White",
+ "Solarized Dark": "Solarized Dark",
+ "Dark": "Dark",
+ "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes",
+ "Editor Theme": "Editor Theme",
+ "Editor Font Size": "Editor Font Size",
+ "Editor Font Family": "Editor Font Family",
+ "Editor Indent Style": "Editor Indent Style",
+ "Spaces": "Spaces",
+ "Tabs": "Tabs",
+ "Switch to Preview": "Switch to Preview",
+ "When Editor Blurred": "When Editor Blurred",
+ "When Editor Blurred, Edit On Double Click": "When Editor Blurred, Edit On Double Click",
+ "On Right Click": "On Right Click",
+ "Editor Keymap": "Editor Keymap",
+ "default": "default",
+ "vim": "vim",
+ "emacs": "emacs",
+ "⚠️ Please restart boostnote after you change the keymap": "⚠️ Please restart boostnote after you change the keymap",
+ "Show line numbers in the editor": "Show line numbers in the editor",
+ "Allow editor to scroll past the last line": "Allow editor to scroll past the last line",
+ "Bring in web page title when pasting URL on editor": "Bring in web page title when pasting URL on editor",
+ "Preview Font Size": "Preview Font Size",
+ "Preview Font Family": "Preview Font Family",
+ "Code block Theme": "Code block Theme",
+ "Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
+ "Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
+ "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
+ "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter",
+ "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter",
+ "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter",
+ "Community": "Community",
+ "Subscribe to Newsletter": "Subscribe to Newsletter",
+ "GitHub": "GitHub",
+ "Blog": "Blog",
+ "Facebook Group": "Facebook Group",
+ "Twitter": "Twitter",
+ "About": "About",
+ "Boostnote": "Boostnote",
+ "An open source note-taking app made for programmers just like you.": "An open source note-taking app made for programmers just like you.",
+ "Website": "Website",
+ "Development": "Development",
+ " : Development configurations for Boostnote.": " : Development configurations for Boostnote.",
+ "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO",
+ "License: GPL v3": "License: GPL v3",
+ "Analytics": "Analytics",
+ "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.",
+ "You can see how it works on ": "You can see how it works on ",
+ "You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
+ "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
+ "Crowdfunding": "Crowdfunding",
+ "Dear everyone,": "Dear everyone,",
+ "Thank you for using Boostnote!": "Thank you for using Boostnote!",
+ "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
+ "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
+ "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
+ "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
+ "Thanks,": "Thanks,",
+ "Boostnote maintainers": "Boostnote maintainers",
+ "Support via OpenCollective": "Support via OpenCollective",
+ "Language": "Language",
+ "English": "English",
+ "German": "German",
+ "French": "French",
+ "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying",
+ "All Notes": "All Notes",
+ "Starred": "Starred",
+ "Are you sure to ": "Are you sure to ",
+ " delete": " delete",
+ "this folder?": "this folder?",
+ "Confirm": "Confirm",
+ "Cancel": "Cancel",
+ "Markdown Note": "Markdown Note",
+ "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.",
+ "Snippet Note": "Snippet Note",
+ "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "This format is for creating code snippets. Multiple snippets can be grouped into a single note.",
+ "Tab to switch format": "Tab to switch format",
+ "Updated": "Updated",
+ "Created": "Created",
+ "Alphabetically": "Alphabetically",
+ "Default View": "Default View",
+ "Compressed View": "Compressed View",
+ "Search": "Search",
+ "Blog Type": "Blog Type",
+ "Blog Address": "Blog Address",
+ "Save": "Save",
+ "Auth": "Auth",
+ "Authentication Method": "Authentication Method",
+ "JWT": "JWT",
+ "USER": "USER",
+ "Token": "Token",
+ "Storage": "Storage",
+ "Hotkeys": "Hotkeys",
+ "Show/Hide Boostnote": "Show/Hide Boostnote",
+ "Restore": "Restore",
+ "Permanent Delete": "Permanent Delete",
+ "Confirm note deletion": "Confirm note deletion",
+ "This will permanently remove this note.": "This will permanently remove this note.",
+ "Successfully applied!": "Successfully applied!",
+ "Albanian": "Albanian",
+ "Chinese (zh-CN)": "Chinese (zh-CN)",
+ "Chinese (zh-TW)": "Chinese (zh-TW)",
+ "Danish": "Danish",
+ "Japanese": "Japanese",
+ "Korean": "Korean",
+ "Norwegian": "Norwegian",
+ "Polish": "Polish",
+ "Portuguese": "Portuguese",
+ "Spanish": "Spanish",
+ "You have to save!": "You have to save!",
+ "Russian": "Russian"
+}
\ No newline at end of file
diff --git a/locales/ru.json b/locales/ru.json
new file mode 100644
index 00000000..798f9c8d
--- /dev/null
+++ b/locales/ru.json
@@ -0,0 +1,146 @@
+{
+ "Notes": "Записи",
+ "Tags": "Теги",
+ "Preferences": "Настройки",
+ "Make a note": "Добавить запись",
+ "Ctrl": "Ctrl",
+ "Ctrl(^)": "Ctrl",
+ "to create a new note": "создать новую запись",
+ "Toggle Mode": "Переключить режим",
+ "Trash": "Корзина",
+ "MODIFICATION DATE": "Дата изменения",
+ "Words": "Слова",
+ "Letters": "Буквы",
+ "STORAGE": "Хранилище",
+ "FOLDER": "Папка",
+ "CREATION DATE": "Дата создания",
+ "NOTE LINK": "Ссылка на запись",
+ ".md": ".md",
+ ".txt": ".txt",
+ ".html": ".html",
+ "Print": "Print",
+ "Your preferences for Boostnote": "Настройки Boostnote",
+ "Storages": "Хранилища",
+ "Add Storage Location": "Добавить хранилище",
+ "Add Folder": "Добавить папку",
+ "Open Storage folder": "Открыть хранилище",
+ "Unlink": "Удалить",
+ "Edit": "Редактировать",
+ "Delete": "Удалить",
+ "Interface": "Интерфейс",
+ "Interface Theme": "Тема оформления",
+ "Default": "По умолчанию",
+ "White": "Светлая",
+ "Solarized Dark": "Solarized Dark",
+ "Dark": "Темная",
+ "Show a confirmation dialog when deleting notes": "Спрашивать подтверждение перед удалением записей?",
+ "Editor Theme": "Тема",
+ "Editor Font Size": "Размер шрифта",
+ "Editor Font Family": "Шрифт",
+ "Editor Indent Style": "Отступы",
+ "Spaces": "Пробелы",
+ "Tabs": "Табуляция",
+ "Switch to Preview": "Переключать на превью",
+ "When Editor Blurred": "При снятии фокуса с редактора",
+ "When Editor Blurred, Edit On Double Click": "При снятии фокуса, редактировать двойным кликом",
+ "On Right Click": "По правому клику",
+ "Editor Keymap": "Горячие клавиши",
+ "default": "по умолчанию",
+ "vim": "vim",
+ "emacs": "emacs",
+ "⚠️ Please restart boostnote after you change the keymap": "⚠️ Перезапустите Boostnote, чтобы применить изменения",
+ "Show line numbers in the editor": "Показывать номера строк в редакторе",
+ "Allow editor to scroll past the last line": "Разрешить прокрутку дальше последней строки в редакторе",
+ "Bring in web page title when pasting URL on editor": "Копировать заголовок страницы при вставке URL-ссылки в редакторе",
+ "Preview Font Size": "Размер шрифта",
+ "Preview Font Family": "Шрифт",
+ "Code block Theme": "Тема оформления кода",
+ "Allow preview to scroll past the last line": "Разрешить прокрутку дальше последней строки в превью",
+ "Show line numbers for preview code blocks": "Показывать номера строк в блоках кода",
+ "LaTeX Inline Open Delimiter": "Символ начала inline записи в LaTeX",
+ "LaTeX Inline Close Delimiter": "Символ окончания inline записи в LaTeX",
+ "LaTeX Block Open Delimiter": "Символ начала блока LaTeX",
+ "LaTeX Block Close Delimiter": "Символ окончания блока LaTeX",
+ "Community": "Сообщество",
+ "Subscribe to Newsletter": "Подпишитесь на рассылку",
+ "GitHub": "GitHub",
+ "Blog": "Блог",
+ "Facebook Group": "Группа в Фейсбуке",
+ "Twitter": "Твиттер",
+ "About": "О нас",
+ "Boostnote": "Boostnote",
+ "An open source note-taking app made for programmers just like you.": "Приложение для программерских и научных заметок с открытым кодом",
+ "Website": "Сайт",
+ "Development": "Разработка",
+ " : Development configurations for Boostnote.": " : Разработческие конфигурации для Boostnote.",
+ "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO",
+ "License: GPL v3": "License: GPL v3",
+ "Analytics": "Аналитика",
+ "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote собирает анонимные данные о пользовании приложением для того, чтобы улучшать пользовательский опыт. Мы не собираем личную информацию и содержание ваших записей.",
+ "You can see how it works on ": "Посмотрите исходный код на ",
+ "You can choose to enable or disable this option.": "Вы можете отказаться от передачи анонимной информации разработчикам.",
+ "Enable analytics to help improve Boostnote": "Отправлять анонимные данные, чтобы сделать Boostnote еще лучше",
+ "Crowdfunding": "Краудфандинг",
+ "Dear everyone,": "Привет,",
+ "Thank you for using Boostnote!": "Спасибо за использование Boostnote!",
+ "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote используется в 200 странах и регионов дружным сообществом разработчиков.",
+ "To continue supporting this growth, and to satisfy community expectations,": "Чтобы продукт развивался и удовлетворял ожиданиям пользователей,",
+ "we would like to invest more time and resources in this project.": "мы хотим выделять больше времени и ресурсов проекту.",
+ "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "Если вам нравится Boostnote и его сообщество, вы можете профинансировать проект на OpenCollective!",
+ "Thanks,": "Спасибо,",
+ "Boostnote maintainers": "разработчики Boostnote",
+ "Support via OpenCollective": "Старница проекта на OpenCollective",
+ "Language": "Язык",
+ "English": "Английский",
+ "German": "Немецкий",
+ "French": "Французский",
+ "Show \"Saved to Clipboard\" notification when copying": "Показывать уведомление \"Скопировано в буфер\" при копировании?",
+ "All Notes": "Все записи",
+ "Starred": "Избранное",
+ "Are you sure to ": "Вы уверены, что хотите ",
+ " delete": " удалить",
+ "this folder?": "эту папку?",
+ "Confirm": "Да",
+ "Cancel": "Отмена",
+ "Markdown Note": "Markdown",
+ "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "Этот формат подходит для создания текстовых документов. Сюда вы можете добавлять чек-листы, блоки кода и блоки в LaTeX.",
+ "Snippet Note": "Snippet",
+ "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "Этот формат подходит для хранения кусков кода. Внутри одной записи можно создать несколько сниппетов.",
+ "Tab to switch format": "Tab для переключения формата",
+ "Updated": "По дате изменения",
+ "Created": "По дате создания",
+ "Alphabetically": "По алфавиту",
+ "Default View": "Стандартный вид",
+ "Compressed View": "Сокращенный вид",
+ "Search": "Поиск",
+ "Blog Type": "Тип блога",
+ "Blog Address": "Адрес блога",
+ "Save": "Сохранить",
+ "Auth": "Авторизоваться",
+ "Authentication Method": "Метод авторизации",
+ "JWT": "JWT",
+ "USER": "USER",
+ "Token": "Token",
+ "Storage": "Хранилище",
+ "Hotkeys": "Горячие клавиши",
+ "Show/Hide Boostnote": "Показать/скрыть Boostnote",
+ "Restore": "Восстановить",
+ "Permanent Delete": "Удалить без восстановления",
+ "Confirm note deletion": "Подтвердите удаление",
+ "This will permanently remove this note.": "Это действие приведет к полному удалению записи. Восстановить запись будет невозможно.",
+ "Successfully applied!": "Успешно!",
+ "Albanian": "Албанский",
+ "Chinese (zh-CN)": "Китайский (zh-CN)",
+ "Chinese (zh-TW)": "Китайский (zh-TW)",
+ "Danish": "Датский",
+ "Japanese": "Японский",
+ "Korean": "Корейский",
+ "Norwegian": "Норвежский",
+ "Polish": "Польский",
+ "Portuguese": "Португальский",
+ "Spanish": "Испанский",
+ "You have to save!": "Нужно сохранить!",
+ "UserName": "Имя пользователя",
+ "Password": "Пароль",
+ "Russian": "Русский"
+}
diff --git a/locales/sq.json b/locales/sq.json
new file mode 100644
index 00000000..60201b34
--- /dev/null
+++ b/locales/sq.json
@@ -0,0 +1,144 @@
+{
+ "Notes": "Notes",
+ "Tags": "Tags",
+ "Preferences": "Preferences",
+ "Make a note": "Make a note",
+ "Ctrl": "Ctrl",
+ "Ctrl(^)": "Ctrl",
+ "to create a new note": "to create a new note",
+ "Toggle Mode": "Toggle Mode",
+ "Trash": "Trash",
+ "MODIFICATION DATE": "MODIFICATION DATE",
+ "Words": "Words",
+ "Letters": "Letters",
+ "STORAGE": "STORAGE",
+ "FOLDER": "FOLDER",
+ "CREATION DATE": "CREATION DATE",
+ "NOTE LINK": "NOTE LINK",
+ ".md": ".md",
+ ".txt": ".txt",
+ ".html": ".html",
+ "Print": "Print",
+ "Your preferences for Boostnote": "Your preferences for Boostnote",
+ "Storages": "Storages",
+ "Add Storage Location": "Add Storage Location",
+ "Add Folder": "Add Folder",
+ "Open Storage folder": "Open Storage folder",
+ "Unlink": "Unlink",
+ "Edit": "Edit",
+ "Delete": "Delete",
+ "Interface": "Interface",
+ "Interface Theme": "Interface Theme",
+ "Default": "Delete",
+ "White": "White",
+ "Solarized Dark": "Solarized Dark",
+ "Dark": "Dark",
+ "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes",
+ "Editor Theme": "Editor Theme",
+ "Editor Font Size": "Editor Font Size",
+ "Editor Font Family": "Editor Font Family",
+ "Editor Indent Style": "Editor Indent Style",
+ "Spaces": "Spaces",
+ "Tabs": "Tabs",
+ "Switch to Preview": "Switch to Preview",
+ "When Editor Blurred": "When Editor Blurred",
+ "When Editor Blurred, Edit On Double Click": "When Editor Blurred, Edit On Double Click",
+ "On Right Click": "On Right Click",
+ "Editor Keymap": "Editor Keymap",
+ "default": "default",
+ "vim": "vim",
+ "emacs": "emacs",
+ "⚠️ Please restart boostnote after you change the keymap": "⚠️ Please restart boostnote after you change the keymap",
+ "Show line numbers in the editor": "Show line numbers in the editor",
+ "Allow editor to scroll past the last line": "Allow editor to scroll past the last line",
+ "Bring in web page title when pasting URL on editor": "Bring in web page title when pasting URL on editor",
+ "Preview Font Size": "Preview Font Size",
+ "Preview Font Family": "Preview Font Family",
+ "Code block Theme": "Code block Theme",
+ "Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
+ "Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
+ "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
+ "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter",
+ "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter",
+ "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter",
+ "Community": "Community",
+ "Subscribe to Newsletter": "Subscribe to Newsletter",
+ "GitHub": "GitHub",
+ "Blog": "Blog",
+ "Facebook Group": "Facebook Group",
+ "Twitter": "Twitter",
+ "About": "About",
+ "Boostnote": "Boostnote",
+ "An open source note-taking app made for programmers just like you.": "An open source note-taking app made for programmers just like you.",
+ "Website": "Website",
+ "Development": "Development",
+ " : Development configurations for Boostnote.": " : Development configurations for Boostnote.",
+ "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO",
+ "License: GPL v3": "License: GPL v3",
+ "Analytics": "Analytics",
+ "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.",
+ "You can see how it works on ": "You can see how it works on ",
+ "You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
+ "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
+ "Crowdfunding": "Crowdfunding",
+ "Dear everyone,": "Dear everyone,",
+ "Thank you for using Boostnote!": "Thank you for using Boostnote!",
+ "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
+ "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
+ "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
+ "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
+ "Thanks,": "Thanks,",
+ "Boostnote maintainers": "Boostnote maintainers",
+ "Support via OpenCollective": "Support via OpenCollective",
+ "Language": "Language",
+ "English": "English",
+ "German": "German",
+ "French": "French",
+ "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying",
+ "All Notes": "All Notes",
+ "Starred": "Starred",
+ "Are you sure to ": "Are you sure to ",
+ " delete": " delete",
+ "this folder?": "this folder?",
+ "Confirm": "Confirm",
+ "Cancel": "Cancel",
+ "Markdown Note": "Markdown Note",
+ "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.",
+ "Snippet Note": "Snippet Note",
+ "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "This format is for creating code snippets. Multiple snippets can be grouped into a single note.",
+ "Tab to switch format": "Tab to switch format",
+ "Updated": "Updated",
+ "Created": "Created",
+ "Alphabetically": "Alphabetically",
+ "Default View": "Default View",
+ "Compressed View": "Compressed View",
+ "Search": "Search",
+ "Blog Type": "Blog Type",
+ "Blog Address": "Blog Address",
+ "Save": "Save",
+ "Auth": "Auth",
+ "Authentication Method": "Authentication Method",
+ "JWT": "JWT",
+ "USER": "USER",
+ "Token": "Token",
+ "Storage": "Storage",
+ "Hotkeys": "Hotkeys",
+ "Show/Hide Boostnote": "Show/Hide Boostnote",
+ "Restore": "Restore",
+ "Permanent Delete": "Permanent Delete",
+ "Confirm note deletion": "Confirm note deletion",
+ "This will permanently remove this note.": "This will permanently remove this note.",
+ "Successfully applied!": "Successfully applied!",
+ "Albanian": "Albanian",
+ "Chinese (zh-CN)": "Chinese (zh-CN)",
+ "Chinese (zh-TW)": "Chinese (zh-TW)",
+ "Danish": "Danish",
+ "Japanese": "Japanese",
+ "Korean": "Korean",
+ "Norwegian": "Norwegian",
+ "Polish": "Polish",
+ "Portuguese": "Portuguese",
+ "Spanish": "Spanish",
+ "You have to save!": "You have to save!",
+ "Russian": "Russian"
+}
\ No newline at end of file
diff --git a/locales/zh-CN.json b/locales/zh-CN.json
new file mode 100644
index 00000000..60201b34
--- /dev/null
+++ b/locales/zh-CN.json
@@ -0,0 +1,144 @@
+{
+ "Notes": "Notes",
+ "Tags": "Tags",
+ "Preferences": "Preferences",
+ "Make a note": "Make a note",
+ "Ctrl": "Ctrl",
+ "Ctrl(^)": "Ctrl",
+ "to create a new note": "to create a new note",
+ "Toggle Mode": "Toggle Mode",
+ "Trash": "Trash",
+ "MODIFICATION DATE": "MODIFICATION DATE",
+ "Words": "Words",
+ "Letters": "Letters",
+ "STORAGE": "STORAGE",
+ "FOLDER": "FOLDER",
+ "CREATION DATE": "CREATION DATE",
+ "NOTE LINK": "NOTE LINK",
+ ".md": ".md",
+ ".txt": ".txt",
+ ".html": ".html",
+ "Print": "Print",
+ "Your preferences for Boostnote": "Your preferences for Boostnote",
+ "Storages": "Storages",
+ "Add Storage Location": "Add Storage Location",
+ "Add Folder": "Add Folder",
+ "Open Storage folder": "Open Storage folder",
+ "Unlink": "Unlink",
+ "Edit": "Edit",
+ "Delete": "Delete",
+ "Interface": "Interface",
+ "Interface Theme": "Interface Theme",
+ "Default": "Delete",
+ "White": "White",
+ "Solarized Dark": "Solarized Dark",
+ "Dark": "Dark",
+ "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes",
+ "Editor Theme": "Editor Theme",
+ "Editor Font Size": "Editor Font Size",
+ "Editor Font Family": "Editor Font Family",
+ "Editor Indent Style": "Editor Indent Style",
+ "Spaces": "Spaces",
+ "Tabs": "Tabs",
+ "Switch to Preview": "Switch to Preview",
+ "When Editor Blurred": "When Editor Blurred",
+ "When Editor Blurred, Edit On Double Click": "When Editor Blurred, Edit On Double Click",
+ "On Right Click": "On Right Click",
+ "Editor Keymap": "Editor Keymap",
+ "default": "default",
+ "vim": "vim",
+ "emacs": "emacs",
+ "⚠️ Please restart boostnote after you change the keymap": "⚠️ Please restart boostnote after you change the keymap",
+ "Show line numbers in the editor": "Show line numbers in the editor",
+ "Allow editor to scroll past the last line": "Allow editor to scroll past the last line",
+ "Bring in web page title when pasting URL on editor": "Bring in web page title when pasting URL on editor",
+ "Preview Font Size": "Preview Font Size",
+ "Preview Font Family": "Preview Font Family",
+ "Code block Theme": "Code block Theme",
+ "Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
+ "Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
+ "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
+ "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter",
+ "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter",
+ "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter",
+ "Community": "Community",
+ "Subscribe to Newsletter": "Subscribe to Newsletter",
+ "GitHub": "GitHub",
+ "Blog": "Blog",
+ "Facebook Group": "Facebook Group",
+ "Twitter": "Twitter",
+ "About": "About",
+ "Boostnote": "Boostnote",
+ "An open source note-taking app made for programmers just like you.": "An open source note-taking app made for programmers just like you.",
+ "Website": "Website",
+ "Development": "Development",
+ " : Development configurations for Boostnote.": " : Development configurations for Boostnote.",
+ "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO",
+ "License: GPL v3": "License: GPL v3",
+ "Analytics": "Analytics",
+ "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.",
+ "You can see how it works on ": "You can see how it works on ",
+ "You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
+ "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
+ "Crowdfunding": "Crowdfunding",
+ "Dear everyone,": "Dear everyone,",
+ "Thank you for using Boostnote!": "Thank you for using Boostnote!",
+ "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
+ "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
+ "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
+ "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
+ "Thanks,": "Thanks,",
+ "Boostnote maintainers": "Boostnote maintainers",
+ "Support via OpenCollective": "Support via OpenCollective",
+ "Language": "Language",
+ "English": "English",
+ "German": "German",
+ "French": "French",
+ "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying",
+ "All Notes": "All Notes",
+ "Starred": "Starred",
+ "Are you sure to ": "Are you sure to ",
+ " delete": " delete",
+ "this folder?": "this folder?",
+ "Confirm": "Confirm",
+ "Cancel": "Cancel",
+ "Markdown Note": "Markdown Note",
+ "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.",
+ "Snippet Note": "Snippet Note",
+ "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "This format is for creating code snippets. Multiple snippets can be grouped into a single note.",
+ "Tab to switch format": "Tab to switch format",
+ "Updated": "Updated",
+ "Created": "Created",
+ "Alphabetically": "Alphabetically",
+ "Default View": "Default View",
+ "Compressed View": "Compressed View",
+ "Search": "Search",
+ "Blog Type": "Blog Type",
+ "Blog Address": "Blog Address",
+ "Save": "Save",
+ "Auth": "Auth",
+ "Authentication Method": "Authentication Method",
+ "JWT": "JWT",
+ "USER": "USER",
+ "Token": "Token",
+ "Storage": "Storage",
+ "Hotkeys": "Hotkeys",
+ "Show/Hide Boostnote": "Show/Hide Boostnote",
+ "Restore": "Restore",
+ "Permanent Delete": "Permanent Delete",
+ "Confirm note deletion": "Confirm note deletion",
+ "This will permanently remove this note.": "This will permanently remove this note.",
+ "Successfully applied!": "Successfully applied!",
+ "Albanian": "Albanian",
+ "Chinese (zh-CN)": "Chinese (zh-CN)",
+ "Chinese (zh-TW)": "Chinese (zh-TW)",
+ "Danish": "Danish",
+ "Japanese": "Japanese",
+ "Korean": "Korean",
+ "Norwegian": "Norwegian",
+ "Polish": "Polish",
+ "Portuguese": "Portuguese",
+ "Spanish": "Spanish",
+ "You have to save!": "You have to save!",
+ "Russian": "Russian"
+}
\ No newline at end of file
diff --git a/locales/zh-TW.json b/locales/zh-TW.json
new file mode 100644
index 00000000..60201b34
--- /dev/null
+++ b/locales/zh-TW.json
@@ -0,0 +1,144 @@
+{
+ "Notes": "Notes",
+ "Tags": "Tags",
+ "Preferences": "Preferences",
+ "Make a note": "Make a note",
+ "Ctrl": "Ctrl",
+ "Ctrl(^)": "Ctrl",
+ "to create a new note": "to create a new note",
+ "Toggle Mode": "Toggle Mode",
+ "Trash": "Trash",
+ "MODIFICATION DATE": "MODIFICATION DATE",
+ "Words": "Words",
+ "Letters": "Letters",
+ "STORAGE": "STORAGE",
+ "FOLDER": "FOLDER",
+ "CREATION DATE": "CREATION DATE",
+ "NOTE LINK": "NOTE LINK",
+ ".md": ".md",
+ ".txt": ".txt",
+ ".html": ".html",
+ "Print": "Print",
+ "Your preferences for Boostnote": "Your preferences for Boostnote",
+ "Storages": "Storages",
+ "Add Storage Location": "Add Storage Location",
+ "Add Folder": "Add Folder",
+ "Open Storage folder": "Open Storage folder",
+ "Unlink": "Unlink",
+ "Edit": "Edit",
+ "Delete": "Delete",
+ "Interface": "Interface",
+ "Interface Theme": "Interface Theme",
+ "Default": "Delete",
+ "White": "White",
+ "Solarized Dark": "Solarized Dark",
+ "Dark": "Dark",
+ "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes",
+ "Editor Theme": "Editor Theme",
+ "Editor Font Size": "Editor Font Size",
+ "Editor Font Family": "Editor Font Family",
+ "Editor Indent Style": "Editor Indent Style",
+ "Spaces": "Spaces",
+ "Tabs": "Tabs",
+ "Switch to Preview": "Switch to Preview",
+ "When Editor Blurred": "When Editor Blurred",
+ "When Editor Blurred, Edit On Double Click": "When Editor Blurred, Edit On Double Click",
+ "On Right Click": "On Right Click",
+ "Editor Keymap": "Editor Keymap",
+ "default": "default",
+ "vim": "vim",
+ "emacs": "emacs",
+ "⚠️ Please restart boostnote after you change the keymap": "⚠️ Please restart boostnote after you change the keymap",
+ "Show line numbers in the editor": "Show line numbers in the editor",
+ "Allow editor to scroll past the last line": "Allow editor to scroll past the last line",
+ "Bring in web page title when pasting URL on editor": "Bring in web page title when pasting URL on editor",
+ "Preview Font Size": "Preview Font Size",
+ "Preview Font Family": "Preview Font Family",
+ "Code block Theme": "Code block Theme",
+ "Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
+ "Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
+ "LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
+ "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter",
+ "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter",
+ "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter",
+ "Community": "Community",
+ "Subscribe to Newsletter": "Subscribe to Newsletter",
+ "GitHub": "GitHub",
+ "Blog": "Blog",
+ "Facebook Group": "Facebook Group",
+ "Twitter": "Twitter",
+ "About": "About",
+ "Boostnote": "Boostnote",
+ "An open source note-taking app made for programmers just like you.": "An open source note-taking app made for programmers just like you.",
+ "Website": "Website",
+ "Development": "Development",
+ " : Development configurations for Boostnote.": " : Development configurations for Boostnote.",
+ "Copyright (C) 2017 - 2018 BoostIO": "Copyright (C) 2017 - 2018 BoostIO",
+ "License: GPL v3": "License: GPL v3",
+ "Analytics": "Analytics",
+ "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.",
+ "You can see how it works on ": "You can see how it works on ",
+ "You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
+ "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
+ "Crowdfunding": "Crowdfunding",
+ "Dear everyone,": "Dear everyone,",
+ "Thank you for using Boostnote!": "Thank you for using Boostnote!",
+ "Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
+ "To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
+ "we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
+ "If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
+ "Thanks,": "Thanks,",
+ "Boostnote maintainers": "Boostnote maintainers",
+ "Support via OpenCollective": "Support via OpenCollective",
+ "Language": "Language",
+ "English": "English",
+ "German": "German",
+ "French": "French",
+ "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying",
+ "All Notes": "All Notes",
+ "Starred": "Starred",
+ "Are you sure to ": "Are you sure to ",
+ " delete": " delete",
+ "this folder?": "this folder?",
+ "Confirm": "Confirm",
+ "Cancel": "Cancel",
+ "Markdown Note": "Markdown Note",
+ "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.": "This format is for creating text documents. Checklists, code blocks and Latex blocks are available.",
+ "Snippet Note": "Snippet Note",
+ "This format is for creating code snippets. Multiple snippets can be grouped into a single note.": "This format is for creating code snippets. Multiple snippets can be grouped into a single note.",
+ "Tab to switch format": "Tab to switch format",
+ "Updated": "Updated",
+ "Created": "Created",
+ "Alphabetically": "Alphabetically",
+ "Default View": "Default View",
+ "Compressed View": "Compressed View",
+ "Search": "Search",
+ "Blog Type": "Blog Type",
+ "Blog Address": "Blog Address",
+ "Save": "Save",
+ "Auth": "Auth",
+ "Authentication Method": "Authentication Method",
+ "JWT": "JWT",
+ "USER": "USER",
+ "Token": "Token",
+ "Storage": "Storage",
+ "Hotkeys": "Hotkeys",
+ "Show/Hide Boostnote": "Show/Hide Boostnote",
+ "Restore": "Restore",
+ "Permanent Delete": "Permanent Delete",
+ "Confirm note deletion": "Confirm note deletion",
+ "This will permanently remove this note.": "This will permanently remove this note.",
+ "Successfully applied!": "Successfully applied!",
+ "Albanian": "Albanian",
+ "Chinese (zh-CN)": "Chinese (zh-CN)",
+ "Chinese (zh-TW)": "Chinese (zh-TW)",
+ "Danish": "Danish",
+ "Japanese": "Japanese",
+ "Korean": "Korean",
+ "Norwegian": "Norwegian",
+ "Polish": "Polish",
+ "Portuguese": "Portuguese",
+ "Spanish": "Spanish",
+ "You have to save!": "You have to save!",
+ "Russian": "Russian"
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 00000000..8150228b
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,35 @@
+{
+ "name": "boost",
+ "version": "0.10.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "i18n-2": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/i18n-2/-/i18n-2-0.7.2.tgz",
+ "integrity": "sha512-Rdh6vfpNhL7q61cNf27x7QGULTi1TcGLVdFb5OJ6dOiJo+EkOTqEg0+3xgyeEMgYhopUBsh2IiSkFkjM+EhEmA==",
+ "requires": {
+ "debug": "3.1.0",
+ "sprintf": "0.1.5"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "sprintf": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/sprintf/-/sprintf-0.1.5.tgz",
+ "integrity": "sha1-j4PjmpMXwaUCy324BQ5Rxnn27c8="
+ }
+ }
+}
diff --git a/package.json b/package.json
index 71a000dd..3aec6b60 100644
--- a/package.json
+++ b/package.json
@@ -58,6 +58,7 @@
"electron-gh-releases": "^2.0.2",
"flowchart.js": "^1.6.5",
"font-awesome": "^4.3.0",
+ "i18n-2": "^0.7.2",
"iconv-lite": "^0.4.19",
"immutable": "^3.8.1",
"js-sequence-diagrams": "^1000000.0.6",
diff --git a/yarn.lock b/yarn.lock
index e85c298d..a0d51546 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2143,7 +2143,7 @@ debug@^2.6.8:
dependencies:
ms "2.0.0"
-debug@^3.0.1:
+debug@^3.0.1, debug@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
dependencies:
@@ -3861,6 +3861,13 @@ humanize-plus@^1.8.1:
version "1.8.2"
resolved "https://registry.yarnpkg.com/humanize-plus/-/humanize-plus-1.8.2.tgz#a65b34459ad6367adbb3707a82a3c9f916167030"
+i18n-2@^0.7.2:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/i18n-2/-/i18n-2-0.7.2.tgz#7efb1a7adc67869adea0688951577464aa793aaf"
+ dependencies:
+ debug "^3.1.0"
+ sprintf "^0.1.5"
+
iconv-lite@0.4.13, iconv-lite@~0.4.13:
version "0.4.13"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2"
@@ -6857,6 +6864,10 @@ sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+sprintf@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/sprintf/-/sprintf-0.1.5.tgz#8f83e39a9317c1a502cb7db8050e51c679f6edcf"
+
srcset@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/srcset/-/srcset-1.0.0.tgz#a5669de12b42f3b1d5e83ed03c71046fc48f41ef"