From b11dc2ca2058c9053fda81469b52f15a6a110b21 Mon Sep 17 00:00:00 2001 From: Simon Date: Tue, 6 Mar 2018 09:54:37 +0100 Subject: [PATCH 01/16] first testing of translation --- browser/lib/i18n.js | 7 ++ browser/main/Detail/InfoPanel.js | 23 +++--- browser/main/Detail/index.js | 3 +- locales/de.js | 4 + locales/en.js | 15 ++++ locales/fr.js | 1 + package-lock.json | 35 ++++++++ package.json | 1 + yarn.lock | 138 ++++++++++++++++++++++++++++++- 9 files changed, 214 insertions(+), 13 deletions(-) create mode 100644 browser/lib/i18n.js create mode 100644 locales/de.js create mode 100644 locales/en.js create mode 100644 locales/fr.js create mode 100644 package-lock.json diff --git a/browser/lib/i18n.js b/browser/lib/i18n.js new file mode 100644 index 00000000..aa2f0a89 --- /dev/null +++ b/browser/lib/i18n.js @@ -0,0 +1,7 @@ +//load package for localization +const i18n = new (require('i18n-2'))({ + // setup some locales - other locales default to the first locale + locales: ['en', 'de', 'fr'] + }); + +export default i18n; \ No newline at end of file diff --git a/browser/main/Detail/InfoPanel.js b/browser/main/Detail/InfoPanel.js index 44b9f09a..629f0b97 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 { -

NOTE LINK

+

{i18n.__('NOTE LINK')}


