1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-13 17:56:25 +00:00

Update text for internationalization

This commit is contained in:
Frank Kanis
2018-03-21 22:17:34 +01:00
parent d3f9c170ac
commit 055969f5c6
18 changed files with 63 additions and 55 deletions

View File

@@ -3,6 +3,7 @@ import React from 'react'
import CSSModules from 'browser/lib/CSSModules' import CSSModules from 'browser/lib/CSSModules'
import styles from './FolderSelect.styl' import styles from './FolderSelect.styl'
import _ from 'lodash' import _ from 'lodash'
import i18n from 'browser/lib/i18n'
class FolderSelect extends React.Component { class FolderSelect extends React.Component {
constructor (props) { constructor (props) {
@@ -249,7 +250,7 @@ class FolderSelect extends React.Component {
<input styleName='search-input' <input styleName='search-input'
ref='search' ref='search'
value={this.state.search} value={this.state.search}
placeholder='Folder...' placeholder={i18n.__('Folder...')}
onChange={(e) => this.handleSearchInputChange(e)} onChange={(e) => this.handleSearchInputChange(e)}
onBlur={(e) => this.handleSearchInputBlur(e)} onBlur={(e) => this.handleSearchInputBlur(e)}
onKeyDown={(e) => this.handleSearchInputKeyDown(e)} onKeyDown={(e) => this.handleSearchInputKeyDown(e)}

View File

@@ -2,13 +2,14 @@ import PropTypes from 'prop-types'
import React from 'react' import React from 'react'
import CSSModules from 'browser/lib/CSSModules' import CSSModules from 'browser/lib/CSSModules'
import styles from './FullscreenButton.styl' import styles from './FullscreenButton.styl'
import i18n from 'browser/lib/i18n'
const FullscreenButton = ({ const FullscreenButton = ({
onClick onClick
}) => ( }) => (
<button styleName='control-fullScreenButton' title='Fullscreen' onMouseDown={(e) => onClick(e)}> <button styleName='control-fullScreenButton' title={i18n.__('Fullscreen')} onMouseDown={(e) => onClick(e)}>
<img styleName='iconInfo' src='../resources/icon/icon-full.svg' /> <img styleName='iconInfo' src='../resources/icon/icon-full.svg' />
<span styleName='tooltip'>Fullscreen</span> <span styleName='tooltip'>{i18n.__('Fullscreen')}</span>
</button> </button>
) )

View File

@@ -2,6 +2,7 @@ import PropTypes from 'prop-types'
import React from 'react' import React from 'react'
import CSSModules from 'browser/lib/CSSModules' import CSSModules from 'browser/lib/CSSModules'
import styles from './InfoButton.styl' import styles from './InfoButton.styl'
import i18n from 'browser/lib/i18n'
const InfoButton = ({ const InfoButton = ({
onClick onClick
@@ -10,7 +11,7 @@ const InfoButton = ({
onClick={(e) => onClick(e)} onClick={(e) => onClick(e)}
> >
<img className='infoButton' src='../resources/icon/icon-info.svg' /> <img className='infoButton' src='../resources/icon/icon-info.svg' />
<span styleName='tooltip'>Info</span> <span styleName='tooltip'>{i18n.__('Info')}</span>
</button> </button>
) )

View File

@@ -640,7 +640,7 @@ class SnippetNoteDetail extends React.Component {
type: 'warning', type: 'warning',
message: i18n.__('Sorry!'), message: i18n.__('Sorry!'),
detail: i18n.__('md/text import is available only a markdown note.'), detail: i18n.__('md/text import is available only a markdown note.'),
buttons: ['OK'] buttons: [i18n.__('OK')]
}) })
} }
@@ -766,10 +766,10 @@ class SnippetNoteDetail extends React.Component {
isActive={note.isStarred} isActive={note.isStarred}
/> />
<button styleName='control-fullScreenButton' title='Fullscreen' <button styleName='control-fullScreenButton' title={i18n.__('Fullscreen')}
onMouseDown={(e) => this.handleFullScreenButton(e)}> onMouseDown={(e) => this.handleFullScreenButton(e)}>
<img styleName='iconInfo' src='../resources/icon/icon-full.svg' /> <img styleName='iconInfo' src='../resources/icon/icon-full.svg' />
<span styleName='tooltip'>Fullscreen</span> <span styleName='tooltip'>{i18n.__('Fullscreen')}</span>
</button> </button>
<TrashButton onClick={(e) => this.handleTrashButtonClick(e)} /> <TrashButton onClick={(e) => this.handleTrashButtonClick(e)} />
@@ -807,7 +807,7 @@ class SnippetNoteDetail extends React.Component {
fontSize: parseInt(config.preview.fontSize, 10) fontSize: parseInt(config.preview.fontSize, 10)
}} }}
ref='description' ref='description'
placeholder='Description...' placeholder={i18n.__('Description...')}
value={this.state.note.description} value={this.state.note.description}
onChange={(e) => this.handleChange(e)} onChange={(e) => this.handleChange(e)}
/> />
@@ -846,7 +846,7 @@ class SnippetNoteDetail extends React.Component {
onClick={(e) => this.handleModeButtonClick(e, this.state.snippetIndex)} onClick={(e) => this.handleModeButtonClick(e, this.state.snippetIndex)}
> >
{this.state.note.snippets[this.state.snippetIndex].mode == null {this.state.note.snippets[this.state.snippetIndex].mode == null
? 'Select Syntax...' ? i18n.__('Select Syntax...')
: this.state.note.snippets[this.state.snippetIndex].mode : this.state.note.snippets[this.state.snippetIndex].mode
}&nbsp; }&nbsp;
<i className='fa fa-caret-down' /> <i className='fa fa-caret-down' />

View File

@@ -3,6 +3,7 @@ import React from 'react'
import CSSModules from 'browser/lib/CSSModules' import CSSModules from 'browser/lib/CSSModules'
import styles from './StarButton.styl' import styles from './StarButton.styl'
import _ from 'lodash' import _ from 'lodash'
import i18n from 'browser/lib/i18n'
class StarButton extends React.Component { class StarButton extends React.Component {
constructor (props) { constructor (props) {
@@ -53,7 +54,7 @@ class StarButton extends React.Component {
: '../resources/icon/icon-star.svg' : '../resources/icon/icon-star.svg'
} }
/> />
<span styleName='tooltip'>Star</span> <span styleName='tooltip'>{i18n.__('Star')}</span>
</button> </button>
) )
} }

View File

@@ -4,6 +4,7 @@ import CSSModules from 'browser/lib/CSSModules'
import styles from './TagSelect.styl' import styles from './TagSelect.styl'
import _ from 'lodash' import _ from 'lodash'
import AwsMobileAnalyticsConfig from 'browser/main/lib/AwsMobileAnalyticsConfig' import AwsMobileAnalyticsConfig from 'browser/main/lib/AwsMobileAnalyticsConfig'
import i18n from 'browser/lib/i18n'
class TagSelect extends React.Component { class TagSelect extends React.Component {
constructor (props) { constructor (props) {
@@ -137,7 +138,7 @@ class TagSelect extends React.Component {
<input styleName='newTag' <input styleName='newTag'
ref='newTag' ref='newTag'
value={this.state.newTag} value={this.state.newTag}
placeholder='Add tag...' placeholder={i18n.__('Add tag...')}
onChange={(e) => this.handleNewTagInputChange(e)} onChange={(e) => this.handleNewTagInputChange(e)}
onKeyDown={(e) => this.handleNewTagInputKeyDown(e)} onKeyDown={(e) => this.handleNewTagInputKeyDown(e)}
onBlur={(e) => this.handleNewTagBlur(e)} onBlur={(e) => this.handleNewTagBlur(e)}

View File

@@ -57,9 +57,9 @@ class NewNoteButton extends React.Component {
} }
} }
if (storage == null) this.showMessageBox('No storage to create a note') if (storage == null) this.showMessageBox(i18n.__('No storage to create a note'))
const folder = _.find(storage.folders, {key: params.folderKey}) || storage.folders[0] const folder = _.find(storage.folders, {key: params.folderKey}) || storage.folders[0]
if (folder == null) this.showMessageBox('No folder to create a note') if (folder == null) this.showMessageBox(i18n.__('No folder to create a note'))
return { return {
storage, storage,

View File

@@ -445,9 +445,9 @@ class NoteList extends React.Component {
if (this.notes[targetIndex].type === 'SNIPPET_NOTE') { if (this.notes[targetIndex].type === 'SNIPPET_NOTE') {
dialog.showMessageBox(remote.getCurrentWindow(), { dialog.showMessageBox(remote.getCurrentWindow(), {
type: 'warning', type: 'warning',
message: 'Sorry!', message: i18n.__('Sorry!'),
detail: 'md/text import is available only a markdown note.', detail: i18n.__('md/text import is available only a markdown note.'),
buttons: ['OK', 'Cancel'] buttons: [i18n.__('OK'), i18n.__('Cancel')]
}) })
} }
} }
@@ -471,14 +471,14 @@ class NoteList extends React.Component {
this.handleNoteClick(e, uniqueKey) this.handleNoteClick(e, uniqueKey)
} }
const pinLabel = note.isPinned ? 'Remove pin' : 'Pin to Top' const pinLabel = note.isPinned ? i18n.__('Remove pin') : i18n.__('Pin to Top')
const deleteLabel = 'Delete Note' const deleteLabel = i18n.__('Delete Note')
const cloneNote = 'Clone Note' const cloneNote = i18n.__('Clone Note')
const restoreNote = 'Restore Note' const restoreNote = i18n.__('Restore Note')
const copyNoteLink = 'Copy Note Link' const copyNoteLink = i18n.__('Copy Note Link')
const publishLabel = 'Publish Blog' const publishLabel = i18n.__('Publish Blog')
const updateLabel = 'Update Blog' const updateLabel = i18n.__('Update Blog')
const openBlogLabel = 'Open Blog' const openBlogLabel = i18n.__('Open Blog')
const menu = new Menu() const menu = new Menu()
if (!location.pathname.match(/\/starred|\/trash/)) { if (!location.pathname.match(/\/starred|\/trash/)) {
@@ -585,9 +585,9 @@ class NoteList extends React.Component {
const noteExp = selectedNotes.length > 1 ? 'notes' : 'note' const noteExp = selectedNotes.length > 1 ? 'notes' : 'note'
const dialogueButtonIndex = dialog.showMessageBox(remote.getCurrentWindow(), { const dialogueButtonIndex = dialog.showMessageBox(remote.getCurrentWindow(), {
type: 'warning', type: 'warning',
message: 'Confirm note deletion', message: i18n.__('Confirm note deletion'),
detail: `This will permanently remove ${selectedNotes.length} ${noteExp}.`, detail: `This will permanently remove ${selectedNotes.length} ${noteExp}.`,
buttons: ['Confirm', 'Cancel'] buttons: [i18n.__('Confirm'), i18n.__('Cancel')]
}) })
if (dialogueButtonIndex === 1) return if (dialogueButtonIndex === 1) return
Promise.all( Promise.all(
@@ -757,9 +757,9 @@ class NoteList extends React.Component {
const { dialog } = remote const { dialog } = remote
const alertError = { const alertError = {
type: 'warning', type: 'warning',
message: 'Publish Failed', message: i18n.__('Publish Failed'),
detail: 'Check and update your blog setting and try again.', detail: i18n.__('Check and update your blog setting and try again.'),
buttons: ['Confirm'] buttons: [i18n.__('Confirm')]
} }
dialog.showMessageBox(remote.getCurrentWindow(), alertError) dialog.showMessageBox(remote.getCurrentWindow(), alertError)
} }
@@ -767,9 +767,9 @@ class NoteList extends React.Component {
confirmPublish (note) { confirmPublish (note) {
const buttonIndex = dialog.showMessageBox(remote.getCurrentWindow(), { const buttonIndex = dialog.showMessageBox(remote.getCurrentWindow(), {
type: 'warning', type: 'warning',
message: 'Publish Succeeded', message: i18n.__('Publish Succeeded'),
detail: `${note.title} is published at ${note.blog.blogLink}`, detail: `${note.title} is published at ${note.blog.blogLink}`,
buttons: ['Confirm', 'Open Blog'] buttons: [i18n.__('Confirm'), i18n.__('Open Blog')]
}) })
if (buttonIndex === 1) { if (buttonIndex === 1) {
@@ -874,7 +874,7 @@ class NoteList extends React.Component {
dialog.showMessageBox(remote.getCurrentWindow(), { dialog.showMessageBox(remote.getCurrentWindow(), {
type: 'warning', type: 'warning',
message: message, message: message,
buttons: ['OK'] buttons: [i18n.__('OK')]
}) })
} }
@@ -992,7 +992,7 @@ class NoteList extends React.Component {
<div styleName='control-sortBy'> <div styleName='control-sortBy'>
<i className='fa fa-angle-down' /> <i className='fa fa-angle-down' />
<select styleName='control-sortBy-select' <select styleName='control-sortBy-select'
title='Select filter mode' title={i18n.__('Select filter mode')}
value={config.sortBy} value={config.sortBy}
onChange={(e) => this.handleSortByChange(e)} onChange={(e) => this.handleSortByChange(e)}
> >

View File

@@ -27,14 +27,14 @@ class StorageItem extends React.Component {
handleHeaderContextMenu (e) { handleHeaderContextMenu (e) {
const menu = Menu.buildFromTemplate([ const menu = Menu.buildFromTemplate([
{ {
label: 'Add Folder', label: i18n.__('Add Folder'),
click: (e) => this.handleAddFolderButtonClick(e) click: (e) => this.handleAddFolderButtonClick(e)
}, },
{ {
type: 'separator' type: 'separator'
}, },
{ {
label: 'Unlink Storage', label: i18n.__('Unlink Storage'),
click: (e) => this.handleUnlinkStorageClick(e) click: (e) => this.handleUnlinkStorageClick(e)
} }
]) ])
@@ -94,21 +94,21 @@ class StorageItem extends React.Component {
handleFolderButtonContextMenu (e, folder) { handleFolderButtonContextMenu (e, folder) {
const menu = Menu.buildFromTemplate([ const menu = Menu.buildFromTemplate([
{ {
label: 'Rename Folder', label: i18n.__('Rename Folder'),
click: (e) => this.handleRenameFolderClick(e, folder) click: (e) => this.handleRenameFolderClick(e, folder)
}, },
{ {
type: 'separator' type: 'separator'
}, },
{ {
label: 'Export Folder', label: i18n.__('Export Folder'),
submenu: [ submenu: [
{ {
label: 'Export as txt', label: i18n.__('Export as txt'),
click: (e) => this.handleExportFolderClick(e, folder, 'txt') click: (e) => this.handleExportFolderClick(e, folder, 'txt')
}, },
{ {
label: 'Export as md', label: i18n.__('Export as md'),
click: (e) => this.handleExportFolderClick(e, folder, 'md') click: (e) => this.handleExportFolderClick(e, folder, 'md')
} }
] ]
@@ -117,7 +117,7 @@ class StorageItem extends React.Component {
type: 'separator' type: 'separator'
}, },
{ {
label: 'Delete Folder', label: i18n.__('Delete Folder'),
click: (e) => this.handleFolderDeleteClick(e, folder) click: (e) => this.handleFolderDeleteClick(e, folder)
} }
]) ])
@@ -136,8 +136,8 @@ class StorageItem extends React.Component {
handleExportFolderClick (e, folder, fileType) { handleExportFolderClick (e, folder, fileType) {
const options = { const options = {
properties: ['openDirectory', 'createDirectory'], properties: ['openDirectory', 'createDirectory'],
buttonLabel: 'Select directory', buttonLabel: i18n.__('Select directory'),
title: 'Select a folder to export the files to', title: i18n.__('Select a folder to export the files to'),
multiSelections: false multiSelections: false
} }
dialog.showOpenDialog(remote.getCurrentWindow(), options, dialog.showOpenDialog(remote.getCurrentWindow(), options,

View File

@@ -18,6 +18,7 @@ import PreferenceButton from './PreferenceButton'
import ListButton from './ListButton' import ListButton from './ListButton'
import TagButton from './TagButton' import TagButton from './TagButton'
import {SortableContainer} from 'react-sortable-hoc' import {SortableContainer} from 'react-sortable-hoc'
import i18n from 'browser/lib/i18n'
class SideNav extends React.Component { class SideNav extends React.Component {
// TODO: should not use electron stuff v0.7 // TODO: should not use electron stuff v0.7
@@ -115,7 +116,7 @@ class SideNav extends React.Component {
component = ( component = (
<div styleName='tabBody'> <div styleName='tabBody'>
<div styleName='tag-title'> <div styleName='tag-title'>
<p>Tags</p> <p>{i18n.__('Tags')}</p>
</div> </div>
<div styleName='tagList'> <div styleName='tagList'>
{this.tagListComponent(data)} {this.tagListComponent(data)}
@@ -179,7 +180,7 @@ class SideNav extends React.Component {
const { data } = this.props const { data } = this.props
const trashedNotes = data.trashedSet.toJS().map((uniqueKey) => data.noteMap.get(uniqueKey)) const trashedNotes = data.trashedSet.toJS().map((uniqueKey) => data.noteMap.get(uniqueKey))
const menu = Menu.buildFromTemplate([ const menu = Menu.buildFromTemplate([
{ label: 'Empty Trash', click: () => this.emptyTrash(trashedNotes) } { label: i18n.__('Empty Trash'), click: () => this.emptyTrash(trashedNotes) }
]) ])
menu.popup() menu.popup()
} }

View File

@@ -7,6 +7,7 @@ import store from 'browser/main/store'
import consts from 'browser/lib/consts' import consts from 'browser/lib/consts'
import ModalEscButton from 'browser/components/ModalEscButton' import ModalEscButton from 'browser/components/ModalEscButton'
import AwsMobileAnalyticsConfig from 'browser/main/lib/AwsMobileAnalyticsConfig' import AwsMobileAnalyticsConfig from 'browser/main/lib/AwsMobileAnalyticsConfig'
import i18n from 'browser/lib/i18n'
class CreateFolderModal extends React.Component { class CreateFolderModal extends React.Component {
constructor (props) { constructor (props) {
@@ -79,12 +80,12 @@ class CreateFolderModal extends React.Component {
onKeyDown={(e) => this.handleKeyDown(e)} onKeyDown={(e) => this.handleKeyDown(e)}
> >
<div styleName='header'> <div styleName='header'>
<div styleName='title'>Create new folder</div> <div styleName='title'>{i18n.__('Create new folder')}</div>
</div> </div>
<ModalEscButton handleEscButtonClick={(e) => this.handleCloseButtonClick(e)} /> <ModalEscButton handleEscButtonClick={(e) => this.handleCloseButtonClick(e)} />
<div styleName='control'> <div styleName='control'>
<div styleName='control-folder'> <div styleName='control-folder'>
<div styleName='control-folder-label'>Folder name</div> <div styleName='control-folder-label'>{i18n.__('Folder name')}</div>
<input styleName='control-folder-input' <input styleName='control-folder-input'
ref='name' ref='name'
value={this.state.name} value={this.state.name}

View File

@@ -111,7 +111,7 @@ class NewNoteModal extends React.Component {
onKeyDown={(e) => this.handleKeyDown(e)} onKeyDown={(e) => this.handleKeyDown(e)}
> >
<div styleName='header'> <div styleName='header'>
<div styleName='title'>Make a note</div> <div styleName='title'>{i18n.__('Make a note')}</div>
</div> </div>
<ModalEscButton handleEscButtonClick={(e) => this.handleCloseButtonClick(e)} /> <ModalEscButton handleEscButtonClick={(e) => this.handleCloseButtonClick(e)} />
<div styleName='control'> <div styleName='control'>

View File

@@ -43,7 +43,7 @@ class Blog extends React.Component {
this.handleSettingError = (err) => { this.handleSettingError = (err) => {
this.setState({BlogAlert: { this.setState({BlogAlert: {
type: 'error', type: 'error',
message: err.message != null ? err.message : 'Error occurs!' message: err.message != null ? err.message : i18n.__('Error occurs!')
}}) }})
} }
this.oldBlog = this.state.config.blog this.oldBlog = this.state.config.blog
@@ -70,7 +70,7 @@ class Blog extends React.Component {
this.props.haveToSave({ this.props.haveToSave({
tab: 'Blog', tab: 'Blog',
type: 'warning', type: 'warning',
message: 'You have to save!' message: i18n.__('You have to save!')
}) })
} }
} }
@@ -111,7 +111,7 @@ class Blog extends React.Component {
ref='typeDropdown' ref='typeDropdown'
onChange={(e) => this.handleBlogChange(e)} onChange={(e) => this.handleBlogChange(e)}
> >
<option value='wordpress' key='wordpress'>wordpress</option> <option value='wordpress' key='wordpress'>{i18n.__('wordpress')}</option>
</select> </select>
</div> </div>
</div> </div>

View File

@@ -6,6 +6,7 @@ import styles from './FolderList.styl'
import store from 'browser/main/store' import store from 'browser/main/store'
import FolderItem from './FolderItem' import FolderItem from './FolderItem'
import { SortableContainer } from 'react-sortable-hoc' import { SortableContainer } from 'react-sortable-hoc'
import i18n from 'browser/lib/i18n'
class FolderList extends React.Component { class FolderList extends React.Component {
render () { render () {
@@ -24,7 +25,7 @@ class FolderList extends React.Component {
<div styleName='folderList'> <div styleName='folderList'>
{folderList.length > 0 {folderList.length > 0
? folderList ? folderList
: <div styleName='folderList-empty'>No Folders</div> : <div styleName='folderList-empty'>{i18n.__('No Folders')}</div>
} }
</div> </div>
) )

View File

@@ -30,7 +30,7 @@ class HotkeyTab extends React.Component {
this.handleSettingError = (err) => { this.handleSettingError = (err) => {
this.setState({keymapAlert: { this.setState({keymapAlert: {
type: 'error', type: 'error',
message: err.message != null ? err.message : 'Error occurs!' message: err.message != null ? err.message : i18n.__('Error occurs!')
}}) }})
} }
this.oldHotkey = this.state.config.hotkey this.oldHotkey = this.state.config.hotkey

View File

@@ -15,7 +15,7 @@ function browseFolder () {
const defaultPath = remote.app.getPath('home') const defaultPath = remote.app.getPath('home')
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
dialog.showOpenDialog({ dialog.showOpenDialog({
title: 'Select Directory', title: i18n.__('Select Directory'),
defaultPath, defaultPath,
properties: ['openDirectory', 'createDirectory'] properties: ['openDirectory', 'createDirectory']
}, function (targetPaths) { }, function (targetPaths) {

View File

@@ -36,7 +36,7 @@ class UiTab extends React.Component {
this.handleSettingError = (err) => { this.handleSettingError = (err) => {
this.setState({UiAlert: { this.setState({UiAlert: {
type: 'error', type: 'error',
message: err.message != null ? err.message : 'Error occurs!' message: err.message != null ? err.message : i18n.__('Error occurs!')
}}) }})
} }
ipc.addListener('APP_SETTING_DONE', this.handleSettingDone) ipc.addListener('APP_SETTING_DONE', this.handleSettingDone)

View File

@@ -79,7 +79,7 @@ class RenameFolderModal extends React.Component {
<div styleName='control'> <div styleName='control'>
<input styleName='control-input' <input styleName='control-input'
placeholder='Folder Name' placeholder={i18n.__('Folder Name')}
ref='name' ref='name'
value={this.state.name} value={this.state.name}
onChange={(e) => this.handleChange(e)} onChange={(e) => this.handleChange(e)}