I18n lifecycles
Plugins use these lifecycles to load i18n-related data.
getTranslationFiles({content})
Section titled βgetTranslationFiles({content})βPlugins declare the JSON translation files they want to use.
Returns translation files {path: string, content: ChromeI18nJSON}:
path: relative to the plugin localized folderi18n/[locale]/[pluginName]. Extension.jsonshould be omitted to remain generic.content: using the Chrome i18n JSON format.
These files will be written by the write-translations CLI to the plugin i18n subfolder, and will be read in the appropriate locale before calling translateContent() and translateThemeConfig()
Example:
export default function (context, options) { return { name: 'my-plugin', async getTranslationFiles({content}) { return [ { path: 'sidebar-labels', content: { someSidebarLabel: { message: 'Some Sidebar Label', description: 'A label used in my plugin in the sidebar', }, someLabelFromContent: content.myLabel, }, }, ]; }, };}translateContent({content,translationFiles})
Section titled βtranslateContent({content,translationFiles})βTranslate the plugin content, using the localized translation files.
Returns the localized plugin content.
The contentLoaded() lifecycle will be called with the localized plugin content returned by translateContent().
Example:
export default function (context, options) { return { name: 'my-plugin', translateContent({content, translationFiles}) { const myTranslationFile = translationFiles.find( (f) => f.path === 'myTranslationFile', ); return { ...content, someContentLabel: myTranslationFile.someContentLabel.message, }; }, };}translateThemeConfig({themeConfig,translationFiles})
Section titled βtranslateThemeConfig({themeConfig,translationFiles})βTranslate the site themeConfig labels, using the localized translation files.
Returns the localized themeConfig.
Example:
export default function (context, options) { return { name: 'my-theme', translateThemeConfig({themeConfig, translationFiles}) { const myTranslationFile = translationFiles.find( (f) => f.path === 'myTranslationFile', ); return { ...themeConfig, someThemeConfigLabel: myTranslationFile.someThemeConfigLabel.message, }; }, };}async getDefaultCodeTranslationMessages()
Section titled βasync getDefaultCodeTranslationMessages()βThemes using the <Translate> API can provide default code translation messages.
It should return messages in Record<string, string>, where keys are translation IDs and values are messages (without the description) localized using the site's current locale.
Example:
export default function (context, options) { return { name: 'my-theme', async getDefaultCodeTranslationMessages() { return readJsonFile(`${context.i18n.currentLocale}.json`); }, };}