@@ -71,22 +72,22 @@ class InfoPanel extends React.Component {
diff --git a/browser/main/Detail/index.js b/browser/main/Detail/index.js index a9a8e4f2..89b1dd75 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' @@ -70,7 +71,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')}
Date: Tue, 6 Mar 2018 14:07:04 +0100 Subject: [PATCH 02/16] extracted all strings from html lines --- browser/lib/i18n.js | 2 +- browser/main/Detail/InfoPanel.js | 2 +- browser/main/Detail/InfoPanelTrashed.js | 9 +- browser/main/Detail/PermanentDeleteButton.js | 3 +- browser/main/Detail/RestoreButton.js | 3 +- browser/main/Detail/ToggleModeButton.js | 3 +- browser/main/Detail/TrashButton.js | 3 +- browser/main/NewNoteButton/index.js | 3 +- browser/main/SideNav/ListButton.js | 3 +- browser/main/SideNav/PreferenceButton.js | 3 +- browser/main/SideNav/TagButton.js | 3 +- browser/main/StatusBar/index.js | 3 +- browser/main/TopBar/index.js | 3 +- browser/main/modals/NewNoteModal.js | 11 ++- .../modals/PreferencesModal/Crowdfunding.js | 21 +++-- .../modals/PreferencesModal/FolderItem.js | 11 ++- .../main/modals/PreferencesModal/InfoTab.js | 37 ++++---- .../modals/PreferencesModal/StorageItem.js | 7 +- .../modals/PreferencesModal/StoragesTab.js | 25 ++--- browser/main/modals/PreferencesModal/UiTab.js | 71 +++++++------- browser/main/modals/PreferencesModal/index.js | 3 +- browser/main/modals/RenameFolderModal.js | 3 +- locales/de.js | 94 ++++++++++++++++++- locales/en.js | 87 ++++++++++++++++- 24 files changed, 302 insertions(+), 111 deletions(-) diff --git a/browser/lib/i18n.js b/browser/lib/i18n.js index aa2f0a89..0b51ea54 100644 --- a/browser/lib/i18n.js +++ b/browser/lib/i18n.js @@ -2,6 +2,6 @@ const i18n = new (require('i18n-2'))({ // setup some locales - other locales default to the first locale locales: ['en', 'de', 'fr'] - }); +}); export default i18n; \ No newline at end of file diff --git a/browser/main/Detail/InfoPanel.js b/browser/main/Detail/InfoPanel.js index 629f0b97..4ce610fa 100644 --- a/browser/main/Detail/InfoPanel.js +++ b/browser/main/Detail/InfoPanel.js @@ -82,7 +82,7 @@ class InfoPanel extends React.Component { ) 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/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/NewNoteButton/index.js b/browser/main/NewNoteButton/index.js index 633433df..b2d8cec6 100644 --- a/browser/main/NewNoteButton/index.js +++ b/browser/main/NewNoteButton/index.js @@ -6,6 +6,7 @@ import _ from 'lodash' import modal from 'browser/main/lib/modal' import NewNoteModal from 'browser/main/modals/NewNoteModal' import eventEmitter from 'browser/main/lib/eventEmitter' +import i18n from 'browser/lib/i18n' const { remote } = require('electron') const { dialog } = remote @@ -86,7 +87,7 @@ class NewNoteButton extends React.Component { onClick={(e) => this.handleNewNoteButtonClick(e)}> - Make a note {OSX ? '⌘' : 'Ctrl'} + N + {i18n.__('Make a note')} {OSX ? '⌘' : i18n.__('Ctrl')} + N diff --git a/browser/main/SideNav/ListButton.js b/browser/main/SideNav/ListButton.js index 1365c4cb..b5bc1488 100644 --- a/browser/main/SideNav/ListButton.js +++ b/browser/main/SideNav/ListButton.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 ListButton = ({ onClick, isTagActive @@ -12,7 +13,7 @@ const ListButton = ({ : '../resources/icon/icon-list-active.svg' } /> - 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 }) => ( ) 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..e3dd8fac 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 @@ -62,7 +63,7 @@ class StatusBar extends React.Component { {status.updateReady ? : null } diff --git a/browser/main/TopBar/index.js b/browser/main/TopBar/index.js index 246ef614..860d5b0d 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) { @@ -185,7 +186,7 @@ class TopBar extends React.Component { onClick={(e) => this.handleSearchClearButton(e)} > - Clear Search + {i18n.__('Clear Search')} } diff --git a/browser/main/modals/NewNoteModal.js b/browser/main/modals/NewNoteModal.js index 8322d99f..641c348d 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.')} -
Tab to switch format
+
{i18n.__('Tab to switch format')}
) 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')}


) diff --git a/browser/main/modals/PreferencesModal/FolderItem.js b/browser/main/modals/PreferencesModal/FolderItem.js index 9d1cd08f..779ad0be 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?')}
@@ -231,12 +232,12 @@ class FolderItem extends React.Component { diff --git a/browser/main/modals/PreferencesModal/InfoTab.js b/browser/main/modals/PreferencesModal/InfoTab.js index 25c0b255..964b02f3 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 @@ -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,34 +121,34 @@ 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.
    -
    You can see how it works on this.handleLinkClick(e)}>GitHub.
    +
    {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.')}
    +
    {i18n.__('You can see how it works on ')} this.handleLinkClick(e)}>GitHub.

    -
    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
    + {i18n.__('Enable analytics to help improve Boostnote')}

    {this.infoMessage()} diff --git a/browser/main/modals/PreferencesModal/StorageItem.js b/browser/main/modals/PreferencesModal/StorageItem.js index f2092835..28675860 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 @@ -127,7 +128,7 @@ class StorageItem extends React.Component { Add Folder + >{i18n.__('Add Folder')}
    diff --git a/browser/main/modals/PreferencesModal/StoragesTab.js b/browser/main/modals/PreferencesModal/StoragesTab.js index f66a617e..a6be9555 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.')}
    }
    @@ -140,13 +141,13 @@ class StoragesTab extends React.Component { return (
    -
    Add Storage
    +
    {i18n.__('Add Storage')}
    - Name + {i18n.__('Name')}
    -
    Type
    +
    {i18n.__('Type')}
    - Setting up 3rd-party cloud storage integration:{' '} + {i18n.__('Setting up 3rd-party cloud storage integration:')}{' '} this.handleLinkClick(e)} - >Cloud-Syncing-and-Backup + >{i18n.__('Cloud-Syncing-and-Backup')}
    -
    Location +
    {i18n.__('Location')}
    + >{i18n.__('Add')} + >{i18n.__('Cancel')}
    diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index 50e13f6c..2e6ae7e1 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' @@ -151,19 +152,19 @@ class UiTab extends React.Component { return (
    -
    Interface
    +
    {i18n.__('Interface')}
    - Interface Theme + {i18n.__('Interface Theme')}
    @@ -174,7 +175,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')}
    @@ -184,7 +185,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')}
    { @@ -206,7 +207,7 @@ class UiTab extends React.Component {
    - Editor Theme + {i18n.__('Editor Theme')}
    - Editor Font Family + {i18n.__('Editor Font Family')}
    - Editor Indent Style + {i18n.__('Editor Indent Style')}
    - Switch to Preview + {i18n.__('Switch to Preview')}
    - Editor Keymap + {i18n.__('Editor Keymap')}
    -

    ⚠️ Please restart boostnote after you change the keymap

    +

    {i18n.__('⚠️ Please restart boostnote after you change the keymap')}

    @@ -314,7 +315,7 @@ class UiTab extends React.Component { ref='editorDisplayLineNumbers' type='checkbox' />  - Show line numbers in the editor + {i18n.__('Show line numbers in the editor')}
    @@ -325,7 +326,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')}
    @@ -336,14 +337,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')}
    - 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.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/de.js b/locales/de.js index 23d80003..6bd695e0 100644 --- a/locales/de.js +++ b/locales/de.js @@ -1,4 +1,94 @@ { - "Ctrl(^)": "Strg", - "to create a new note": "um eine neue Notiz zu erstellen" + "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": "Deine Boostnote Einstellungen", + "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": "Default", + "White": "White", + "Solarized Dark": "Solarized Dark", + "Dark": "Dark", + "Show "Saved to Clipboard" notification when copying": "Show "Saved to Clipboard" notification when copying", + "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" } \ No newline at end of file diff --git a/locales/en.js b/locales/en.js index bf5d5513..d78c361f 100644 --- a/locales/en.js +++ b/locales/en.js @@ -1,5 +1,5 @@ { - "Ctrl(^)": "Ctrl(^)", + "Ctrl(^)": "Ctrl", "to create a new note": "to create a new note", "MODIFICATION DATE": "MODIFICATION DATE", "Words": "Words", @@ -10,6 +10,87 @@ "NOTE LINK": "NOTE LINK", ".md": ".md", ".txt": ".txt", - ".html Date: Tue, 6 Mar 2018 15:04:04 +0100 Subject: [PATCH 03/16] Implemented language switch in Interface Config Tab --- browser/main/Main.js | 10 ++- browser/main/lib/ConfigManager.js | 9 +++ browser/main/modals/PreferencesModal/UiTab.js | 18 +++++- locales/de.js | 7 ++- locales/en.js | 7 ++- locales/fr.js | 61 ++++++++++++++++++- 6 files changed, 106 insertions(+), 6 deletions(-) diff --git a/browser/main/Main.js b/browser/main/Main.js index f9be6085..f05ad52d 100644 --- a/browser/main/Main.js +++ b/browser/main/Main.js @@ -14,6 +14,7 @@ import mobileAnalytics from 'browser/main/lib/AwsMobileAnalyticsConfig' import eventEmitter from 'browser/main/lib/eventEmitter' import { hashHistory } from 'react-router' import store from 'browser/main/store' +import i18n from 'browser/lib/i18n' const path = require('path') const electron = require('electron') const { remote } = electron @@ -148,7 +149,14 @@ class Main extends React.Component { } else { document.body.setAttribute('data-theme', 'default') } - + if (config.ui.language === 'en') { + i18n.setLocale('en') + } else if (config.ui.language === 'de') { + i18n.setLocale('de') + } else { + i18n.setLocale('fr') + } + // Reload all data dataApi.init() .then((data) => { diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index e7e82a9b..0d4730fe 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' @@ -132,6 +133,14 @@ function set (updates) { document.body.setAttribute('data-theme', 'default') } + if (newConfig.ui.language === 'en') { + i18n.setLocale('en') + } else if (newConfig.ui.language === 'de') { + i18n.setLocale('de') + } else { + i18n.setLocale('fr') + } + let editorTheme = document.getElementById('editorTheme') if (editorTheme == null) { editorTheme = document.createElement('link') diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index 2e6ae7e1..f2132bdf 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -62,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 @@ -168,6 +169,21 @@ class UiTab extends React.Component {
    + +
    + {i18n.__('Language')} +
    + +
    +
    +
    diff --git a/locales/de.js b/locales/de.js index 6bd695e0..f3adcdb7 100644 --- a/locales/de.js +++ b/locales/de.js @@ -90,5 +90,10 @@ "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" + "Support via OpenCollective": "Support via OpenCollective", + "Language": "Language", + "English": "Englisch", + "German": "Deutsch", + "French": "Französisch", + "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying" } \ No newline at end of file diff --git a/locales/en.js b/locales/en.js index d78c361f..0ea0f034 100644 --- a/locales/en.js +++ b/locales/en.js @@ -27,7 +27,6 @@ "Thanks,": "Thanks,", "Boostnote maintainers": "Boostnote maintainers", "Support via OpenCollective": "Support via OpenCollective", - "Thank you for using Boostnote!": "Thank you for using Boostnote!", "Make a note": "Make a note", "Ctrl": "Ctrl", "Notes": "Notes", @@ -92,5 +91,9 @@ "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter", "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter", "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter", - ".html": ".html" + "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying", + "Language": "Language", + "English": "English", + "German": "German", + "French": "French" } \ No newline at end of file diff --git a/locales/fr.js b/locales/fr.js index 9e26dfee..cfcca1a5 100644 --- a/locales/fr.js +++ b/locales/fr.js @@ -1 +1,60 @@ -{} \ No newline at end of file +{ + "Notes": "Notes", + "Tags": "Tags", + "Preferences": "Preferences", + "Make a note": "Make a note", + "Ctrl": "Ctrl", + "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", + "Interface": "Interface", + "Interface Theme": "Interface Theme", + "Default": "Default", + "White": "White", + "Solarized Dark": "Solarized Dark", + "Dark": "Dark", + "Language": "Language", + "English": "English", + "German": "German", + "French": "French", + "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying", + "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" +} \ No newline at end of file From aa3597881abe2d882fef8a0931d83362659407a9 Mon Sep 17 00:00:00 2001 From: Simon Date: Tue, 6 Mar 2018 15:56:48 +0100 Subject: [PATCH 04/16] added more strings --- browser/components/SideNavFilter.js | 7 +- locales/de.js | 105 +++++++++++++++------------- locales/en.js | 4 +- 3 files changed, 65 insertions(+), 51 deletions(-) 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/locales/de.js b/locales/de.js index f3adcdb7..70bd3c76 100644 --- a/locales/de.js +++ b/locales/de.js @@ -1,79 +1,78 @@ { - "Notes": "Notes", + "Notes": "Notizen", "Tags": "Tags", - "Preferences": "Preferences", - "Make a note": "Make a note", + "Preferences": "Einstellungen", + "Make a note": "Notiz erstellen", "Ctrl": "Ctrl", - "Ctrl(^)": "Ctrl(^)", - "to create a new note": "to create a new note", - "Toggle Mode": "Toggle Mode", - "Trash": "Trash", + "Ctrl(^)": "Ctrl", + "to create a new note": "um eine neue Notiz zu erstellen", + "Toggle Mode": "Modus umschalten", + "Trash": "Papierkorb", "MODIFICATION DATE": "MODIFICATION DATE", - "Words": "Words", - "Letters": "Letters", - "STORAGE": "STORAGE", - "FOLDER": "FOLDER", - "CREATION DATE": "CREATION DATE", - "NOTE LINK": "NOTE LINK", + "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": "Storages", - "Add Storage Location": "Add Storage Location", - "Add Folder": "Add Folder", - "Open Storage folder": "Open Storage folder", + "Storages": "Speicherorte", + "Add Storage Location": "Speicherort Hinzufügen", + "Add Folder": "Ordner Hinzufügen", + "Open Storage folder": "Speicherort Öffnen", "Unlink": "Unlink", - "Edit": "Edit", - "Delete": "Delete", + "Edit": "Bearbeiten", + "Delete": "Löschen", "Interface": "Interface", "Interface Theme": "Interface Theme", - "Default": "Default", - "White": "White", + "Default": "Standard", + "White": "Weiß", "Solarized Dark": "Solarized Dark", "Dark": "Dark", - "Show "Saved to Clipboard" notification when copying": "Show "Saved to Clipboard" notification when copying", - "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes", + "Show a confirmation dialog when deleting notes": "Bestätigungsdialog beim Löschen von Notizen anzeigen", "Editor Theme": "Editor Theme", - "Editor Font Size": "Editor Font Size", - "Editor Font Family": "Editor Font Family", - "Editor Indent Style": "Editor Indent Style", - "Spaces": "Spaces", + "Editor Font Size": "Editor Schriftgröße", + "Editor Font Family": "Editor Schriftart", + "Editor Indent Style": "Editor Einrückestil", + "Spaces": "Leerzeichen", "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", + "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": "⚠️ 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", + "⚠️ 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": "Allow preview to scroll past the last line", - "Show line numbers for preview code blocks": "Show line numbers for preview code blocks", + "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": "Subscribe to Newsletter", + "Subscribe to Newsletter": "Newsletter abonieren", "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.", + "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": "Development", - " : Development configurations for Boostnote.": " : Development configurations for Boostnote.", + "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", @@ -91,9 +90,21 @@ "Thanks,": "Thanks,", "Boostnote maintainers": "Boostnote maintainers", "Support via OpenCollective": "Support via OpenCollective", - "Language": "Language", + "Language": "Sprache", "English": "Englisch", "German": "Deutsch", "French": "Französisch", - "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying" + "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" } \ No newline at end of file diff --git a/locales/en.js b/locales/en.js index 0ea0f034..95701092 100644 --- a/locales/en.js +++ b/locales/en.js @@ -95,5 +95,7 @@ "Language": "Language", "English": "English", "German": "German", - "French": "French" + "French": "French", + "All Notes": "All Notes", + "Starred": "Starred" } \ No newline at end of file From 0f82085cae6973c22aa3d131697e28aaeb7b2035 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 7 Mar 2018 07:10:49 +0100 Subject: [PATCH 05/16] Adjustments for Travis CI --- browser/lib/i18n.js | 11 ++++++----- browser/main/Main.js | 2 +- browser/main/modals/PreferencesModal/FolderItem.js | 2 +- browser/main/modals/PreferencesModal/StoragesTab.js | 4 ++-- browser/main/modals/PreferencesModal/UiTab.js | 12 ++++++------ locales/{de.js => de.json} | 0 locales/{en.js => en.json} | 0 locales/{fr.js => fr.json} | 0 8 files changed, 16 insertions(+), 15 deletions(-) rename locales/{de.js => de.json} (100%) rename locales/{en.js => en.json} (100%) rename locales/{fr.js => fr.json} (100%) diff --git a/browser/lib/i18n.js b/browser/lib/i18n.js index 0b51ea54..56c0da71 100644 --- a/browser/lib/i18n.js +++ b/browser/lib/i18n.js @@ -1,7 +1,8 @@ -//load package for localization +// load package for localization const i18n = new (require('i18n-2'))({ - // setup some locales - other locales default to the first locale - locales: ['en', 'de', 'fr'] -}); + // setup some locales - other locales default to the first locale + locales: ['en', 'de', 'fr'], + extension: '.json' +}) -export default i18n; \ No newline at end of file +export default i18n diff --git a/browser/main/Main.js b/browser/main/Main.js index f05ad52d..50596615 100644 --- a/browser/main/Main.js +++ b/browser/main/Main.js @@ -156,7 +156,7 @@ class Main extends React.Component { } else { i18n.setLocale('fr') } - + // Reload all data dataApi.init() .then((data) => { diff --git a/browser/main/modals/PreferencesModal/FolderItem.js b/browser/main/modals/PreferencesModal/FolderItem.js index 779ad0be..50d28013 100644 --- a/browser/main/modals/PreferencesModal/FolderItem.js +++ b/browser/main/modals/PreferencesModal/FolderItem.js @@ -180,7 +180,7 @@ class FolderItem extends React.Component { return (
    - {i18n.__('Are you sure to ')} {i18n.__(' delete')} {i18n.__('this folder?')} + {i18n.__('Are you sure to ')} {i18n.__(' delete')} {i18n.__('this folder?')}
    - {blogAlertElement}
    -
    Auth
    +
    {i18n.__('Auth')}
    - Authentication Method + {i18n.__('Authentication Method')}
    { 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/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 { } {keymapAlertElement}
    diff --git a/browser/main/modals/PreferencesModal/InfoTab.js b/browser/main/modals/PreferencesModal/InfoTab.js index 964b02f3..1173389e 100644 --- a/browser/main/modals/PreferencesModal/InfoTab.js +++ b/browser/main/modals/PreferencesModal/InfoTab.js @@ -39,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: 'Thank\'s for trust us' + amaMessage: i18n.__('Thank\'s for trust us') }) } @@ -149,7 +149,7 @@ class InfoTab extends React.Component { type='checkbox' /> {i18n.__('Enable analytics to help improve Boostnote')}
    - +
    {this.infoMessage()}
    diff --git a/browser/main/modals/PreferencesModal/StorageItem.js b/browser/main/modals/PreferencesModal/StorageItem.js index 28675860..bbd082c6 100644 --- a/browser/main/modals/PreferencesModal/StorageItem.js +++ b/browser/main/modals/PreferencesModal/StorageItem.js @@ -47,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) { diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index 1939e0a9..fbcae1d0 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -30,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) => { @@ -108,7 +108,7 @@ class UiTab extends React.Component { this.props.haveToSave({ tab: 'UI', type: 'warning', - message: 'You have to save!' + message: i18n.__('You have to save!') }) } }) @@ -474,7 +474,7 @@ class UiTab extends React.Component {
    {UiAlertElement}
    diff --git a/browser/main/modals/PreferencesModal/index.js b/browser/main/modals/PreferencesModal/index.js index 490237ab..70e25a88 100644 --- a/browser/main/modals/PreferencesModal/index.js +++ b/browser/main/modals/PreferencesModal/index.js @@ -118,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) => { diff --git a/locales/de.json b/locales/de.json index 70bd3c76..3e7138a5 100644 --- a/locales/de.json +++ b/locales/de.json @@ -88,8 +88,8 @@ "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", + "Boostnote maintainers": "Boostnote Betreuer", + "Support via OpenCollective": "Support per OpenCollective", "Language": "Sprache", "English": "Englisch", "German": "Deutsch", @@ -106,5 +106,26 @@ "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" + "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" } \ No newline at end of file diff --git a/locales/en.json b/locales/en.json index 95701092..aba9be61 100644 --- a/locales/en.json +++ b/locales/en.json @@ -1,6 +1,13 @@ { + "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", @@ -12,57 +19,20 @@ ".txt": ".txt", ".html": ".html", "Print": "Print", - "Toggle Mode": "Toggle Mode", - "Trash": "Trash", "Your preferences for Boostnote": "Your preferences for Boostnote", - "Edit": "Edit", - "Delete": "Delete", - "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", - "Make a note": "Make a note", - "Ctrl": "Ctrl", - "Notes": "Notes", - "Tags": "Tags", - "Preferences": "Preferences", "Storages": "Storages", "Add Storage Location": "Add Storage Location", "Add Folder": "Add Folder", "Open Storage folder": "Open Storage folder", "Unlink": "Unlink", - "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", + "Edit": "Edit", + "Delete": "Delete", "Interface": "Interface", "Interface Theme": "Interface Theme", - "Default": "Default", + "Default": "Delete", "White": "White", "Solarized Dark": "Solarized Dark", "Dark": "Dark", - "Show "Saved to Clipboard" notification when copying": "Show "Saved to Clipboard" notification when copying", "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes", "Editor Theme": "Editor Theme", "Editor Font Size": "Editor Font Size", @@ -91,11 +61,71 @@ "LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter", "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter", "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter", - "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying", + "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" + "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." } \ No newline at end of file diff --git a/locales/fr.json b/locales/fr.json index cfcca1a5..aba9be61 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -4,6 +4,8 @@ "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", @@ -18,17 +20,19 @@ ".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": "Default", + "Default": "Delete", "White": "White", "Solarized Dark": "Solarized Dark", "Dark": "Dark", - "Language": "Language", - "English": "English", - "German": "German", - "French": "French", - "Show \"Saved to Clipboard\" notification when copying": "Show \"Saved to Clipboard\" notification when copying", "Show a confirmation dialog when deleting notes": "Show a confirmation dialog when deleting notes", "Editor Theme": "Editor Theme", "Editor Font Size": "Editor Font Size", @@ -56,5 +60,72 @@ "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" + "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." } \ No newline at end of file From 40b5472866ea2bc692384d041917d8e906e7f431 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 7 Mar 2018 08:37:55 +0100 Subject: [PATCH 07/16] Adjustments for Travis CI --- browser/main/Detail/SnippetNoteDetail.js | 10 +++++----- browser/main/Detail/index.js | 6 +++--- locales/de.json | 3 ++- locales/en.json | 3 ++- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/browser/main/Detail/SnippetNoteDetail.js b/browser/main/Detail/SnippetNoteDetail.js index 9b5c7456..048dccad 100644 --- a/browser/main/Detail/SnippetNoteDetail.js +++ b/browser/main/Detail/SnippetNoteDetail.js @@ -265,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: i18n.__('Delete a snippet'), - detail: i18n.__('This work cannot be undone.'), - buttons: [ i18n.__('Confirm'), i18n.__('Cancel')] + message: i18n.__('Delete a snippet'), + detail: i18n.__('This work cannot be undone.'), + buttons: [i18n.__('Confirm'), i18n.__('Cancel')] }) if (dialogIndex === 0) { this.deleteSnippetByIndex(index) @@ -508,8 +508,8 @@ class SnippetNoteDetail extends React.Component { showWarning () { dialog.showMessageBox(remote.getCurrentWindow(), { type: 'warning', - message: i18n.__('Sorry!'), - detail: i18n.__('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/index.js b/browser/main/Detail/index.js index 70084cf9..d07df204 100644 --- a/browser/main/Detail/index.js +++ b/browser/main/Detail/index.js @@ -41,9 +41,9 @@ class Detail extends React.Component { const alertConfig = { type: 'warning', - message: i18n.__('Confirm note deletion'), - detail: i18n.__('This will permanently remove this note.'), - buttons: [ i18n.__('Confirm'), i18n.__('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) diff --git a/locales/de.json b/locales/de.json index 3e7138a5..a3d0d92e 100644 --- a/locales/de.json +++ b/locales/de.json @@ -127,5 +127,6 @@ "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" + "This will permanently remove this note.": "Notiz wird dauerhaft gelöscht", + "You have to save!": "You have to save!" } \ No newline at end of file diff --git a/locales/en.json b/locales/en.json index aba9be61..a43c6de9 100644 --- a/locales/en.json +++ b/locales/en.json @@ -127,5 +127,6 @@ "Restore": "Restore", "Permanent Delete": "Permanent Delete", "Confirm note deletion": "Confirm note deletion", - "This will permanently remove this note.": "This will permanently remove this note." + "This will permanently remove this note.": "This will permanently remove this note.", + "Successfully applied!": "Successfully applied!" } \ No newline at end of file From 4d41c7f37f1de2f1baf55c868dcc838f7ad26a3f Mon Sep 17 00:00:00 2001 From: Simon Date: Fri, 9 Mar 2018 07:39:08 +0100 Subject: [PATCH 08/16] Changed default language to en --- browser/main/Main.js | 6 +++--- browser/main/lib/ConfigManager.js | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/browser/main/Main.js b/browser/main/Main.js index 50596615..ae6fa471 100644 --- a/browser/main/Main.js +++ b/browser/main/Main.js @@ -149,12 +149,12 @@ class Main extends React.Component { } else { document.body.setAttribute('data-theme', 'default') } - if (config.ui.language === 'en') { - i18n.setLocale('en') + if (config.ui.language === 'fr') { + i18n.setLocale('fr') } else if (config.ui.language === 'de') { i18n.setLocale('de') } else { - i18n.setLocale('fr') + i18n.setLocale('en') } // Reload all data diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index 0d4730fe..71eecd57 100644 --- a/browser/main/lib/ConfigManager.js +++ b/browser/main/lib/ConfigManager.js @@ -133,12 +133,12 @@ function set (updates) { document.body.setAttribute('data-theme', 'default') } - if (newConfig.ui.language === 'en') { - i18n.setLocale('en') + if (newConfig.ui.language === 'fr') { + i18n.setLocale('fr') } else if (newConfig.ui.language === 'de') { i18n.setLocale('de') } else { - i18n.setLocale('fr') + i18n.setLocale('en') } let editorTheme = document.getElementById('editorTheme') From 4f6c35713e7914219c09b7aeac37b7ec4d9e0f79 Mon Sep 17 00:00:00 2001 From: Simon Date: Fri, 9 Mar 2018 17:30:11 +0100 Subject: [PATCH 09/16] Added languages; better German translation --- browser/lib/i18n.js | 2 +- browser/main/Main.js | 22 ++- browser/main/lib/ConfigManager.js | 22 ++- browser/main/modals/PreferencesModal/UiTab.js | 12 +- locales/da.json | 143 ++++++++++++++++++ locales/de.json | 27 +++- locales/en.json | 13 +- locales/es.json | 143 ++++++++++++++++++ locales/fr.json | 14 +- locales/ja.json | 143 ++++++++++++++++++ locales/ko.json | 143 ++++++++++++++++++ locales/no.json | 143 ++++++++++++++++++ locales/pl.json | 143 ++++++++++++++++++ locales/pt.json | 143 ++++++++++++++++++ locales/sq.json | 143 ++++++++++++++++++ locales/zh-CN.json | 143 ++++++++++++++++++ locales/zh-TW.json | 143 ++++++++++++++++++ 17 files changed, 1528 insertions(+), 14 deletions(-) create mode 100644 locales/da.json create mode 100644 locales/es.json create mode 100644 locales/ja.json create mode 100644 locales/ko.json create mode 100644 locales/no.json create mode 100644 locales/pl.json create mode 100644 locales/pt.json create mode 100644 locales/sq.json create mode 100644 locales/zh-CN.json create mode 100644 locales/zh-TW.json diff --git a/browser/lib/i18n.js b/browser/lib/i18n.js index 56c0da71..1f3c95c5 100644 --- a/browser/lib/i18n.js +++ b/browser/lib/i18n.js @@ -1,7 +1,7 @@ // load package for localization const i18n = new (require('i18n-2'))({ // setup some locales - other locales default to the first locale - locales: ['en', 'de', 'fr'], + locales: ['en', 'sq', 'zh-CN', 'zh-TW', 'da', 'fr', 'de', 'ja', 'ko', 'no', 'pl', 'pt', 'es'], extension: '.json' }) diff --git a/browser/main/Main.js b/browser/main/Main.js index ae6fa471..13294c0f 100644 --- a/browser/main/Main.js +++ b/browser/main/Main.js @@ -149,10 +149,30 @@ class Main extends React.Component { } else { document.body.setAttribute('data-theme', 'default') } - if (config.ui.language === 'fr') { + if (config.ui.language === 'sq') { + i18n.setLocale('sq') + } else if (config.ui.language === 'zh-CN') { + i18n.setLocale('zh-CN') + } else if (config.ui.language === 'zh-TW') { + i18n.setLocale('zh-TW') + } else if (config.ui.language === 'da') { + i18n.setLocale('da') + } else if (config.ui.language === 'fr') { i18n.setLocale('fr') } else if (config.ui.language === 'de') { i18n.setLocale('de') + } else if (config.ui.language === 'ja') { + i18n.setLocale('ja') + } else if (config.ui.language === 'ko') { + i18n.setLocale('ko') + } else if (config.ui.language === 'no') { + i18n.setLocale('no') + } else if (config.ui.language === 'pl') { + i18n.setLocale('pl') + } else if (config.ui.language === 'pt') { + i18n.setLocale('pt') + } else if (config.ui.language === 'es') { + i18n.setLocale('es') } else { i18n.setLocale('en') } diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index 71eecd57..28c8d806 100644 --- a/browser/main/lib/ConfigManager.js +++ b/browser/main/lib/ConfigManager.js @@ -133,10 +133,30 @@ function set (updates) { document.body.setAttribute('data-theme', 'default') } - if (newConfig.ui.language === 'fr') { + 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 === 'es') { + i18n.setLocale('es') } else { i18n.setLocale('en') } diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index fbcae1d0..b6144d51 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -177,9 +177,19 @@ class UiTab extends React.Component { onChange={(e) => this.handleUIChange(e)} ref='uiLanguage' > + + + + - + + + + + + +
    diff --git a/locales/da.json b/locales/da.json new file mode 100644 index 00000000..27c94e6e --- /dev/null +++ b/locales/da.json @@ -0,0 +1,143 @@ +{ + "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!" +} \ No newline at end of file diff --git a/locales/de.json b/locales/de.json index a3d0d92e..ae9c84d6 100644 --- a/locales/de.json +++ b/locales/de.json @@ -8,7 +8,7 @@ "to create a new note": "um eine neue Notiz zu erstellen", "Toggle Mode": "Modus umschalten", "Trash": "Papierkorb", - "MODIFICATION DATE": "MODIFICATION DATE", + "MODIFICATION DATE": "ÄNDERUNGSDATUM", "Words": "Wörter", "Letters": "Buchstaben", "STORAGE": "SPEICHERORT", @@ -24,11 +24,11 @@ "Add Storage Location": "Speicherort Hinzufügen", "Add Folder": "Ordner Hinzufügen", "Open Storage folder": "Speicherort Öffnen", - "Unlink": "Unlink", + "Unlink": "Verknüpfung aufheben", "Edit": "Bearbeiten", "Delete": "Löschen", "Interface": "Interface", - "Interface Theme": "Interface Theme", + "Interface Theme": "Interface-Thema", "Default": "Standard", "White": "Weiß", "Solarized Dark": "Solarized Dark", @@ -62,7 +62,7 @@ "LaTeX Block Open Delimiter": "LaTeX Block Open Delimiter", "LaTeX Block Close Delimiter": "LaTeX Block Close Delimiter", "Community": "Community", - "Subscribe to Newsletter": "Newsletter abonieren", + "Subscribe to Newsletter": "Newsletter abonnieren", "GitHub": "GitHub", "Blog": "Blog", "Facebook Group": "Facebook Group", @@ -76,10 +76,10 @@ "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.", + "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.": "You can choose to enable or disable this option.", - "Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote", + "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!", @@ -128,5 +128,16 @@ "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!": "You have to save!" + "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!" } \ No newline at end of file diff --git a/locales/en.json b/locales/en.json index a43c6de9..27c94e6e 100644 --- a/locales/en.json +++ b/locales/en.json @@ -128,5 +128,16 @@ "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!" + "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!" } \ No newline at end of file diff --git a/locales/es.json b/locales/es.json new file mode 100644 index 00000000..27c94e6e --- /dev/null +++ b/locales/es.json @@ -0,0 +1,143 @@ +{ + "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!" +} \ No newline at end of file diff --git a/locales/fr.json b/locales/fr.json index aba9be61..27c94e6e 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -127,5 +127,17 @@ "Restore": "Restore", "Permanent Delete": "Permanent Delete", "Confirm note deletion": "Confirm note deletion", - "This will permanently remove this note.": "This will permanently remove this note." + "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!" } \ No newline at end of file diff --git a/locales/ja.json b/locales/ja.json new file mode 100644 index 00000000..27c94e6e --- /dev/null +++ b/locales/ja.json @@ -0,0 +1,143 @@ +{ + "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!" +} \ No newline at end of file diff --git a/locales/ko.json b/locales/ko.json new file mode 100644 index 00000000..27c94e6e --- /dev/null +++ b/locales/ko.json @@ -0,0 +1,143 @@ +{ + "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!" +} \ No newline at end of file diff --git a/locales/no.json b/locales/no.json new file mode 100644 index 00000000..27c94e6e --- /dev/null +++ b/locales/no.json @@ -0,0 +1,143 @@ +{ + "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!" +} \ No newline at end of file diff --git a/locales/pl.json b/locales/pl.json new file mode 100644 index 00000000..27c94e6e --- /dev/null +++ b/locales/pl.json @@ -0,0 +1,143 @@ +{ + "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!" +} \ No newline at end of file diff --git a/locales/pt.json b/locales/pt.json new file mode 100644 index 00000000..27c94e6e --- /dev/null +++ b/locales/pt.json @@ -0,0 +1,143 @@ +{ + "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!" +} \ No newline at end of file diff --git a/locales/sq.json b/locales/sq.json new file mode 100644 index 00000000..27c94e6e --- /dev/null +++ b/locales/sq.json @@ -0,0 +1,143 @@ +{ + "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!" +} \ No newline at end of file diff --git a/locales/zh-CN.json b/locales/zh-CN.json new file mode 100644 index 00000000..27c94e6e --- /dev/null +++ b/locales/zh-CN.json @@ -0,0 +1,143 @@ +{ + "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!" +} \ No newline at end of file diff --git a/locales/zh-TW.json b/locales/zh-TW.json new file mode 100644 index 00000000..27c94e6e --- /dev/null +++ b/locales/zh-TW.json @@ -0,0 +1,143 @@ +{ + "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!" +} \ No newline at end of file From ecabd37cbbf2b43a5e8aaee9324179966dfb5005 Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 12 Mar 2018 07:26:19 +0100 Subject: [PATCH 10/16] Setting default language in DEFAULT_CONFIG --- browser/main/lib/ConfigManager.js | 1 + 1 file changed, 1 insertion(+) diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index 28c8d806..c7c5fc26 100644 --- a/browser/main/lib/ConfigManager.js +++ b/browser/main/lib/ConfigManager.js @@ -22,6 +22,7 @@ export const DEFAULT_CONFIG = { toggleMain: OSX ? 'Cmd + Alt + L' : 'Super + Alt + E' }, ui: { + language: 'en', theme: 'default', showCopyNotification: true, disableDirectWrite: false, From ccb0302d3f28c5908bdb3619e2cd5e10b960f549 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 14 Mar 2018 13:13:47 +0100 Subject: [PATCH 11/16] Resolved Merge issue; Added Russian; --- browser/main/Main.js | 2 + browser/main/NoteList/index.js | 2 +- browser/main/lib/ConfigManager.js | 2 + browser/main/modals/PreferencesModal/UiTab.js | 1 + locales/da.json | 3 +- locales/de.json | 5 +- locales/en.json | 5 +- locales/es.json | 3 +- locales/fr.json | 3 +- locales/ja.json | 3 +- locales/ko.json | 3 +- locales/no.json | 3 +- locales/pl.json | 3 +- locales/pt.json | 3 +- locales/ru.json | 146 ++++++++++++++++++ locales/sq.json | 3 +- locales/zh-CN.json | 3 +- locales/zh-TW.json | 3 +- 18 files changed, 182 insertions(+), 14 deletions(-) create mode 100644 locales/ru.json diff --git a/browser/main/Main.js b/browser/main/Main.js index 13294c0f..a2c8b658 100644 --- a/browser/main/Main.js +++ b/browser/main/Main.js @@ -171,6 +171,8 @@ class Main extends React.Component { i18n.setLocale('pl') } else if (config.ui.language === 'pt') { i18n.setLocale('pt') + } else if (config.ui.language === 'ru') { + i18n.setLocale('ru') } else if (config.ui.language === 'es') { i18n.setLocale('es') } else { diff --git a/browser/main/NoteList/index.js b/browser/main/NoteList/index.js index cfde1f84..0329a9cc 100644 --- a/browser/main/NoteList/index.js +++ b/browser/main/NoteList/index.js @@ -15,7 +15,7 @@ import path from 'path' import { hashHistory } from 'react-router' import copy from 'copy-to-clipboard' import AwsMobileAnalyticsConfig from 'browser/main/lib/AwsMobileAnalyticsConfig' -import markdown from '../../lib/markdown' +import Markdown from '../../lib/markdown' import i18n from 'browser/lib/i18n' const { remote } = require('electron') diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index 2da2f1c2..40b89198 100644 --- a/browser/main/lib/ConfigManager.js +++ b/browser/main/lib/ConfigManager.js @@ -157,6 +157,8 @@ function set (updates) { 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 { diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index 23c302d0..deb70c06 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -190,6 +190,7 @@ class UiTab extends React.Component { +
    diff --git a/locales/da.json b/locales/da.json index 27c94e6e..60201b34 100644 --- a/locales/da.json +++ b/locales/da.json @@ -139,5 +139,6 @@ "Polish": "Polish", "Portuguese": "Portuguese", "Spanish": "Spanish", - "You have to save!": "You have to save!" + "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 index ae9c84d6..fb2b6b11 100644 --- a/locales/de.json +++ b/locales/de.json @@ -139,5 +139,8 @@ "Spanish": "Spanisch", "Chinese (zh-CN)": "Chinesisch (zh-CN)", "Chinese (zh-TW)": "Chinesisch (zh-TW)", - "Successfully applied!": "Erfolgreich angewendet!" + "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 index 27c94e6e..91cb7f18 100644 --- a/locales/en.json +++ b/locales/en.json @@ -139,5 +139,8 @@ "Polish": "Polish", "Portuguese": "Portuguese", "Spanish": "Spanish", - "You have to save!": "You have to save!" + "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 index 27c94e6e..60201b34 100644 --- a/locales/es.json +++ b/locales/es.json @@ -139,5 +139,6 @@ "Polish": "Polish", "Portuguese": "Portuguese", "Spanish": "Spanish", - "You have to save!": "You have to save!" + "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 index 27c94e6e..60201b34 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -139,5 +139,6 @@ "Polish": "Polish", "Portuguese": "Portuguese", "Spanish": "Spanish", - "You have to save!": "You have to save!" + "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 index 27c94e6e..60201b34 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -139,5 +139,6 @@ "Polish": "Polish", "Portuguese": "Portuguese", "Spanish": "Spanish", - "You have to save!": "You have to save!" + "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 index 27c94e6e..60201b34 100644 --- a/locales/ko.json +++ b/locales/ko.json @@ -139,5 +139,6 @@ "Polish": "Polish", "Portuguese": "Portuguese", "Spanish": "Spanish", - "You have to save!": "You have to save!" + "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 index 27c94e6e..60201b34 100644 --- a/locales/no.json +++ b/locales/no.json @@ -139,5 +139,6 @@ "Polish": "Polish", "Portuguese": "Portuguese", "Spanish": "Spanish", - "You have to save!": "You have to save!" + "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 index 27c94e6e..60201b34 100644 --- a/locales/pl.json +++ b/locales/pl.json @@ -139,5 +139,6 @@ "Polish": "Polish", "Portuguese": "Portuguese", "Spanish": "Spanish", - "You have to save!": "You have to save!" + "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 index 27c94e6e..60201b34 100644 --- a/locales/pt.json +++ b/locales/pt.json @@ -139,5 +139,6 @@ "Polish": "Polish", "Portuguese": "Portuguese", "Spanish": "Spanish", - "You have to save!": "You have to save!" + "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..91cb7f18 --- /dev/null +++ b/locales/ru.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/sq.json b/locales/sq.json index 27c94e6e..60201b34 100644 --- a/locales/sq.json +++ b/locales/sq.json @@ -139,5 +139,6 @@ "Polish": "Polish", "Portuguese": "Portuguese", "Spanish": "Spanish", - "You have to save!": "You have to save!" + "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 index 27c94e6e..60201b34 100644 --- a/locales/zh-CN.json +++ b/locales/zh-CN.json @@ -139,5 +139,6 @@ "Polish": "Polish", "Portuguese": "Portuguese", "Spanish": "Spanish", - "You have to save!": "You have to save!" + "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 index 27c94e6e..60201b34 100644 --- a/locales/zh-TW.json +++ b/locales/zh-TW.json @@ -139,5 +139,6 @@ "Polish": "Polish", "Portuguese": "Portuguese", "Spanish": "Spanish", - "You have to save!": "You have to save!" + "You have to save!": "You have to save!", + "Russian": "Russian" } \ No newline at end of file From 7c8939ecb8af8ed5ec0a4664c1a1b32273753aca Mon Sep 17 00:00:00 2001 From: Nikolai Lopin Date: Thu, 15 Mar 2018 02:23:15 +0300 Subject: [PATCH 12/16] Add russian translation --- locales/ru.json | 258 ++++++++++++++++++++++++------------------------ 1 file changed, 129 insertions(+), 129 deletions(-) diff --git a/locales/ru.json b/locales/ru.json index 91cb7f18..798f9c8d 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -1,146 +1,146 @@ { - "Notes": "Notes", - "Tags": "Tags", - "Preferences": "Preferences", - "Make a note": "Make a note", + "Notes": "Записи", + "Tags": "Теги", + "Preferences": "Настройки", + "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", + "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": "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", + "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": "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", + "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": "⚠️ 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", + "⚠️ 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": "Blog", - "Facebook Group": "Facebook Group", - "Twitter": "Twitter", - "About": "About", + "Blog": "Блог", + "Facebook Group": "Группа в Фейсбуке", + "Twitter": "Твиттер", + "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.", + "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": "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", + "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": "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 + "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": "Русский" +} From 433fce286eb9ab9a0335716ef8d8579064b18fd8 Mon Sep 17 00:00:00 2001 From: Yu-Hung Ou Date: Fri, 16 Mar 2018 23:11:43 +1100 Subject: [PATCH 13/16] added electron as global variable to pass eslint check --- browser/main/NoteList/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/browser/main/NoteList/index.js b/browser/main/NoteList/index.js index 06880bab..2e31a5d7 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' From 00ba38beba19e7a4c0127d5b11739db44365c650 Mon Sep 17 00:00:00 2001 From: Yu-Hung Ou Date: Fri, 16 Mar 2018 23:30:57 +1100 Subject: [PATCH 14/16] reload config every time when markdown lib initiated --- browser/lib/markdown.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/lib/markdown.js b/browser/lib/markdown.js index 22f581e4..cb6a3826 100644 --- a/browser/lib/markdown.js +++ b/browser/lib/markdown.js @@ -8,7 +8,6 @@ import {lastFindInArray} from './utils' // FIXME We should not depend on global variable. const katex = window.katex -const config = ConfigManager.get() function createGutter (str, firstLineNumber) { if (Number.isNaN(firstLineNumber)) firstLineNumber = 1 @@ -22,6 +21,7 @@ function createGutter (str, firstLineNumber) { class Markdown { constructor (options = {}) { + const config = ConfigManager.get() const defaultOptions = { typographer: true, linkify: true, From 33b3299ca2e8a5e09378a41f0328efda189b540d Mon Sep 17 00:00:00 2001 From: Yu-Hung Ou Date: Fri, 16 Mar 2018 23:32:12 +1100 Subject: [PATCH 15/16] changed the default options of markdown lib to follow config --- browser/lib/markdown.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/lib/markdown.js b/browser/lib/markdown.js index cb6a3826..125ba3be 100644 --- a/browser/lib/markdown.js +++ b/browser/lib/markdown.js @@ -23,7 +23,7 @@ class Markdown { constructor (options = {}) { const config = ConfigManager.get() const defaultOptions = { - typographer: true, + typographer: config.preview.smartQuotes, linkify: true, html: true, xhtmlOut: true, From b9cab0dae813edd23b6c25333d9a479e443976ea Mon Sep 17 00:00:00 2001 From: Yu-Hung Ou Date: Fri, 16 Mar 2018 23:33:40 +1100 Subject: [PATCH 16/16] Init markdown lib only when it's needed when posting a note to blog --- browser/main/NoteList/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/main/NoteList/index.js b/browser/main/NoteList/index.js index 2e31a5d7..d8632da6 100644 --- a/browser/main/NoteList/index.js +++ b/browser/main/NoteList/index.js @@ -21,7 +21,6 @@ import Markdown from '../../lib/markdown' 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) @@ -710,6 +709,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),