String Checker JS
Scan TypeScript and JavaScript documents for non-technical strings.
The aim is to help identifying strings in code that might need to be translated.
Such strings should be moved in a dedicated resource file for translation purpose.
Features
Scan workspace documents, and navigate from string to string in source code:

Switch view to browse detected strings:

Add custom rules to improve string detection:

Search for strings in view:

Detection providers
Strings are evaluated by different providers, each being dedicated to a specific area.
| Provider |
Description |
Example |
| Keywords provider |
Detects strings from user list. |
"far fa-smile" will be detected as a Font Awesome smile icon. |
| Class provider |
Detects strings as class names or expressions. |
"use strict" will be detected as JavaScript expression. |
| Code provider |
Detects strings as code (variable names). |
"../path/to/my/file" will be detected as a path. "someVariable" will be detected as a camel case variable. |
| Natural language provider |
Detects strings as natural language. |
"Ceci n'est pas une pipe" will be detected as french language. |
| Entropy provider |
Detects string as Gibberish. String entropy [1] threshold can be configured in settings (entropy.threshold, default = 3). |
"abbcccddddeeeee" has an entropy of 2.15. "dd/MM/yyyy hh:mm:ss" has an entropy of 2.44. "Gloubi-boulga" has an entropy of 2.75. |
| String provider |
Pass-through detection. |
Any string will be detected as such. |
- [1] Starting at version v0.0.3, entropy is computed after removing non-alphabetical characters from a lower case version of the string.
The string.checker.js.testString command brings a convenient way to test all providers for a given string.

Requirements
There are no known requirements.
Extension Settings
This extension contributes the following settings:
string.checker.js.scanDocument: scan selected document.
string.checker.js.scanDocumentIncludeAll: scan selected document for any string.
string.checker.js.scanDocumentWorkspace: scan workspace documents.
string.checker.js.scanDocumentWorkspaceIncludeAll: scan workspace documents for any string.
string.checker.js.switchView: switch between file/token and token/file view.
string.checker.js.excludeParentFolderPath: exclude a file (using its path) containing folder from scan [1].
string.checker.js.excludeParentFolderName: exclude a file (using its name) containing folder from scan [1].
string.checker.js.excludeFilePath: exclude a file (using its path) from scan [1].
string.checker.js.excludeFileName: exclude a file (using its name) from scan [1].
string.checker.js.excludeToken: exclude a token from scan result.
string.checker.js.includeToken: include a token to scan result.
string.checker.js.selectTreeItem: select token in document.
string.checker.js.filterTokens: filter tokens view.
string.checker.js.testString: test a string with all detection providers.
string.checker.js.showVersion: display String Checker JS version.
[1] Path exclusion is based on the full path (/path/to/my/file.js), while name exclusion only uses the last part (file.js for a file, my for a folder), which means if the same name is found in another folder, it will be excluded too.
Mentions