diff --git a/src/browser/components/SettingsPage.jsx b/src/browser/components/SettingsPage.jsx index 1b04aece..38fd0c74 100644 --- a/src/browser/components/SettingsPage.jsx +++ b/src/browser/components/SettingsPage.jsx @@ -716,7 +716,7 @@ export default class SettingsPage extends React.Component { {'Check spelling'} {'Highlight misspelled words in your messages.'} - {' Available for English, French, German, Portuguese, Spanish, and Dutch.'} + {' Available for English, French, German, Portuguese, Russian, Spanish, and Dutch.'} ); diff --git a/src/browser/js/contextMenu.js b/src/browser/js/contextMenu.js index 95380de0..7b1d317c 100644 --- a/src/browser/js/contextMenu.js +++ b/src/browser/js/contextMenu.js @@ -29,6 +29,7 @@ function getSpellCheckerLocaleMenus(onSelectSpellCheckerLocale) { {language: 'German', locale: 'de-DE'}, {language: 'Polish', locale: 'pl-PL'}, {language: 'Portuguese (BR)', locale: 'pt-BR'}, + {language: 'Russian', locale: 'ru-RU'}, {language: 'Spanish (ES)', locale: 'es-ES'}, {language: 'Spanish (MX)', locale: 'es-MX'}, {language: 'Dutch', locale: 'nl-NL'}, diff --git a/src/main/SpellChecker.js b/src/main/SpellChecker.js index d5dacb6e..f16c47ae 100644 --- a/src/main/SpellChecker.js +++ b/src/main/SpellChecker.js @@ -116,5 +116,8 @@ SpellChecker.getSpellCheckerLocale = (electronLocale) => { if (electronLocale.match(/^it-?/)) { return 'it-IT'; } + if (electronLocale.match(/^ru-?/)) { + return 'ru-RU'; + } return 'en-US'; }; diff --git a/src/package-lock.json b/src/package-lock.json index cea39acb..1e1dbb4a 100644 --- a/src/package-lock.json +++ b/src/package-lock.json @@ -747,9 +747,9 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "simple-spellchecker": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/simple-spellchecker/-/simple-spellchecker-1.0.0.tgz", - "integrity": "sha512-gOQdOyXV/SoQJ2MfNj2eEbumnDIMWa6ET01xvK+fbHfZMjMC08ZNGNqa6WZmtoLxzK0l3IRkxALRaOo9Pg0jPg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-spellchecker/-/simple-spellchecker-1.0.1.tgz", + "integrity": "sha512-uYwrcM6kYR7g9psVdkKVap5fXJI1OSHWowsbowcUmH4VS178LcUCGS6E6/F9lsfRYVzFghJeF1zZL8W0GrBocA==", "requires": { "adm-zip": "^0.4.13", "binarysearch": "^0.2.4", diff --git a/src/package.json b/src/package.json index eafd9fa8..a029e357 100644 --- a/src/package.json +++ b/src/package.json @@ -24,7 +24,7 @@ "react-dom": "^16.6.3", "react-transition-group": "^2.5.0", "semver": "^5.5.0", - "simple-spellchecker": "^1.0.0", + "simple-spellchecker": "^1.0.1", "underscore": "^1.9.1", "valid-url": "^1.0.9", "winreg": "^1.2.4", diff --git a/test/specs/spellchecker_test.js b/test/specs/spellchecker_test.js index 150e1d0c..dce7dad8 100644 --- a/test/specs/spellchecker_test.js +++ b/test/specs/spellchecker_test.js @@ -33,6 +33,9 @@ describe('main/Spellchecker.js', function() { SpellChecker.getSpellCheckerLocale('it').should.equal('it-IT'); SpellChecker.getSpellCheckerLocale('it-IT').should.equal('it-IT'); + + SpellChecker.getSpellCheckerLocale('ru').should.equal('ru-RU'); + SpellChecker.getSpellCheckerLocale('ru-RU').should.equal('ru-RU'); }); }); @@ -112,6 +115,25 @@ describe('main/Spellchecker.js', function() { }); }); + describe('ru-RU', function() { + let spellchecker = null; + + before(function(done) { + spellchecker = new SpellChecker( + 'ru-RU', + path.resolve(__dirname, '../../src/node_modules/simple-spellchecker/dict'), + done + ); + }); + + it('should spellcheck', function() { + spellchecker.spellCheck('русский').should.equal(true); + }); + it('should give suggestions', function() { + spellchecker.getSuggestions('руский', 1).length.should.be.equal(1); + }); + }); + describe('de-DE', function() { let spellchecker = null;