Create a new messages bundle.
Note: Use {Messages.loadMessages} unless you are writing your own loader function.
The bundle name.
The locale.
The messages. Can not be modified once created.
The bundle name.
The locale of the messages in this bundle.
Get a message using a message key and use the tokens as values for tokenization.
The key of the message.
The values to substitute in the message.
Generate a file loading function. Use Messages.importMessageFile unless overriding the bundleName is required, then manually pass the loader function to Messages.setLoaderFunction.
The messages file path.
Get the locale. This will always return 'en_US' but will return the machine's locale in the future.
Add a single message file to the list of loading functions using the file name as the bundle name. The loader will only be added if the bundle name is not already taken.
The npm package name.
The path of the file.
Import all json and js files in a messages directory. Use the file name as the bundle key when Messages.loadMessages is called. By default, we're assuming the moduleDirectoryPart is a typescript project and will truncate to root path (where the package.json file is). If your messages directory is in another spot or you are not using typescript, pass in false for truncateToProjectPath.
The path to load the messages folder.
Check if a bundle already been loaded.
The npm package name.
The bundle name.
Load messages for a given package and bundle. If the bundle is not already cached, use the loader function created from Messages.setLoaderFunction or Messages.importMessagesDirectory.
The name of the npm package.
The name of the bundle to load.
Set a custom loader function for a package and bundle that will be called on Messages.loadMessages.
The npm package name.
The name of the bundle.
The loader function.
The core message framework manages messages and allows them to be accessible by all plugins and consumers of sfdx-core. It is set up to handle localization down the road at no additional effort to the consumer. Messages can be used for anything from user output (like the console), to error messages, to returned data from a method.
Messages are loaded from loader functions. The loader functions will only run when a message is required. This prevents all messages from being loaded into memory at application startup. The functions can load from memory, a file, or a server.
In the beginning of your app or file, add the loader functions to be used later. If using json or js files in a root messages directory (
<moduleRoot>/messages), load the entire directory automatically with Messages.importMessagesDirectory. Message files must be in.jsonor.jsthat exports a json object with only top level key-value pairs. The values support util.format style strings that apply the tokens passed into {@link Message.getMessage}A sample message file.
{ 'msgKey': 'A message displayed in the terminal' }Note: When running unit tests individually, you may see errors that the messages aren't found. This is because
index.jsisn't loaded when tests run like they are when the package is required. To allow tests to run, import the message directory in each test (it will only do it once) or load the message file the test depends on individually.// Create loader functions for all files in the messages directory Messages.importMessagesDirectory(__dirname);
// Now you can use the messages from anywhere in your code or file. // If using importMessageDirectory, the bundle name is the file name. const messages : Messages = Messages.loadMessages(packageName, bundleName);
// Messages now contains all the message in the bundleName file. messages.getMessage('JsonParseError');