#Plugin API
#Meta information
In order to effectively showcase our product in the marketplace and during installation, it is crucial to include the meta information.
#id
plugin.${string}.${string}
required
Unique id of module. Consists of type (plugin), author and name.
// Example
id: "plugin.inlang.json"
#displayName
Record<LanguageTag, string>
required
The name that is displayed in the marketplace. The name will be localized in the future that's why there is the languageTag. For now en
is fine.
// Example
displayName: { en: "Plugin Name" }
#description
Record<LanguageTag, string>
required
The description that is displayed in the marketplace. It will be localized in the future that's why there is the languageTag. For now en
is fine.
// Example
description: { en: "This is the plugin description" }
#Message Handling
The load and save functions specify how the SDK loads and saves messages to build the query.
#loadMessages
function
Retrieve messages from storage for the SDK. (For the message-format plugin, messages are stored in json files.)
loadMessages?: (args: {
settings: ProjectSettings & ExternalSettings
nodeishFs: NodeishFilesystemSubset
}) => Promise<Message[]> | Message[]
#saveMessages
function
Save messages from SDK to storage.
saveMessages?: (args: {
messages: Message[]
settings: ProjectSettings & ExternalSettings
nodeishFs: NodeishFilesystemSubset
}) => Promise<void> | void
#Add Information
If Apps need specific information or configuration you can also pass in a custom api. This is for example used for the matcher plugins.
#addCustomApi
function
The entries are per app. That's why the key needs to be the id of an app.
addCustomApi?: (args: {
settings: ProjectSettings & ExternalSettings
}) =>
| Record<`app.${string}.${string}`, unknown>
| { "app.inlang.ideExtension": CustomApiInlangIdeExtension }