スペルチェッカー
Electronは、Electron 8以降、Chromiumのスペルチェッカーのサポートが組み込まれています。WindowsおよびLinuxでは、これはHunspell辞書によって動作し、macOSでは、ネイティブのスペルチェッカーAPIを使用します。
スペルチェッカーを有効にするには?
Electron 9以降では、スペルチェッカーはデフォルトで有効になっています。Electron 8の場合は、webPreferences
で有効にする必要があります。
const myWindow = new BrowserWindow({
webPreferences: {
spellcheck: true
}
})
スペルチェッカーが使用する言語を設定するには?
macOSでは、ネイティブAPIを使用しているため、スペルチェッカーが使用する言語を設定する方法はありません。デフォルトでは、macOSのネイティブスペルチェッカーは、使用されている言語を自動的に検出します。
WindowsおよびLinuxの場合は、スペルチェッカーの言語を設定するために使用する必要があるElectron APIがいくつかあります。
// Sets the spellchecker to check English US and French
myWindow.webContents.session.setSpellCheckerLanguages(['en-US', 'fr'])
// An array of all available language codes
const possibleLanguages = myWindow.webContents.session.availableSpellCheckerLanguages
デフォルトでは、スペルチェッカーは現在のOSロケールに一致する言語を有効にします。
スペルチェッカーの結果をコンテキストメニューに入れるには?
コンテキストメニューの生成に必要なすべての情報は、各webContents
インスタンスのcontext-menu
イベントで提供されます。この情報を使用してコンテキストメニューを作成する方法の簡単な例を以下に示します。
const { Menu, MenuItem } = require('electron')
myWindow.webContents.on('context-menu', (event, params) => {
const menu = new Menu()
// Add each spelling suggestion
for (const suggestion of params.dictionarySuggestions) {
menu.append(new MenuItem({
label: suggestion,
click: () => myWindow.webContents.replaceMisspelling(suggestion)
}))
}
// Allow users to add the misspelled word to the dictionary
if (params.misspelledWord) {
menu.append(
new MenuItem({
label: 'Add to dictionary',
click: () => myWindow.webContents.session.addWordToSpellCheckerDictionary(params.misspelledWord)
})
)
}
menu.popup()
})
スペルチェッカーはGoogleサービスを使用しますか?
スペルチェッカー自体は、入力、単語、またはユーザー入力をGoogleサービスに送信しませんが、hunspell辞書ファイルはデフォルトでGoogle CDNからダウンロードされます。これを回避したい場合は、辞書をダウンロードする代替URLを指定できます。
myWindow.webContents.session.setSpellCheckerDictionaryDownloadURL('https://example.com/dictionaries/')
辞書ファイルの入手元とそのホスト方法の詳細については、session.setSpellCheckerDictionaryDownloadURL
のドキュメントを参照してください。