blob: 287c9cf11b13bc8bfe79f1348480b2a918ff9d3b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
import { webFrame } from 'electron';
import { SPELLCHECKER_LOCALES } from '../i18n/languages';
import setupContextMenu from './contextMenu';
const debug = require('debug')('Franz:spellchecker');
let _isEnabled = false;
export async function switchDict(locales) {
const { platform } = process;
if (platform === 'darwin') {
// MacOS uses the build-in languages which cannot be changed
return;
}
try {
debug('Trying to load dictionary', locales);
webFrame.session.setSpellCheckerLanguages([...locales, 'en-US']);
debug('Switched dictionary to', locales);
_isEnabled = true;
} catch (err) {
console.error(err);
}
}
export default async function initialize(languages = ['en-us']) {
try {
debug('Init spellchecker');
switchDict([
navigator.language,
...languages,
]);
setupContextMenu();
return true;
} catch (err) {
console.error(err);
return false;
}
}
export function isEnabled() {
return _isEnabled;
}
export function disable() {
if (isEnabled()) {
// TODO: How to disable build-in spellchecker?
}
}
export function getSpellcheckerLocaleByFuzzyIdentifier(identifier) {
const locales = Object.keys(SPELLCHECKER_LOCALES).filter(key => key === identifier.toLowerCase() || key.split('-')[0] === identifier.toLowerCase());
if (locales.length >= 1) {
return locales[0];
}
return null;
}
|