diff --git a/exec/SlyEdit.js b/exec/SlyEdit.js index 48df2d5de9969714f38c12416f6f430751d093cc..788f51f6b0b2fda590f620a9ecd3b6ddc92f8991 100644 --- a/exec/SlyEdit.js +++ b/exec/SlyEdit.js @@ -52,8 +52,11 @@ * Started working on adding a spell check feature. * Also, updated to use require() instead of load() * for .js scripts when possible. - * 2019-05-24 Eric Oualshin Version 1.64 + * 2019-05-24 Eric Oulashin Version 1.64 * Releasing this version + * 2019-05-24 Eric Oulashin Version 1.65 + * Added support for parsing many standard language + * tags for the dictionary filenames */ /* Command-line arguments: @@ -150,7 +153,7 @@ if (console.screen_columns < 80) } // Constants -const EDITOR_VERSION = "1.64"; +const EDITOR_VERSION = "1.65"; const EDITOR_VER_DATE = "2019-05-24"; @@ -6141,7 +6144,6 @@ function doUserSettings(pCurpos, pReturnCursorToOriginalPos) // Create the user settings box var optBoxTitle = "Setting Enabled"; var optBoxWidth = ChoiceScrollbox_MinWidth(); - //var optBoxHeight = (dictionaryFilenames.length > 1 ? 10 : 9); var optBoxHeight = (dictionaryFilenames.length > 1 ? 11 : 10); var optBoxStartX = gEditLeft + Math.floor((gEditWidth/2) - (optBoxWidth/2)); if (optBoxStartX < gEditLeft) diff --git a/exec/SlyEdit_Misc.js b/exec/SlyEdit_Misc.js index 8bffadd65cb9140f437a9816c5a16f1e8c8af383..d0f283fdd164276f1c033732803aac82ee6076d0 100644 --- a/exec/SlyEdit_Misc.js +++ b/exec/SlyEdit_Misc.js @@ -4488,10 +4488,50 @@ function readDictionaryFile(pFilename, pFullyPathed) dictFilename = pFilename; else dictFilename = genFullPathCfgFilename(pFilename, gStartupPath); - var dictionary = readTxtFileIntoArray(dictFilename, false, true); - // Ensure all the words are lower-case for case-insensitive matching - for (var i = 0; i < dictionary.length; ++i) - dictionary[i] = dictionary[i].toLowerCase(); + + // Read the lines from the dictionary; skip Aspell copyright header lines + // if they exist, and lower-case all words for case-insensitive matching. + var dictionary = []; + var txtFile = new File(pFilename); + if (txtFile.open("r")) + { + var fileLine = null; // A line read from the file + var inCopyrightHeader = false; + while (!txtFile.eof) + { + // Read the next line from the config file. + fileLine = txtFile.readln(2048); + + // Skip lines that aren't strings (sometimes this seems to happen) + // and 0-length strings + if (typeof(fileLine) != "string") + continue; + if (fileLine.length == 0) + continue; + // If the line starts with the first line of text in a dictionary + // from aspell.net, then we should skip the header lines until we + // reach the line "---". + if (fileLine == "Custom wordlist generated from http://app.aspell.net/create using SCOWL") + { + inCopyrightHeader = true; + continue; + } + else + { + // Skip copyright header lines until we reach the line "---" + if (inCopyrightHeader) + { + if (fileLine == "---") + inCopyrightHeader = false; + continue; + } + else // Append the line as lower-case to the dictionary array + dictionary.push(fileLine.toLowerCase()); + } + } + txtFile.close(); + } + return dictionary; } @@ -4618,7 +4658,80 @@ function getLanguageNameFromDictFilename(pFilenameFullPath) languageName = justFilename.substr(11, dotIdx-11); else languageName = justFilename.substr(11); - languageName = languageName.substr(0, 1).toUpperCase() + languageName.substr(1).toLowerCase(); + // Figure out the language name from common standard localization tags + languageNameLower = languageName.toLowerCase(); + if (languageNameLower == "bn-BD") + languageName = "Bangla (Bangladesh)"; + else if (languageNameLower == "bn-in") + languageName = "Bangla (India)"; + else if (languageNameLower == "nl-be") + languageName = "Dutch (Belgium)"; + else if (languageNameLower == "nl-nl") + languageName = "Dutch (Netherlands)"; + else if (languageNameLower == "en-gb") + languageName = "English (UK)"; + else if (languageNameLower == "en-us") + languageName = "English (US)"; + else if (languageNameLower == "en-ca") + languageName = "English (CA)"; + else if (languageNameLower == "en-in") + languageName = "English (India)"; + else if (languageNameLower == "en-au") + languageName = "English (AU)"; + else if (languageNameLower == "en-nz") + languageName = "English (NZ)"; + else if (languageNameLower == "fr-be") + languageName = "French (Belgium)"; + else if (languageNameLower == "fr-ch") + languageName = "French (Switzerland)"; + else if (languageNameLower == "fr-fr") + languageName = "French (France)"; + else if (languageNameLower == "fr-ca") + languageName = "French (CA)"; + else if (languageNameLower == "de-at") + languageName = "Deutsch (Austria)"; + else if (languageNameLower == "de-de") + languageName = "Deutsch (Deutschland)"; + else if (languageNameLower == "de-ch") + languageName = "Deutsch (Schweiz)"; + else if (languageNameLower == "it-ch") + languageName = "Italian (Switzerland)"; + else if (languageNameLower == "it-it") + languageName = "Italian (Italy)"; + else if (languageNameLower == "pt-pt") + languageName = "Portuguese (Portugal)"; + else if (languageNameLower == "pt-br") + languageName = "Portuguese (BR)"; + else if (languageNameLower == "es-es") + languageName = "Español (España)"; + else if (languageNameLower == "es-co") + languageName = "Español (CO)"; + else if (languageNameLower == "es-cl") + languageName = "Español (CL)"; + else if (languageNameLower == "es-us") + languageName = "Español (US)"; + else if (languageNameLower == "es-005") + languageName = "Español (South America)"; + else if (languageNameLower == "zh-cn") + languageName = "Chinese (China)"; + else if (languageNameLower == "zh-tw") + languageName = "Chinese (Taiwan)"; + else if (languageNameLower == "zh-hk") + languageName = "Chinese (Hong Kong)"; + else if (languageNameLower == "zh-Hans") + languageName = "Chinese (Simplified)"; + else if (languageNameLower == "zh-Hans-cn") + languageName = "Chinese (Simplified) (China)"; + else if (languageNameLower == "ta-in") + languageName = "Tamil (India)"; + else if (languageNameLower == "ta-lk") + languageName = "Tamil (Sri Lanka)"; + else if (languageNameLower == "af-za") + languageName = "Afrikaans (ZA)"; + // TODO: Add more language tags + // http://www.lingoes.net/en/translator/langcode.htm + else // Default to capitalized first letter & lowercase remainder + languageName = languageName.substr(0, 1).toUpperCase() + languageName.substr(1).toLowerCase(); return languageName; }